@en-solutions/tgm-client-sdk 1.6.21
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/LICENSE +19 -0
- package/README.md +788 -0
- package/esm2022/en-solutions-tgm-client-sdk.mjs +5 -0
- package/esm2022/lib/components/database-manager/database-manager/database-manager.component.mjs +308 -0
- package/esm2022/lib/components/database-manager/database-manager.module.mjs +66 -0
- package/esm2022/lib/components/database-manager/object-browser/object-browser.component.mjs +98 -0
- package/esm2022/lib/components/database-manager/query-editor/query-editor.component.mjs +196 -0
- package/esm2022/lib/components/database-manager/query-toolbar/query-toolbar.component.mjs +70 -0
- package/esm2022/lib/components/database-manager/record-detail/record-detail.component.mjs +112 -0
- package/esm2022/lib/components/database-manager/registry/entity-registry.mjs +512 -0
- package/esm2022/lib/components/database-manager/results-grid/results-grid.component.mjs +165 -0
- package/esm2022/lib/components/database-manager/services/entity-schema.service.mjs +91 -0
- package/esm2022/lib/components/database-manager/services/query-executor.service.mjs +204 -0
- package/esm2022/lib/components/database-manager/table-data-viewer/table-data-viewer.component.mjs +166 -0
- package/esm2022/lib/components/database-manager/table-structure/table-structure.component.mjs +42 -0
- package/esm2022/lib/components/database-manager/types/database-manager.types.mjs +6 -0
- package/esm2022/lib/components/reporting/export-button/export-button.component.mjs +203 -0
- package/esm2022/lib/components/reporting/generated-report-list/generated-report-list.component.mjs +285 -0
- package/esm2022/lib/components/reporting/report-definition-form/report-definition-form.component.mjs +206 -0
- package/esm2022/lib/components/reporting/report-definition-list/report-definition-list.component.mjs +252 -0
- package/esm2022/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.mjs +122 -0
- package/esm2022/lib/components/reporting/report-stats/report-stats.component.mjs +164 -0
- package/esm2022/lib/components/reporting/report-template-list/report-template-list.component.mjs +114 -0
- package/esm2022/lib/components/reporting/reporting.module.mjs +60 -0
- package/esm2022/lib/components/video-call/incoming-call/incoming-call.component.mjs +80 -0
- package/esm2022/lib/components/video-call/services/livekit-room.service.mjs +142 -0
- package/esm2022/lib/components/video-call/services/video-call-signaling.service.mjs +42 -0
- package/esm2022/lib/components/video-call/services/video-call-state.service.mjs +52 -0
- package/esm2022/lib/components/video-call/types/video-call.types.mjs +2 -0
- package/esm2022/lib/components/video-call/video-call.module.mjs +42 -0
- package/esm2022/lib/components/video-call/video-controls/video-controls.component.mjs +33 -0
- package/esm2022/lib/components/video-call/video-participant/video-participant.component.mjs +68 -0
- package/esm2022/lib/components/video-call/video-room/video-room.component.mjs +89 -0
- package/esm2022/lib/core/auth-interceptor.mjs +33 -0
- package/esm2022/lib/core/client-interceptor.mjs +34 -0
- package/esm2022/lib/core/error-handler.mjs +32 -0
- package/esm2022/lib/core/http-client.service.mjs +254 -0
- package/esm2022/lib/core/websocket.service.mjs +185 -0
- package/esm2022/lib/models/admin/audit.models.mjs +2 -0
- package/esm2022/lib/models/admin/backup.models.mjs +2 -0
- package/esm2022/lib/models/admin/client.models.mjs +2 -0
- package/esm2022/lib/models/admin/email-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/erp.models.mjs +2 -0
- package/esm2022/lib/models/admin/identity-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/index.mjs +14 -0
- package/esm2022/lib/models/admin/messaging-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/platform-admin.models.mjs +2 -0
- package/esm2022/lib/models/admin/queue.models.mjs +2 -0
- package/esm2022/lib/models/admin/role.models.mjs +2 -0
- package/esm2022/lib/models/admin/sandbox.models.mjs +2 -0
- package/esm2022/lib/models/admin/ticket.models.mjs +2 -0
- package/esm2022/lib/models/admin/webhook.models.mjs +2 -0
- package/esm2022/lib/models/api/ai.models.mjs +2 -0
- package/esm2022/lib/models/api/aip.models.mjs +2 -0
- package/esm2022/lib/models/api/cat.models.mjs +2 -0
- package/esm2022/lib/models/api/company.models.mjs +2 -0
- package/esm2022/lib/models/api/compliance.models.mjs +2 -0
- package/esm2022/lib/models/api/component.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-edge.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-event.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-insight.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-node.models.mjs +2 -0
- package/esm2022/lib/models/api/custom-field.models.mjs +2 -0
- package/esm2022/lib/models/api/deferral.models.mjs +2 -0
- package/esm2022/lib/models/api/diagnostic-report.models.mjs +2 -0
- package/esm2022/lib/models/api/document.models.mjs +2 -0
- package/esm2022/lib/models/api/energy.models.mjs +2 -0
- package/esm2022/lib/models/api/failure.models.mjs +2 -0
- package/esm2022/lib/models/api/fleet.models.mjs +2 -0
- package/esm2022/lib/models/api/inspection.models.mjs +2 -0
- package/esm2022/lib/models/api/intervention.models.mjs +2 -0
- package/esm2022/lib/models/api/iot.models.mjs +2 -0
- package/esm2022/lib/models/api/knowledge.models.mjs +2 -0
- package/esm2022/lib/models/api/loto.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance-record.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance.models.mjs +2 -0
- package/esm2022/lib/models/api/material.models.mjs +2 -0
- package/esm2022/lib/models/api/media.models.mjs +2 -0
- package/esm2022/lib/models/api/misc.models.mjs +2 -0
- package/esm2022/lib/models/api/project.models.mjs +2 -0
- package/esm2022/lib/models/api/quality.models.mjs +2 -0
- package/esm2022/lib/models/api/reporting.models.mjs +3 -0
- package/esm2022/lib/models/api/reservoir-websocket.models.mjs +17 -0
- package/esm2022/lib/models/api/reservoir.models.mjs +2 -0
- package/esm2022/lib/models/api/search.models.mjs +2 -0
- package/esm2022/lib/models/api/sensor.models.mjs +2 -0
- package/esm2022/lib/models/api/unit.models.mjs +2 -0
- package/esm2022/lib/models/api/user.models.mjs +2 -0
- package/esm2022/lib/models/api/warranty.models.mjs +2 -0
- package/esm2022/lib/models/api/work-permit.models.mjs +2 -0
- package/esm2022/lib/models/api/workflow.models.mjs +2 -0
- package/esm2022/lib/models/auth/index.mjs +4 -0
- package/esm2022/lib/models/auth/login.models.mjs +2 -0
- package/esm2022/lib/models/auth/sso.models.mjs +2 -0
- package/esm2022/lib/models/auth/totp.models.mjs +2 -0
- package/esm2022/lib/models/base.models.mjs +99 -0
- package/esm2022/lib/models/chat/chat.models.mjs +2 -0
- package/esm2022/lib/models/enums/cat.enums.mjs +17 -0
- package/esm2022/lib/models/enums/energy.enums.mjs +8 -0
- package/esm2022/lib/models/enums/erp.enums.mjs +5 -0
- package/esm2022/lib/models/enums/index.mjs +15 -0
- package/esm2022/lib/models/enums/inspection.enums.mjs +7 -0
- package/esm2022/lib/models/enums/loto.enums.mjs +25 -0
- package/esm2022/lib/models/enums/misc.enums.mjs +19 -0
- package/esm2022/lib/models/enums/quality.enums.mjs +22 -0
- package/esm2022/lib/models/enums/reservoir.enums.mjs +13 -0
- package/esm2022/lib/models/enums/sso.enums.mjs +3 -0
- package/esm2022/lib/models/enums/status.enums.mjs +41 -0
- package/esm2022/lib/models/enums/time.enums.mjs +5 -0
- package/esm2022/lib/models/enums/type.enums.mjs +45 -0
- package/esm2022/lib/models/enums/user.enums.mjs +6 -0
- package/esm2022/lib/models/enums/work-permit.enums.mjs +33 -0
- package/esm2022/lib/models/index.mjs +42 -0
- package/esm2022/lib/models/realtime/realtime-event.models.mjs +9 -0
- package/esm2022/lib/models/video/video-call.models.mjs +2 -0
- package/esm2022/lib/services/admin/activity-log.service.mjs +28 -0
- package/esm2022/lib/services/admin/announcement.service.mjs +37 -0
- package/esm2022/lib/services/admin/article-admin.service.mjs +37 -0
- package/esm2022/lib/services/admin/audit-log.service.mjs +53 -0
- package/esm2022/lib/services/admin/backup.service.mjs +28 -0
- package/esm2022/lib/services/admin/cache-admin.service.mjs +64 -0
- package/esm2022/lib/services/admin/client-admin.service.mjs +101 -0
- package/esm2022/lib/services/admin/client-api-key.service.mjs +31 -0
- package/esm2022/lib/services/admin/client-ocr.service.mjs +28 -0
- package/esm2022/lib/services/admin/client-usage.service.mjs +31 -0
- package/esm2022/lib/services/admin/data-export.service.mjs +19 -0
- package/esm2022/lib/services/admin/document-admin.service.mjs +40 -0
- package/esm2022/lib/services/admin/email-admin.service.mjs +28 -0
- package/esm2022/lib/services/admin/email-provider.service.mjs +58 -0
- package/esm2022/lib/services/admin/erp-admin.service.mjs +111 -0
- package/esm2022/lib/services/admin/identity-provider.service.mjs +46 -0
- package/esm2022/lib/services/admin/impersonation.service.mjs +19 -0
- package/esm2022/lib/services/admin/index.mjs +31 -0
- package/esm2022/lib/services/admin/messaging-provider.service.mjs +55 -0
- package/esm2022/lib/services/admin/notification.service.mjs +31 -0
- package/esm2022/lib/services/admin/platform-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/platform-webhook.service.mjs +34 -0
- package/esm2022/lib/services/admin/queue-admin.service.mjs +55 -0
- package/esm2022/lib/services/admin/role-admin.service.mjs +81 -0
- package/esm2022/lib/services/admin/sandbox-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/scheduler-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/subscription.service.mjs +28 -0
- package/esm2022/lib/services/admin/system-health.service.mjs +22 -0
- package/esm2022/lib/services/admin/user-admin.service.mjs +67 -0
- package/esm2022/lib/services/admin/user-permission.service.mjs +40 -0
- package/esm2022/lib/services/admin/webhook-admin.service.mjs +61 -0
- package/esm2022/lib/services/api/agent.service.mjs +29 -0
- package/esm2022/lib/services/api/ai-feedback.service.mjs +17 -0
- package/esm2022/lib/services/api/ai.service.mjs +66 -0
- package/esm2022/lib/services/api/aip-analysis.service.mjs +20 -0
- package/esm2022/lib/services/api/aip-financial.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-geographic.service.mjs +30 -0
- package/esm2022/lib/services/api/aip-network.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-performance.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-resource.service.mjs +23 -0
- package/esm2022/lib/services/api/aip-workflow.service.mjs +32 -0
- package/esm2022/lib/services/api/aip.service.mjs +158 -0
- package/esm2022/lib/services/api/alert.service.mjs +26 -0
- package/esm2022/lib/services/api/anomaly-detection.service.mjs +40 -0
- package/esm2022/lib/services/api/asset-lifecycle.service.mjs +78 -0
- package/esm2022/lib/services/api/audit-entry.service.mjs +22 -0
- package/esm2022/lib/services/api/base-crud.service.mjs +37 -0
- package/esm2022/lib/services/api/bid.service.mjs +17 -0
- package/esm2022/lib/services/api/budget.service.mjs +17 -0
- package/esm2022/lib/services/api/bulk-operation.service.mjs +65 -0
- package/esm2022/lib/services/api/capex-project.service.mjs +17 -0
- package/esm2022/lib/services/api/cat.service.mjs +77 -0
- package/esm2022/lib/services/api/client-article.service.mjs +23 -0
- package/esm2022/lib/services/api/community.service.mjs +41 -0
- package/esm2022/lib/services/api/company-material-type.service.mjs +17 -0
- package/esm2022/lib/services/api/company-material.service.mjs +17 -0
- package/esm2022/lib/services/api/company.service.mjs +30 -0
- package/esm2022/lib/services/api/compliance.service.mjs +74 -0
- package/esm2022/lib/services/api/component-info.service.mjs +17 -0
- package/esm2022/lib/services/api/component-location.service.mjs +17 -0
- package/esm2022/lib/services/api/component.service.mjs +53 -0
- package/esm2022/lib/services/api/cortex-event.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex-insight.service.mjs +23 -0
- package/esm2022/lib/services/api/cortex-node.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex.service.mjs +29 -0
- package/esm2022/lib/services/api/custom-field.service.mjs +70 -0
- package/esm2022/lib/services/api/custom.service.mjs +43 -0
- package/esm2022/lib/services/api/dashboard.service.mjs +44 -0
- package/esm2022/lib/services/api/deferral.service.mjs +54 -0
- package/esm2022/lib/services/api/department.service.mjs +17 -0
- package/esm2022/lib/services/api/device-gateway.service.mjs +33 -0
- package/esm2022/lib/services/api/diagnostic-report.service.mjs +23 -0
- package/esm2022/lib/services/api/digital-twin.service.mjs +56 -0
- package/esm2022/lib/services/api/document.service.mjs +53 -0
- package/esm2022/lib/services/api/dynamic-crud.service.mjs +67 -0
- package/esm2022/lib/services/api/energy-analytics.service.mjs +42 -0
- package/esm2022/lib/services/api/energy-production.service.mjs +17 -0
- package/esm2022/lib/services/api/energy.service.mjs +91 -0
- package/esm2022/lib/services/api/entity-comment.service.mjs +31 -0
- package/esm2022/lib/services/api/event.service.mjs +17 -0
- package/esm2022/lib/services/api/export.service.mjs +216 -0
- package/esm2022/lib/services/api/extension.service.mjs +56 -0
- package/esm2022/lib/services/api/failure.service.mjs +53 -0
- package/esm2022/lib/services/api/fleet.service.mjs +140 -0
- package/esm2022/lib/services/api/inactive-component.service.mjs +17 -0
- package/esm2022/lib/services/api/index.mjs +101 -0
- package/esm2022/lib/services/api/inspection.service.mjs +29 -0
- package/esm2022/lib/services/api/intervention-request.service.mjs +17 -0
- package/esm2022/lib/services/api/intervention.service.mjs +17 -0
- package/esm2022/lib/services/api/knowledge.service.mjs +209 -0
- package/esm2022/lib/services/api/license.service.mjs +25 -0
- package/esm2022/lib/services/api/location.service.mjs +17 -0
- package/esm2022/lib/services/api/log.service.mjs +17 -0
- package/esm2022/lib/services/api/login-history.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-plan.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-record.service.mjs +17 -0
- package/esm2022/lib/services/api/material-consumable.service.mjs +41 -0
- package/esm2022/lib/services/api/material-instrument.service.mjs +29 -0
- package/esm2022/lib/services/api/material-item.service.mjs +53 -0
- package/esm2022/lib/services/api/material-tooling.service.mjs +41 -0
- package/esm2022/lib/services/api/measurement-unit.service.mjs +17 -0
- package/esm2022/lib/services/api/misc-crud.service.mjs +329 -0
- package/esm2022/lib/services/api/note.service.mjs +37 -0
- package/esm2022/lib/services/api/outage-resource.service.mjs +28 -0
- package/esm2022/lib/services/api/plant-data.service.mjs +31 -0
- package/esm2022/lib/services/api/procurement.service.mjs +53 -0
- package/esm2022/lib/services/api/project.service.mjs +17 -0
- package/esm2022/lib/services/api/property-template.service.mjs +17 -0
- package/esm2022/lib/services/api/quality.service.mjs +29 -0
- package/esm2022/lib/services/api/recurring-event.service.mjs +17 -0
- package/esm2022/lib/services/api/reporting.service.mjs +117 -0
- package/esm2022/lib/services/api/reservoir-data.service.mjs +19 -0
- package/esm2022/lib/services/api/reservoir.service.mjs +209 -0
- package/esm2022/lib/services/api/room.service.mjs +17 -0
- package/esm2022/lib/services/api/sandbox.service.mjs +62 -0
- package/esm2022/lib/services/api/scheduled-report.service.mjs +17 -0
- package/esm2022/lib/services/api/search.service.mjs +77 -0
- package/esm2022/lib/services/api/sensor.service.mjs +36 -0
- package/esm2022/lib/services/api/sla-policy.service.mjs +17 -0
- package/esm2022/lib/services/api/sla.service.mjs +17 -0
- package/esm2022/lib/services/api/threshold-alert-rule.service.mjs +17 -0
- package/esm2022/lib/services/api/ticket.service.mjs +73 -0
- package/esm2022/lib/services/api/time-entry.service.mjs +17 -0
- package/esm2022/lib/services/api/todo.service.mjs +17 -0
- package/esm2022/lib/services/api/unit.service.mjs +17 -0
- package/esm2022/lib/services/api/upload.service.mjs +84 -0
- package/esm2022/lib/services/api/user.service.mjs +107 -0
- package/esm2022/lib/services/api/warehouse.service.mjs +29 -0
- package/esm2022/lib/services/api/warranty.service.mjs +29 -0
- package/esm2022/lib/services/api/work-order.service.mjs +28 -0
- package/esm2022/lib/services/api/work-permit.service.mjs +17 -0
- package/esm2022/lib/services/api/workflow.service.mjs +86 -0
- package/esm2022/lib/services/auth/auth.service.mjs +97 -0
- package/esm2022/lib/services/auth/index.mjs +5 -0
- package/esm2022/lib/services/auth/platform-auth.service.mjs +39 -0
- package/esm2022/lib/services/auth/sso-auth.service.mjs +46 -0
- package/esm2022/lib/services/auth/totp.service.mjs +34 -0
- package/esm2022/lib/services/chat/chat-rest.service.mjs +104 -0
- package/esm2022/lib/services/chat/chat-websocket.service.mjs +70 -0
- package/esm2022/lib/services/chat/index.mjs +3 -0
- package/esm2022/lib/services/index.mjs +8 -0
- package/esm2022/lib/services/realtime/index.mjs +2 -0
- package/esm2022/lib/services/realtime/realtime-event.service.mjs +187 -0
- package/esm2022/lib/services/reservoir/index.mjs +2 -0
- package/esm2022/lib/services/reservoir/reservoir-websocket.service.mjs +105 -0
- package/esm2022/lib/services/video/index.mjs +3 -0
- package/esm2022/lib/services/video/video-call-rest.service.mjs +42 -0
- package/esm2022/lib/services/video/video-call-websocket.service.mjs +55 -0
- package/esm2022/lib/tgm-sdk.config.mjs +32 -0
- package/esm2022/lib/tgm-sdk.module.mjs +38 -0
- package/esm2022/public-api.mjs +52 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs +11029 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/database-manager/database-manager/database-manager.component.d.ts +70 -0
- package/lib/components/database-manager/database-manager.module.d.ts +15 -0
- package/lib/components/database-manager/object-browser/object-browser.component.d.ts +35 -0
- package/lib/components/database-manager/query-editor/query-editor.component.d.ts +31 -0
- package/lib/components/database-manager/query-toolbar/query-toolbar.component.d.ts +23 -0
- package/lib/components/database-manager/record-detail/record-detail.component.d.ts +35 -0
- package/lib/components/database-manager/registry/entity-registry.d.ts +16 -0
- package/lib/components/database-manager/results-grid/results-grid.component.d.ts +62 -0
- package/lib/components/database-manager/services/entity-schema.service.d.ts +37 -0
- package/lib/components/database-manager/services/query-executor.service.d.ts +57 -0
- package/lib/components/database-manager/table-data-viewer/table-data-viewer.component.d.ts +54 -0
- package/lib/components/database-manager/table-structure/table-structure.component.d.ts +16 -0
- package/lib/components/database-manager/types/database-manager.types.d.ts +71 -0
- package/lib/components/reporting/export-button/export-button.component.d.ts +50 -0
- package/lib/components/reporting/generated-report-list/generated-report-list.component.d.ts +93 -0
- package/lib/components/reporting/report-definition-form/report-definition-form.component.d.ts +65 -0
- package/lib/components/reporting/report-definition-list/report-definition-list.component.d.ts +90 -0
- package/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.d.ts +46 -0
- package/lib/components/reporting/report-stats/report-stats.component.d.ts +47 -0
- package/lib/components/reporting/report-template-list/report-template-list.component.d.ts +39 -0
- package/lib/components/reporting/reporting.module.d.ts +14 -0
- package/lib/components/video-call/incoming-call/incoming-call.component.d.ts +20 -0
- package/lib/components/video-call/services/livekit-room.service.d.ts +28 -0
- package/lib/components/video-call/services/video-call-signaling.service.d.ts +21 -0
- package/lib/components/video-call/services/video-call-state.service.d.ts +25 -0
- package/lib/components/video-call/types/video-call.types.d.ts +49 -0
- package/lib/components/video-call/video-call.module.d.ts +11 -0
- package/lib/components/video-call/video-controls/video-controls.component.d.ts +13 -0
- package/lib/components/video-call/video-participant/video-participant.component.d.ts +17 -0
- package/lib/components/video-call/video-room/video-room.component.d.ts +30 -0
- package/lib/core/auth-interceptor.d.ts +13 -0
- package/lib/core/client-interceptor.d.ts +14 -0
- package/lib/core/error-handler.d.ts +13 -0
- package/lib/core/http-client.service.d.ts +61 -0
- package/lib/core/websocket.service.d.ts +37 -0
- package/lib/models/admin/audit.models.d.ts +73 -0
- package/lib/models/admin/backup.models.d.ts +101 -0
- package/lib/models/admin/client.models.d.ts +99 -0
- package/lib/models/admin/email-provider.models.d.ts +56 -0
- package/lib/models/admin/erp.models.d.ts +188 -0
- package/lib/models/admin/identity-provider.models.d.ts +1 -0
- package/lib/models/admin/index.d.ts +13 -0
- package/lib/models/admin/messaging-provider.models.d.ts +49 -0
- package/lib/models/admin/platform-admin.models.d.ts +33 -0
- package/lib/models/admin/queue.models.d.ts +54 -0
- package/lib/models/admin/role.models.d.ts +50 -0
- package/lib/models/admin/sandbox.models.d.ts +54 -0
- package/lib/models/admin/ticket.models.d.ts +48 -0
- package/lib/models/admin/webhook.models.d.ts +65 -0
- package/lib/models/api/ai.models.d.ts +75 -0
- package/lib/models/api/aip.models.d.ts +545 -0
- package/lib/models/api/cat.models.d.ts +260 -0
- package/lib/models/api/company.models.d.ts +125 -0
- package/lib/models/api/compliance.models.d.ts +74 -0
- package/lib/models/api/component.models.d.ts +294 -0
- package/lib/models/api/cortex-edge.models.d.ts +14 -0
- package/lib/models/api/cortex-event.models.d.ts +12 -0
- package/lib/models/api/cortex-insight.models.d.ts +25 -0
- package/lib/models/api/cortex-node.models.d.ts +10 -0
- package/lib/models/api/custom-field.models.d.ts +37 -0
- package/lib/models/api/deferral.models.d.ts +81 -0
- package/lib/models/api/diagnostic-report.models.d.ts +29 -0
- package/lib/models/api/document.models.d.ts +95 -0
- package/lib/models/api/energy.models.d.ts +210 -0
- package/lib/models/api/failure.models.d.ts +171 -0
- package/lib/models/api/fleet.models.d.ts +193 -0
- package/lib/models/api/inspection.models.d.ts +110 -0
- package/lib/models/api/intervention.models.d.ts +254 -0
- package/lib/models/api/iot.models.d.ts +15 -0
- package/lib/models/api/knowledge.models.d.ts +340 -0
- package/lib/models/api/loto.models.d.ts +51 -0
- package/lib/models/api/maintenance-record.models.d.ts +100 -0
- package/lib/models/api/maintenance.models.d.ts +188 -0
- package/lib/models/api/material.models.d.ts +261 -0
- package/lib/models/api/media.models.d.ts +106 -0
- package/lib/models/api/misc.models.d.ts +929 -0
- package/lib/models/api/project.models.d.ts +118 -0
- package/lib/models/api/quality.models.d.ts +153 -0
- package/lib/models/api/reporting.models.d.ts +76 -0
- package/lib/models/api/reservoir-websocket.models.d.ts +48 -0
- package/lib/models/api/reservoir.models.d.ts +274 -0
- package/lib/models/api/search.models.d.ts +30 -0
- package/lib/models/api/sensor.models.d.ts +117 -0
- package/lib/models/api/unit.models.d.ts +82 -0
- package/lib/models/api/user.models.d.ts +253 -0
- package/lib/models/api/warranty.models.d.ts +51 -0
- package/lib/models/api/work-permit.models.d.ts +70 -0
- package/lib/models/api/workflow.models.d.ts +52 -0
- package/lib/models/auth/index.d.ts +3 -0
- package/lib/models/auth/login.models.d.ts +134 -0
- package/lib/models/auth/sso.models.d.ts +136 -0
- package/lib/models/auth/totp.models.d.ts +19 -0
- package/lib/models/base.models.d.ts +90 -0
- package/lib/models/chat/chat.models.d.ts +171 -0
- package/lib/models/enums/cat.enums.d.ts +114 -0
- package/lib/models/enums/energy.enums.d.ts +50 -0
- package/lib/models/enums/erp.enums.d.ts +49 -0
- package/lib/models/enums/index.d.ts +14 -0
- package/lib/models/enums/inspection.enums.d.ts +61 -0
- package/lib/models/enums/loto.enums.d.ts +41 -0
- package/lib/models/enums/misc.enums.d.ts +151 -0
- package/lib/models/enums/quality.enums.d.ts +25 -0
- package/lib/models/enums/reservoir.enums.d.ts +80 -0
- package/lib/models/enums/sso.enums.d.ts +15 -0
- package/lib/models/enums/status.enums.d.ts +296 -0
- package/lib/models/enums/time.enums.d.ts +51 -0
- package/lib/models/enums/type.enums.d.ts +324 -0
- package/lib/models/enums/user.enums.d.ts +31 -0
- package/lib/models/enums/work-permit.enums.d.ts +56 -0
- package/lib/models/index.d.ts +41 -0
- package/lib/models/realtime/realtime-event.models.d.ts +95 -0
- package/lib/models/video/video-call.models.d.ts +65 -0
- package/lib/services/admin/activity-log.service.d.ts +13 -0
- package/lib/services/admin/announcement.service.d.ts +17 -0
- package/lib/services/admin/article-admin.service.d.ts +17 -0
- package/lib/services/admin/audit-log.service.d.ts +22 -0
- package/lib/services/admin/backup.service.d.ts +15 -0
- package/lib/services/admin/cache-admin.service.d.ts +26 -0
- package/lib/services/admin/client-admin.service.d.ts +38 -0
- package/lib/services/admin/client-api-key.service.d.ts +15 -0
- package/lib/services/admin/client-ocr.service.d.ts +14 -0
- package/lib/services/admin/client-usage.service.d.ts +15 -0
- package/lib/services/admin/data-export.service.d.ts +10 -0
- package/lib/services/admin/document-admin.service.d.ts +18 -0
- package/lib/services/admin/email-admin.service.d.ts +14 -0
- package/lib/services/admin/email-provider.service.d.ts +25 -0
- package/lib/services/admin/erp-admin.service.d.ts +41 -0
- package/lib/services/admin/identity-provider.service.d.ts +21 -0
- package/lib/services/admin/impersonation.service.d.ts +11 -0
- package/lib/services/admin/index.d.ts +30 -0
- package/lib/services/admin/messaging-provider.service.d.ts +24 -0
- package/lib/services/admin/notification.service.d.ts +15 -0
- package/lib/services/admin/platform-admin.service.d.ts +17 -0
- package/lib/services/admin/platform-webhook.service.d.ts +16 -0
- package/lib/services/admin/queue-admin.service.d.ts +24 -0
- package/lib/services/admin/role-admin.service.d.ts +37 -0
- package/lib/services/admin/sandbox-admin.service.d.ts +17 -0
- package/lib/services/admin/scheduler-admin.service.d.ts +61 -0
- package/lib/services/admin/subscription.service.d.ts +15 -0
- package/lib/services/admin/system-health.service.d.ts +11 -0
- package/lib/services/admin/user-admin.service.d.ts +27 -0
- package/lib/services/admin/user-permission.service.d.ts +18 -0
- package/lib/services/admin/webhook-admin.service.d.ts +26 -0
- package/lib/services/api/agent.service.d.ts +16 -0
- package/lib/services/api/ai-feedback.service.d.ts +9 -0
- package/lib/services/api/ai.service.d.ts +36 -0
- package/lib/services/api/aip-analysis.service.d.ts +13 -0
- package/lib/services/api/aip-financial.service.d.ts +16 -0
- package/lib/services/api/aip-geographic.service.d.ts +16 -0
- package/lib/services/api/aip-network.service.d.ts +16 -0
- package/lib/services/api/aip-performance.service.d.ts +16 -0
- package/lib/services/api/aip-resource.service.d.ts +14 -0
- package/lib/services/api/aip-workflow.service.d.ts +24 -0
- package/lib/services/api/aip.service.d.ts +73 -0
- package/lib/services/api/alert.service.d.ts +15 -0
- package/lib/services/api/anomaly-detection.service.d.ts +26 -0
- package/lib/services/api/asset-lifecycle.service.d.ts +29 -0
- package/lib/services/api/audit-entry.service.d.ts +13 -0
- package/lib/services/api/base-crud.service.d.ts +18 -0
- package/lib/services/api/bid.service.d.ts +10 -0
- package/lib/services/api/budget.service.d.ts +10 -0
- package/lib/services/api/bulk-operation.service.d.ts +26 -0
- package/lib/services/api/capex-project.service.d.ts +10 -0
- package/lib/services/api/cat.service.d.ts +40 -0
- package/lib/services/api/client-article.service.d.ts +14 -0
- package/lib/services/api/community.service.d.ts +21 -0
- package/lib/services/api/company-material-type.service.d.ts +10 -0
- package/lib/services/api/company-material.service.d.ts +9 -0
- package/lib/services/api/company.service.d.ts +15 -0
- package/lib/services/api/compliance.service.d.ts +35 -0
- package/lib/services/api/component-info.service.d.ts +10 -0
- package/lib/services/api/component-location.service.d.ts +10 -0
- package/lib/services/api/component.service.d.ts +32 -0
- package/lib/services/api/cortex-event.service.d.ts +10 -0
- package/lib/services/api/cortex-insight.service.d.ts +14 -0
- package/lib/services/api/cortex-node.service.d.ts +10 -0
- package/lib/services/api/cortex.service.d.ts +15 -0
- package/lib/services/api/custom-field.service.d.ts +33 -0
- package/lib/services/api/custom.service.d.ts +23 -0
- package/lib/services/api/dashboard.service.d.ts +18 -0
- package/lib/services/api/deferral.service.d.ts +29 -0
- package/lib/services/api/department.service.d.ts +9 -0
- package/lib/services/api/device-gateway.service.d.ts +16 -0
- package/lib/services/api/diagnostic-report.service.d.ts +14 -0
- package/lib/services/api/digital-twin.service.d.ts +29 -0
- package/lib/services/api/document.service.d.ts +28 -0
- package/lib/services/api/dynamic-crud.service.d.ts +41 -0
- package/lib/services/api/energy-analytics.service.d.ts +16 -0
- package/lib/services/api/energy-production.service.d.ts +10 -0
- package/lib/services/api/energy.service.d.ts +46 -0
- package/lib/services/api/entity-comment.service.d.ts +16 -0
- package/lib/services/api/event.service.d.ts +10 -0
- package/lib/services/api/export.service.d.ts +48 -0
- package/lib/services/api/extension.service.d.ts +24 -0
- package/lib/services/api/failure.service.d.ts +28 -0
- package/lib/services/api/fleet.service.d.ts +71 -0
- package/lib/services/api/inactive-component.service.d.ts +10 -0
- package/lib/services/api/index.d.ts +101 -0
- package/lib/services/api/inspection.service.d.ts +16 -0
- package/lib/services/api/intervention-request.service.d.ts +10 -0
- package/lib/services/api/intervention.service.d.ts +10 -0
- package/lib/services/api/knowledge.service.d.ts +106 -0
- package/lib/services/api/license.service.d.ts +14 -0
- package/lib/services/api/location.service.d.ts +9 -0
- package/lib/services/api/log.service.d.ts +9 -0
- package/lib/services/api/login-history.service.d.ts +10 -0
- package/lib/services/api/maintenance-plan.service.d.ts +10 -0
- package/lib/services/api/maintenance-record.service.d.ts +10 -0
- package/lib/services/api/material-consumable.service.d.ts +22 -0
- package/lib/services/api/material-instrument.service.d.ts +16 -0
- package/lib/services/api/material-item.service.d.ts +28 -0
- package/lib/services/api/material-tooling.service.d.ts +22 -0
- package/lib/services/api/measurement-unit.service.d.ts +10 -0
- package/lib/services/api/misc-crud.service.d.ts +167 -0
- package/lib/services/api/note.service.d.ts +14 -0
- package/lib/services/api/outage-resource.service.d.ts +15 -0
- package/lib/services/api/plant-data.service.d.ts +14 -0
- package/lib/services/api/procurement.service.d.ts +27 -0
- package/lib/services/api/project.service.d.ts +10 -0
- package/lib/services/api/property-template.service.d.ts +10 -0
- package/lib/services/api/quality.service.d.ts +16 -0
- package/lib/services/api/recurring-event.service.d.ts +10 -0
- package/lib/services/api/reporting.service.d.ts +38 -0
- package/lib/services/api/reservoir-data.service.d.ts +10 -0
- package/lib/services/api/reservoir.service.d.ts +109 -0
- package/lib/services/api/room.service.d.ts +10 -0
- package/lib/services/api/sandbox.service.d.ts +26 -0
- package/lib/services/api/scheduled-report.service.d.ts +10 -0
- package/lib/services/api/search.service.d.ts +54 -0
- package/lib/services/api/sensor.service.d.ts +17 -0
- package/lib/services/api/sla-policy.service.d.ts +10 -0
- package/lib/services/api/sla.service.d.ts +10 -0
- package/lib/services/api/threshold-alert-rule.service.d.ts +10 -0
- package/lib/services/api/ticket.service.d.ts +60 -0
- package/lib/services/api/time-entry.service.d.ts +10 -0
- package/lib/services/api/todo.service.d.ts +10 -0
- package/lib/services/api/unit.service.d.ts +10 -0
- package/lib/services/api/upload.service.d.ts +50 -0
- package/lib/services/api/user.service.d.ts +59 -0
- package/lib/services/api/warehouse.service.d.ts +15 -0
- package/lib/services/api/warranty.service.d.ts +16 -0
- package/lib/services/api/work-order.service.d.ts +17 -0
- package/lib/services/api/work-permit.service.d.ts +10 -0
- package/lib/services/api/workflow.service.d.ts +33 -0
- package/lib/services/auth/auth.service.d.ts +33 -0
- package/lib/services/auth/index.d.ts +4 -0
- package/lib/services/auth/platform-auth.service.d.ts +16 -0
- package/lib/services/auth/sso-auth.service.d.ts +21 -0
- package/lib/services/auth/totp.service.d.ts +18 -0
- package/lib/services/chat/chat-rest.service.d.ts +40 -0
- package/lib/services/chat/chat-websocket.service.d.ts +34 -0
- package/lib/services/chat/index.d.ts +2 -0
- package/lib/services/index.d.ts +7 -0
- package/lib/services/realtime/index.d.ts +1 -0
- package/lib/services/realtime/realtime-event.service.d.ts +137 -0
- package/lib/services/reservoir/index.d.ts +1 -0
- package/lib/services/reservoir/reservoir-websocket.service.d.ts +47 -0
- package/lib/services/video/index.d.ts +2 -0
- package/lib/services/video/video-call-rest.service.d.ts +19 -0
- package/lib/services/video/video-call-websocket.service.d.ts +31 -0
- package/lib/tgm-sdk.config.d.ts +36 -0
- package/lib/tgm-sdk.module.d.ts +13 -0
- package/package.json +40 -0
- package/public-api.d.ts +42 -0
package/esm2022/lib/components/reporting/report-definition-form/report-definition-form.component.mjs
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class ReportDefinitionFormComponent {
|
|
8
|
+
// ── Data ──
|
|
9
|
+
definition;
|
|
10
|
+
saving = false;
|
|
11
|
+
// ── Options (override defaults) ──
|
|
12
|
+
reportTypes = [
|
|
13
|
+
'MAINTENANCE_SUMMARY',
|
|
14
|
+
'INSPECTION_COMPLIANCE',
|
|
15
|
+
'EQUIPMENT_HEALTH',
|
|
16
|
+
'FAILURE_ANALYSIS',
|
|
17
|
+
'TECHNICIAN_PERFORMANCE',
|
|
18
|
+
'COST_ANALYSIS',
|
|
19
|
+
'RESERVOIR_OPERATIONS',
|
|
20
|
+
'WATER_QUALITY',
|
|
21
|
+
'REGULATORY_COMPLIANCE',
|
|
22
|
+
'ALERT_ANALYSIS',
|
|
23
|
+
];
|
|
24
|
+
reportFormats = ['PDF', 'EXCEL', 'CSV'];
|
|
25
|
+
schedules = ['NONE', 'DAILY', 'WEEKLY', 'MONTHLY'];
|
|
26
|
+
deliveryMethods = ['DOWNLOAD', 'EMAIL'];
|
|
27
|
+
// ── Labels ──
|
|
28
|
+
title = '';
|
|
29
|
+
nameLabel = 'Name';
|
|
30
|
+
namePlaceholder = 'Report definition name';
|
|
31
|
+
descriptionLabel = 'Description';
|
|
32
|
+
descriptionPlaceholder = 'Optional description';
|
|
33
|
+
reportTypeLabel = 'Report Type';
|
|
34
|
+
reportFormatLabel = 'Format';
|
|
35
|
+
scheduleLabel = 'Schedule';
|
|
36
|
+
deliveryMethodLabel = 'Delivery Method';
|
|
37
|
+
emailRecipientsLabel = 'Email Recipients';
|
|
38
|
+
emailRecipientsPlaceholder = 'comma-separated emails';
|
|
39
|
+
filtersLabel = 'Filters (JSON)';
|
|
40
|
+
filtersPlaceholder = '{"key": "value"}';
|
|
41
|
+
enabledLabel = 'Enabled';
|
|
42
|
+
saveButtonLabel = '';
|
|
43
|
+
cancelButtonLabel = 'Cancel';
|
|
44
|
+
// ── CSS overrides ──
|
|
45
|
+
containerClass = '';
|
|
46
|
+
formClass = '';
|
|
47
|
+
// ── Custom templates ──
|
|
48
|
+
headerTemplate;
|
|
49
|
+
footerTemplate;
|
|
50
|
+
fieldsTemplate;
|
|
51
|
+
// ── Events ──
|
|
52
|
+
save = new EventEmitter();
|
|
53
|
+
cancel = new EventEmitter();
|
|
54
|
+
// Form model
|
|
55
|
+
form = {
|
|
56
|
+
name: '',
|
|
57
|
+
description: '',
|
|
58
|
+
reportType: 'MAINTENANCE_SUMMARY',
|
|
59
|
+
reportFormat: 'PDF',
|
|
60
|
+
schedule: 'NONE',
|
|
61
|
+
deliveryMethod: 'DOWNLOAD',
|
|
62
|
+
emailRecipients: '',
|
|
63
|
+
filtersJson: '',
|
|
64
|
+
enabled: true,
|
|
65
|
+
};
|
|
66
|
+
get isEdit() {
|
|
67
|
+
return !!this.definition;
|
|
68
|
+
}
|
|
69
|
+
get formTitle() {
|
|
70
|
+
if (this.title)
|
|
71
|
+
return this.title;
|
|
72
|
+
return this.isEdit ? 'Edit Report Definition' : 'Create Report Definition';
|
|
73
|
+
}
|
|
74
|
+
get saveLabel() {
|
|
75
|
+
if (this.saveButtonLabel)
|
|
76
|
+
return this.saveButtonLabel;
|
|
77
|
+
return this.isEdit ? 'Update' : 'Create';
|
|
78
|
+
}
|
|
79
|
+
get showEmailRecipients() {
|
|
80
|
+
return this.form.deliveryMethod === 'EMAIL';
|
|
81
|
+
}
|
|
82
|
+
ngOnChanges(changes) {
|
|
83
|
+
if (changes['definition']) {
|
|
84
|
+
this.populateForm();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
onSave() {
|
|
88
|
+
let filters;
|
|
89
|
+
if (this.form.filtersJson.trim()) {
|
|
90
|
+
try {
|
|
91
|
+
filters = JSON.parse(this.form.filtersJson);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
filters = undefined;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const request = {
|
|
98
|
+
name: this.form.name,
|
|
99
|
+
description: this.form.description || undefined,
|
|
100
|
+
reportType: this.form.reportType,
|
|
101
|
+
reportFormat: this.form.reportFormat,
|
|
102
|
+
schedule: this.form.schedule,
|
|
103
|
+
deliveryMethod: this.form.deliveryMethod,
|
|
104
|
+
emailRecipients: this.form.emailRecipients || undefined,
|
|
105
|
+
filters,
|
|
106
|
+
enabled: this.form.enabled,
|
|
107
|
+
};
|
|
108
|
+
this.save.emit(request);
|
|
109
|
+
}
|
|
110
|
+
onCancel() {
|
|
111
|
+
this.cancel.emit();
|
|
112
|
+
}
|
|
113
|
+
populateForm() {
|
|
114
|
+
if (this.definition) {
|
|
115
|
+
this.form = {
|
|
116
|
+
name: this.definition.name,
|
|
117
|
+
description: this.definition.description ?? '',
|
|
118
|
+
reportType: this.definition.reportType,
|
|
119
|
+
reportFormat: this.definition.reportFormat,
|
|
120
|
+
schedule: this.definition.schedule,
|
|
121
|
+
deliveryMethod: this.definition.deliveryMethod,
|
|
122
|
+
emailRecipients: this.definition.emailRecipients ?? '',
|
|
123
|
+
filtersJson: this.definition.filters ? JSON.stringify(this.definition.filters, null, 2) : '',
|
|
124
|
+
enabled: this.definition.enabled,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.form = {
|
|
129
|
+
name: '',
|
|
130
|
+
description: '',
|
|
131
|
+
reportType: this.reportTypes[0] ?? 'MAINTENANCE_SUMMARY',
|
|
132
|
+
reportFormat: this.reportFormats[0] ?? 'PDF',
|
|
133
|
+
schedule: 'NONE',
|
|
134
|
+
deliveryMethod: 'DOWNLOAD',
|
|
135
|
+
emailRecipients: '',
|
|
136
|
+
filtersJson: '',
|
|
137
|
+
enabled: true,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportDefinitionFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
142
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ReportDefinitionFormComponent, isStandalone: true, selector: "tgm-report-definition-form", inputs: { definition: "definition", saving: "saving", reportTypes: "reportTypes", reportFormats: "reportFormats", schedules: "schedules", deliveryMethods: "deliveryMethods", title: "title", nameLabel: "nameLabel", namePlaceholder: "namePlaceholder", descriptionLabel: "descriptionLabel", descriptionPlaceholder: "descriptionPlaceholder", reportTypeLabel: "reportTypeLabel", reportFormatLabel: "reportFormatLabel", scheduleLabel: "scheduleLabel", deliveryMethodLabel: "deliveryMethodLabel", emailRecipientsLabel: "emailRecipientsLabel", emailRecipientsPlaceholder: "emailRecipientsPlaceholder", filtersLabel: "filtersLabel", filtersPlaceholder: "filtersPlaceholder", enabledLabel: "enabledLabel", saveButtonLabel: "saveButtonLabel", cancelButtonLabel: "cancelButtonLabel", containerClass: "containerClass", formClass: "formClass", headerTemplate: "headerTemplate", footerTemplate: "footerTemplate", fieldsTemplate: "fieldsTemplate" }, outputs: { save: "save", cancel: "cancel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tgm-def-form\" [ngClass]=\"containerClass\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { isEdit: isEdit }\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <h3 class=\"tgm-def-form__title\">{{ formTitle }}</h3>\n </ng-template>\n\n <!-- Custom fields template -->\n <ng-container *ngIf=\"fieldsTemplate; else defaultFields\">\n <ng-container *ngTemplateOutlet=\"fieldsTemplate; context: { form: form, isEdit: isEdit }\"></ng-container>\n </ng-container>\n\n <!-- Default fields -->\n <ng-template #defaultFields>\n <div class=\"tgm-form\" [ngClass]=\"formClass\">\n <!-- Name -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ nameLabel }}</label>\n <input class=\"tgm-input\" type=\"text\" [(ngModel)]=\"form.name\" [placeholder]=\"namePlaceholder\" name=\"name\" />\n </div>\n\n <!-- Description -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ descriptionLabel }}</label>\n <textarea class=\"tgm-input tgm-textarea\" [(ngModel)]=\"form.description\" [placeholder]=\"descriptionPlaceholder\" name=\"description\" rows=\"2\"></textarea>\n </div>\n\n <!-- Report Type & Format (side by side) -->\n <div class=\"tgm-form-row\">\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ reportTypeLabel }}</label>\n <select class=\"tgm-select\" [(ngModel)]=\"form.reportType\" name=\"reportType\">\n <option *ngFor=\"let t of reportTypes\" [value]=\"t\">{{ t }}</option>\n </select>\n </div>\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ reportFormatLabel }}</label>\n <select class=\"tgm-select\" [(ngModel)]=\"form.reportFormat\" name=\"reportFormat\">\n <option *ngFor=\"let f of reportFormats\" [value]=\"f\">{{ f }}</option>\n </select>\n </div>\n </div>\n\n <!-- Schedule & Delivery Method (side by side) -->\n <div class=\"tgm-form-row\">\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ scheduleLabel }}</label>\n <select class=\"tgm-select\" [(ngModel)]=\"form.schedule\" name=\"schedule\">\n <option *ngFor=\"let s of schedules\" [value]=\"s\">{{ s }}</option>\n </select>\n </div>\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ deliveryMethodLabel }}</label>\n <div class=\"tgm-radio-group\">\n <label class=\"tgm-radio\" *ngFor=\"let dm of deliveryMethods\">\n <input type=\"radio\" [value]=\"dm\" [(ngModel)]=\"form.deliveryMethod\" name=\"deliveryMethod\" />\n <span class=\"tgm-radio__label\">{{ dm }}</span>\n </label>\n </div>\n </div>\n </div>\n\n <!-- Email Recipients (conditional) -->\n <div class=\"tgm-form-group\" *ngIf=\"showEmailRecipients\">\n <label class=\"tgm-form-label\">{{ emailRecipientsLabel }}</label>\n <input class=\"tgm-input\" type=\"text\" [(ngModel)]=\"form.emailRecipients\" [placeholder]=\"emailRecipientsPlaceholder\" name=\"emailRecipients\" />\n </div>\n\n <!-- Filters JSON -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ filtersLabel }}</label>\n <textarea class=\"tgm-input tgm-textarea tgm-textarea--code\" [(ngModel)]=\"form.filtersJson\" [placeholder]=\"filtersPlaceholder\" name=\"filtersJson\" rows=\"3\"></textarea>\n </div>\n\n <!-- Enabled -->\n <div class=\"tgm-form-group tgm-form-group--inline\">\n <label class=\"tgm-form-label\">{{ enabledLabel }}</label>\n <button class=\"tgm-toggle\" [class.tgm-toggle--active]=\"form.enabled\" (click)=\"form.enabled = !form.enabled\" type=\"button\">\n <span class=\"tgm-toggle__track\">\n <span class=\"tgm-toggle__thumb\"></span>\n </span>\n </button>\n </div>\n </div>\n </ng-template>\n\n <!-- Footer -->\n <ng-container *ngIf=\"footerTemplate; else defaultFooter\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: {\n isEdit: isEdit,\n saving: saving,\n onSave: onSave.bind(this),\n onCancel: onCancel.bind(this)\n }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n <div class=\"tgm-def-form__footer\">\n <button class=\"tgm-btn tgm-btn--secondary\" (click)=\"onCancel()\" type=\"button\" [disabled]=\"saving\">\n {{ cancelButtonLabel }}\n </button>\n <button class=\"tgm-btn tgm-btn--primary\" (click)=\"onSave()\" type=\"button\" [disabled]=\"saving || !form.name\">\n <span class=\"tgm-spinner tgm-spinner--sm\" *ngIf=\"saving\"></span>\n {{ saveLabel }}\n </button>\n </div>\n </ng-template>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(30, 30, 46, 1);--tgm-report-bg-hover: rgba(255, 255, 255, .08);--tgm-report-border: rgba(255, 255, 255, .1);--tgm-report-text: #e5e7eb;--tgm-report-text-secondary: #9ca3af;--tgm-report-text-muted: #6b7280;--tgm-report-primary: #3b82f6;--tgm-report-primary-hover: #2563eb;--tgm-report-success: #22c55e;--tgm-report-radius: 8px;--tgm-report-radius-sm: 4px;--tgm-report-font-family: inherit;--tgm-report-font-size: 14px;--tgm-report-spacing: 16px;--tgm-report-spacing-sm: 8px;--tgm-report-input-bg: rgba(255, 255, 255, .05);display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-def-form__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600}.tgm-def-form__footer{display:flex;justify-content:flex-end;gap:var(--tgm-report-spacing-sm);padding-top:var(--tgm-report-spacing);margin-top:var(--tgm-report-spacing);border-top:1px solid var(--tgm-report-border)}.tgm-form-group{margin-bottom:var(--tgm-report-spacing)}.tgm-form-group:last-child{margin-bottom:0}.tgm-form-group--flex{flex:1}.tgm-form-group--inline{display:flex;align-items:center;gap:var(--tgm-report-spacing-sm)}.tgm-form-row{display:flex;gap:var(--tgm-report-spacing)}@media (max-width: 480px){.tgm-form-row{flex-direction:column;gap:0}}.tgm-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--tgm-report-text-secondary)}.tgm-input{width:100%;padding:8px 12px;font-size:13px;font-family:var(--tgm-report-font-family);color:var(--tgm-report-text);background:var(--tgm-report-input-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius-sm);outline:none;transition:border-color .15s;box-sizing:border-box}.tgm-input::placeholder{color:var(--tgm-report-text-muted)}.tgm-input:focus{border-color:var(--tgm-report-primary)}.tgm-textarea{resize:vertical;min-height:60px}.tgm-textarea--code{font-family:monospace;font-size:12px}.tgm-select{width:100%;padding:8px 12px;font-size:13px;font-family:var(--tgm-report-font-family);color:var(--tgm-report-text);background:var(--tgm-report-input-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius-sm);outline:none;cursor:pointer;box-sizing:border-box}.tgm-select:focus{border-color:var(--tgm-report-primary)}.tgm-select option{background:#1e1e2e;color:var(--tgm-report-text)}.tgm-radio-group{display:flex;gap:var(--tgm-report-spacing);flex-wrap:wrap}.tgm-radio{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}.tgm-radio input[type=radio]{accent-color:var(--tgm-report-primary)}.tgm-radio__label{color:var(--tgm-report-text)}.tgm-toggle{background:none;border:none;cursor:pointer;padding:0}.tgm-toggle__track{display:flex;align-items:center;width:36px;height:20px;background:var(--tgm-report-text-muted);border-radius:10px;padding:2px;transition:background .2s}.tgm-toggle__thumb{display:block;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.tgm-toggle--active .tgm-toggle__track{background:var(--tgm-report-success)}.tgm-toggle--active .tgm-toggle__thumb{transform:translate(16px)}.tgm-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 20px;font-size:13px;font-weight:500;border:none;border-radius:var(--tgm-report-radius-sm);cursor:pointer;transition:background .15s,opacity .15s;font-family:var(--tgm-report-font-family)}.tgm-btn--primary{background:var(--tgm-report-primary);color:#fff}.tgm-btn--primary:hover:not(:disabled){background:var(--tgm-report-primary-hover)}.tgm-btn--secondary{background:transparent;color:var(--tgm-report-text-secondary);border:1px solid var(--tgm-report-border)}.tgm-btn--secondary:hover:not(:disabled){background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.tgm-btn:disabled{opacity:.5;cursor:not-allowed}.tgm-spinner{width:32px;height:32px;border:3px solid var(--tgm-report-border);border-top-color:var(--tgm-report-primary);border-radius:50%;animation:tgm-spin .8s linear infinite}.tgm-spinner--sm{width:14px;height:14px;border-width:2px}@keyframes tgm-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
143
|
+
}
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportDefinitionFormComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{ selector: 'tgm-report-definition-form', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"tgm-def-form\" [ngClass]=\"containerClass\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { isEdit: isEdit }\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <h3 class=\"tgm-def-form__title\">{{ formTitle }}</h3>\n </ng-template>\n\n <!-- Custom fields template -->\n <ng-container *ngIf=\"fieldsTemplate; else defaultFields\">\n <ng-container *ngTemplateOutlet=\"fieldsTemplate; context: { form: form, isEdit: isEdit }\"></ng-container>\n </ng-container>\n\n <!-- Default fields -->\n <ng-template #defaultFields>\n <div class=\"tgm-form\" [ngClass]=\"formClass\">\n <!-- Name -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ nameLabel }}</label>\n <input class=\"tgm-input\" type=\"text\" [(ngModel)]=\"form.name\" [placeholder]=\"namePlaceholder\" name=\"name\" />\n </div>\n\n <!-- Description -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ descriptionLabel }}</label>\n <textarea class=\"tgm-input tgm-textarea\" [(ngModel)]=\"form.description\" [placeholder]=\"descriptionPlaceholder\" name=\"description\" rows=\"2\"></textarea>\n </div>\n\n <!-- Report Type & Format (side by side) -->\n <div class=\"tgm-form-row\">\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ reportTypeLabel }}</label>\n <select class=\"tgm-select\" [(ngModel)]=\"form.reportType\" name=\"reportType\">\n <option *ngFor=\"let t of reportTypes\" [value]=\"t\">{{ t }}</option>\n </select>\n </div>\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ reportFormatLabel }}</label>\n <select class=\"tgm-select\" [(ngModel)]=\"form.reportFormat\" name=\"reportFormat\">\n <option *ngFor=\"let f of reportFormats\" [value]=\"f\">{{ f }}</option>\n </select>\n </div>\n </div>\n\n <!-- Schedule & Delivery Method (side by side) -->\n <div class=\"tgm-form-row\">\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ scheduleLabel }}</label>\n <select class=\"tgm-select\" [(ngModel)]=\"form.schedule\" name=\"schedule\">\n <option *ngFor=\"let s of schedules\" [value]=\"s\">{{ s }}</option>\n </select>\n </div>\n <div class=\"tgm-form-group tgm-form-group--flex\">\n <label class=\"tgm-form-label\">{{ deliveryMethodLabel }}</label>\n <div class=\"tgm-radio-group\">\n <label class=\"tgm-radio\" *ngFor=\"let dm of deliveryMethods\">\n <input type=\"radio\" [value]=\"dm\" [(ngModel)]=\"form.deliveryMethod\" name=\"deliveryMethod\" />\n <span class=\"tgm-radio__label\">{{ dm }}</span>\n </label>\n </div>\n </div>\n </div>\n\n <!-- Email Recipients (conditional) -->\n <div class=\"tgm-form-group\" *ngIf=\"showEmailRecipients\">\n <label class=\"tgm-form-label\">{{ emailRecipientsLabel }}</label>\n <input class=\"tgm-input\" type=\"text\" [(ngModel)]=\"form.emailRecipients\" [placeholder]=\"emailRecipientsPlaceholder\" name=\"emailRecipients\" />\n </div>\n\n <!-- Filters JSON -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ filtersLabel }}</label>\n <textarea class=\"tgm-input tgm-textarea tgm-textarea--code\" [(ngModel)]=\"form.filtersJson\" [placeholder]=\"filtersPlaceholder\" name=\"filtersJson\" rows=\"3\"></textarea>\n </div>\n\n <!-- Enabled -->\n <div class=\"tgm-form-group tgm-form-group--inline\">\n <label class=\"tgm-form-label\">{{ enabledLabel }}</label>\n <button class=\"tgm-toggle\" [class.tgm-toggle--active]=\"form.enabled\" (click)=\"form.enabled = !form.enabled\" type=\"button\">\n <span class=\"tgm-toggle__track\">\n <span class=\"tgm-toggle__thumb\"></span>\n </span>\n </button>\n </div>\n </div>\n </ng-template>\n\n <!-- Footer -->\n <ng-container *ngIf=\"footerTemplate; else defaultFooter\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: {\n isEdit: isEdit,\n saving: saving,\n onSave: onSave.bind(this),\n onCancel: onCancel.bind(this)\n }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n <div class=\"tgm-def-form__footer\">\n <button class=\"tgm-btn tgm-btn--secondary\" (click)=\"onCancel()\" type=\"button\" [disabled]=\"saving\">\n {{ cancelButtonLabel }}\n </button>\n <button class=\"tgm-btn tgm-btn--primary\" (click)=\"onSave()\" type=\"button\" [disabled]=\"saving || !form.name\">\n <span class=\"tgm-spinner tgm-spinner--sm\" *ngIf=\"saving\"></span>\n {{ saveLabel }}\n </button>\n </div>\n </ng-template>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(30, 30, 46, 1);--tgm-report-bg-hover: rgba(255, 255, 255, .08);--tgm-report-border: rgba(255, 255, 255, .1);--tgm-report-text: #e5e7eb;--tgm-report-text-secondary: #9ca3af;--tgm-report-text-muted: #6b7280;--tgm-report-primary: #3b82f6;--tgm-report-primary-hover: #2563eb;--tgm-report-success: #22c55e;--tgm-report-radius: 8px;--tgm-report-radius-sm: 4px;--tgm-report-font-family: inherit;--tgm-report-font-size: 14px;--tgm-report-spacing: 16px;--tgm-report-spacing-sm: 8px;--tgm-report-input-bg: rgba(255, 255, 255, .05);display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-def-form__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600}.tgm-def-form__footer{display:flex;justify-content:flex-end;gap:var(--tgm-report-spacing-sm);padding-top:var(--tgm-report-spacing);margin-top:var(--tgm-report-spacing);border-top:1px solid var(--tgm-report-border)}.tgm-form-group{margin-bottom:var(--tgm-report-spacing)}.tgm-form-group:last-child{margin-bottom:0}.tgm-form-group--flex{flex:1}.tgm-form-group--inline{display:flex;align-items:center;gap:var(--tgm-report-spacing-sm)}.tgm-form-row{display:flex;gap:var(--tgm-report-spacing)}@media (max-width: 480px){.tgm-form-row{flex-direction:column;gap:0}}.tgm-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--tgm-report-text-secondary)}.tgm-input{width:100%;padding:8px 12px;font-size:13px;font-family:var(--tgm-report-font-family);color:var(--tgm-report-text);background:var(--tgm-report-input-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius-sm);outline:none;transition:border-color .15s;box-sizing:border-box}.tgm-input::placeholder{color:var(--tgm-report-text-muted)}.tgm-input:focus{border-color:var(--tgm-report-primary)}.tgm-textarea{resize:vertical;min-height:60px}.tgm-textarea--code{font-family:monospace;font-size:12px}.tgm-select{width:100%;padding:8px 12px;font-size:13px;font-family:var(--tgm-report-font-family);color:var(--tgm-report-text);background:var(--tgm-report-input-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius-sm);outline:none;cursor:pointer;box-sizing:border-box}.tgm-select:focus{border-color:var(--tgm-report-primary)}.tgm-select option{background:#1e1e2e;color:var(--tgm-report-text)}.tgm-radio-group{display:flex;gap:var(--tgm-report-spacing);flex-wrap:wrap}.tgm-radio{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}.tgm-radio input[type=radio]{accent-color:var(--tgm-report-primary)}.tgm-radio__label{color:var(--tgm-report-text)}.tgm-toggle{background:none;border:none;cursor:pointer;padding:0}.tgm-toggle__track{display:flex;align-items:center;width:36px;height:20px;background:var(--tgm-report-text-muted);border-radius:10px;padding:2px;transition:background .2s}.tgm-toggle__thumb{display:block;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.tgm-toggle--active .tgm-toggle__track{background:var(--tgm-report-success)}.tgm-toggle--active .tgm-toggle__thumb{transform:translate(16px)}.tgm-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 20px;font-size:13px;font-weight:500;border:none;border-radius:var(--tgm-report-radius-sm);cursor:pointer;transition:background .15s,opacity .15s;font-family:var(--tgm-report-font-family)}.tgm-btn--primary{background:var(--tgm-report-primary);color:#fff}.tgm-btn--primary:hover:not(:disabled){background:var(--tgm-report-primary-hover)}.tgm-btn--secondary{background:transparent;color:var(--tgm-report-text-secondary);border:1px solid var(--tgm-report-border)}.tgm-btn--secondary:hover:not(:disabled){background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.tgm-btn:disabled{opacity:.5;cursor:not-allowed}.tgm-spinner{width:32px;height:32px;border:3px solid var(--tgm-report-border);border-top-color:var(--tgm-report-primary);border-radius:50%;animation:tgm-spin .8s linear infinite}.tgm-spinner--sm{width:14px;height:14px;border-width:2px}@keyframes tgm-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
147
|
+
}], propDecorators: { definition: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], saving: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], reportTypes: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], reportFormats: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], schedules: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], deliveryMethods: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], title: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], nameLabel: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], namePlaceholder: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], descriptionLabel: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], descriptionPlaceholder: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], reportTypeLabel: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], reportFormatLabel: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], scheduleLabel: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], deliveryMethodLabel: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], emailRecipientsLabel: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], emailRecipientsPlaceholder: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], filtersLabel: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], filtersPlaceholder: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], enabledLabel: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], saveButtonLabel: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], cancelButtonLabel: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], containerClass: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], formClass: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], headerTemplate: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], footerTemplate: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], fieldsTemplate: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], save: [{
|
|
202
|
+
type: Output
|
|
203
|
+
}], cancel: [{
|
|
204
|
+
type: Output
|
|
205
|
+
}] } });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1kZWZpbml0aW9uLWZvcm0vcmVwb3J0LWRlZmluaXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1kZWZpbml0aW9uLWZvcm0vcmVwb3J0LWRlZmluaXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFrQjdDLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsYUFBYTtJQUNKLFVBQVUsQ0FBb0I7SUFDOUIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUV4QixvQ0FBb0M7SUFDM0IsV0FBVyxHQUFpQjtRQUNuQyxxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsd0JBQXdCO1FBQ3hCLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLHVCQUF1QjtRQUN2QixnQkFBZ0I7S0FDakIsQ0FBQztJQUNPLGFBQWEsR0FBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELFNBQVMsR0FBcUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRSxlQUFlLEdBQXFCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lB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Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFNSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlUmVwb3J0RGVmaW5pdGlvblJlcXVlc3QsXG4gIERlbGl2ZXJ5TWV0aG9kLFxuICBSZXBvcnREZWZpbml0aW9uLFxuICBSZXBvcnRGb3JtYXQsXG4gIFJlcG9ydFNjaGVkdWxlLFxuICBSZXBvcnRUeXBlLFxuICBVcGRhdGVSZXBvcnREZWZpbml0aW9uUmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2FwaS9yZXBvcnRpbmcubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGdtLXJlcG9ydC1kZWZpbml0aW9uLWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtZGVmaW5pdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LWRlZmluaXRpb24tZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnREZWZpbml0aW9uRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8vIOKUgOKUgCBEYXRhIOKUgOKUgFxuICBASW5wdXQoKSBkZWZpbml0aW9uPzogUmVwb3J0RGVmaW5pdGlvbjtcbiAgQElucHV0KCkgc2F2aW5nID0gZmFsc2U7XG5cbiAgLy8g4pSA4pSAIE9wdGlvbnMgKG92ZXJyaWRlIGRlZmF1bHRzKSDilIDilIBcbiAgQElucHV0KCkgcmVwb3J0VHlwZXM6IFJlcG9ydFR5cGVbXSA9IFtcbiAgICAnTUFJTlRFTkFOQ0VfU1VNTUFSWScsXG4gICAgJ0lOU1BFQ1RJT05fQ09NUExJQU5DRScsXG4gICAgJ0VRVUlQTUVOVF9IRUFMVEgnLFxuICAgICdGQUlMVVJFX0FOQUxZU0lTJyxcbiAgICAnVEVDSE5JQ0lBTl9QRVJGT1JNQU5DRScsXG4gICAgJ0NPU1RfQU5BTFlTSVMnLFxuICAgICdSRVNFUlZPSVJfT1BFUkFUSU9OUycsXG4gICAgJ1dBVEVSX1FVQUxJVFknLFxuICAgICdSRUdVTEFUT1JZX0NPTVBMSUFOQ0UnLFxuICAgICdBTEVSVF9BTkFMWVNJUycsXG4gIF07XG4gIEBJbnB1dCgpIHJlcG9ydEZvcm1hdHM6IFJlcG9ydEZvcm1hdFtdID0gWydQREYnLCAnRVhDRUwnLCAnQ1NWJ107XG4gIEBJbnB1dCgpIHNjaGVkdWxlczogUmVwb3J0U2NoZWR1bGVbXSA9IFsnTk9ORScsICdEQUlMWScsICdXRUVLTFknLCAnTU9OVEhMWSddO1xuICBASW5wdXQoKSBkZWxpdmVyeU1ldGhvZHM6IERlbGl2ZXJ5TWV0aG9kW10gPSBbJ0RPV05MT0FEJywgJ0VNQUlMJ107XG5cbiAgLy8g4pSA4pSAIExhYmVscyDilIDilIBcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgbmFtZUxhYmVsID0gJ05hbWUnO1xuICBASW5wdXQoKSBuYW1lUGxhY2Vob2xkZXIgPSAnUmVwb3J0IGRlZmluaXRpb24gbmFtZSc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uTGFiZWwgPSAnRGVzY3JpcHRpb24nO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvblBsYWNlaG9sZGVyID0gJ09wdGlvbmFsIGRlc2NyaXB0aW9uJztcbiAgQElucHV0KCkgcmVwb3J0VHlwZUxhYmVsID0gJ1JlcG9ydCBUeXBlJztcbiAgQElucHV0KCkgcmVwb3J0Rm9ybWF0TGFiZWwgPSAnRm9ybWF0JztcbiAgQElucHV0KCkgc2NoZWR1bGVMYWJlbCA9ICdTY2hlZHVsZSc7XG4gIEBJbnB1dCgpIGRlbGl2ZXJ5TWV0aG9kTGFiZWwgPSAnRGVsaXZlcnkgTWV0aG9kJztcbiAgQElucHV0KCkgZW1haWxSZWNpcGllbnRzTGFiZWwgPSAnRW1haWwgUmVjaXBpZW50cyc7XG4gIEBJbnB1dCgpIGVtYWlsUmVjaXBpZW50c1BsYWNlaG9sZGVyID0gJ2NvbW1hLXNlcGFyYXRlZCBlbWFpbHMnO1xuICBASW5wdXQoKSBmaWx0ZXJzTGFiZWwgPSAnRmlsdGVycyAoSlNPTiknO1xuICBASW5wdXQoKSBmaWx0ZXJzUGxhY2Vob2xkZXIgPSAne1wia2V5XCI6IFwidmFsdWVcIn0nO1xuICBASW5wdXQoKSBlbmFibGVkTGFiZWwgPSAnRW5hYmxlZCc7XG4gIEBJbnB1dCgpIHNhdmVCdXR0b25MYWJlbCA9ICcnO1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25MYWJlbCA9ICdDYW5jZWwnO1xuXG4gIC8vIOKUgOKUgCBDU1Mgb3ZlcnJpZGVzIOKUgOKUgFxuICBASW5wdXQoKSBjb250YWluZXJDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBmb3JtQ2xhc3MgPSAnJztcblxuICAvLyDilIDilIAgQ3VzdG9tIHRlbXBsYXRlcyDilIDilIBcbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IGlzRWRpdDogYm9vbGVhbiB9PjtcbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7XG4gICAgaXNFZGl0OiBib29sZWFuO1xuICAgIHNhdmluZzogYm9vbGVhbjtcbiAgICBvblNhdmU6ICgpID0+IHZvaWQ7XG4gICAgb25DYW5jZWw6ICgpID0+IHZvaWQ7XG4gIH0+O1xuICBASW5wdXQoKSBmaWVsZHNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICBmb3JtOiBhbnk7XG4gICAgaXNFZGl0OiBib29sZWFuO1xuICB9PjtcblxuICAvLyDilIDilIAgRXZlbnRzIOKUgOKUgFxuICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3JlYXRlUmVwb3J0RGVmaW5pdGlvblJlcXVlc3QgfCBVcGRhdGVSZXBvcnREZWZpbml0aW9uUmVxdWVzdD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBGb3JtIG1vZGVsXG4gIGZvcm0gPSB7XG4gICAgbmFtZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIHJlcG9ydFR5cGU6ICdNQUlOVEVOQU5DRV9TVU1NQVJZJyBhcyBSZXBvcnRUeXBlLFxuICAgIHJlcG9ydEZvcm1hdDogJ1BERicgYXMgUmVwb3J0Rm9ybWF0LFxuICAgIHNjaGVkdWxlOiAnTk9ORScgYXMgUmVwb3J0U2NoZWR1bGUsXG4gICAgZGVsaXZlcnlNZXRob2Q6ICdET1dOTE9BRCcgYXMgRGVsaXZlcnlNZXRob2QsXG4gICAgZW1haWxSZWNpcGllbnRzOiAnJyxcbiAgICBmaWx0ZXJzSnNvbjogJycsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfTtcblxuICBnZXQgaXNFZGl0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGVmaW5pdGlvbjtcbiAgfVxuXG4gIGdldCBmb3JtVGl0bGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy50aXRsZSkgcmV0dXJuIHRoaXMudGl0bGU7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0ID8gJ0VkaXQgUmVwb3J0IERlZmluaXRpb24nIDogJ0NyZWF0ZSBSZXBvcnQgRGVmaW5pdGlvbic7XG4gIH1cblxuICBnZXQgc2F2ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2F2ZUJ1dHRvbkxhYmVsKSByZXR1cm4gdGhpcy5zYXZlQnV0dG9uTGFiZWw7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0ID8gJ1VwZGF0ZScgOiAnQ3JlYXRlJztcbiAgfVxuXG4gIGdldCBzaG93RW1haWxSZWNpcGllbnRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZGVsaXZlcnlNZXRob2QgPT09ICdFTUFJTCc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RlZmluaXRpb24nXSkge1xuICAgICAgdGhpcy5wb3B1bGF0ZUZvcm0oKTtcbiAgICB9XG4gIH1cblxuICBvblNhdmUoKTogdm9pZCB7XG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuZm9ybS5maWx0ZXJzSnNvbi50cmltKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZpbHRlcnMgPSBKU09OLnBhcnNlKHRoaXMuZm9ybS5maWx0ZXJzSnNvbik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgZmlsdGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0OiBDcmVhdGVSZXBvcnREZWZpbml0aW9uUmVxdWVzdCA9IHtcbiAgICAgIG5hbWU6IHRoaXMuZm9ybS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICByZXBvcnRUeXBlOiB0aGlzLmZvcm0ucmVwb3J0VHlwZSxcbiAgICAgIHJlcG9ydEZvcm1hdDogdGhpcy5mb3JtLnJlcG9ydEZvcm1hdCxcbiAgICAgIHNjaGVkdWxlOiB0aGlzLmZvcm0uc2NoZWR1bGUsXG4gICAgICBkZWxpdmVyeU1ldGhvZDogdGhpcy5mb3JtLmRlbGl2ZXJ5TWV0aG9kLFxuICAgICAgZW1haWxSZWNpcGllbnRzOiB0aGlzLmZvcm0uZW1haWxSZWNpcGllbnRzIHx8IHVuZGVmaW5lZCxcbiAgICAgIGZpbHRlcnMsXG4gICAgICBlbmFibGVkOiB0aGlzLmZvcm0uZW5hYmxlZCxcbiAgICB9O1xuXG4gICAgdGhpcy5zYXZlLmVtaXQocmVxdWVzdCk7XG4gIH1cblxuICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlRm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZWZpbml0aW9uKSB7XG4gICAgICB0aGlzLmZvcm0gPSB7XG4gICAgICAgIG5hbWU6IHRoaXMuZGVmaW5pdGlvbi5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZWZpbml0aW9uLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICByZXBvcnRUeXBlOiB0aGlzLmRlZmluaXRpb24ucmVwb3J0VHlwZSxcbiAgICAgICAgcmVwb3J0Rm9ybWF0OiB0aGlzLmRlZmluaXRpb24ucmVwb3J0Rm9ybWF0LFxuICAgICAgICBzY2hlZHVsZTogdGhpcy5kZWZpbml0aW9uLnNjaGVkdWxlLFxuICAgICAgICBkZWxpdmVyeU1ldGhvZDogdGhpcy5kZWZpbml0aW9uLmRlbGl2ZXJ5TWV0aG9kLFxuICAgICAgICBlbWFpbFJlY2lwaWVudHM6IHRoaXMuZGVmaW5pdGlvbi5lbWFpbFJlY2lwaWVudHMgPz8gJycsXG4gICAgICAgIGZpbHRlcnNKc29uOiB0aGlzLmRlZmluaXRpb24uZmlsdGVycyA/IEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmaW5pdGlvbi5maWx0ZXJzLCBudWxsLCAyKSA6ICcnLFxuICAgICAgICBlbmFibGVkOiB0aGlzLmRlZmluaXRpb24uZW5hYmxlZCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybSA9IHtcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgcmVwb3J0VHlwZTogdGhpcy5yZXBvcnRUeXBlc1swXSA/PyAnTUFJTlRFTkFOQ0VfU1VNTUFSWScsXG4gICAgICAgIHJlcG9ydEZvcm1hdDogdGhpcy5yZXBvcnRGb3JtYXRzWzBdID8/ICdQREYnLFxuICAgICAgICBzY2hlZHVsZTogJ05PTkUnLFxuICAgICAgICBkZWxpdmVyeU1ldGhvZDogJ0RPV05MT0FEJyxcbiAgICAgICAgZW1haWxSZWNpcGllbnRzOiAnJyxcbiAgICAgICAgZmlsdGVyc0pzb246ICcnLFxuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0Z20tZGVmLWZvcm1cIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRIZWFkZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgaXNFZGl0OiBpc0VkaXQgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGVhZGVyPlxuICAgIDxoMyBjbGFzcz1cInRnbS1kZWYtZm9ybV9fdGl0bGVcIj57eyBmb3JtVGl0bGUgfX08L2gzPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gQ3VzdG9tIGZpZWxkcyB0ZW1wbGF0ZSAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkc1RlbXBsYXRlOyBlbHNlIGRlZmF1bHRGaWVsZHNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRzVGVtcGxhdGU7IGNvbnRleHQ6IHsgZm9ybTogZm9ybSwgaXNFZGl0OiBpc0VkaXQgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIERlZmF1bHQgZmllbGRzIC0tPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaWVsZHM+XG4gICAgPGRpdiBjbGFzcz1cInRnbS1mb3JtXCIgW25nQ2xhc3NdPVwiZm9ybUNsYXNzXCI+XG4gICAgICA8IS0tIE5hbWUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGdtLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLWZvcm0tbGFiZWxcIj57eyBuYW1lTGFiZWwgfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0Z20taW5wdXRcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZm9ybS5uYW1lXCIgW3BsYWNlaG9sZGVyXT1cIm5hbWVQbGFjZWhvbGRlclwiIG5hbWU9XCJuYW1lXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIERlc2NyaXB0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRnbS1mb3JtLWxhYmVsXCI+e3sgZGVzY3JpcHRpb25MYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInRnbS1pbnB1dCB0Z20tdGV4dGFyZWFcIiBbKG5nTW9kZWwpXT1cImZvcm0uZGVzY3JpcHRpb25cIiBbcGxhY2Vob2xkZXJdPVwiZGVzY3JpcHRpb25QbGFjZWhvbGRlclwiIG5hbWU9XCJkZXNjcmlwdGlvblwiIHJvd3M9XCIyXCI+PC90ZXh0YXJlYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFJlcG9ydCBUeXBlICYgRm9ybWF0IChzaWRlIGJ5IHNpZGUpIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS1mb3JtLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLWZvcm0tZ3JvdXAgdGdtLWZvcm0tZ3JvdXAtLWZsZXhcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0Z20tZm9ybS1sYWJlbFwiPnt7IHJlcG9ydFR5cGVMYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInRnbS1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZvcm0ucmVwb3J0VHlwZVwiIG5hbWU9XCJyZXBvcnRUeXBlXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0IG9mIHJlcG9ydFR5cGVzXCIgW3ZhbHVlXT1cInRcIj57eyB0IH19PC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLWZvcm0tZ3JvdXAgdGdtLWZvcm0tZ3JvdXAtLWZsZXhcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0Z20tZm9ybS1sYWJlbFwiPnt7IHJlcG9ydEZvcm1hdExhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwidGdtLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZm9ybS5yZXBvcnRGb3JtYXRcIiBuYW1lPVwicmVwb3J0Rm9ybWF0XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmIG9mIHJlcG9ydEZvcm1hdHNcIiBbdmFsdWVdPVwiZlwiPnt7IGYgfX08L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTY2hlZHVsZSAmIERlbGl2ZXJ5IE1ldGhvZCAoc2lkZSBieSBzaWRlKSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZm9ybS1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRnbS1mb3JtLWdyb3VwIHRnbS1mb3JtLWdyb3VwLS1mbGV4XCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLWZvcm0tbGFiZWxcIj57eyBzY2hlZHVsZUxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwidGdtLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZm9ybS5zY2hlZHVsZVwiIG5hbWU9XCJzY2hlZHVsZVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcyBvZiBzY2hlZHVsZXNcIiBbdmFsdWVdPVwic1wiPnt7IHMgfX08L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZm9ybS1ncm91cCB0Z20tZm9ybS1ncm91cC0tZmxleFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRnbS1mb3JtLWxhYmVsXCI+e3sgZGVsaXZlcnlNZXRob2RMYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRnbS1yYWRpby1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLXJhZGlvXCIgKm5nRm9yPVwibGV0IGRtIG9mIGRlbGl2ZXJ5TWV0aG9kc1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImRtXCIgWyhuZ01vZGVsKV09XCJmb3JtLmRlbGl2ZXJ5TWV0aG9kXCIgbmFtZT1cImRlbGl2ZXJ5TWV0aG9kXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tcmFkaW9fX2xhYmVsXCI+e3sgZG0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEVtYWlsIFJlY2lwaWVudHMgKGNvbmRpdGlvbmFsKSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZm9ybS1ncm91cFwiICpuZ0lmPVwic2hvd0VtYWlsUmVjaXBpZW50c1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0Z20tZm9ybS1sYWJlbFwiPnt7IGVtYWlsUmVjaXBpZW50c0xhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGdtLWlucHV0XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImZvcm0uZW1haWxSZWNpcGllbnRzXCIgW3BsYWNlaG9sZGVyXT1cImVtYWlsUmVjaXBpZW50c1BsYWNlaG9sZGVyXCIgbmFtZT1cImVtYWlsUmVjaXBpZW50c1wiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGaWx0ZXJzIEpTT04gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGdtLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLWZvcm0tbGFiZWxcIj57eyBmaWx0ZXJzTGFiZWwgfX08L2xhYmVsPlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJ0Z20taW5wdXQgdGdtLXRleHRhcmVhIHRnbS10ZXh0YXJlYS0tY29kZVwiIFsobmdNb2RlbCldPVwiZm9ybS5maWx0ZXJzSnNvblwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXJzUGxhY2Vob2xkZXJcIiBuYW1lPVwiZmlsdGVyc0pzb25cIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBFbmFibGVkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS1mb3JtLWdyb3VwIHRnbS1mb3JtLWdyb3VwLS1pbmxpbmVcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLWZvcm0tbGFiZWxcIj57eyBlbmFibGVkTGFiZWwgfX08L2xhYmVsPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGdtLXRvZ2dsZVwiIFtjbGFzcy50Z20tdG9nZ2xlLS1hY3RpdmVdPVwiZm9ybS5lbmFibGVkXCIgKGNsaWNrKT1cImZvcm0uZW5hYmxlZCA9ICFmb3JtLmVuYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tdG9nZ2xlX190cmFja1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tdG9nZ2xlX190aHVtYlwiPjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBGb290ZXIgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Rm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7XG4gICAgICBpc0VkaXQ6IGlzRWRpdCxcbiAgICAgIHNhdmluZzogc2F2aW5nLFxuICAgICAgb25TYXZlOiBvblNhdmUuYmluZCh0aGlzKSxcbiAgICAgIG9uQ2FuY2VsOiBvbkNhbmNlbC5iaW5kKHRoaXMpXG4gICAgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rm9vdGVyPlxuICAgIDxkaXYgY2xhc3M9XCJ0Z20tZGVmLWZvcm1fX2Zvb3RlclwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRnbS1idG4gdGdtLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cInNhdmluZ1wiPlxuICAgICAgICB7eyBjYW5jZWxCdXR0b25MYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidGdtLWJ0biB0Z20tYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJzYXZpbmcgfHwgIWZvcm0ubmFtZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRnbS1zcGlubmVyIHRnbS1zcGlubmVyLS1zbVwiICpuZ0lmPVwic2F2aW5nXCI+PC9zcGFuPlxuICAgICAgICB7eyBzYXZlTGFiZWwgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|