@senior-agronegocio/angular-components 0.0.49
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/agro-angular-components.module.d.ts +9 -0
- package/bundles/senior-agronegocio-angular-components.umd.js +5855 -0
- package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -0
- package/bundles/senior-agronegocio-angular-components.umd.min.js +17 -0
- package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -0
- package/common/agro-array-utils.class.d.ts +35 -0
- package/common/agro-cookie-utils.class.d.ts +8 -0
- package/common/agro-date-utils.class.d.ts +88 -0
- package/common/agro-name-utils.class.d.ts +22 -0
- package/common/agro-number-utils.class.d.ts +71 -0
- package/common/agro-object-utils.class.d.ts +161 -0
- package/common/agro-platform-utils.class.d.ts +38 -0
- package/common/agro-regex.constant.d.ts +142 -0
- package/common/agro-string-utils.class.d.ts +194 -0
- package/common/colors.class.d.ts +76 -0
- package/common/index.d.ts +10 -0
- package/components/event-control-board/common/control-status.d.ts +5 -0
- package/components/event-control-board/common/documentsToIssue.d.ts +4 -0
- package/components/event-control-board/common/event-control-constants.d.ts +15 -0
- package/components/event-control-board/common/event-operation.d.ts +11 -0
- package/components/event-control-board/common/event-origin.d.ts +7 -0
- package/components/event-control-board/common/event-status.d.ts +7 -0
- package/components/event-control-board/common/invoice-status.d.ts +12 -0
- package/components/event-control-board/common/invoice-type.d.ts +5 -0
- package/components/event-control-board/common/lookup-error-message.constants.d.ts +3 -0
- package/components/event-control-board/common/operation.d.ts +5 -0
- package/components/event-control-board/common/operationType.d.ts +5 -0
- package/components/event-control-board/common/status-entity.d.ts +4 -0
- package/components/event-control-board/common/ticket-status.d.ts +7 -0
- package/components/event-control-board/event-control-board.component.d.ts +97 -0
- package/components/event-control-board/event-control-board.module.d.ts +2 -0
- package/components/event-control-board/index.d.ts +20 -0
- package/components/event-control-board/service/e001pes/e001pes-dto.d.ts +12 -0
- package/components/event-control-board/service/e001pes/e001pes.d.ts +15 -0
- package/components/event-control-board/service/e001pes/e001pes.module.d.ts +2 -0
- package/components/event-control-board/service/e001pes/e001pes.service.d.ts +13 -0
- package/components/event-control-board/service/e001tns/e001tns-dto.d.ts +14 -0
- package/components/event-control-board/service/e001tns/e001tns.d.ts +19 -0
- package/components/event-control-board/service/e001tns/e001tns.module.d.ts +2 -0
- package/components/event-control-board/service/e001tns/e001tns.service.d.ts +11 -0
- package/components/event-control-board/service/e012fam/e012fam-dto.d.ts +11 -0
- package/components/event-control-board/service/e012fam/e012fam.d.ts +14 -0
- package/components/event-control-board/service/e012fam/e012fam.service.d.ts +11 -0
- package/components/event-control-board/service/e070emp/e070emp-dto.d.ts +10 -0
- package/components/event-control-board/service/e070emp/e070emp.d.ts +13 -0
- package/components/event-control-board/service/e070emp/e070emp.module.d.ts +2 -0
- package/components/event-control-board/service/e070emp/e070emp.service.d.ts +12 -0
- package/components/event-control-board/service/e070fil/e070fil-dto.d.ts +14 -0
- package/components/event-control-board/service/e070fil/e070fil.d.ts +17 -0
- package/components/event-control-board/service/e070fil/e070fil.module.d.ts +2 -0
- package/components/event-control-board/service/e070fil/e070fil.service.d.ts +12 -0
- package/components/event-control-board/service/e075der/e075der-dto.d.ts +15 -0
- package/components/event-control-board/service/e075der/e075der.d.ts +18 -0
- package/components/event-control-board/service/e075der/e075der.module.d.ts +2 -0
- package/components/event-control-board/service/e075der/e075der.service.d.ts +12 -0
- package/components/event-control-board/service/e113saf/e113saf-dto.d.ts +11 -0
- package/components/event-control-board/service/e113saf/e113saf.d.ts +14 -0
- package/components/event-control-board/service/e205dep/deposit-dto.d.ts +11 -0
- package/components/event-control-board/service/e205dep/e205dep-dto.d.ts +15 -0
- package/components/event-control-board/service/e205dep/e205dep.d.ts +16 -0
- package/components/event-control-board/service/e205dep/e205dep.service.d.ts +12 -0
- package/components/event-control-board/service/entity-service.d.ts +72 -0
- package/components/event-control-board/service/event-control/event-control-dto.d.ts +12 -0
- package/components/event-control-board/service/event-control/event-control.d.ts +18 -0
- package/components/event-control-board/service/event-control/event-control.module.d.ts +2 -0
- package/components/event-control-board/service/event-control/event-control.service.d.ts +11 -0
- package/components/event-control-board/service/event-control-board.service.d.ts +11 -0
- package/components/event-control-board/service/event-control-item/event-control-item-dto.d.ts +17 -0
- package/components/event-control-board/service/event-control-item/event-control-item.d.ts +23 -0
- package/components/event-control-board/service/event-control-item/event-control-item.module.d.ts +2 -0
- package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +15 -0
- package/components/event-control-board/service/external-invoice/external-invoice-dto.d.ts +13 -0
- package/components/event-control-board/service/external-invoice/external-invoice.d.ts +13 -0
- package/components/event-control-board/service/external-invoice/external-invoice.module.d.ts +2 -0
- package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +11 -0
- package/components/event-control-board/service/invoice/invoice-dto.d.ts +15 -0
- package/components/event-control-board/service/invoice/invoice.d.ts +21 -0
- package/components/event-control-board/service/invoice/invoice.module.d.ts +2 -0
- package/components/event-control-board/service/invoice/invoice.service.d.ts +11 -0
- package/components/event-control-board/service/origination/operationType.d.ts +5 -0
- package/components/event-control-board/service/origination/origination-dto.d.ts +50 -0
- package/components/event-control-board/service/origination/origination.d.ts +51 -0
- package/components/event-control-board/service/origination/origination.module.d.ts +2 -0
- package/components/event-control-board/service/origination/origination.service.d.ts +11 -0
- package/components/event-control-board/service/paginator-storage.service.d.ts +8 -0
- package/components/event-control-board/service/producer-invoice/producer-invoice-dto.d.ts +26 -0
- package/components/event-control-board/service/producer-invoice/producer-invoice.d.ts +27 -0
- package/components/event-control-board/service/producer-invoice/producer-invoice.module.d.ts +2 -0
- package/components/event-control-board/service/producer-invoice/producer-invoice.service.d.ts +11 -0
- package/components/event-control-board/service/rural-estate/rural-estate-dto.d.ts +28 -0
- package/components/event-control-board/service/rural-estate/rural-estate.d.ts +34 -0
- package/components/event-control-board/service/rural-estate/rural-estate.module.d.ts +2 -0
- package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +11 -0
- package/components/event-control-board/service/ticket/ticket-dto.d.ts +17 -0
- package/components/event-control-board/service/ticket/ticket.d.ts +18 -0
- package/components/event-control-board/service/ticket/ticket.module.d.ts +2 -0
- package/components/event-control-board/service/ticket/ticket.service.d.ts +45 -0
- package/components/event-control-board/shared.module.d.ts +2 -0
- package/components/event-steps/event-steps.component.d.ts +35 -0
- package/components/event-steps/event-steps.module.d.ts +2 -0
- package/components/event-steps/index.d.ts +2 -0
- package/components/index.d.ts +2 -0
- package/enums/agro-entity-status.enum.d.ts +4 -0
- package/enums/agro-numbers.enum.d.ts +1006 -0
- package/enums/agro-string-masks.enum.d.ts +10 -0
- package/enums/date-comparison-type.enum.d.ts +4 -0
- package/enums/http-codes.enum.d.ts +64 -0
- package/enums/index.d.ts +6 -0
- package/enums/number-comparison-type.enum.d.ts +8 -0
- package/esm2015/agro-angular-components.module.js +22 -0
- package/esm2015/common/agro-array-utils.class.js +56 -0
- package/esm2015/common/agro-cookie-utils.class.js +31 -0
- package/esm2015/common/agro-date-utils.class.js +117 -0
- package/esm2015/common/agro-name-utils.class.js +59 -0
- package/esm2015/common/agro-number-utils.class.js +102 -0
- package/esm2015/common/agro-object-utils.class.js +245 -0
- package/esm2015/common/agro-platform-utils.class.js +97 -0
- package/esm2015/common/agro-regex.constant.js +143 -0
- package/esm2015/common/agro-string-utils.class.js +367 -0
- package/esm2015/common/colors.class.js +77 -0
- package/esm2015/common/index.js +11 -0
- package/esm2015/components/event-control-board/common/control-status.js +7 -0
- package/esm2015/components/event-control-board/common/documentsToIssue.js +6 -0
- package/esm2015/components/event-control-board/common/event-control-constants.js +28 -0
- package/esm2015/components/event-control-board/common/event-operation.js +13 -0
- package/esm2015/components/event-control-board/common/event-origin.js +9 -0
- package/esm2015/components/event-control-board/common/event-status.js +9 -0
- package/esm2015/components/event-control-board/common/invoice-status.js +14 -0
- package/esm2015/components/event-control-board/common/invoice-type.js +7 -0
- package/esm2015/components/event-control-board/common/lookup-error-message.constants.js +11 -0
- package/esm2015/components/event-control-board/common/operation.js +7 -0
- package/esm2015/components/event-control-board/common/operationType.js +7 -0
- package/esm2015/components/event-control-board/common/status-entity.js +6 -0
- package/esm2015/components/event-control-board/common/ticket-status.js +9 -0
- package/esm2015/components/event-control-board/event-control-board.component.js +503 -0
- package/esm2015/components/event-control-board/event-control-board.module.js +62 -0
- package/esm2015/components/event-control-board/index.js +21 -0
- package/esm2015/components/event-control-board/service/e001pes/e001pes-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e001pes/e001pes.js +20 -0
- package/esm2015/components/event-control-board/service/e001pes/e001pes.module.js +24 -0
- package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +34 -0
- package/esm2015/components/event-control-board/service/e001tns/e001tns-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e001tns/e001tns.js +42 -0
- package/esm2015/components/event-control-board/service/e001tns/e001tns.module.js +26 -0
- package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +24 -0
- package/esm2015/components/event-control-board/service/e012fam/e012fam-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e012fam/e012fam.js +20 -0
- package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +24 -0
- package/esm2015/components/event-control-board/service/e070emp/e070emp-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e070emp/e070emp.js +29 -0
- package/esm2015/components/event-control-board/service/e070emp/e070emp.module.js +24 -0
- package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +31 -0
- package/esm2015/components/event-control-board/service/e070fil/e070fil-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e070fil/e070fil.js +41 -0
- package/esm2015/components/event-control-board/service/e070fil/e070fil.module.js +24 -0
- package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +31 -0
- package/esm2015/components/event-control-board/service/e075der/e075der-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e075der/e075der.js +31 -0
- package/esm2015/components/event-control-board/service/e075der/e075der.module.js +24 -0
- package/esm2015/components/event-control-board/service/e075der/e075der.service.js +29 -0
- package/esm2015/components/event-control-board/service/e113saf/e113saf-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e113saf/e113saf.js +20 -0
- package/esm2015/components/event-control-board/service/e205dep/deposit-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e205dep/e205dep.js +20 -0
- package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +29 -0
- package/esm2015/components/event-control-board/service/entity-service.js +129 -0
- package/esm2015/components/event-control-board/service/event-control/event-control-dto.js +1 -0
- package/esm2015/components/event-control-board/service/event-control/event-control.js +20 -0
- package/esm2015/components/event-control-board/service/event-control/event-control.module.js +26 -0
- package/esm2015/components/event-control-board/service/event-control/event-control.service.js +24 -0
- package/esm2015/components/event-control-board/service/event-control-board.service.js +33 -0
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item-dto.js +1 -0
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.js +34 -0
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.module.js +26 -0
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +29 -0
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice-dto.js +1 -0
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.js +20 -0
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.module.js +26 -0
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +24 -0
- package/esm2015/components/event-control-board/service/invoice/invoice-dto.js +1 -0
- package/esm2015/components/event-control-board/service/invoice/invoice.js +43 -0
- package/esm2015/components/event-control-board/service/invoice/invoice.module.js +26 -0
- package/esm2015/components/event-control-board/service/invoice/invoice.service.js +24 -0
- package/esm2015/components/event-control-board/service/origination/operationType.js +7 -0
- package/esm2015/components/event-control-board/service/origination/origination-dto.js +1 -0
- package/esm2015/components/event-control-board/service/origination/origination.js +59 -0
- package/esm2015/components/event-control-board/service/origination/origination.module.js +24 -0
- package/esm2015/components/event-control-board/service/origination/origination.service.js +24 -0
- package/esm2015/components/event-control-board/service/paginator-storage.service.js +32 -0
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +1 -0
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.js +32 -0
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.module.js +26 -0
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.service.js +24 -0
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate-dto.js +1 -0
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.js +78 -0
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.module.js +26 -0
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +24 -0
- package/esm2015/components/event-control-board/service/ticket/ticket-dto.js +1 -0
- package/esm2015/components/event-control-board/service/ticket/ticket.js +39 -0
- package/esm2015/components/event-control-board/service/ticket/ticket.module.js +26 -0
- package/esm2015/components/event-control-board/service/ticket/ticket.service.js +59 -0
- package/esm2015/components/event-control-board/shared.module.js +60 -0
- package/esm2015/components/event-steps/event-steps.component.js +103 -0
- package/esm2015/components/event-steps/event-steps.module.js +16 -0
- package/esm2015/components/event-steps/index.js +3 -0
- package/esm2015/components/index.js +3 -0
- package/esm2015/enums/agro-entity-status.enum.js +6 -0
- package/esm2015/enums/agro-numbers.enum.js +1007 -0
- package/esm2015/enums/agro-string-masks.enum.js +12 -0
- package/esm2015/enums/date-comparison-type.enum.js +6 -0
- package/esm2015/enums/http-codes.enum.js +66 -0
- package/esm2015/enums/index.js +7 -0
- package/esm2015/enums/number-comparison-type.enum.js +10 -0
- package/esm2015/form-validator/agro-form-validator.js +229 -0
- package/esm2015/form-validator/index.js +2 -0
- package/esm2015/lib-translation.module.js +21 -0
- package/esm2015/pipe/index.js +2 -0
- package/esm2015/pipe/lib-translate.pipe.js +24 -0
- package/esm2015/public-api.js +9 -0
- package/esm2015/senior-agronegocio-angular-components.js +6 -0
- package/esm2015/services/i18n/en-US.js +195 -0
- package/esm2015/services/i18n/es-CO.js +195 -0
- package/esm2015/services/i18n/pt-BR.js +195 -0
- package/esm2015/services/index.js +3 -0
- package/esm2015/services/lib-translation.service.js +54 -0
- package/esm2015/services/websocket/async-lock.js +34 -0
- package/esm2015/services/websocket/index.js +6 -0
- package/esm2015/services/websocket/models/index.js +2 -0
- package/esm2015/services/websocket/models/primitive-manager.js +39 -0
- package/esm2015/services/websocket/protocols/index.js +1 -0
- package/esm2015/services/websocket/protocols/on-event-options.js +1 -0
- package/esm2015/services/websocket/protocols/primitive-event.js +1 -0
- package/esm2015/services/websocket/user-information.service.js +34 -0
- package/esm2015/services/websocket/websocket.module.js +21 -0
- package/esm2015/services/websocket/websocket.service.js +339 -0
- package/esm5/agro-angular-components.module.js +26 -0
- package/esm5/common/agro-array-utils.class.js +72 -0
- package/esm5/common/agro-cookie-utils.class.js +38 -0
- package/esm5/common/agro-date-utils.class.js +122 -0
- package/esm5/common/agro-name-utils.class.js +63 -0
- package/esm5/common/agro-number-utils.class.js +109 -0
- package/esm5/common/agro-object-utils.class.js +250 -0
- package/esm5/common/agro-platform-utils.class.js +101 -0
- package/esm5/common/agro-regex.constant.js +143 -0
- package/esm5/common/agro-string-utils.class.js +383 -0
- package/esm5/common/colors.class.js +81 -0
- package/esm5/common/index.js +11 -0
- package/esm5/components/event-control-board/common/control-status.js +7 -0
- package/esm5/components/event-control-board/common/documentsToIssue.js +6 -0
- package/esm5/components/event-control-board/common/event-control-constants.js +28 -0
- package/esm5/components/event-control-board/common/event-operation.js +13 -0
- package/esm5/components/event-control-board/common/event-origin.js +9 -0
- package/esm5/components/event-control-board/common/event-status.js +9 -0
- package/esm5/components/event-control-board/common/invoice-status.js +14 -0
- package/esm5/components/event-control-board/common/invoice-type.js +7 -0
- package/esm5/components/event-control-board/common/lookup-error-message.constants.js +11 -0
- package/esm5/components/event-control-board/common/operation.js +7 -0
- package/esm5/components/event-control-board/common/operationType.js +7 -0
- package/esm5/components/event-control-board/common/status-entity.js +6 -0
- package/esm5/components/event-control-board/common/ticket-status.js +9 -0
- package/esm5/components/event-control-board/event-control-board.component.js +528 -0
- package/esm5/components/event-control-board/event-control-board.module.js +65 -0
- package/esm5/components/event-control-board/index.js +21 -0
- package/esm5/components/event-control-board/service/e001pes/e001pes-dto.js +1 -0
- package/esm5/components/event-control-board/service/e001pes/e001pes.js +25 -0
- package/esm5/components/event-control-board/service/e001pes/e001pes.module.js +27 -0
- package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +37 -0
- package/esm5/components/event-control-board/service/e001tns/e001tns-dto.js +1 -0
- package/esm5/components/event-control-board/service/e001tns/e001tns.js +45 -0
- package/esm5/components/event-control-board/service/e001tns/e001tns.module.js +29 -0
- package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +27 -0
- package/esm5/components/event-control-board/service/e012fam/e012fam-dto.js +1 -0
- package/esm5/components/event-control-board/service/e012fam/e012fam.js +25 -0
- package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +27 -0
- package/esm5/components/event-control-board/service/e070emp/e070emp-dto.js +1 -0
- package/esm5/components/event-control-board/service/e070emp/e070emp.js +34 -0
- package/esm5/components/event-control-board/service/e070emp/e070emp.module.js +27 -0
- package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +34 -0
- package/esm5/components/event-control-board/service/e070fil/e070fil-dto.js +1 -0
- package/esm5/components/event-control-board/service/e070fil/e070fil.js +48 -0
- package/esm5/components/event-control-board/service/e070fil/e070fil.module.js +27 -0
- package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +34 -0
- package/esm5/components/event-control-board/service/e075der/e075der-dto.js +1 -0
- package/esm5/components/event-control-board/service/e075der/e075der.js +36 -0
- package/esm5/components/event-control-board/service/e075der/e075der.module.js +27 -0
- package/esm5/components/event-control-board/service/e075der/e075der.service.js +32 -0
- package/esm5/components/event-control-board/service/e113saf/e113saf-dto.js +1 -0
- package/esm5/components/event-control-board/service/e113saf/e113saf.js +25 -0
- package/esm5/components/event-control-board/service/e205dep/deposit-dto.js +1 -0
- package/esm5/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
- package/esm5/components/event-control-board/service/e205dep/e205dep.js +25 -0
- package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +32 -0
- package/esm5/components/event-control-board/service/entity-service.js +140 -0
- package/esm5/components/event-control-board/service/event-control/event-control-dto.js +1 -0
- package/esm5/components/event-control-board/service/event-control/event-control.js +25 -0
- package/esm5/components/event-control-board/service/event-control/event-control.module.js +29 -0
- package/esm5/components/event-control-board/service/event-control/event-control.service.js +27 -0
- package/esm5/components/event-control-board/service/event-control-board.service.js +34 -0
- package/esm5/components/event-control-board/service/event-control-item/event-control-item-dto.js +1 -0
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.js +39 -0
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.module.js +29 -0
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +32 -0
- package/esm5/components/event-control-board/service/external-invoice/external-invoice-dto.js +1 -0
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.js +25 -0
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.module.js +29 -0
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +27 -0
- package/esm5/components/event-control-board/service/invoice/invoice-dto.js +1 -0
- package/esm5/components/event-control-board/service/invoice/invoice.js +48 -0
- package/esm5/components/event-control-board/service/invoice/invoice.module.js +29 -0
- package/esm5/components/event-control-board/service/invoice/invoice.service.js +27 -0
- package/esm5/components/event-control-board/service/origination/operationType.js +7 -0
- package/esm5/components/event-control-board/service/origination/origination-dto.js +1 -0
- package/esm5/components/event-control-board/service/origination/origination.js +62 -0
- package/esm5/components/event-control-board/service/origination/origination.module.js +27 -0
- package/esm5/components/event-control-board/service/origination/origination.service.js +27 -0
- package/esm5/components/event-control-board/service/paginator-storage.service.js +71 -0
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +1 -0
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.js +37 -0
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.module.js +29 -0
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.service.js +27 -0
- package/esm5/components/event-control-board/service/rural-estate/rural-estate-dto.js +1 -0
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.js +83 -0
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.module.js +29 -0
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +27 -0
- package/esm5/components/event-control-board/service/ticket/ticket-dto.js +1 -0
- package/esm5/components/event-control-board/service/ticket/ticket.js +44 -0
- package/esm5/components/event-control-board/service/ticket/ticket.module.js +29 -0
- package/esm5/components/event-control-board/service/ticket/ticket.service.js +62 -0
- package/esm5/components/event-control-board/shared.module.js +63 -0
- package/esm5/components/event-steps/event-steps.component.js +113 -0
- package/esm5/components/event-steps/event-steps.module.js +19 -0
- package/esm5/components/event-steps/index.js +3 -0
- package/esm5/components/index.js +3 -0
- package/esm5/enums/agro-entity-status.enum.js +6 -0
- package/esm5/enums/agro-numbers.enum.js +1007 -0
- package/esm5/enums/agro-string-masks.enum.js +12 -0
- package/esm5/enums/date-comparison-type.enum.js +6 -0
- package/esm5/enums/http-codes.enum.js +66 -0
- package/esm5/enums/index.js +7 -0
- package/esm5/enums/number-comparison-type.enum.js +10 -0
- package/esm5/form-validator/agro-form-validator.js +239 -0
- package/esm5/form-validator/index.js +2 -0
- package/esm5/lib-translation.module.js +24 -0
- package/esm5/pipe/index.js +2 -0
- package/esm5/pipe/lib-translate.pipe.js +29 -0
- package/esm5/public-api.js +9 -0
- package/esm5/senior-agronegocio-angular-components.js +6 -0
- package/esm5/services/i18n/en-US.js +195 -0
- package/esm5/services/i18n/es-CO.js +195 -0
- package/esm5/services/i18n/pt-BR.js +195 -0
- package/esm5/services/index.js +3 -0
- package/esm5/services/lib-translation.service.js +56 -0
- package/esm5/services/websocket/async-lock.js +43 -0
- package/esm5/services/websocket/index.js +6 -0
- package/esm5/services/websocket/models/index.js +2 -0
- package/esm5/services/websocket/models/primitive-manager.js +58 -0
- package/esm5/services/websocket/protocols/index.js +1 -0
- package/esm5/services/websocket/protocols/on-event-options.js +1 -0
- package/esm5/services/websocket/protocols/primitive-event.js +1 -0
- package/esm5/services/websocket/user-information.service.js +38 -0
- package/esm5/services/websocket/websocket.module.js +24 -0
- package/esm5/services/websocket/websocket.service.js +411 -0
- package/fesm2015/senior-agronegocio-angular-components.js +5279 -0
- package/fesm2015/senior-agronegocio-angular-components.js.map +1 -0
- package/fesm5/senior-agronegocio-angular-components.js +5638 -0
- package/fesm5/senior-agronegocio-angular-components.js.map +1 -0
- package/form-validator/agro-form-validator.d.ts +103 -0
- package/form-validator/index.d.ts +1 -0
- package/lib-translation.module.d.ts +2 -0
- package/package.json +82 -0
- package/pipe/index.d.ts +1 -0
- package/pipe/lib-translate.pipe.d.ts +7 -0
- package/public-api.d.ts +8 -0
- package/senior-agronegocio-angular-components.d.ts +5 -0
- package/senior-agronegocio-angular-components.metadata.json +1 -0
- package/services/i18n/en-US.d.ts +194 -0
- package/services/i18n/es-CO.d.ts +194 -0
- package/services/i18n/pt-BR.d.ts +194 -0
- package/services/index.d.ts +2 -0
- package/services/lib-translation.service.d.ts +15 -0
- package/services/websocket/async-lock.d.ts +6 -0
- package/services/websocket/index.d.ts +6 -0
- package/services/websocket/models/index.d.ts +1 -0
- package/services/websocket/models/primitive-manager.d.ts +19 -0
- package/services/websocket/protocols/index.d.ts +2 -0
- package/services/websocket/protocols/on-event-options.d.ts +8 -0
- package/services/websocket/protocols/primitive-event.d.ts +10 -0
- package/services/websocket/user-information.service.d.ts +7 -0
- package/services/websocket/websocket.module.d.ts +2 -0
- package/services/websocket/websocket.service.d.ts +100 -0
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
import { __assign, __awaiter, __decorate, __generator, __read, __spread } from "tslib";
|
|
2
|
+
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
|
|
3
|
+
import { catchError, map, switchMap, takeUntil } from "rxjs/operators";
|
|
4
|
+
import { forkJoin, Subject } from "rxjs";
|
|
5
|
+
import { BadgeColors, ButtonPriority, FieldType, FormField, StepState } from "@seniorsistemas/angular-components";
|
|
6
|
+
import { registerLocaleData } from "@angular/common";
|
|
7
|
+
import localePt from "@angular/common/locales/pt";
|
|
8
|
+
import { Component, Input, LOCALE_ID } from '@angular/core';
|
|
9
|
+
import { ActivatedRoute } from '@angular/router';
|
|
10
|
+
import { WebsocketService } from "../../services/websocket";
|
|
11
|
+
import { LookupErrorMessages } from "./common/lookup-error-message.constants";
|
|
12
|
+
import { MessageService } from "primeng";
|
|
13
|
+
import { PaginatorStorageService } from "./service/paginator-storage.service";
|
|
14
|
+
import { EventStatus } from "./common/event-status";
|
|
15
|
+
import { eventItem } from "./common/event-control-constants";
|
|
16
|
+
import { EventOrigin } from "./common/event-origin";
|
|
17
|
+
import { EventControlBoardService } from "./service/event-control-board.service";
|
|
18
|
+
var moment = require("moment");
|
|
19
|
+
import { AGRO_NUMBERS } from "../../enums/agro-numbers.enum";
|
|
20
|
+
import { LibTranslationService } from "../../services/lib-translation.service";
|
|
21
|
+
var EventControlBoardComponent = /** @class */ (function () {
|
|
22
|
+
function EventControlBoardComponent(route, translate, formBuilder, websocketService, eventControlBoardService, paginatorStorageService, messageService) {
|
|
23
|
+
this.route = route;
|
|
24
|
+
this.translate = translate;
|
|
25
|
+
this.formBuilder = formBuilder;
|
|
26
|
+
this.websocketService = websocketService;
|
|
27
|
+
this.eventControlBoardService = eventControlBoardService;
|
|
28
|
+
this.paginatorStorageService = paginatorStorageService;
|
|
29
|
+
this.messageService = messageService;
|
|
30
|
+
this.steps = [];
|
|
31
|
+
this.showSidebar = false;
|
|
32
|
+
this.showReprocessButton = false;
|
|
33
|
+
this.gridTotalRecords = AGRO_NUMBERS.ZERO;
|
|
34
|
+
this.gridLoading = false;
|
|
35
|
+
this.displayModal = false;
|
|
36
|
+
this.ButtonPriority = ButtonPriority;
|
|
37
|
+
this.BadgeColors = BadgeColors;
|
|
38
|
+
this.permissions = {};
|
|
39
|
+
this.localeConfig = {};
|
|
40
|
+
this.currentListParams = { page: AGRO_NUMBERS.ZERO, size: AGRO_NUMBERS.TEN, sort: [], filterData: {} };
|
|
41
|
+
this.ngUnsubscribe = new Subject();
|
|
42
|
+
this.eventItem = eventItem;
|
|
43
|
+
registerLocaleData(localePt);
|
|
44
|
+
}
|
|
45
|
+
EventControlBoardComponent.prototype.ngOnInit = function () {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
+
var _this = this;
|
|
48
|
+
return __generator(this, function (_a) {
|
|
49
|
+
this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe(function (data) { return _this.onRouteDataChange(data); });
|
|
50
|
+
this.gridColumns = this.setGridColumns();
|
|
51
|
+
this.websocketService.onConnect();
|
|
52
|
+
this.callWebsocket();
|
|
53
|
+
return [2 /*return*/];
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
EventControlBoardComponent.prototype.ngOnChanges = function (changes) {
|
|
58
|
+
if (!this.filterFormGroup) {
|
|
59
|
+
this.initializeFormGroup();
|
|
60
|
+
this.setFormFields();
|
|
61
|
+
}
|
|
62
|
+
this.updateCompanyAndBranchFormFields(changes);
|
|
63
|
+
this.updateEventOriginAndTicketFormFields(changes);
|
|
64
|
+
this.updateEventStatusAndCreatedDateFormFields(changes);
|
|
65
|
+
this.onSearch();
|
|
66
|
+
};
|
|
67
|
+
EventControlBoardComponent.prototype.updateCompanyAndBranchFormFields = function (changes) {
|
|
68
|
+
var _a, _b, _c, _d;
|
|
69
|
+
if (changes.e070emp && changes.e070emp.currentValue !== changes.e070emp.previousValue) {
|
|
70
|
+
(_a = this.filterFormGroup.get('e070emp')) === null || _a === void 0 ? void 0 : _a.setValue((_b = changes.e070emp.currentValue) !== null && _b !== void 0 ? _b : null);
|
|
71
|
+
}
|
|
72
|
+
if (changes.e070fil && changes.e070fil.currentValue !== changes.e070fil.previousValue) {
|
|
73
|
+
(_c = this.filterFormGroup.get('e070fil')) === null || _c === void 0 ? void 0 : _c.setValue((_d = changes.e070fil.currentValue) !== null && _d !== void 0 ? _d : null);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
EventControlBoardComponent.prototype.updateEventOriginAndTicketFormFields = function (changes) {
|
|
77
|
+
var _a, _b, _c, _d;
|
|
78
|
+
if (changes.eventOrigin && changes.eventOrigin.currentValue !== changes.eventOrigin.previousValue) {
|
|
79
|
+
(_a = this.filterFormGroup.get('eventOrigin')) === null || _a === void 0 ? void 0 : _a.setValue((_b = changes.eventOrigin.currentValue) !== null && _b !== void 0 ? _b : null);
|
|
80
|
+
}
|
|
81
|
+
if (changes.ticket && changes.ticket.currentValue !== changes.ticket.previousValue) {
|
|
82
|
+
(_c = this.filterFormGroup.get('number')) === null || _c === void 0 ? void 0 : _c.setValue((_d = changes.ticket.currentValue) !== null && _d !== void 0 ? _d : null);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
EventControlBoardComponent.prototype.updateEventStatusAndCreatedDateFormFields = function (changes) {
|
|
86
|
+
var _a, _b, _c, _d;
|
|
87
|
+
if (changes.eventStatus && changes.eventStatus.currentValue !== changes.eventStatus.previousValue) {
|
|
88
|
+
(_a = this.filterFormGroup.get('status')) === null || _a === void 0 ? void 0 : _a.setValue((_b = changes.eventStatus.currentValue) !== null && _b !== void 0 ? _b : null);
|
|
89
|
+
}
|
|
90
|
+
if (changes.createdDate && changes.createdDate.currentValue !== changes.createdDate.previousValue) {
|
|
91
|
+
(_c = this.filterFormGroup.get('createdDate')) === null || _c === void 0 ? void 0 : _c.setValue((_d = changes.createdDate.currentValue) !== null && _d !== void 0 ? _d : null);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
EventControlBoardComponent.prototype.initializeFormGroup = function () {
|
|
95
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
96
|
+
this.filterFormGroup = this.formBuilder.group({
|
|
97
|
+
e070emp: [{ value: (_a = this.e070emp) !== null && _a !== void 0 ? _a : null, disabled: false }, Validators.compose([])],
|
|
98
|
+
e070fil: [{ value: (_b = this.e070fil) !== null && _b !== void 0 ? _b : null, disabled: false }, Validators.compose([])],
|
|
99
|
+
number: [{ value: (_c = this.ticket) !== null && _c !== void 0 ? _c : null, disabled: false }, Validators.compose([])],
|
|
100
|
+
externalId: [{ value: (_d = this.externalId) !== null && _d !== void 0 ? _d : null, disabled: false }, Validators.compose([])],
|
|
101
|
+
eventOrigin: [{ value: (_e = this.eventOrigin) !== null && _e !== void 0 ? _e : null, disabled: false }, Validators.compose([])],
|
|
102
|
+
status: [{ value: (_f = this.eventStatus) !== null && _f !== void 0 ? _f : null, disabled: false }, Validators.compose([])],
|
|
103
|
+
createdDate: [{ value: (_g = this.createdDate) !== null && _g !== void 0 ? _g : null, disabled: false }, Validators.compose([])],
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
EventControlBoardComponent.prototype.setFormFields = function () {
|
|
107
|
+
this.filterFields = [
|
|
108
|
+
new FormField({
|
|
109
|
+
name: "e070emp",
|
|
110
|
+
type: FieldType.Chips,
|
|
111
|
+
}),
|
|
112
|
+
new FormField({
|
|
113
|
+
name: "e070fil",
|
|
114
|
+
type: FieldType.Chips,
|
|
115
|
+
}),
|
|
116
|
+
new FormField({
|
|
117
|
+
name: "number",
|
|
118
|
+
type: FieldType.Chips,
|
|
119
|
+
}),
|
|
120
|
+
new FormField({
|
|
121
|
+
name: "externalId",
|
|
122
|
+
type: FieldType.String,
|
|
123
|
+
}),
|
|
124
|
+
new FormField({
|
|
125
|
+
name: "eventOrigin",
|
|
126
|
+
type: FieldType.Enum,
|
|
127
|
+
}),
|
|
128
|
+
new FormField({
|
|
129
|
+
name: "status",
|
|
130
|
+
type: FieldType.Enum,
|
|
131
|
+
}),
|
|
132
|
+
new FormField({
|
|
133
|
+
name: "createdDate",
|
|
134
|
+
type: FieldType.Date,
|
|
135
|
+
}),
|
|
136
|
+
];
|
|
137
|
+
};
|
|
138
|
+
EventControlBoardComponent.prototype.setGridColumns = function () {
|
|
139
|
+
return [
|
|
140
|
+
{ field: 'e070emp', header: this.translate.instant("agro.angular_components.company") },
|
|
141
|
+
{ field: 'e070fil', header: this.translate.instant("agro.angular_components.label_branch") },
|
|
142
|
+
{ field: 'eventOrigin', header: this.translate.instant("agro.angular_components.event_origin_label") },
|
|
143
|
+
{ field: 'number', header: this.translate.instant("agro.angular_components.ticket") },
|
|
144
|
+
];
|
|
145
|
+
};
|
|
146
|
+
EventControlBoardComponent.prototype.ngOnDestroy = function () {
|
|
147
|
+
this.ngUnsubscribe.next();
|
|
148
|
+
this.ngUnsubscribe.complete();
|
|
149
|
+
this.websocketService.disconnect();
|
|
150
|
+
};
|
|
151
|
+
EventControlBoardComponent.prototype.callWebsocket = function () {
|
|
152
|
+
var _this = this;
|
|
153
|
+
this.websocketService
|
|
154
|
+
.onEvent({
|
|
155
|
+
domain: 'agro',
|
|
156
|
+
service: 'agro_events',
|
|
157
|
+
primitive: "processedEvent",
|
|
158
|
+
})
|
|
159
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
160
|
+
.subscribe(function () {
|
|
161
|
+
var filterData = _this.filterFormGroup.getRawValue();
|
|
162
|
+
_this.updateGrid({ filterData: filterData });
|
|
163
|
+
});
|
|
164
|
+
this.websocketService
|
|
165
|
+
.onEvent({
|
|
166
|
+
domain: 'platform',
|
|
167
|
+
service: 'notifications',
|
|
168
|
+
primitive: "userNotified",
|
|
169
|
+
})
|
|
170
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
171
|
+
.subscribe(function () {
|
|
172
|
+
var filterData = _this.filterFormGroup.getRawValue();
|
|
173
|
+
_this.updateGrid({ filterData: filterData });
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
EventControlBoardComponent.prototype.onSearch = function () {
|
|
177
|
+
var filterData = this.filterFormGroup.getRawValue();
|
|
178
|
+
this.gridLoading = true;
|
|
179
|
+
this.resetGrid({ filterData: filterData });
|
|
180
|
+
this.updateGrid({ filterData: filterData });
|
|
181
|
+
};
|
|
182
|
+
EventControlBoardComponent.prototype.onRouteDataChange = function (data) {
|
|
183
|
+
this.permissions = data.allPermissions;
|
|
184
|
+
this.localeConfig = data.localeConfig;
|
|
185
|
+
};
|
|
186
|
+
EventControlBoardComponent.prototype.resetGrid = function (listParams) {
|
|
187
|
+
if (listParams) {
|
|
188
|
+
this.currentListParams = __assign(__assign({}, this.currentListParams), listParams);
|
|
189
|
+
}
|
|
190
|
+
this.currentListParams.page = AGRO_NUMBERS.ZERO;
|
|
191
|
+
};
|
|
192
|
+
EventControlBoardComponent.prototype.updateGrid = function (listParams) {
|
|
193
|
+
var _this = this;
|
|
194
|
+
if (listParams === void 0) { listParams = {}; }
|
|
195
|
+
this.currentListParams = __assign(__assign({}, this.currentListParams), listParams);
|
|
196
|
+
var _a = this.currentListParams, page = _a.page, size = _a.size;
|
|
197
|
+
var nSort = this.getSortedFields();
|
|
198
|
+
var filterQuery = this.getFilterQuery();
|
|
199
|
+
var displayFields = [""];
|
|
200
|
+
this.eventControlBoardService.eventControlService
|
|
201
|
+
.list({ sort: nSort, page: page, size: size, filterQuery: filterQuery, displayFields: displayFields })
|
|
202
|
+
.pipe(takeUntil(this.ngUnsubscribe), catchError(function (err) {
|
|
203
|
+
_this.gridLoading = false;
|
|
204
|
+
throw err;
|
|
205
|
+
}))
|
|
206
|
+
.subscribe(function (list) { return _this.handleListResponse(list); });
|
|
207
|
+
};
|
|
208
|
+
EventControlBoardComponent.prototype.getSortedFields = function () {
|
|
209
|
+
var _this = this;
|
|
210
|
+
var _a;
|
|
211
|
+
var nSort = [];
|
|
212
|
+
if (((_a = this.currentListParams.sort) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
213
|
+
nSort = JSON.parse(JSON.stringify(this.currentListParams.sort));
|
|
214
|
+
nSort.forEach(function (sortItem) {
|
|
215
|
+
sortItem.field = _this.getFieldNameForSortRequest(sortItem.field);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
nSort.push({ field: 'lastModifiedDate', order: AGRO_NUMBERS.MINUSONE });
|
|
220
|
+
}
|
|
221
|
+
return nSort;
|
|
222
|
+
};
|
|
223
|
+
EventControlBoardComponent.prototype.getFilterQuery = function () {
|
|
224
|
+
var _this = this;
|
|
225
|
+
var filterData = this.currentListParams.filterData;
|
|
226
|
+
var filterJson = { filter: {} };
|
|
227
|
+
return __spread(this.filterFields).filter(function (_a) {
|
|
228
|
+
var name = _a.name;
|
|
229
|
+
return filterData && filterData[name] !== undefined && filterData[name] !== null && filterData[name].length !== 0;
|
|
230
|
+
})
|
|
231
|
+
.map(function (formField) {
|
|
232
|
+
var _a;
|
|
233
|
+
var lookupFieldName = 'id';
|
|
234
|
+
var finalFilterName = (_a = formField.name) !== null && _a !== void 0 ? _a : '';
|
|
235
|
+
filterJson.filter[finalFilterName] = filterData[finalFilterName].id;
|
|
236
|
+
return _this.createFilterString(finalFilterName, formField.type, filterData[finalFilterName], lookupFieldName);
|
|
237
|
+
})
|
|
238
|
+
.filter(function (filter) { return filter !== null && filter !== '' && filter !== undefined; })
|
|
239
|
+
.join(' and ');
|
|
240
|
+
};
|
|
241
|
+
EventControlBoardComponent.prototype.handleListResponse = function (list) {
|
|
242
|
+
this.gridData = list.contents;
|
|
243
|
+
this.gridTotalRecords = list.totalElements;
|
|
244
|
+
if (!this.gridData || this.gridData.length <= AGRO_NUMBERS.ZERO) {
|
|
245
|
+
this.gridLoading = false;
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
this.processDetailCalls();
|
|
249
|
+
};
|
|
250
|
+
EventControlBoardComponent.prototype.processDetailCalls = function () {
|
|
251
|
+
var _this = this;
|
|
252
|
+
var detailCalls$ = this.gridData.map(function (item) {
|
|
253
|
+
return _this.eventControlBoardService.eventControlItemService.list({
|
|
254
|
+
filterQuery: "eventControl eq '" + item.id + "'",
|
|
255
|
+
sort: [{ field: 'sequence', order: AGRO_NUMBERS.ONE }],
|
|
256
|
+
size: AGRO_NUMBERS.ONE_HUNDRED
|
|
257
|
+
})
|
|
258
|
+
.pipe(takeUntil(_this.ngUnsubscribe), catchError(function (err) {
|
|
259
|
+
_this.gridLoading = false;
|
|
260
|
+
throw err;
|
|
261
|
+
}), switchMap(function (detailsResponse) {
|
|
262
|
+
return _this.eventControlBoardService.ticketService.list({
|
|
263
|
+
filterQuery: "id eq '" + item.externalId + "' or balanceEntryControl.id eq '" + item.externalId + "'",
|
|
264
|
+
displayFields: ['number']
|
|
265
|
+
})
|
|
266
|
+
.pipe(map(function (ticketResponse) { return ({ detailsResponse: detailsResponse, ticketResponse: ticketResponse }); }), catchError(function (err) {
|
|
267
|
+
_this.gridLoading = false;
|
|
268
|
+
throw err;
|
|
269
|
+
}));
|
|
270
|
+
}));
|
|
271
|
+
});
|
|
272
|
+
forkJoin(detailCalls$).subscribe(function (responses) {
|
|
273
|
+
_this.processDetailsResponses(responses);
|
|
274
|
+
});
|
|
275
|
+
};
|
|
276
|
+
EventControlBoardComponent.prototype.processDetailsResponses = function (detailsResponses) {
|
|
277
|
+
var _this = this;
|
|
278
|
+
this.gridData.forEach(function (item, index) {
|
|
279
|
+
var _a, _b;
|
|
280
|
+
var _c = detailsResponses[index], detailsResponse = _c.detailsResponse, ticketResponse = _c.ticketResponse;
|
|
281
|
+
var tickets = (_a = ticketResponse === null || ticketResponse === void 0 ? void 0 : ticketResponse.contents) !== null && _a !== void 0 ? _a : [];
|
|
282
|
+
item.details = (_b = detailsResponse === null || detailsResponse === void 0 ? void 0 : detailsResponse.contents) !== null && _b !== void 0 ? _b : [];
|
|
283
|
+
item.tickets = tickets.map(function (ticket) { return ticket.number; }).join(', ');
|
|
284
|
+
var groupedDetails = _this.groupByEventGroup(item.details);
|
|
285
|
+
item.groups = Object.keys(groupedDetails).map(function (eventGroupId) {
|
|
286
|
+
var groupDetails = groupedDetails[eventGroupId];
|
|
287
|
+
var lastActiveIndex = groupDetails.map(function (detail) {
|
|
288
|
+
return detail.status !== EventStatus.PENDING;
|
|
289
|
+
}).lastIndexOf(true);
|
|
290
|
+
var activeIndex = lastActiveIndex;
|
|
291
|
+
if (lastActiveIndex !== -1 && groupDetails[lastActiveIndex].status === EventStatus.SUCCESS) {
|
|
292
|
+
activeIndex = lastActiveIndex + 1;
|
|
293
|
+
}
|
|
294
|
+
var steps = groupDetails.map(function (detail, detailIndex) {
|
|
295
|
+
return {
|
|
296
|
+
item: detail,
|
|
297
|
+
ticket: item.tickets,
|
|
298
|
+
eventType: detail.eventControl.eventOrigin,
|
|
299
|
+
label: _this.getEventLabel(detail),
|
|
300
|
+
disabled: detail.status === EventStatus.PENDING && detailIndex !== activeIndex,
|
|
301
|
+
tooltip: _this.getEventLabel(detail),
|
|
302
|
+
state: _this.determineStepState(detail),
|
|
303
|
+
};
|
|
304
|
+
});
|
|
305
|
+
return {
|
|
306
|
+
eventGroupId: eventGroupId,
|
|
307
|
+
steps: steps,
|
|
308
|
+
activeIndex: activeIndex
|
|
309
|
+
};
|
|
310
|
+
});
|
|
311
|
+
item.activeIndex = item.groups.length > 0 ? item.groups[0].activeIndex : -1;
|
|
312
|
+
});
|
|
313
|
+
this.gridDataResolved = this.gridData;
|
|
314
|
+
this.gridLoading = false;
|
|
315
|
+
};
|
|
316
|
+
EventControlBoardComponent.prototype.groupByEventGroup = function (details) {
|
|
317
|
+
return details.reduce(function (acc, detail) {
|
|
318
|
+
var eventGroupId = detail.eventGroup;
|
|
319
|
+
if (!acc[eventGroupId]) {
|
|
320
|
+
acc[eventGroupId] = [];
|
|
321
|
+
}
|
|
322
|
+
acc[eventGroupId].push(detail);
|
|
323
|
+
return acc;
|
|
324
|
+
}, {});
|
|
325
|
+
};
|
|
326
|
+
EventControlBoardComponent.prototype.determineStepState = function (detail) {
|
|
327
|
+
var state;
|
|
328
|
+
if (detail.status === EventStatus.SUCCESS) {
|
|
329
|
+
state = StepState.Success;
|
|
330
|
+
}
|
|
331
|
+
else if (detail.status === EventStatus.FAILED) {
|
|
332
|
+
state = StepState.Warning;
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
state = StepState.Default;
|
|
336
|
+
}
|
|
337
|
+
return state;
|
|
338
|
+
};
|
|
339
|
+
EventControlBoardComponent.prototype.getEventLabel = function (detail) {
|
|
340
|
+
var _a;
|
|
341
|
+
var eventLabel = (_a = this.eventItem.find(function (e) { return e.value === detail.eventOperation; })) === null || _a === void 0 ? void 0 : _a.label;
|
|
342
|
+
return eventLabel ? this.translate.instant(eventLabel) : detail.eventOperation;
|
|
343
|
+
};
|
|
344
|
+
EventControlBoardComponent.prototype.getFieldNameForSortRequest = function (name) {
|
|
345
|
+
switch (name) {
|
|
346
|
+
case 'e070emp':
|
|
347
|
+
return 'e070emp.nomEmp';
|
|
348
|
+
case 'e070fil':
|
|
349
|
+
return 'e070fil.nomFil';
|
|
350
|
+
case 'number':
|
|
351
|
+
return 'createdDate';
|
|
352
|
+
default:
|
|
353
|
+
return name;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
EventControlBoardComponent.prototype.createFilterString = function (name, type, value, lookupFieldName) {
|
|
357
|
+
if (lookupFieldName === void 0) { lookupFieldName = 'id'; }
|
|
358
|
+
if (name === 'number') {
|
|
359
|
+
var filterParts_1 = [];
|
|
360
|
+
value.forEach(function (item) {
|
|
361
|
+
filterParts_1.push("externalId eq '" + item.id + "'");
|
|
362
|
+
if (item.invoice) {
|
|
363
|
+
filterParts_1.push("externalId eq '" + item.invoice.id + "'");
|
|
364
|
+
}
|
|
365
|
+
if (item.balanceEntryControl) {
|
|
366
|
+
filterParts_1.push("externalId eq '" + item.balanceEntryControl.id + "'");
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
return "(" + filterParts_1.join(' or ') + ")";
|
|
370
|
+
}
|
|
371
|
+
return this.createFilterStringFromType(name, type, value, lookupFieldName);
|
|
372
|
+
};
|
|
373
|
+
EventControlBoardComponent.prototype.createFilterStringFromType = function (name, type, value, lookupFieldName) {
|
|
374
|
+
if (type === FieldType.Chips) {
|
|
375
|
+
return name + " eq '" + value[lookupFieldName] + "'";
|
|
376
|
+
}
|
|
377
|
+
if (type === FieldType.Date) {
|
|
378
|
+
var startOfDay = moment(value).startOf('day').format("YYYY-MM-DDTHH:mm:ss") + 'Z';
|
|
379
|
+
var endOfDay = moment(value).endOf('day').format("YYYY-MM-DDTHH:mm:ss") + 'Z';
|
|
380
|
+
return name + " ge '" + startOfDay + "' and " + name + " le '" + endOfDay + "'";
|
|
381
|
+
}
|
|
382
|
+
return name + " eq '" + value + "'";
|
|
383
|
+
};
|
|
384
|
+
EventControlBoardComponent.prototype.onGridChange = function (event) {
|
|
385
|
+
var size = event === null || event === void 0 ? void 0 : event.rows;
|
|
386
|
+
var page = (event === null || event === void 0 ? void 0 : event.first) / size;
|
|
387
|
+
var sort = event.multiSortMeta;
|
|
388
|
+
this.gridLoading = true;
|
|
389
|
+
if (size !== AGRO_NUMBERS.TEN || page !== AGRO_NUMBERS.ZERO || (sort && sort.length > AGRO_NUMBERS.ZERO)) {
|
|
390
|
+
this.paginatorStorageService.storePaginator('EventControlBoardPaginator', { page: page, size: size, sort: sort });
|
|
391
|
+
}
|
|
392
|
+
return this.updateGrid({ page: page, size: size, sort: sort });
|
|
393
|
+
};
|
|
394
|
+
EventControlBoardComponent.prototype.getPageSize = function () {
|
|
395
|
+
return this.currentListParams.size;
|
|
396
|
+
};
|
|
397
|
+
EventControlBoardComponent.prototype.getRowIndex = function () {
|
|
398
|
+
return this.currentListParams.page * this.currentListParams.size;
|
|
399
|
+
};
|
|
400
|
+
EventControlBoardComponent.prototype.getSortField = function () {
|
|
401
|
+
if (!this.currentListParams.sort || this.currentListParams.sort.length <= AGRO_NUMBERS.ZERO) {
|
|
402
|
+
return this.gridColumns[AGRO_NUMBERS.ZERO].field;
|
|
403
|
+
}
|
|
404
|
+
return this.currentListParams.sort[AGRO_NUMBERS.ZERO].field;
|
|
405
|
+
};
|
|
406
|
+
EventControlBoardComponent.prototype.getSortOrder = function () {
|
|
407
|
+
if (!this.currentListParams.sort || this.currentListParams.sort.length <= AGRO_NUMBERS.ZERO) {
|
|
408
|
+
return AGRO_NUMBERS.ONE;
|
|
409
|
+
}
|
|
410
|
+
return this.currentListParams.sort[AGRO_NUMBERS.ZERO].order;
|
|
411
|
+
};
|
|
412
|
+
EventControlBoardComponent.prototype.getErrorMessages = function () {
|
|
413
|
+
var translatedErrorMessages = {};
|
|
414
|
+
var _loop_1 = function (key) {
|
|
415
|
+
if (LookupErrorMessages.hasOwnProperty(key)) {
|
|
416
|
+
this_1.translate.get(LookupErrorMessages[key]).subscribe(function (res) {
|
|
417
|
+
translatedErrorMessages[key] = res;
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
var this_1 = this;
|
|
422
|
+
for (var key in LookupErrorMessages) {
|
|
423
|
+
_loop_1(key);
|
|
424
|
+
}
|
|
425
|
+
return translatedErrorMessages;
|
|
426
|
+
};
|
|
427
|
+
EventControlBoardComponent.prototype.stepSelected = function (event) {
|
|
428
|
+
var _this = this;
|
|
429
|
+
this.selectedStep = event.step;
|
|
430
|
+
if (this.selectedStep.eventType !== EventOrigin.CHANGE_REQUEST) {
|
|
431
|
+
this.sidebarLoading = true;
|
|
432
|
+
var param = JSON.parse(this.selectedStep.item.input);
|
|
433
|
+
var producerInvoiceId = param.producerInvoiceIds ? param.producerInvoiceIds[0]
|
|
434
|
+
: param.invoice.generalData.transactionalId;
|
|
435
|
+
this.eventControlBoardService.producerInvoiceService.get(producerInvoiceId)
|
|
436
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
437
|
+
.subscribe(function (result) {
|
|
438
|
+
_this.producerInvoice = result;
|
|
439
|
+
_this.sidebarLoading = false;
|
|
440
|
+
}, function () {
|
|
441
|
+
_this.sidebarLoading = false;
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
this.showReprocessButton = event.step.state === StepState.Warning;
|
|
445
|
+
this.sidebarTitle = this.translate.instant('agro.angular_components.event_sidebar_title', { event: event.step.label });
|
|
446
|
+
this.showSidebar = true;
|
|
447
|
+
};
|
|
448
|
+
EventControlBoardComponent.prototype.reprocessEvent = function () {
|
|
449
|
+
var _this = this;
|
|
450
|
+
var reprocessEventObj = {
|
|
451
|
+
eventControlItemId: this.selectedStep.item.id
|
|
452
|
+
};
|
|
453
|
+
this.eventControlBoardService.eventControlItemService.reprocessFailedEvent(reprocessEventObj)
|
|
454
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
455
|
+
.subscribe(function () {
|
|
456
|
+
_this.addMessage('info', 'agro.angular_components.reprocessing_event_message_title', 'agro.angular_components.reprocessing_event_message_description');
|
|
457
|
+
}, function () {
|
|
458
|
+
_this.addMessage('error', 'agro.angular_components.error_reprocessing_event_message_title', 'agro.angular_components.error_reprocessing_event_message_description');
|
|
459
|
+
});
|
|
460
|
+
};
|
|
461
|
+
EventControlBoardComponent.prototype.addMessage = function (severity, summary, detail) {
|
|
462
|
+
this.messageService.add({
|
|
463
|
+
severity: severity,
|
|
464
|
+
summary: this.translate.instant(summary),
|
|
465
|
+
detail: this.translate.instant(detail),
|
|
466
|
+
});
|
|
467
|
+
};
|
|
468
|
+
EventControlBoardComponent.prototype.openModal = function () {
|
|
469
|
+
this.displayModal = true;
|
|
470
|
+
};
|
|
471
|
+
EventControlBoardComponent.prototype.confirmModal = function () {
|
|
472
|
+
this.reprocessEvent();
|
|
473
|
+
this.displayModal = false;
|
|
474
|
+
this.showSidebar = false;
|
|
475
|
+
};
|
|
476
|
+
EventControlBoardComponent.prototype.cancelModal = function () {
|
|
477
|
+
this.displayModal = false;
|
|
478
|
+
};
|
|
479
|
+
EventControlBoardComponent.prototype.closeSidebar = function () {
|
|
480
|
+
this.showSidebar = false;
|
|
481
|
+
};
|
|
482
|
+
EventControlBoardComponent.ctorParameters = function () { return [
|
|
483
|
+
{ type: ActivatedRoute },
|
|
484
|
+
{ type: LibTranslationService },
|
|
485
|
+
{ type: FormBuilder },
|
|
486
|
+
{ type: WebsocketService },
|
|
487
|
+
{ type: EventControlBoardService },
|
|
488
|
+
{ type: PaginatorStorageService },
|
|
489
|
+
{ type: MessageService }
|
|
490
|
+
]; };
|
|
491
|
+
__decorate([
|
|
492
|
+
Input()
|
|
493
|
+
], EventControlBoardComponent.prototype, "e070emp", void 0);
|
|
494
|
+
__decorate([
|
|
495
|
+
Input()
|
|
496
|
+
], EventControlBoardComponent.prototype, "e070fil", void 0);
|
|
497
|
+
__decorate([
|
|
498
|
+
Input()
|
|
499
|
+
], EventControlBoardComponent.prototype, "ticket", void 0);
|
|
500
|
+
__decorate([
|
|
501
|
+
Input()
|
|
502
|
+
], EventControlBoardComponent.prototype, "eventOrigin", void 0);
|
|
503
|
+
__decorate([
|
|
504
|
+
Input()
|
|
505
|
+
], EventControlBoardComponent.prototype, "eventStatus", void 0);
|
|
506
|
+
__decorate([
|
|
507
|
+
Input()
|
|
508
|
+
], EventControlBoardComponent.prototype, "externalId", void 0);
|
|
509
|
+
__decorate([
|
|
510
|
+
Input()
|
|
511
|
+
], EventControlBoardComponent.prototype, "createdDate", void 0);
|
|
512
|
+
__decorate([
|
|
513
|
+
Input()
|
|
514
|
+
], EventControlBoardComponent.prototype, "standalone", void 0);
|
|
515
|
+
EventControlBoardComponent = __decorate([
|
|
516
|
+
Component({
|
|
517
|
+
selector: 'event-control-board',
|
|
518
|
+
template: "<div class=\"ui-g\" *sLoadingState=\"gridLoading\">\r\n <div class=\"ui-g-12\">\r\n <p-panel>\r\n <p-header>\r\n {{ \"agro.angular_components.event_control_header\" | libTranslate }}\r\n </p-header>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12\">\r\n <s-button\r\n id=\"refresh-button\"\r\n [priority]=\"ButtonPriority.Primary\"\r\n iconClass=\"fa fa-refresh\"\r\n [label]=\"'agro.angular_components.refresh' | libTranslate\"\r\n (click)=\"onSearch()\"\r\n >\r\n </s-button>\r\n </div>\r\n </div>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12 ui-md-12\" *ngIf=\"!gridData || gridData?.length === 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-exclamation-triangle\"\r\n title=\"{{ 'agro.angular_components.nothing_found' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.table_empty_description' | libTranslate }}\"\r\n >\r\n </s-empty-state>\r\n </div>\r\n <ng-container *ngIf=\"gridData?.length > 0\">\r\n <p-table\r\n stylelass=\"custom-table\"\r\n #eventControlTable\r\n [value]=\"gridDataResolved\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [scrollable]=\"true\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"!standalone\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [rows]=\"10\"\r\n [responsive]=\"true\"\r\n (onLazyLoad)=\"onGridChange($event)\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [lazyLoadOnInit]=\"false\"\r\n sortMode=\"multiple\"\r\n [rows]=\"getPageSize()\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <ng-container *ngIf=\"!standalone\">\r\n <th\r\n *ngFor=\"let col of columns\"\r\n class=\"ui-lg-1 ui-md-1\"\r\n [pSortableColumn]=\"col.field\"\r\n scope=\"col\"\r\n >\r\n <div class=\"senior-header\">\r\n <span class=\"senior-header-title\">{{\r\n col.header\r\n }}</span>\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <th class=\"ui-lg-8 ui-md-7\" scope=\"col\">\r\n {{ \"agro.angular_components.panel_title_events_events\" | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData>\r\n <tr>\r\n <ng-container *ngIf=\"!standalone\">\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n {{ rowData.e070emp?.nomEmp }}\r\n </td>\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n {{ rowData.e070fil?.nomFil }}\r\n </td>\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n <ng-container [ngSwitch]=\"rowData.eventOrigin\">\r\n <span *ngSwitchCase=\"'BALANCE_ENTRY_CONTROL'\">\r\n {{\r\n \"agro.angular_components.balance_entry_control_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'TICKET'\">\r\n {{\r\n \"agro.angular_components.ticket_maintenance_header\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'INVOICE'\">\r\n {{\r\n \"agro.angular_components.invoice_creating_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'CHANGE_REQUEST'\">\r\n {{\r\n \"agro.angular_components.change_request_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <td class=\"ui-lg-1 ui ui-md-1\">\r\n {{ rowData.tickets || \"\" }}\r\n </td>\r\n </ng-container>\r\n <td class=\"ui-lg-8 ui-md-7\">\r\n <ng-container *ngFor=\"let group of rowData.groups\">\r\n <s-event-steps\r\n [steps]=\"group.steps || []\"\r\n [activeIndex]=\"group.activeIndex\"\r\n (stepSelected)=\"stepSelected($event)\"\r\n >\r\n </s-event-steps>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n *ngIf=\"!standalone\"\r\n pTemplate=\"paginatorright\"\r\n class=\"custom-table\"\r\n >\r\n <span>\r\n {{\r\n \"agro.angular_components.registers_found\"\r\n | libTranslate : { total: gridTotalRecords }\r\n }}\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </div>\r\n </p-panel>\r\n </div>\r\n</div>\r\n<s-sidebar [visible]=\"showSidebar\" (visibleChange)=\"closeSidebar()\" header=\"{{ 'agro.angular_components.event_details_header' | libTranslate }}\">\r\n <div class=\"ui-fluid\">\r\n <p-fieldset legend=\"{{ sidebarTitle }}\" [toggleable]=\"false\">\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{\r\n \"agro.angular_components.event_origin_label\" | libTranslate\r\n }}</strong></span\r\n >\r\n <ng-container [ngSwitch]=\"selectedStep?.item.eventControl.eventOrigin\">\r\n <p *ngSwitchCase=\"'BALANCE_ENTRY_CONTROL'\">\r\n {{ \"agro.angular_components.balance_entry_control_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TICKET'\">\r\n {{ \"agro.angular_components.ticket_maintenance_header\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'INVOICE'\">\r\n {{ \"agro.angular_components.invoice_creating_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'CHANGE_REQUEST'\">\r\n {{ \"agro.angular_components.change_request_event\" | libTranslate }}\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"producerInvoice?.e001pes.nomPes\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.supplier\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ producerInvoice?.e001pes.nomPes }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"producerInvoice?.ruralEstate.name\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.rural_estate\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ producerInvoice?.ruralEstate.name }}</p>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.ticket\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ selectedStep?.ticket }}</p>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.status_label\" | libTranslate }}</strong></span\r\n >\r\n <ng-container [ngSwitch]=\"selectedStep?.item.status\">\r\n <p *ngSwitchCase=\"'SUCCESS'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Green\"\r\n text=\"{{\r\n 'agro.angular_components.panel_title_events_completed_successfully'\r\n | libTranslate\r\n }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'PROCESSING'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Orange\"\r\n text=\"{{ 'agro.angular_components.processing' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'FAILED'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Red\"\r\n text=\"{{\r\n 'agro.angular_components.panel_title_events_ended_with_error'\r\n | libTranslate\r\n }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'PENDING'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Gray\"\r\n text=\"{{ 'agro.angular_components.pending' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{\r\n \"agro.angular_components.last_update_date\" | libTranslate\r\n }}</strong></span\r\n >\r\n <p>{{ selectedStep?.item.lastModifiedDate | date : \"dd/MM/yyyy HH:mm:ss\" }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"selectedStep?.item.status === 'FAILED'\">\r\n <span\r\n ><strong>{{\r\n \"agro.angular_components.event_error_message\" | libTranslate\r\n }}</strong></span\r\n >\r\n <p>{{ selectedStep?.item.message || \"-\" }}</p>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n <s-footer>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12 width-fit\">\r\n <s-button\r\n id=\"sidebar-close-button\"\r\n [priority]=\"ButtonPriority.Primary\"\r\n [label]=\"'agro.angular_components.events_close' | libTranslate\"\r\n [auxiliary]=\"false\"\r\n (click)=\"closeSidebar()\"\r\n >\r\n </s-button>\r\n <s-button\r\n *ngIf=\"showReprocessButton\"\r\n id=\"sidebar-reprocess-button\"\r\n [priority]=\"ButtonPriority.Secondary\"\r\n iconClass=\"fa fa-refresh\"\r\n [label]=\"'agro.angular_components.reprocess_event' | libTranslate\"\r\n [auxiliary]=\"false\"\r\n (click)=\"openModal()\"\r\n >\r\n </s-button>\r\n </div>\r\n </div>\r\n </s-footer>\r\n</s-sidebar>\r\n\r\n<p-dialog [header]=\"'agro.angular_components.event_modal_title' | libTranslate\" [(visible)]=\"displayModal\" [modal]=\"true\" class=\"dialog\">\r\n <div class=\"event-modal-text\">{{ \"agro.angular_components.event_modal\" | libTranslate }}</div>\r\n <p-footer>\r\n <div class=\"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\">\r\n <button\r\n id=\"modal-yes\"\r\n type=\"button\"\r\n pButton\r\n icon=\"fa fa-check\"\r\n (click)=\"confirmModal()\"\r\n label=\"{{ 'agro.angular_components.yes' | libTranslate }}\"\r\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\"\r\n ></button>\r\n <button\r\n id=\"modal-no\"\r\n type=\"button\"\r\n pButton\r\n icon=\"fa fa-close\"\r\n (click)=\"cancelModal()\"\r\n label=\"{{ 'agro.angular_components.no' | libTranslate }}\"\r\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\"\r\n ></button>\r\n </div>\r\n </p-footer>\r\n</p-dialog>\r\n",
|
|
519
|
+
providers: [
|
|
520
|
+
{ provide: LOCALE_ID, useValue: 'pt-BR' }
|
|
521
|
+
],
|
|
522
|
+
styles: [".frozen{border-left:2px solid #ddd}.dialog{width:\"600px\";height:\"300px\";z-index:100000}"]
|
|
523
|
+
})
|
|
524
|
+
], EventControlBoardComponent);
|
|
525
|
+
return EventControlBoardComponent;
|
|
526
|
+
}());
|
|
527
|
+
export { EventControlBoardComponent };
|
|
528
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZXZlbnQtY29udHJvbC1ib2FyZC9ldmVudC1jb250cm9sLWJvYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVEsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxF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LEdBQW5CO1FBQ0ksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTSxnREFBVyxHQUFsQjtRQUNJLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFTSxpREFBWSxHQUFuQjtRQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7O2dCQXhlMkIsY0FBYztnQkFDVixxQkFBcUI7Z0JBQ25CLFdBQVc7Z0JBQ04sZ0JBQWdCO2dCQUNSLHdCQUF3QjtnQkFDekIsdUJBQXVCO2dCQUNoQyxjQUFjOztJQS9DMUM7UUFBUixLQUFLLEVBQUU7K0RBQW1CO0lBQ2xCO1FBQVIsS0FBSyxFQUFFOytEQUFtQjtJQUNsQjtRQUFSLEtBQUssRUFBRTs4REFBaUI7SUFDaEI7UUFBUixLQUFLLEVBQUU7bUVBQTJCO0lBQzFCO1FBQVIsS0FBSyxFQUFFO21FQUEyQjtJQUMxQjtRQUFSLEtBQUssRUFBRTtrRUFBcUI7SUFDcEI7UUFBUixLQUFLLEVBQUU7bUVBQW9CO0lBQ25CO1FBQVIsS0FBSyxFQUFFO2tFQUFzQjtJQVRyQiwwQkFBMEI7UUFSdEMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQix3MGZBQW1EO1lBRW5ELFNBQVMsRUFBRTtnQkFDUCxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTthQUM1Qzs7U0FDSixDQUFDO09BQ1csMEJBQTBCLENBb2hCdEM7SUFBRCxpQ0FBQztDQUFBLEFBcGhCRCxJQW9oQkM7U0FwaEJZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEJhZGdlQ29sb3JzLCBCdXR0b25Qcmlvcml0eSwgRmllbGRUeXBlLCBGb3JtRmllbGQsIFN0ZXAsIFN0ZXBTdGF0ZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IGxvY2FsZVB0IGZyb20gXCJAYW5ndWxhci9jb21tb24vbG9jYWxlcy9wdFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBMT0NBTEVfSUQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBXZWJzb2NrZXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3dlYnNvY2tldFwiO1xyXG5pbXBvcnQgeyBMb29rdXBFcnJvck1lc3NhZ2VzIH0gZnJvbSBcIi4vY29tbW9uL2xvb2t1cC1lcnJvci1tZXNzYWdlLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBSZXByb2Nlc3NGYWlsZWRFdmVudCB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC1pdGVtL2V2ZW50LWNvbnRyb2wtaXRlbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcInByaW1lbmdcIjtcclxuaW1wb3J0IHsgUGFnaW5hdG9yU3RvcmFnZVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL3BhZ2luYXRvci1zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnRDb250cm9sSXRlbSB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC1pdGVtL2V2ZW50LWNvbnRyb2wtaXRlbVwiO1xyXG5pbXBvcnQgeyBFdmVudFN0YXR1cyB9IGZyb20gXCIuL2NvbW1vbi9ldmVudC1zdGF0dXNcIjtcclxuaW1wb3J0IHsgZXZlbnRJdGVtIH0gZnJvbSBcIi4vY29tbW9uL2V2ZW50LWNvbnRyb2wtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEUwNzBFbXAgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwNzBlbXAvZTA3MGVtcFwiO1xyXG5pbXBvcnQgeyBFMDcwRmlsIH0gZnJvbSBcIi4vc2VydmljZS9lMDcwZmlsL2UwNzBmaWxcIjtcclxuaW1wb3J0IHsgRXZlbnRPcmlnaW4gfSBmcm9tIFwiLi9jb21tb24vZXZlbnQtb3JpZ2luXCI7XHJcbmltcG9ydCB7IFRpY2tldCB9IGZyb20gXCIuL3NlcnZpY2UvdGlja2V0L3RpY2tldFwiO1xyXG5pbXBvcnQgeyBFdmVudENvbnRyb2xCb2FyZFNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL2V2ZW50LWNvbnRyb2wtYm9hcmQuc2VydmljZVwiO1xyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpO1xyXG5pbXBvcnQgeyBQcm9kdWNlckludm9pY2VEdG8gfSBmcm9tIFwiLi9zZXJ2aWNlL3Byb2R1Y2VyLWludm9pY2UvcHJvZHVjZXItaW52b2ljZS1kdG9cIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uLy4uL2VudW1zL2Fncm8tbnVtYmVycy5lbnVtXCI7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9saWItdHJhbnNsYXRpb24uc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2V2ZW50LWNvbnRyb2wtYm9hcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50LWNvbnRyb2wtYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBMT0NBTEVfSUQsIHVzZVZhbHVlOiAncHQtQlInIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblxyXG4gICAgQElucHV0KCkgZTA3MGVtcCE6IEUwNzBFbXA7XHJcbiAgICBASW5wdXQoKSBlMDcwZmlsITogRTA3MEZpbDtcclxuICAgIEBJbnB1dCgpIHRpY2tldCE6IFRpY2tldDtcclxuICAgIEBJbnB1dCgpIGV2ZW50T3JpZ2luITogRXZlbnRPcmlnaW47XHJcbiAgICBASW5wdXQoKSBldmVudFN0YXR1cyE6IEV2ZW50U3RhdHVzO1xyXG4gICAgQElucHV0KCkgZXh0ZXJuYWxJZCE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNyZWF0ZWREYXRlITogRGF0ZTtcclxuICAgIEBJbnB1dCgpIHN0YW5kYWxvbmUhOiBib29sZWFuO1xyXG5cclxuICAgIHB1YmxpYyBwcm9kdWNlckludm9pY2UhOiBQcm9kdWNlckludm9pY2VEdG87XHJcblxyXG4gICAgcHVibGljIHN0ZXBzOiBTdGVwW10gPSBbXTtcclxuICAgIHB1YmxpYyBzZWxlY3RlZFN0ZXA6IGFueTtcclxuICAgIHB1YmxpYyBldmVudElkITogJyc7XHJcbiAgICBwdWJsaWMgc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzaG93UmVwcm9jZXNzQnV0dG9uID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2lkZWJhclRpdGxlITogc3RyaW5nO1xyXG4gICAgcHVibGljIHNpZGViYXJMb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgZmlsdGVyRm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gICAgcHVibGljIGZpbHRlckZpZWxkcyE6IEZvcm1GaWVsZFtdO1xyXG5cclxuICAgIHB1YmxpYyBncmlkRGF0YSE6IGFueVtdO1xyXG4gICAgcHVibGljIGdyaWREYXRhUmVzb2x2ZWQhOiBhbnlbXTtcclxuICAgIHB1YmxpYyBncmlkQ29sdW1ucyE6IGFueVtdO1xyXG4gICAgcHVibGljIGdyaWRUb3RhbFJlY29yZHMgPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIHB1YmxpYyBncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGRpc3BsYXlNb2RhbCA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBCdXR0b25Qcmlvcml0eSA9IEJ1dHRvblByaW9yaXR5O1xyXG4gICAgcHVibGljIEJhZGdlQ29sb3JzID0gQmFkZ2VDb2xvcnM7XHJcblxyXG4gICAgcHVibGljIHBlcm1pc3Npb25zOiBhbnkgPSB7fTtcclxuICAgIHB1YmxpYyBsb2NhbGVDb25maWc6IGFueSA9IHt9O1xyXG5cclxuICAgIHB1YmxpYyBjdXJyZW50TGlzdFBhcmFtczogYW55ID0geyBwYWdlOiBBR1JPX05VTUJFUlMuWkVSTywgc2l6ZTogQUdST19OVU1CRVJTLlRFTiwgc29ydDogW10sIGZpbHRlckRhdGE6IHt9IH07XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRJdGVtID0gZXZlbnRJdGVtO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB3ZWJzb2NrZXRTZXJ2aWNlOiBXZWJzb2NrZXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRDb250cm9sQm9hcmRTZXJ2aWNlOiBFdmVudENvbnRyb2xCb2FyZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYWdpbmF0b3JTdG9yYWdlU2VydmljZTogUGFnaW5hdG9yU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnJvdXRlLmRhdGEucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHRoaXMub25Sb3V0ZURhdGFDaGFuZ2UoZGF0YSkpO1xyXG4gICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSB0aGlzLnNldEdyaWRDb2x1bW5zKCk7XHJcblxyXG4gICAgICAgIHRoaXMud2Vic29ja2V0U2VydmljZS5vbkNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmNhbGxXZWJzb2NrZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybUdyb3VwKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb21wYW55QW5kQnJhbmNoRm9ybUZpZWxkcyhjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUV2ZW50T3JpZ2luQW5kVGlja2V0Rm9ybUZpZWxkcyhjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUV2ZW50U3RhdHVzQW5kQ3JlYXRlZERhdGVGb3JtRmllbGRzKGNoYW5nZXMpO1xyXG4gICAgICAgIHRoaXMub25TZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUNvbXBhbnlBbmRCcmFuY2hGb3JtRmllbGRzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5lMDcwZW1wICYmIGNoYW5nZXMuZTA3MGVtcC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuZTA3MGVtcC5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgnZTA3MGVtcCcpPy5zZXRWYWx1ZShjaGFuZ2VzLmUwNzBlbXAuY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXMuZTA3MGZpbCAmJiBjaGFuZ2VzLmUwNzBmaWwuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmUwNzBmaWwucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ2UwNzBmaWwnKT8uc2V0VmFsdWUoY2hhbmdlcy5lMDcwZmlsLmN1cnJlbnRWYWx1ZSA/PyBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVFdmVudE9yaWdpbkFuZFRpY2tldEZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmV2ZW50T3JpZ2luICYmIGNoYW5nZXMuZXZlbnRPcmlnaW4uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmV2ZW50T3JpZ2luLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdldmVudE9yaWdpbicpPy5zZXRWYWx1ZShjaGFuZ2VzLmV2ZW50T3JpZ2luLmN1cnJlbnRWYWx1ZSA/PyBudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLnRpY2tldCAmJiBjaGFuZ2VzLnRpY2tldC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMudGlja2V0LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KCdudW1iZXInKT8uc2V0VmFsdWUoY2hhbmdlcy50aWNrZXQuY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUV2ZW50U3RhdHVzQW5kQ3JlYXRlZERhdGVGb3JtRmllbGRzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5ldmVudFN0YXR1cyAmJiBjaGFuZ2VzLmV2ZW50U3RhdHVzLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5ldmVudFN0YXR1cy5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCgnc3RhdHVzJyk/LnNldFZhbHVlKGNoYW5nZXMuZXZlbnRTdGF0dXMuY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXMuY3JlYXRlZERhdGUgJiYgY2hhbmdlcy5jcmVhdGVkRGF0ZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuY3JlYXRlZERhdGUucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoJ2NyZWF0ZWREYXRlJyk/LnNldFZhbHVlKGNoYW5nZXMuY3JlYXRlZERhdGUuY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRpYWxpemVGb3JtR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgZTA3MGVtcDogW3sgdmFsdWU6IHRoaXMuZTA3MGVtcCA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIGUwNzBmaWw6IFt7IHZhbHVlOiB0aGlzLmUwNzBmaWwgPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgICAgICBudW1iZXI6IFt7IHZhbHVlOiB0aGlzLnRpY2tldCA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIGV4dGVybmFsSWQ6IFt7IHZhbHVlOiB0aGlzLmV4dGVybmFsSWQgPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgICAgICBldmVudE9yaWdpbjogW3sgdmFsdWU6IHRoaXMuZXZlbnRPcmlnaW4gPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgICAgICBzdGF0dXM6IFt7IHZhbHVlOiB0aGlzLmV2ZW50U3RhdHVzID8/IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcclxuICAgICAgICAgICAgY3JlYXRlZERhdGU6IFt7IHZhbHVlOiB0aGlzLmNyZWF0ZWREYXRlID8/IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEZvcm1GaWVsZHMoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJGaWVsZHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJlMDcwZW1wXCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuQ2hpcHMsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZTA3MGZpbFwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkNoaXBzLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIm51bWJlclwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkNoaXBzLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImV4dGVybmFsSWRcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZXZlbnRPcmlnaW5cIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXR1c1wiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlZERhdGVcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5EYXRlLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0R3JpZENvbHVtbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgeyBmaWVsZDogJ2UwNzBlbXAnLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5jb21wYW55XCIpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdlMDcwZmlsJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubGFiZWxfYnJhbmNoXCIpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6ICdldmVudE9yaWdpbicsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmV2ZW50X29yaWdpbl9sYWJlbFwiKSB9LFxyXG4gICAgICAgICAgICB7IGZpZWxkOiAnbnVtYmVyJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudGlja2V0XCIpIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLndlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYWxsV2Vic29ja2V0KCkge1xyXG4gICAgICAgIHRoaXMud2Vic29ja2V0U2VydmljZVxyXG4gICAgICAgIC5vbkV2ZW50PGFueT4oe1xyXG4gICAgICAgICAgICBkb21haW46ICdhZ3JvJyxcclxuICAgICAgICAgICAgc2VydmljZTogJ2Fncm9fZXZlbnRzJyxcclxuICAgICAgICAgICAgcHJpbWl0aXZlOiBcInByb2Nlc3NlZEV2ZW50XCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlR3JpZCh7IGZpbHRlckRhdGEgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMud2Vic29ja2V0U2VydmljZVxyXG4gICAgICAgIC5vbkV2ZW50PGFueT4oe1xyXG4gICAgICAgICAgICBkb21haW46ICdwbGF0Zm9ybScsXHJcbiAgICAgICAgICAgIHNlcnZpY2U6ICdub3RpZmljYXRpb25zJyxcclxuICAgICAgICAgICAgcHJpbWl0aXZlOiBcInVzZXJOb3RpZmllZFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUdyaWQoeyBmaWx0ZXJEYXRhIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblNlYXJjaCgpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJEYXRhID0gdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcclxuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc2V0R3JpZCh7IGZpbHRlckRhdGEgfSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKHsgZmlsdGVyRGF0YSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Sb3V0ZURhdGFDaGFuZ2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IGRhdGEuYWxsUGVybWlzc2lvbnM7XHJcbiAgICAgICAgdGhpcy5sb2NhbGVDb25maWcgPSBkYXRhLmxvY2FsZUNvbmZpZztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXRHcmlkKGxpc3RQYXJhbXM/OiBhbnkpIHtcclxuICAgICAgICBpZiAobGlzdFBhcmFtcykge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMucGFnZSA9IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZChsaXN0UGFyYW1zOiBhbnkgPSB7fSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMgPSB7IC4uLnRoaXMuY3VycmVudExpc3RQYXJhbXMsIC4uLmxpc3RQYXJhbXMgfTtcclxuICAgICAgICBjb25zdCB7IHBhZ2UsIHNpemUgfSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXM7XHJcbiAgICAgICAgY29uc3QgblNvcnQgPSB0aGlzLmdldFNvcnRlZEZpZWxkcygpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5nZXRGaWx0ZXJRdWVyeSgpO1xyXG5cclxuICAgICAgICBjb25zdCBkaXNwbGF5RmllbGRzID0gW1wiXCJdO1xyXG5cclxuICAgICAgICB0aGlzLmV2ZW50Q29udHJvbEJvYXJkU2VydmljZS5ldmVudENvbnRyb2xTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5saXN0KHsgc29ydDogblNvcnQsIHBhZ2UsIHNpemUsIGZpbHRlclF1ZXJ5LCBkaXNwbGF5RmllbGRzIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChsaXN0OiBhbnkpID0+IHRoaXMuaGFuZGxlTGlzdFJlc3BvbnNlKGxpc3QpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFNvcnRlZEZpZWxkcygpOiBhbnlbXSB7XHJcbiAgICAgICAgbGV0IG5Tb3J0OiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgblNvcnQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCkpO1xyXG4gICAgICAgICAgICBuU29ydC5mb3JFYWNoKChzb3J0SXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzb3J0SXRlbS5maWVsZCA9IHRoaXMuZ2V0RmllbGROYW1lRm9yU29ydFJlcXVlc3Qoc29ydEl0ZW0uZmllbGQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBuU29ydC5wdXNoKHsgZmllbGQ6ICdsYXN0TW9kaWZpZWREYXRlJywgb3JkZXI6IEFHUk9fTlVNQkVSUy5NSU5VU09ORSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5Tb3J0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RmlsdGVyUXVlcnkoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCB7IGZpbHRlckRhdGEgfSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXM7XHJcbiAgICAgICAgY29uc3QgZmlsdGVySnNvbjogYW55ID0geyBmaWx0ZXI6IHt9IH07XHJcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLmZpbHRlckZpZWxkc11cclxuICAgICAgICAgICAgLmZpbHRlcigoeyBuYW1lIH06IGFueSkgPT4gZmlsdGVyRGF0YSAmJiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gbnVsbCAmJiBmaWx0ZXJEYXRhW25hbWVdLmxlbmd0aCAhPT0gMClcclxuICAgICAgICAgICAgLm1hcCgoZm9ybUZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb29rdXBGaWVsZE5hbWUgPSAnaWQnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxGaWx0ZXJOYW1lID0gZm9ybUZpZWxkLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJKc29uLmZpbHRlcltmaW5hbEZpbHRlck5hbWVdID0gZmlsdGVyRGF0YVtmaW5hbEZpbHRlck5hbWVdLmlkO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyU3RyaW5nKGZpbmFsRmlsdGVyTmFtZSwgZm9ybUZpZWxkLnR5cGUgYXMgYW55LCBmaWx0ZXJEYXRhW2ZpbmFsRmlsdGVyTmFtZV0sIGxvb2t1cEZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyICE9PSBudWxsICYmIGZpbHRlciAhPT0gJycgJiYgZmlsdGVyICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIC5qb2luKCcgYW5kICcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlTGlzdFJlc3BvbnNlKGxpc3Q6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBsaXN0LmNvbnRlbnRzO1xyXG4gICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZERhdGEgfHwgdGhpcy5ncmlkRGF0YS5sZW5ndGggPD0gQUdST19OVU1CRVJTLlpFUk8pIHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJvY2Vzc0RldGFpbENhbGxzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGV0YWlsQ2FsbHMoKSB7XHJcbiAgICAgICAgY29uc3QgZGV0YWlsQ2FsbHMkID0gdGhpcy5ncmlkRGF0YS5tYXAoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgdGhpcy5ldmVudENvbnRyb2xCb2FyZFNlcnZpY2UuZXZlbnRDb250cm9sSXRlbVNlcnZpY2UubGlzdCh7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeTogYGV2ZW50Q29udHJvbCBlcSAnJHtpdGVtLmlkfSdgLFxyXG4gICAgICAgICAgICAgICAgc29ydDogW3sgZmllbGQ6ICdzZXF1ZW5jZScsIG9yZGVyOiBBR1JPX05VTUJFUlMuT05FIH1dLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogQUdST19OVU1CRVJTLk9ORV9IVU5EUkVEXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChkZXRhaWxzUmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV2ZW50Q29udHJvbEJvYXJkU2VydmljZS50aWNrZXRTZXJ2aWNlLmxpc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeTogYGlkIGVxICcke2l0ZW0uZXh0ZXJuYWxJZH0nIG9yIGJhbGFuY2VFbnRyeUNvbnRyb2wuaWQgZXEgJyR7aXRlbS5leHRlcm5hbElkfSdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGRzOiBbJ251bWJlciddXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCh0aWNrZXRSZXNwb25zZTogYW55KSA9PiAoeyBkZXRhaWxzUmVzcG9uc2UsIHRpY2tldFJlc3BvbnNlIH0pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZm9ya0pvaW4oZGV0YWlsQ2FsbHMkKS5zdWJzY3JpYmUoKHJlc3BvbnNlczogYW55W10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGV0YWlsc1Jlc3BvbnNlcyhyZXNwb25zZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc0RldGFpbHNSZXNwb25zZXMoZGV0YWlsc1Jlc3BvbnNlczogYW55W10pIHtcclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgZGV0YWlsc1Jlc3BvbnNlLCB0aWNrZXRSZXNwb25zZSB9ID0gZGV0YWlsc1Jlc3BvbnNlc1tpbmRleF07XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aWNrZXRzID0gdGlja2V0UmVzcG9uc2U/LmNvbnRlbnRzID8/IFtdO1xyXG4gICAgICAgICAgICBpdGVtLmRldGFpbHMgPSBkZXRhaWxzUmVzcG9uc2U/LmNvbnRlbnRzID8/IFtdO1xyXG4gICAgICAgICAgICBpdGVtLnRpY2tldHMgPSB0aWNrZXRzLm1hcCgodGlja2V0OiB7IG51bWJlcjogYW55OyB9KSA9PiB0aWNrZXQubnVtYmVyKS5qb2luKCcsICcpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZ3JvdXBlZERldGFpbHMgPSB0aGlzLmdyb3VwQnlFdmVudEdyb3VwKGl0ZW0uZGV0YWlscyk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmdyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwZWREZXRhaWxzKS5tYXAoZXZlbnRHcm91cElkID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwRGV0YWlscyA9IGdyb3VwZWREZXRhaWxzW2V2ZW50R3JvdXBJZF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0QWN0aXZlSW5kZXggPSBncm91cERldGFpbHMubWFwKChkZXRhaWw6IHsgc3RhdHVzOiBzdHJpbmc7IH0pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsLnN0YXR1cyAhPT0gRXZlbnRTdGF0dXMuUEVORElORykubGFzdEluZGV4T2YodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGl2ZUluZGV4ID0gbGFzdEFjdGl2ZUluZGV4O1xyXG4gICAgICAgICAgICAgICAgaWYgKGxhc3RBY3RpdmVJbmRleCAhPT0gLTEgJiYgZ3JvdXBEZXRhaWxzW2xhc3RBY3RpdmVJbmRleF0uc3RhdHVzID09PSBFdmVudFN0YXR1cy5TVUNDRVNTKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlSW5kZXggPSBsYXN0QWN0aXZlSW5kZXggKyAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gZ3JvdXBEZXRhaWxzLm1hcCgoZGV0YWlsOiBFdmVudENvbnRyb2xJdGVtLCBkZXRhaWxJbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogZGV0YWlsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ6IGl0ZW0udGlja2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBkZXRhaWwuZXZlbnRDb250cm9sLmV2ZW50T3JpZ2luLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRFdmVudExhYmVsKGRldGFpbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBkZXRhaWwuc3RhdHVzID09PSBFdmVudFN0YXR1cy5QRU5ESU5HICYmIGRldGFpbEluZGV4ICE9PSBhY3RpdmVJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRFdmVudExhYmVsKGRldGFpbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiB0aGlzLmRldGVybWluZVN0ZXBTdGF0ZShkZXRhaWwpLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50R3JvdXBJZCxcclxuICAgICAgICAgICAgICAgICAgICBzdGVwcyxcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVJbmRleFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmFjdGl2ZUluZGV4ID0gaXRlbS5ncm91cHMubGVuZ3RoID4gMCA/IGl0ZW0uZ3JvdXBzWzBdLmFjdGl2ZUluZGV4IDogLTE7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ncmlkRGF0YVJlc29sdmVkID0gdGhpcy5ncmlkRGF0YTtcclxuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBncm91cEJ5RXZlbnRHcm91cChkZXRhaWxzOiBhbnlbXSkge1xyXG4gICAgICAgIHJldHVybiBkZXRhaWxzLnJlZHVjZSgoYWNjLCBkZXRhaWwpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnRHcm91cElkID0gZGV0YWlsLmV2ZW50R3JvdXA7XHJcbiAgICAgICAgICAgIGlmICghYWNjW2V2ZW50R3JvdXBJZF0pIHtcclxuICAgICAgICAgICAgICAgIGFjY1tldmVudEdyb3VwSWRdID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWNjW2V2ZW50R3JvdXBJZF0ucHVzaChkZXRhaWwpO1xyXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogYW55W10gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZXRlcm1pbmVTdGVwU3RhdGUoZGV0YWlsOiB7IHN0YXR1czogRXZlbnRTdGF0dXMgfSk6IFN0ZXBTdGF0ZSB7XHJcbiAgICAgICAgbGV0IHN0YXRlO1xyXG4gICAgICAgIGlmIChkZXRhaWwuc3RhdHVzID09PSBFdmVudFN0YXR1cy5TVUNDRVNTKSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0gU3RlcFN0YXRlLlN1Y2Nlc3M7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkZXRhaWwuc3RhdHVzID09PSBFdmVudFN0YXR1cy5GQUlMRUQpIHtcclxuICAgICAgICAgICAgc3RhdGUgPSBTdGVwU3RhdGUuV2FybmluZztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IFN0ZXBTdGF0ZS5EZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFdmVudExhYmVsKGRldGFpbDogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBldmVudExhYmVsID0gdGhpcy5ldmVudEl0ZW0uZmluZChlID0+IGUudmFsdWUgPT09IGRldGFpbC5ldmVudE9wZXJhdGlvbik/LmxhYmVsO1xyXG4gICAgICAgIHJldHVybiBldmVudExhYmVsID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChldmVudExhYmVsKSA6IGRldGFpbC5ldmVudE9wZXJhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEZpZWxkTmFtZUZvclNvcnRSZXF1ZXN0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2UwNzBlbXAnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdlMDcwZW1wLm5vbUVtcCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2UwNzBmaWwnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdlMDcwZmlsLm5vbUZpbCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NyZWF0ZWREYXRlJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZpbHRlclN0cmluZyhuYW1lOiBzdHJpbmcsIHR5cGU6IEZpZWxkVHlwZSwgdmFsdWU6IGFueVtdLCBsb29rdXBGaWVsZE5hbWUgPSAnaWQnKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobmFtZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJQYXJ0cy5wdXNoKGBleHRlcm5hbElkIGVxICcke2l0ZW0uaWR9J2ApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW52b2ljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcnRzLnB1c2goYGV4dGVybmFsSWQgZXEgJyR7aXRlbS5pbnZvaWNlLmlkfSdgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmJhbGFuY2VFbnRyeUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJ0cy5wdXNoKGBleHRlcm5hbElkIGVxICcke2l0ZW0uYmFsYW5jZUVudHJ5Q29udHJvbC5pZH0nYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gYCgke2ZpbHRlclBhcnRzLmpvaW4oJyBvciAnKX0pYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyU3RyaW5nRnJvbVR5cGUobmFtZSwgdHlwZSwgdmFsdWUsIGxvb2t1cEZpZWxkTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJTdHJpbmdGcm9tVHlwZShuYW1lOiBzdHJpbmcsIHR5cGU6IEZpZWxkVHlwZSwgdmFsdWU6IGFueSwgbG9va3VwRmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuQ2hpcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlW2xvb2t1cEZpZWxkTmFtZV19J2A7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydE9mRGF5ID0gbW9tZW50KHZhbHVlKS5zdGFydE9mKCdkYXknKS5mb3JtYXQoXCJZWVlZLU1NLUREVEhIOm1tOnNzXCIpICsgJ1onO1xyXG4gICAgICAgICAgICBjb25zdCBlbmRPZkRheSA9IG1vbWVudCh2YWx1ZSkuZW5kT2YoJ2RheScpLmZvcm1hdChcIllZWVktTU0tRERUSEg6bW06c3NcIikgKyAnWic7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZ2UgJyR7c3RhcnRPZkRheX0nIGFuZCAke25hbWV9IGxlICcke2VuZE9mRGF5fSdgO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uR3JpZENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50Py5yb3dzO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudD8uZmlyc3QgLyBzaXplO1xyXG4gICAgICAgIGNvbnN0IHNvcnQgPSBldmVudC5tdWx0aVNvcnRNZXRhO1xyXG4gICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGlmIChzaXplICE9PSBBR1JPX05VTUJFUlMuVEVOIHx8IHBhZ2UgIT09IEFHUk9fTlVNQkVSUy5aRVJPIHx8IChzb3J0ICYmIHNvcnQubGVuZ3RoID4gQUdST19OVU1CRVJTLlpFUk8pKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yU3RvcmFnZVNlcnZpY2Uuc3RvcmVQYWdpbmF0b3IoJ0V2ZW50Q29udHJvbEJvYXJkUGFnaW5hdG9yJywgeyBwYWdlLCBzaXplLCBzb3J0IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFBhZ2VTaXplKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJvd0luZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnBhZ2UgKiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcnRGaWVsZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCB8fCB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQubGVuZ3RoIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWRDb2x1bW5zW0FHUk9fTlVNQkVSUy5aRVJPXS5maWVsZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydFtBR1JPX05VTUJFUlMuWkVST10uZmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcnRPcmRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCB8fCB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQubGVuZ3RoIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBBR1JPX05VTUJFUlMuT05FO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydFtBR1JPX05VTUJFUlMuWkVST10ub3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEVycm9yTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZEVycm9yTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBMb29rdXBFcnJvck1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgIGlmIChMb29rdXBFcnJvck1lc3NhZ2VzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmdldChMb29rdXBFcnJvck1lc3NhZ2VzW2tleV0pLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlc1trZXldID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGVwU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwID0gZXZlbnQuc3RlcDtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN0ZXAuZXZlbnRUeXBlICE9PSBFdmVudE9yaWdpbi5DSEFOR0VfUkVRVUVTVCkge1xyXG4gICAgICAgICAgICB0aGlzLnNpZGViYXJMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRTdGVwLml0ZW0uaW5wdXQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcHJvZHVjZXJJbnZvaWNlSWQgPSBwYXJhbS5wcm9kdWNlckludm9pY2VJZHMgPyBwYXJhbS5wcm9kdWNlckludm9pY2VJZHNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJhbS5pbnZvaWNlLmdlbmVyYWxEYXRhLnRyYW5zYWN0aW9uYWxJZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRDb250cm9sQm9hcmRTZXJ2aWNlLnByb2R1Y2VySW52b2ljZVNlcnZpY2UuZ2V0KHByb2R1Y2VySW52b2ljZUlkKVxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UmVwcm9jZXNzQnV0dG9uID0gZXZlbnQuc3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLldhcm5pbmc7XHJcbiAgICAgICAgdGhpcy5zaWRlYmFyVGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5ldmVudF9zaWRlYmFyX3RpdGxlJywgeyBldmVudDogZXZlbnQuc3RlcC5sYWJlbCB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcHJvY2Vzc0V2ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IHJlcHJvY2Vzc0V2ZW50T2JqOiBSZXByb2Nlc3NGYWlsZWRFdmVudCA9IHtcclxuICAgICAgICAgICAgZXZlbnRDb250cm9sSXRlbUlkOiB0aGlzLnNlbGVjdGVkU3RlcC5pdGVtLmlkXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmV2ZW50Q29udHJvbEJvYXJkU2VydmljZS5ldmVudENvbnRyb2xJdGVtU2VydmljZS5yZXByb2Nlc3NGYWlsZWRFdmVudChyZXByb2Nlc3NFdmVudE9iailcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgJ2luZm8nLFxyXG4gICAgICAgICAgICAgICAgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnJlcHJvY2Vzc2luZ19ldmVudF9tZXNzYWdlX3RpdGxlJyxcclxuICAgICAgICAgICAgICAgICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5yZXByb2Nlc3NpbmdfZXZlbnRfbWVzc2FnZV9kZXNjcmlwdGlvbicpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9yZXByb2Nlc3NpbmdfZXZlbnRfbWVzc2FnZV90aXRsZScsXHJcbiAgICAgICAgICAgICAgICAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfcmVwcm9jZXNzaW5nX2V2ZW50X21lc3NhZ2VfZGVzY3JpcHRpb24nKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZE1lc3NhZ2Uoc2V2ZXJpdHk6IHN0cmluZywgc3VtbWFyeTogc3RyaW5nLCBkZXRhaWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHksXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5TW9kYWwgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25maXJtTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5yZXByb2Nlc3NFdmVudCgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5jZWxNb2RhbCgpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlNb2RhbCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9zZVNpZGViYXIoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|