From 5727116aa006466d88ff777560ff2761b3320ac1 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Wed, 5 Jun 2024 09:09:01 -0400 Subject: [PATCH] NIFI-13313: Remove old UI (#8906) * NIFI-13313: - Use nifi-web-frontend as the default UI hosted at /nifi no longer deploying nifi-web-ui. * NIFI-13313: - Adding logout complete page. - Updating backend to redirect to new logout complete page. * NIFI-13313: - Remove nifi-web-ui module. * NIFI-13313: - Updating LICENSE and NOTICE files for dependencies that are no longer included. * NIFI-13313: - Updating README. - Updating proxy config to mirror actual context path. * NIFI-13313: - Establishing rewrite rules for redirecting logout complete. - Setting the default handler for when a request isn't handled to redirect the user to /nifi. * NIFI-13313: - Removing nifi-web-error module. * NIFI-13313: - Restoring /nifi/logout-complete path. * NIFI-13313: - Adding an error handler for the ui which handles redirects to a 404 page. This closes #8906 --- .github/PULL_REQUEST_TEMPLATE.md | 4 - LICENSE | 22 - .../src/main/resources/META-INF/LICENSE | 589 --- .../src/main/resources/META-INF/NOTICE | 9 - nifi-assembly/LICENSE | 294 -- nifi-code-coverage/pom.xml | 6 - nifi-commons/nifi-jetty-configuration/pom.xml | 4 + .../src/main/resources/META-INF/LICENSE | 21 + .../src/main/resources/META-INF/LICENSE | 22 + .../src/main/resources/META-INF/LICENSE | 109 +- .../src/main/resources/META-INF/LICENSE | 22 + .../src/main/resources/META-INF/LICENSE | 594 +-- .../src/main/resources/META-INF/NOTICE | 10 - .../apache/nifi/web/server/JettyServer.java | 46 +- .../nifi-web/nifi-web-error/pom.xml | 34 - .../nifi/web/filter/CatchAllFilter.java | 63 - .../src/main/webapp/WEB-INF/web.xml | 37 - .../nifi-web-error/src/main/webapp/index.jsp | 46 - .../nifi/web/filter/CatchAllFilterTest.java | 106 - .../nifi-web-frontend/src/main/nifi/README.md | 9 +- .../src/main/nifi/apps/nifi/project.json | 6 +- .../src/main/nifi/apps/nifi/proxy.config.mjs | 2 +- .../apps/nifi/src/app/app-routing.module.ts | 10 + .../feature/_logout.component-theme.scss | 37 + .../logout/feature/logout-routing.module.ts} | 27 +- .../logout/feature/logout.component.html | 22 + .../logout/feature/logout.component.scss} | 4 - .../logout/feature/logout.component.spec.ts | 43 + .../pages/logout/feature/logout.component.ts} | 16 +- .../pages/logout/feature/logout.module.ts} | 27 +- .../src/main/nifi/apps/nifi/src/styles.scss | 3 + .../nifi-web/nifi-web-ui/pom.xml | 937 ---- .../src/main/frontend/package-lock.json | 761 ---- .../src/main/frontend/package.json | 65 - .../apache/nifi/web/filter/LoginFilter.java | 77 - .../apache/nifi/web/filter/LogoutFilter.java | 86 - .../src/main/resources/META-INF/LICENSE | 798 ---- .../src/main/resources/META-INF/NOTICE | 11 - .../filters/bulletin-board-min.properties | 19 - .../filters/bulletin-board.properties | 33 - .../resources/filters/canvas-min.properties | 19 - .../main/resources/filters/canvas.properties | 99 - .../resources/filters/cluster-min.properties | 19 - .../main/resources/filters/cluster.properties | 30 - .../resources/filters/counters-min.properties | 19 - .../resources/filters/counters.properties | 30 - .../resources/filters/history-min.properties | 19 - .../main/resources/filters/history.properties | 32 - .../resources/filters/login-min.properties | 19 - .../main/resources/filters/login.properties | 29 - .../resources/filters/logout-min.properties | 19 - .../main/resources/filters/logout.properties | 29 - .../filters/provenance-min.properties | 19 - .../resources/filters/provenance.properties | 34 - .../resources/filters/summary-min.properties | 19 - .../main/resources/filters/summary.properties | 47 - .../resources/filters/users-min.properties | 19 - .../main/resources/filters/users.properties | 31 - .../webapp/WEB-INF/pages/bulletin-board.jsp | 62 - .../src/main/webapp/WEB-INF/pages/canvas.jsp | 173 - .../src/main/webapp/WEB-INF/pages/cluster.jsp | 68 - .../main/webapp/WEB-INF/pages/counters.jsp | 66 - .../src/main/webapp/WEB-INF/pages/history.jsp | 69 - .../src/main/webapp/WEB-INF/pages/login.jsp | 66 - .../src/main/webapp/WEB-INF/pages/logout.jsp | 57 - .../webapp/WEB-INF/pages/message-page.jsp | 62 - .../main/webapp/WEB-INF/pages/provenance.jsp | 81 - .../src/main/webapp/WEB-INF/pages/summary.jsp | 98 - .../src/main/webapp/WEB-INF/pages/users.jsp | 75 - .../webapp/WEB-INF/partials/banners-main.jsp | 19 - .../WEB-INF/partials/banners-utility.jsp | 19 - .../bulletin-board/bulletin-board-content.jsp | 43 - .../WEB-INF/partials/canvas/about-dialog.jsp | 44 - .../WEB-INF/partials/canvas/canvas-header.jsp | 193 - .../canvas/component-state-dialog.jsp | 49 - .../canvas/component-version-dialog.jsp | 63 - .../canvas/connection-configuration.jsp | 221 - .../partials/canvas/connections-dialog.jsp | 35 - .../controller-service-configuration.jsp | 102 - .../disable-controller-service-dialog.jsp | 76 - .../canvas/drop-request-status-dialog.jsp | 29 - .../enable-controller-service-dialog.jsp | 75 - .../canvas/fetch-parameters-dialog.jsp | 204 - .../partials/canvas/fill-color-dialog.jsp | 45 - .../partials/canvas/flow-analysis-drawer.jsp | 84 - .../flow-analysis-rule-configuration.jsp | 86 - .../WEB-INF/partials/canvas/flow-status.jsp | 78 - .../canvas/flowfile-details-dialog.jsp | 118 - .../canvas/import-flow-version-dialog.jsp | 73 - .../partials/canvas/label-configuration.jsp | 33 - .../canvas/listing-request-status-dialog.jsp | 29 - .../WEB-INF/partials/canvas/navigation.jsp | 174 - .../canvas/new-controller-service-dialog.jsp | 61 - .../canvas/new-flow-analysis-rule-dialog.jsp | 61 - .../canvas/new-parameter-context-dialog.jsp | 215 - .../canvas/new-parameter-provider-dialog.jsp | 61 - .../partials/canvas/new-port-dialog.jsp | 36 - .../canvas/new-process-group-dialog.jsp | 55 - .../partials/canvas/new-processor-dialog.jsp | 61 - .../canvas/new-registry-client-dialog.jsp | 40 - .../new-remote-process-group-dialog.jsp | 113 - .../canvas/new-reporting-task-dialog.jsp | 61 - .../canvas/override-policy-dialog.jsp | 26 - .../canvas/parameter-contexts-content.jsp | 32 - .../parameter-provider-configuration.jsp | 82 - .../partials/canvas/policy-management.jsp | 107 - .../partials/canvas/port-configuration.jsp | 65 - .../WEB-INF/partials/canvas/port-details.jsp | 55 - .../canvas/process-group-configuration.jsp | 181 - .../canvas/processor-configuration.jsp | 251 - .../WEB-INF/partials/canvas/queue-listing.jsp | 37 - .../referenced-attributes-configuration.jsp | 47 - .../canvas/registry-configuration-dialog.jsp | 59 - .../canvas/remote-port-configuration.jsp | 76 - .../remote-process-group-configuration.jsp | 123 - .../canvas/remote-process-group-details.jsp | 123 - .../canvas/remote-process-group-ports.jsp | 47 - .../canvas/reporting-task-configuration.jsp | 103 - .../canvas/revert-local-changes-dialog.jsp | 34 - .../canvas/save-flow-version-dialog.jsp | 57 - .../partials/canvas/search-users-dialog.jsp | 37 - .../partials/canvas/settings-content.jsp | 74 - .../webapp/WEB-INF/partials/canvas/shell.jsp | 31 - .../canvas/show-local-changes-dialog.jsp | 33 - .../verification-request-status-dialog.jsp | 29 - .../canvas/violation-description-dialog.jsp | 28 - .../partials/cluster/cluster-content.jsp | 62 - .../partials/cluster/node-details-dialog.jsp | 42 - .../WEB-INF/partials/connection-details.jsp | 163 - .../partials/counters/counters-content.jsp | 39 - .../history/action-details-dialog.jsp | 27 - .../partials/history/history-content.jsp | 42 - .../history/history-filter-dialog.jsp | 73 - .../partials/history/history-purge-dialog.jsp | 42 - .../WEB-INF/partials/login/login-form.jsp | 32 - .../WEB-INF/partials/login/login-message.jsp | 21 - .../WEB-INF/partials/login/login-progress.jsp | 22 - .../partials/login/login-submission.jsp | 20 - .../partials/logout/logout-message.jsp | 21 - .../webapp/WEB-INF/partials/message-pane.jsp | 33 - .../webapp/WEB-INF/partials/ok-dialog.jsp | 22 - .../WEB-INF/partials/processor-details.jsp | 205 - .../provenance/lineage-query-dialog.jsp | 26 - .../provenance/provenance-content.jsp | 75 - .../provenance-event-details-dialog.jsp | 196 - .../provenance/provenance-query-dialog.jsp | 26 - .../provenance/provenance-search-dialog.jsp | 100 - .../partials/status-history-dialog.jsp | 35 - .../cluster-connection-summary-dialog.jsp | 38 - .../cluster-input-port-summary-dialog.jsp | 38 - .../cluster-output-port-summary-dialog.jsp | 38 - .../cluster-process-group-summary-dialog.jsp | 37 - .../cluster-processor-summary-dialog.jsp | 38 - ...er-remote-process-group-summary-dialog.jsp | 38 - .../partials/summary/summary-content.jsp | 71 - .../summary/system-diagnostics-dialog.jsp | 226 - .../summary/view-single-node-dialog.jsp | 24 - .../partials/users/user-delete-dialog.jsp | 21 - .../WEB-INF/partials/users/user-dialog.jsp | 48 - .../partials/users/user-policies-dialog.jsp | 29 - .../WEB-INF/partials/users/users-content.jsp | 41 - .../webapp/WEB-INF/partials/yes-no-dialog.jsp | 22 - .../src/main/webapp/WEB-INF/web.xml | 171 - .../nifi-web-ui/src/main/webapp/css/about.css | 71 - .../src/main/webapp/css/banner.css | 72 - .../src/main/webapp/css/bulletin-board.css | 159 - .../src/main/webapp/css/canvas.css | 56 - .../src/main/webapp/css/cluster.css | 99 - .../src/main/webapp/css/common-ui.css | 734 --- .../src/main/webapp/css/component-state.css | 76 - .../webapp/css/connection-configuration.css | 132 - .../main/webapp/css/connection-details.css | 55 - .../main/webapp/css/controller-service.css | 256 -- .../src/main/webapp/css/counters.css | 79 - .../src/main/webapp/css/dialog.css | 448 -- .../main/webapp/css/flow-analysis-drawer.css | 463 -- .../src/main/webapp/css/flow-status.css | 184 - .../nifi-web-ui/src/main/webapp/css/graph.css | 557 --- .../src/main/webapp/css/header.css | 207 - .../src/main/webapp/css/history.css | 162 - .../main/webapp/css/label-configuration.css | 41 - .../nifi-web-ui/src/main/webapp/css/login.css | 93 - .../src/main/webapp/css/logout.css | 55 - .../nifi-web-ui/src/main/webapp/css/main.css | 361 -- .../src/main/webapp/css/message-pane.css | 47 - .../src/main/webapp/css/navigation.css | 317 -- .../css/new-controller-service-dialog.css | 101 - .../css/new-flow-analysis-rule-dialog.css | 105 - .../css/new-parameter-context-dialog.css | 221 - .../css/new-parameter-provider-dialog.css | 105 - .../main/webapp/css/new-processor-dialog.css | 107 - .../webapp/css/new-reporting-task-dialog.css | 105 - .../main/webapp/css/parameter-contexts.css | 92 - .../main/webapp/css/parameter-provider.css | 436 -- .../src/main/webapp/css/policy-management.css | 293 -- .../main/webapp/css/port-configuration.css | 60 - .../src/main/webapp/css/port-details.css | 26 - .../css/process-group-configuration.css | 148 - .../webapp/css/processor-configuration.css | 213 - .../src/main/webapp/css/processor-details.css | 117 - .../src/main/webapp/css/provenance.css | 548 --- .../src/main/webapp/css/queue-listing.css | 186 - .../remote-process-group-configuration.css | 193 - .../src/main/webapp/css/reporting-task.css | 85 - .../src/main/webapp/css/settings.css | 127 - .../nifi-web-ui/src/main/webapp/css/shell.css | 67 - .../src/main/webapp/css/slick-nifi-theme.css | 153 - .../src/main/webapp/css/status-history.css | 174 - .../src/main/webapp/css/summary.css | 922 ---- .../nifi-web-ui/src/main/webapp/css/users.css | 162 - .../src/main/webapp/fonts/Roboto/LICENSE.txt | 202 - .../main/webapp/fonts/Roboto/Roboto-Bold.ttf | Bin 162464 -> 0 bytes .../webapp/fonts/Roboto/Roboto-Italic.ttf | Bin 161484 -> 0 bytes .../main/webapp/fonts/Roboto/Roboto-Light.ttf | Bin 162420 -> 0 bytes .../fonts/Roboto/Roboto-LightItalic.ttf | Bin 166492 -> 0 bytes .../webapp/fonts/Roboto/Roboto-Medium.ttf | Bin 162588 -> 0 bytes .../webapp/fonts/Roboto/Roboto-Regular.ttf | Bin 162876 -> 0 bytes .../main/webapp/fonts/Roboto_Slab/LICENSE.txt | 202 - .../fonts/Roboto_Slab/RobotoSlab-Bold.ttf | Bin 170616 -> 0 bytes .../fonts/Roboto_Slab/RobotoSlab-Regular.ttf | Bin 169064 -> 0 bytes .../main/webapp/fonts/flowfont/flowfont.css | 87 - .../main/webapp/fonts/flowfont/flowfont.eot | Bin 25276 -> 0 bytes .../main/webapp/fonts/flowfont/flowfont.svg | 72 - .../main/webapp/fonts/flowfont/flowfont.ttf | Bin 25108 -> 0 bytes .../main/webapp/fonts/flowfont/flowfont.woff | Bin 13660 -> 0 bytes .../main/webapp/fonts/flowfont/flowfont.woff2 | Bin 11600 -> 0 bytes .../src/main/webapp/images/bg-error.png | Bin 2799 -> 0 bytes .../src/main/webapp/images/iconInfo.png | Bin 414 -> 0 bytes .../src/main/webapp/images/iconLoading.gif | Bin 2438 -> 0 bytes .../src/main/webapp/images/iconResize.png | Bin 117 -> 0 bytes .../src/main/webapp/images/inputCheckbox.png | Bin 224 -> 0 bytes .../main/webapp/images/nifi-drop-splash.svg | 17 - .../src/main/webapp/images/nifi-drop.svg | 17 - .../main/webapp/images/nifi-logo-about.svg | 17 - .../src/main/webapp/images/nifi-logo.svg | 17 - .../src/main/webapp/images/nifi16.ico | Bin 1150 -> 0 bytes .../src/main/webapp/images/sort-asc.gif | Bin 59 -> 0 bytes .../src/main/webapp/images/sort-desc.gif | Bin 59 -> 0 bytes .../src/main/webapp/images/spacer.png | Bin 105 -> 0 bytes .../src/main/webapp/js/codemirror/LICENSE | 19 - .../js/codemirror/addon/fold/foldgutter.css | 20 - .../js/codemirror/addon/hint/show-hint.css | 38 - .../js/codemirror/addon/lint/json-lint.js | 31 - .../webapp/js/codemirror/addon/lint/lint.css | 73 - .../webapp/js/codemirror/addon/lint/lint.js | 239 - .../codemirror/lib/codemirror-compressed.js | 26 - .../webapp/js/codemirror/lib/codemirror.css | 318 -- .../webapp/js/jquery/combo/jquery.combo.css | 118 - .../webapp/js/jquery/combo/jquery.combo.js | 369 -- .../main/webapp/js/jquery/combo/menuArrow.png | Bin 251 -> 0 bytes .../webapp/js/jquery/combo/menuArrowSmall.png | Bin 233 -> 0 bytes .../main/webapp/js/jquery/jquery.base64.js | 123 - .../main/webapp/js/jquery/jquery.center.js | 35 - .../src/main/webapp/js/jquery/jquery.count.js | 99 - .../src/main/webapp/js/jquery/jquery.each.js | 31 - .../main/webapp/js/jquery/jquery.ellipsis.js | 165 - .../src/main/webapp/js/jquery/jquery.tab.js | 69 - .../webapp/js/jquery/modal/jquery.modal.css | 111 - .../webapp/js/jquery/modal/jquery.modal.js | 588 --- .../js/jquery/nfeditor/jquery.nfeditor.css | 80 - .../js/jquery/nfeditor/jquery.nfeditor.js | 355 -- .../js/jquery/nfeditor/languages/nfeditor.css | 131 - .../js/jquery/nfeditor/languages/nfel.js | 1086 ----- .../js/jquery/nfeditor/languages/nfpr.js | 528 --- .../propertytable/buttonNewProperty.png | Bin 573 -> 0 bytes .../propertytable/jquery.propertytable.css | 114 - .../propertytable/jquery.propertytable.js | 2534 ----------- .../js/jquery/statusbar/jquery.statusbar.css | 148 - .../js/jquery/statusbar/jquery.statusbar.js | 332 -- .../webapp/js/jquery/tabbs/jquery.tabbs.css | 103 - .../webapp/js/jquery/tabbs/jquery.tabbs.js | 107 - .../js/jquery/tagcloud/jquery.tagcloud.css | 60 - .../js/jquery/tagcloud/jquery.tagcloud.js | 205 - .../js/nf/bulletin-board/nf-bulletin-board.js | 494 -- .../nf-ng-breadcrumbs-controller.js | 255 -- .../nf-ng-canvas-flow-status-controller.js | 1263 ----- .../nf-ng-canvas-global-menu-controller.js | 464 -- .../nf-ng-canvas-graph-controls-controller.js | 351 -- .../nf-ng-canvas-header-controller.js | 160 - .../nf-ng-canvas-navigate-controller.js | 103 - .../nf-ng-canvas-operate-controller.js | 297 -- .../nf-ng-canvas-toolbox-controller.js | 167 - .../directives/nf-ng-breadcrumbs-directive.js | 53 - .../directives/nf-ng-draggable-directive.js | 43 - .../components/nf-ng-funnel-component.js | 155 - .../components/nf-ng-group-component.js | 613 --- .../components/nf-ng-input-port-component.js | 303 -- .../components/nf-ng-label-component.js | 160 - .../components/nf-ng-output-port-component.js | 294 -- .../components/nf-ng-processor-component.js | 847 ---- .../nf-ng-registry-import-component.js | 105 - .../nf-ng-remote-process-group-component.js | 307 -- .../webapp/js/nf/canvas/helpers/d3-helpers.js | 43 - .../main/webapp/js/nf/canvas/nf-actions.js | 2268 --------- .../main/webapp/js/nf/canvas/nf-birdseye.js | 360 -- .../js/nf/canvas/nf-canvas-bootstrap.js | 448 -- .../js/nf/canvas/nf-canvas-error-handler.js | 93 - .../webapp/js/nf/canvas/nf-canvas-utils.js | 2270 --------- .../src/main/webapp/js/nf/canvas/nf-canvas.js | 1477 ------ .../main/webapp/js/nf/canvas/nf-clipboard.js | 115 - .../webapp/js/nf/canvas/nf-component-state.js | 435 -- .../js/nf/canvas/nf-component-version.js | 373 -- .../webapp/js/nf/canvas/nf-connectable.js | 311 -- .../nf/canvas/nf-connection-configuration.js | 1700 ------- .../main/webapp/js/nf/canvas/nf-connection.js | 2640 ----------- .../webapp/js/nf/canvas/nf-context-menu.js | 1088 ----- .../js/nf/canvas/nf-controller-service.js | 2677 ----------- .../js/nf/canvas/nf-controller-services.js | 1477 ------ .../main/webapp/js/nf/canvas/nf-custom-ui.js | 79 - .../main/webapp/js/nf/canvas/nf-draggable.js | 415 -- .../js/nf/canvas/nf-flow-analysis-rule.js | 790 ---- .../webapp/js/nf/canvas/nf-flow-version.js | 2047 --------- .../src/main/webapp/js/nf/canvas/nf-funnel.js | 442 -- .../src/main/webapp/js/nf/canvas/nf-go-to.js | 875 ---- .../src/main/webapp/js/nf/canvas/nf-graph.js | 429 -- .../js/nf/canvas/nf-label-configuration.js | 207 - .../src/main/webapp/js/nf/canvas/nf-label.js | 671 --- .../js/nf/canvas/nf-ng-canvas-namespace.js | 19 - .../js/nf/canvas/nf-parameter-contexts.js | 3327 -------------- .../js/nf/canvas/nf-parameter-provider.js | 3398 -------------- .../js/nf/canvas/nf-policy-management.js | 1787 -------- .../js/nf/canvas/nf-port-configuration.js | 213 - .../webapp/js/nf/canvas/nf-port-details.js | 89 - .../src/main/webapp/js/nf/canvas/nf-port.js | 904 ---- .../canvas/nf-process-group-configuration.js | 698 --- .../webapp/js/nf/canvas/nf-process-group.js | 1769 ------- .../nf/canvas/nf-processor-configuration.js | 1090 ----- .../main/webapp/js/nf/canvas/nf-processor.js | 1309 ------ .../webapp/js/nf/canvas/nf-queue-listing.js | 779 ---- .../webapp/js/nf/canvas/nf-quick-select.js | 82 - .../nf-remote-process-group-configuration.js | 195 - .../canvas/nf-remote-process-group-details.js | 106 - .../canvas/nf-remote-process-group-ports.js | 697 --- .../js/nf/canvas/nf-remote-process-group.js | 1138 ----- .../webapp/js/nf/canvas/nf-reporting-task.js | 864 ---- .../main/webapp/js/nf/canvas/nf-selectable.js | 91 - .../main/webapp/js/nf/canvas/nf-settings.js | 4047 ----------------- .../main/webapp/js/nf/canvas/nf-snippet.js | 183 - .../src/main/webapp/js/nf/canvas/nf-verify.js | 866 ---- .../webapp/js/nf/cluster/nf-cluster-table.js | 1691 ------- .../main/webapp/js/nf/cluster/nf-cluster.js | 227 - .../js/nf/counters/nf-counters-table.js | 348 -- .../main/webapp/js/nf/counters/nf-counters.js | 227 - .../webapp/js/nf/history/nf-history-model.js | 239 - .../webapp/js/nf/history/nf-history-table.js | 560 --- .../main/webapp/js/nf/history/nf-history.js | 236 - .../src/main/webapp/js/nf/login/nf-login.js | 244 - .../src/main/webapp/js/nf/logout/nf-logout.js | 57 - .../src/main/webapp/js/nf/nf-ajax-setup.js | 49 - .../webapp/js/nf/nf-authorization-storage.js | 86 - .../src/main/webapp/js/nf/nf-client.js | 87 - .../main/webapp/js/nf/nf-cluster-summary.js | 110 - .../src/main/webapp/js/nf/nf-common.js | 1940 -------- .../webapp/js/nf/nf-connection-details.js | 570 --- .../src/main/webapp/js/nf/nf-dialog.js | 188 - .../src/main/webapp/js/nf/nf-error-handler.js | 193 - .../webapp/js/nf/nf-filtered-dialog-common.js | 105 - .../src/main/webapp/js/nf/nf-ng-app-config.js | 109 - .../main/webapp/js/nf/nf-ng-app-controller.js | 74 - .../src/main/webapp/js/nf/nf-ng-bridge.js | 98 - .../src/main/webapp/js/nf/nf-ng-namespace.js | 19 - .../webapp/js/nf/nf-ng-service-provider.js | 62 - .../main/webapp/js/nf/nf-processor-details.js | 452 -- .../src/main/webapp/js/nf/nf-shell.js | 214 - .../main/webapp/js/nf/nf-status-history.js | 1221 ----- .../src/main/webapp/js/nf/nf-storage.js | 209 - .../main/webapp/js/nf/nf-universal-capture.js | 146 - .../js/nf/provenance/nf-provenance-lineage.js | 1433 ------ .../js/nf/provenance/nf-provenance-table.js | 1500 ------ .../webapp/js/nf/provenance/nf-provenance.js | 370 -- .../webapp/js/nf/summary/nf-cluster-search.js | 248 - .../webapp/js/nf/summary/nf-summary-table.js | 3553 --------------- .../main/webapp/js/nf/summary/nf-summary.js | 305 -- .../main/webapp/js/nf/users/nf-users-table.js | 1413 ------ .../src/main/webapp/js/nf/users/nf-users.js | 257 -- .../nf-ng-breadcrumbs-directive-view.html | 35 - .../nifi-framework/nifi-web/pom.xml | 2 - nifi-framework-bundle/nifi-jetty-nar/pom.xml | 5 + nifi-framework-bundle/nifi-server-nar/pom.xml | 12 - .../src/main/resources/META-INF/LICENSE | 561 +-- .../src/main/resources/META-INF/NOTICE | 3 +- 381 files changed, 312 insertions(+), 104354 deletions(-) delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/java/org/apache/nifi/web/filter/CatchAllFilter.java delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/WEB-INF/web.xml delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/index.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/test/java/org/apache/nifi/web/filter/CatchAllFilterTest.java create mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/_logout.component-theme.scss rename nifi-framework-bundle/nifi-framework/nifi-web/{nifi-web-ui/src/main/webapp/css/new-process-group-dialog.css => nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout-routing.module.ts} (71%) create mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.html rename nifi-framework-bundle/nifi-framework/nifi-web/{nifi-web-ui/src/main/webapp/js/nf/nf-namespace.js => nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.scss} (93%) create mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.spec.ts rename nifi-framework-bundle/nifi-framework/nifi-web/{nifi-web-ui/src/main/webapp/css/new-port-dialog.css => nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.ts} (80%) rename nifi-framework-bundle/nifi-framework/nifi-web/{nifi-web-ui/src/main/webapp/css/message-page.css => nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.module.ts} (63%) delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LoginFilter.java delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LogoutFilter.java delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/NOTICE delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users-min.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/logout.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/message-page.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-main.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-utility.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/bulletin-board/bulletin-board-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-version-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connection-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connections-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/controller-service-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/disable-controller-service-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/drop-request-status-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/enable-controller-service-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fetch-parameters-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fill-color-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-drawer.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-rule-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flowfile-details-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/label-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/listing-request-status-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-controller-service-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-flow-analysis-rule-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-provider-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-port-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-process-group-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-registry-client-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-remote-process-group-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-reporting-task-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/override-policy-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-contexts-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-provider-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/policy-management.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-details.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/process-group-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/processor-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/queue-listing.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/referenced-attributes-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registry-configuration-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-port-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-details.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-ports.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/reporting-task-configuration.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/revert-local-changes-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/save-flow-version-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/search-users-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/shell.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/show-local-changes-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/verification-request-status-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/violation-description-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/cluster-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/node-details-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/connection-details.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/counters/counters-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/action-details-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-filter-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-purge-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-form.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-message.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-progress.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-submission.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/logout/logout-message.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/message-pane.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/ok-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/processor-details.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/lineage-query-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-event-details-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-query-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-search-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/status-history-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-connection-summary-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-input-port-summary-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-output-port-summary-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-process-group-summary-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-processor-summary-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-remote-process-group-summary-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/summary-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/system-diagnostics-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/view-single-node-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-delete-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-policies-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/users-content.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/yes-no-dialog.jsp delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/web.xml delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/about.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/banner.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/bulletin-board.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/cluster.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/common-ui.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-configuration.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-details.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/controller-service.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/counters.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-analysis-drawer.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-status.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/graph.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/history.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/label-configuration.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/login.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/logout.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-pane.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-controller-service-dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-flow-analysis-rule-dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-provider-dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-reporting-task-dialog.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-contexts.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-provider.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/policy-management.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-configuration.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-details.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/process-group-configuration.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-configuration.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-details.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/queue-listing.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/remote-process-group-configuration.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/reporting-task.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/shell.css delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/slick-nifi-theme.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/status-history.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/summary.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/users.css delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/LICENSE.txt delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Bold.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Italic.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Light.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-LightItalic.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Medium.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Regular.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/LICENSE.txt delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/RobotoSlab-Bold.ttf delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/RobotoSlab-Regular.ttf delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.eot delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.svg delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.ttf delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.woff delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.woff2 delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bg-error.png delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/iconInfo.png delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/iconLoading.gif delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/iconResize.png delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/inputCheckbox.png delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop-splash.svg delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop.svg delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo-about.svg delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo.svg delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi16.ico delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/sort-asc.gif delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/sort-desc.gif delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/spacer.png delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/LICENSE delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/fold/foldgutter.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/hint/show-hint.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/json-lint.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror-compressed.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/menuArrow.png delete mode 100755 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/menuArrowSmall.png delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.base64.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.center.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.count.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.each.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.ellipsis.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.tab.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfeditor.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfpr.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/buttonNewProperty.png delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/statusbar/jquery.statusbar.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/statusbar/jquery.statusbar.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tabbs/jquery.tabbs.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tabbs/jquery.tabbs.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.css delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/bulletin-board/nf-bulletin-board.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-breadcrumbs-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-graph-controls-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-navigate-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-operate-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-toolbox-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/directives/nf-ng-breadcrumbs-directive.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/directives/nf-ng-draggable-directive.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-funnel-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-group-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-input-port-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-label-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-output-port-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-registry-import-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/helpers/d3-helpers.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-bootstrap.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-error-handler.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-clipboard.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-version.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connectable.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-custom-ui.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-flow-analysis-rule.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-flow-version.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-funnel.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-go-to.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-graph.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label-configuration.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-ng-canvas-namespace.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-provider.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-policy-management.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-configuration.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-details.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-quick-select.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-configuration.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-details.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-ports.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-reporting-task.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-selectable.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-snippet.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-verify.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-model.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/login/nf-login.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/logout/nf-logout.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ajax-setup.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-authorization-storage.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-client.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-cluster-summary.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-connection-details.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-dialog.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-error-handler.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-filtered-dialog-common.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-config.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-controller.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-bridge.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-namespace.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-service-provider.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-processor-details.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-shell.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-universal-capture.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-cluster-search.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users.js delete mode 100644 nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/views/nf-ng-breadcrumbs-directive-view.html diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b459fbbb3a..49aa9895be 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -42,10 +42,6 @@ Please indicate the verification steps performed prior to pull request creation. - [ ] Build completed using `mvn clean install -P contrib-check` - [ ] JDK 21 -### UI Contributions - -- [ ] NiFi is modernizing its UI. Any contributions that update the [current UI](https://github.com/apache/nifi/tree/main/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui) also need to be implemented in the [new UI](https://github.com/apache/nifi/tree/main/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi). - ### Licensing - [ ] New dependencies are compatible with the [Apache License 2.0](https://apache.org/licenses/LICENSE-2.0) according to the [License Policy](https://www.apache.org/legal/resolved.html) diff --git a/LICENSE b/LICENSE index 58868d4c65..5c8b7af9ca 100644 --- a/LICENSE +++ b/LICENSE @@ -253,28 +253,6 @@ This product bundles 'CodeMirror' which is available under an MIT style license. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'jquery.base64.js' which is available under an MIT style license. - - Copyright (c) 2013 Yannick Albert (http://yckart.com/) - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - This product bundles HexViewJS available under an MIT License Copyright (c) 2010 Nick McVeity diff --git a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/LICENSE b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/LICENSE index 620c0e04df..450d1bb175 100644 --- a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/LICENSE +++ b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/LICENSE @@ -260,520 +260,6 @@ licenses. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'Javascript D3 Library' which is available under a -"3-clause BSD" license. - - Copyright 2010-2017 Mike Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'Javascript D3 Selection Multi Library' which is available under a -"3-clause BSD" license. - - Copyright (c) 2010-2016, Michael Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * The name Michael Bostock may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'CodeMirror' which is available under an MIT style license. - - Copyright (C) 2014 by Marijn Haverbeke and others - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'JQuery' which is available under and MIT style license. - (c) 2005, 2014 jQuery Foundation, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'JQuery Event Drag' which is available under an MIT style -license. - Copyright (c) 2008-2015 ThreeDubMedia - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery Form Plugin' which is available under either the MIT -or GPL license. The license in effect here is the MIT license - - Copyright 2006-2013 (c) M. Alsup - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'jQuery UI' which is available under an MIT style license. -For details see http://jqueryui.com - - Copyright 2014 jQuery Foundation and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'jquery.base64.js' which is available under an MIT style license. - - Copyright (c) 2013 Yannick Albert (http://yckart.com/) - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'SlickGrid v2.4' which is available under an MIT style license. - - Copyright (c) 2009-present Michael Leibman and Ben McIntyre, http://github.com/6pac/slickgrid - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'qTip2' which is available under an MIT style license. -For details see http://qtip2.com - - Copyright (c) 2012 Craig Michael Thompson - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'url-search-params' which is available under an MIT style license. -For details see https://github.com/WebReflection/url-search-params - - Copyright (C) 2015 by WebReflection - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery MiniColors' which is available under the MIT License. -For details see http://www.abeautifulsite.net/ - - Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'json2.js' which is available in the 'public domain'. - For details see https://github.com/douglascrockford/JSON-js - -This product bundles 'reset.css' which is available in the 'public domain'. - For details see http://meyerweb.com/eric/tools/css/reset/ - -This product bundles 'Angular' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'Angular Material' which is available under an MIT license. - - Copyright (c) 2014-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'Angular Aria' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Animate' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Route' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Resource' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Sanitize' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Messages' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Fontello' which is available under an MIT license. - - Copyright (C) 2011 by Vitaly Puzrin - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jsonlint' which is available under an MIT license. - - Copyright (C) 2012 Zachary Carter - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - This product bundles 'asm' which is available under a 3-Clause BSD style license. For details see http://asm.ow2.org/asmdex-license.html @@ -804,81 +290,6 @@ For details see http://asm.ow2.org/asmdex-license.html ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -This product bundles 'lodash' which is available under an MIT license. - - Copyright JS Foundation and other contributors - - Based on Underscore.js, copyright Jeremy Ashkenas, - DocumentCloud and Investigative Reporters & Editors - - This software consists of voluntary contributions made by many - individuals. For exact contribution history, see the revision history - available at https://github.com/lodash/lodash - - The following license applies to all parts of this software except as - documented below: - - ==== - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ==== - - Copyright and related rights for sample code are waived via CC0. Sample - code is defined as all source code displayed within the prose of the - documentation. - - CC0: http://creativecommons.org/publicdomain/zero/1.0/ - - ==== - - Files located in the node_modules and vendor directories are externally - maintained libraries used by this software which have their own - licenses; we recommend you read them, as their terms may differ from the - terms above. - -This product bundles 'moment' which is available under an MIT license. - - Copyright (c) JS Foundation and other contributors - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - The binary distribution of this product bundles 'Enterprise Security API for Java (Legacy)' under a BSD license. Copyright (c) 2007, The OWASP Foundation diff --git a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE index 70d7744026..cda874663e 100644 --- a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE +++ b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE @@ -197,12 +197,3 @@ The following binary components are provided under the Eclipse Public License 1. (EPL 1.0)(MPL 2.0) H2 Database (com.h2database:h2:jar:1.3.176 - http://www.h2database.com/html/license.html) (EPL 1.0)(LGPL 2.1) Logback Classic (ch.qos.logback:logback-classic:jar:1.2.6 - http://logback.qos.ch/) (EPL 1.0)(LGPL 2.1) Logback Core (ch.qos.logback:logback-core:jar:1.2.6- http://logback.qos.ch/) - -****************** -SIL OFL 1.1 -****************** - -The following binary components are provided under the SIL Open Font License 1.1 - (SIL OFL 1.1) FontAwesome (4.7.0 - https://fontawesome.com/license/free) - - diff --git a/nifi-assembly/LICENSE b/nifi-assembly/LICENSE index 411ce19bc7..f9ea36c1bb 100644 --- a/nifi-assembly/LICENSE +++ b/nifi-assembly/LICENSE @@ -302,67 +302,6 @@ The source is available under an MIT LICENSE. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'Javascript D3 Library' which is available under a -"3-clause BSD" license. - - Copyright 2010-2017 Mike Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'Javascript D3 Selection Multi Library' which is available under a -"3-clause BSD" license. - - Copyright (c) 2010-2016, Michael Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * The name Michael Bostock may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - This product bundles 'CodeMirror' which is available under an MIT style license. Copyright (C) 2014 by Marijn Haverbeke and others @@ -428,30 +367,6 @@ license. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'jQuery Form Plugin' which is available under either the MIT -or GPL license. The license in effect here is the MIT license - - Copyright 2006-2013 (c) M. Alsup - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - This product bundles 'jQuery UI' which is available under an MIT style license. For details see http://jqueryui.com @@ -476,28 +391,6 @@ For details see http://jqueryui.com OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'jquery.base64.js' which is available under an MIT style license. - - Copyright (c) 2013 Yannick Albert (http://yckart.com/) - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - This product bundles 'SlickGrid v2.4' which is available under an MIT style license. Copyright (c) 2009-present Michael Leibman and Ben McIntyre, http://github.com/6pac/slickgrid @@ -547,55 +440,6 @@ For details see http://qtip2.com FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'url-search-params' which is available under an MIT style license. -For details see https://github.com/WebReflection/url-search-params - - Copyright (C) 2015 by WebReflection - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery MiniColors' which is available under the MIT License. -For details see http://www.abeautifulsite.net/ - - Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - This product bundles 'json2.js' which is available in the 'public domain'. For details see https://github.com/douglascrockford/JSON-js @@ -688,69 +532,6 @@ This product bundles 'Angular Animate' which is available under an MIT license. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -This product bundles 'Angular Route' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Resource' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Sanitize' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - This product bundles 'Angular Messages' which is available under an MIT license. Copyright (c) 2010-2016 Google, Inc. http://angularjs.org @@ -2445,56 +2226,6 @@ style license. NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -This product bundles 'lodash' which is available under an MIT license. - - Copyright JS Foundation and other contributors - - Based on Underscore.js, copyright Jeremy Ashkenas, - DocumentCloud and Investigative Reporters & Editors - - This software consists of voluntary contributions made by many - individuals. For exact contribution history, see the revision history - available at https://github.com/lodash/lodash - - The following license applies to all parts of this software except as - documented below: - - ==== - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ==== - - Copyright and related rights for sample code are waived via CC0. Sample - code is defined as all source code displayed within the prose of the - documentation. - - CC0: http://creativecommons.org/publicdomain/zero/1.0/ - - ==== - - Files located in the node_modules and vendor directories are externally - maintained libraries used by this software which have their own - licenses; we recommend you read them, as their terms may differ from the - terms above. - This product bundles 'dnsjava' which is available under a BSD 2-Clause "Simplified" License. Copyright (c) 1998-2011, Brian Wellington. @@ -2522,31 +2253,6 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -This product bundles 'moment' which is available under an MIT license. - - Copyright (c) JS Foundation and other contributors - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - The binary distribution of this product bundles 'normalize.css' NORMALIZE.CSS LICENSE diff --git a/nifi-code-coverage/pom.xml b/nifi-code-coverage/pom.xml index 3b986b2de6..eb10d436d7 100644 --- a/nifi-code-coverage/pom.xml +++ b/nifi-code-coverage/pom.xml @@ -683,12 +683,6 @@ 2.0.0-SNAPSHOT war - - org.apache.nifi - nifi-web-error - 2.0.0-SNAPSHOT - war - org.apache.nifi nifi-web-optimistic-locking diff --git a/nifi-commons/nifi-jetty-configuration/pom.xml b/nifi-commons/nifi-jetty-configuration/pom.xml index a08ac6c40a..04d27762cc 100644 --- a/nifi-commons/nifi-jetty-configuration/pom.xml +++ b/nifi-commons/nifi-jetty-configuration/pom.xml @@ -35,6 +35,10 @@ org.eclipse.jetty jetty-util + + org.eclipse.jetty + jetty-rewrite + org.eclipse.jetty.http2 jetty-http2-server diff --git a/nifi-extension-bundles/nifi-media-bundle/nifi-image-viewer-nar/src/main/resources/META-INF/LICENSE b/nifi-extension-bundles/nifi-media-bundle/nifi-image-viewer-nar/src/main/resources/META-INF/LICENSE index 44893cdb29..c1faab0918 100644 --- a/nifi-extension-bundles/nifi-media-bundle/nifi-image-viewer-nar/src/main/resources/META-INF/LICENSE +++ b/nifi-extension-bundles/nifi-media-bundle/nifi-image-viewer-nar/src/main/resources/META-INF/LICENSE @@ -207,3 +207,24 @@ The Apache NiFi project contains subcomponents with separate copyright notices and license terms. Your use of the source code for the these subcomponents is subject to the terms and conditions of the following licenses. + +This product bundles 'JQuery' which is available under and MIT style license. + (c) 2005, 2014 jQuery Foundation, Inc. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. \ No newline at end of file diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/resources/META-INF/LICENSE b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/resources/META-INF/LICENSE index c1faab0918..0234b15694 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/resources/META-INF/LICENSE +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/resources/META-INF/LICENSE @@ -208,6 +208,28 @@ notices and license terms. Your use of the source code for the these subcomponents is subject to the terms and conditions of the following licenses. +This product bundles 'CodeMirror' which is available under an MIT style license. + + Copyright (C) 2014 by Marijn Haverbeke and others + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + This product bundles 'JQuery' which is available under and MIT style license. (c) 2005, 2014 jQuery Foundation, Inc. diff --git a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-nar/src/main/resources/META-INF/LICENSE b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-nar/src/main/resources/META-INF/LICENSE index b17cf20537..344e24d2da 100644 --- a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-nar/src/main/resources/META-INF/LICENSE +++ b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-nar/src/main/resources/META-INF/LICENSE @@ -258,6 +258,49 @@ under an MIT style license. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +This product bundles 'CodeMirror' which is available under an MIT style license. + + Copyright (C) 2014 by Marijn Haverbeke and others + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +This product bundles 'JQuery' which is available under and MIT style license. + (c) 2005, 2014 jQuery Foundation, Inc. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + This product bundles 'asm' which is available under a 3-Clause BSD style license. For details see http://asm.ow2.org/asmdex-license.html @@ -288,72 +331,6 @@ For details see http://asm.ow2.org/asmdex-license.html ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -This product bundles 'AngularUI Codemirror' which is available under an MIT license. - - Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.com - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'AngularUI Router' which is available under an MIT license. - - Copyright (c) 2013-2015 The AngularUI Team, Karsten Sperling - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'js-beautify' which is available under an MIT license. - - Copyright (c) 2007-2013 Einar Lielmanis and contributors. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - This product bundles 'SLF4J-API 1.7.21' which is available under an MIT license. Copyright (c) 2004-2007 QOS.ch diff --git a/nifi-extension-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/resources/META-INF/LICENSE b/nifi-extension-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/resources/META-INF/LICENSE index b141fc8ff1..ebe652d246 100644 --- a/nifi-extension-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/resources/META-INF/LICENSE +++ b/nifi-extension-bundles/nifi-update-attribute-bundle/nifi-update-attribute-ui/src/main/resources/META-INF/LICENSE @@ -259,6 +259,28 @@ This product bundles 'Fontello' which is available under an MIT license. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +This product bundles 'CodeMirror' which is available under an MIT style license. + + Copyright (C) 2014 by Marijn Haverbeke and others + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + This product bundles 'JQuery' which is available under and MIT style license. (c) 2005, 2014 jQuery Foundation, Inc. diff --git a/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE b/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE index 35c9e18627..226a7032ba 100644 --- a/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE +++ b/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE @@ -260,520 +260,6 @@ licenses. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -This product bundles 'Javascript D3 Library' which is available under a -"3-clause BSD" license. - - Copyright 2010-2017 Mike Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'Javascript D3 Selection Multi Library' which is available under a -"3-clause BSD" license. - - Copyright (c) 2010-2016, Michael Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * The name Michael Bostock may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'CodeMirror' which is available under an MIT style license. - - Copyright (C) 2014 by Marijn Haverbeke and others - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'JQuery' which is available under and MIT style license. - (c) 2005, 2014 jQuery Foundation, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'JQuery Event Drag' which is available under an MIT style -license. - Copyright (c) 2008-2015 ThreeDubMedia - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery Form Plugin' which is available under either the MIT -or GPL license. The license in effect here is the MIT license - - Copyright 2006-2013 (c) M. Alsup - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'jQuery UI' which is available under an MIT style license. -For details see http://jqueryui.com - - Copyright 2014 jQuery Foundation and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'jquery.base64.js' which is available under an MIT style license. - - Copyright (c) 2013 Yannick Albert (http://yckart.com/) - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'SlickGrid v2.4' which is available under an MIT style license. - - Copyright (c) 2009-present Michael Leibman and Ben McIntyre, http://github.com/6pac/slickgrid - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'qTip2' which is available under an MIT style license. -For details see http://qtip2.com - - Copyright (c) 2012 Craig Michael Thompson - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'url-search-params' which is available under an MIT style license. -For details see https://github.com/WebReflection/url-search-params - - Copyright (C) 2015 by WebReflection - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery MiniColors' which is available under the MIT License. -For details see http://www.abeautifulsite.net/ - - Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'json2.js' which is available in the 'public domain'. - For details see https://github.com/douglascrockford/JSON-js - -This product bundles 'reset.css' which is available in the 'public domain'. - For details see http://meyerweb.com/eric/tools/css/reset/ - -This product bundles 'Angular' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'Angular Material' which is available under an MIT license. - - Copyright (c) 2014-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'Angular Aria' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Animate' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Route' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Resource' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Sanitize' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Messages' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Fontello' which is available under an MIT license. - - Copyright (C) 2011 by Vitaly Puzrin - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jsonlint' which is available under an MIT license. - - Copyright (C) 2012 Zachary Carter - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - This product bundles 'asm' which is available under a 3-Clause BSD style license. For details see http://asm.ow2.org/asmdex-license.html @@ -804,81 +290,6 @@ For details see http://asm.ow2.org/asmdex-license.html ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -This product bundles 'lodash' which is available under an MIT license. - - Copyright JS Foundation and other contributors - - Based on Underscore.js, copyright Jeremy Ashkenas, - DocumentCloud and Investigative Reporters & Editors - - This software consists of voluntary contributions made by many - individuals. For exact contribution history, see the revision history - available at https://github.com/lodash/lodash - - The following license applies to all parts of this software except as - documented below: - - ==== - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ==== - - Copyright and related rights for sample code are waived via CC0. Sample - code is defined as all source code displayed within the prose of the - documentation. - - CC0: http://creativecommons.org/publicdomain/zero/1.0/ - - ==== - - Files located in the node_modules and vendor directories are externally - maintained libraries used by this software which have their own - licenses; we recommend you read them, as their terms may differ from the - terms above. - -This product bundles 'moment' which is available under an MIT license. - - Copyright (c) JS Foundation and other contributors - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - The binary distribution of this product bundles 'Enterprise Security API for Java (Legacy)' under a BSD license. Copyright (c) 2007, The OWASP Foundation @@ -928,7 +339,4 @@ The binary distribution of this product bundles 'Py4J' under a BSD license. SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -For the binary distribution of nifi-web-frontend see its 3rdpartylicenses.txt -for additional license and notice information. \ No newline at end of file + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE b/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE index 66c99c11b3..b78fbde1eb 100644 --- a/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE @@ -235,13 +235,3 @@ The following binary components are provided under the Eclipse Public License 1. (EPL 1.0)(MPL 2.0) H2 Database (com.h2database:h2:jar:1.3.176 - http://www.h2database.com/html/license.html) (EPL 1.0)(LGPL 2.1) Logback Classic (ch.qos.logback:logback-classic:jar:1.2.6 - http://logback.qos.ch/) (EPL 1.0)(LGPL 2.1) Logback Core (ch.qos.logback:logback-core:jar:1.2.6 - http://logback.qos.ch/) - -****************** -SIL OFL 1.1 -****************** - -The following binary components are provided under the SIL Open Font License 1.1 - (SIL OFL 1.1) FontAwesome (4.7.0 - https://fontawesome.com/license/free) - -For the binary distribution of nifi-web-frontend see its 3rdpartylicenses.txt -for additional license and notice information. \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java index 3762574e78..055834f3c9 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java @@ -106,6 +106,8 @@ import org.apache.nifi.web.server.log.StandardRequestLogProvider; import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.DeploymentManager; import org.eclipse.jetty.ee10.webapp.MetaInfConfiguration; +import org.eclipse.jetty.rewrite.handler.RedirectPatternRule; +import org.eclipse.jetty.rewrite.handler.RewriteHandler; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; @@ -139,9 +141,7 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { private static final String CONTAINER_JAR_PATTERN = ".*/jetty-jakarta-servlet-api-[^/]*\\.jar$|.*jakarta.servlet.jsp.jstl-[^/]*\\.jar"; private static final String CONTEXT_PATH_ALL = "/*"; - private static final String CONTEXT_PATH_ROOT = "/"; private static final String CONTEXT_PATH_NIFI = "/nifi"; - private static final String CONTEXT_PATH_NF = "/nf"; private static final String CONTEXT_PATH_NIFI_API = "/nifi-api"; private static final String CONTEXT_PATH_NIFI_CONTENT_VIEWER = "/nifi-content-viewer"; private static final String CONTEXT_PATH_NIFI_DOCS = "/nifi-docs"; @@ -213,7 +213,17 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { final Handler warHandlers = loadInitialWars(bundles); handlerCollection.addHandler(warHandlers); - server.setHandler(handlerCollection); + + final RewriteHandler logoutCompleteRewriteHandler = new RewriteHandler(); + final RedirectPatternRule redirectLogoutComplete = new RedirectPatternRule("/nifi/logout-complete", "/nifi/#/logout-complete"); + logoutCompleteRewriteHandler.addRule(redirectLogoutComplete); + logoutCompleteRewriteHandler.setHandler(handlerCollection); + server.setHandler(logoutCompleteRewriteHandler); + + final RewriteHandler defaultRewriteHandler = new RewriteHandler(); + final RedirectPatternRule redirectDefault = new RedirectPatternRule("/*", "/nifi"); + defaultRewriteHandler.addRule(redirectDefault); + server.setDefaultHandler(defaultRewriteHandler); deploymentManager.setContexts(handlerCollection); server.addBean(deploymentManager); @@ -229,9 +239,7 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { // locate each war being deployed File webUiWar = null; - File webNewUiWar = null; File webApiWar = null; - File webErrorWar = null; File webDocsWar = null; File webContentViewerWar = null; Map otherWars = new HashMap<>(); @@ -241,15 +249,11 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { if (war.getName().toLowerCase().startsWith("nifi-web-api")) { webApiWar = war; - } else if (war.getName().toLowerCase().startsWith("nifi-web-error")) { - webErrorWar = war; } else if (war.getName().toLowerCase().startsWith("nifi-web-docs")) { webDocsWar = war; } else if (war.getName().toLowerCase().startsWith("nifi-web-content-viewer")) { webContentViewerWar = war; } else if (war.getName().toLowerCase().startsWith("nifi-web-frontend")) { - webNewUiWar = war; - } else if (war.getName().toLowerCase().startsWith("nifi-web")) { webUiWar = war; } else { otherWars.put(war, warBundle); @@ -263,8 +267,6 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { throw new RuntimeException("Unable to load nifi-web-api WAR"); } else if (webDocsWar == null) { throw new RuntimeException("Unable to load nifi-web-docs WAR"); - } else if (webErrorWar == null) { - throw new RuntimeException("Unable to load nifi-web-error WAR"); } else if (webContentViewerWar == null) { throw new RuntimeException("Unable to load nifi-web-content-viewer WAR"); } @@ -283,11 +285,14 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { // load the web ui app final WebAppContext webUiContext = loadWar(webUiWar, CONTEXT_PATH_NIFI, frameworkClassLoader); - webUiContext.getInitParams().put("oidc-supported", String.valueOf(props.isOidcEnabled())); - webUiContext.getInitParams().put("saml-supported", String.valueOf(props.isSamlEnabled())); - webUiContext.getInitParams().put("saml-single-logout-supported", String.valueOf(props.isSamlSingleLogoutEnabled())); webAppContextHandlers.addHandler(webUiContext); + // add a rewrite error handler for the ui to handle 404 + final RewriteHandler uiErrorHandler = new RewriteHandler(); + final RedirectPatternRule redirectToUi = new RedirectPatternRule("/*", "/nifi/#/404"); + uiErrorHandler.addRule(redirectToUi); + webUiContext.setErrorHandler(uiErrorHandler); + // load the web api app webApiContext = loadWar(webApiWar, CONTEXT_PATH_NIFI_API, frameworkClassLoader); webAppContextHandlers.addHandler(webApiContext); @@ -306,19 +311,6 @@ public class JettyServer implements NiFiServer, ExtensionUiLoader { addDocsServlets(webDocsContext); webAppContextHandlers.addHandler(webDocsContext); - // conditionally add the new ui - if (webNewUiWar != null) { - final WebAppContext newUiContext = loadWar(webNewUiWar, CONTEXT_PATH_NF, frameworkClassLoader); - newUiContext.getInitParams().put("oidc-supported", String.valueOf(props.isOidcEnabled())); - newUiContext.getInitParams().put("saml-supported", String.valueOf(props.isSamlEnabled())); - newUiContext.getInitParams().put("saml-single-logout-supported", String.valueOf(props.isSamlSingleLogoutEnabled())); - webAppContextHandlers.addHandler(newUiContext); - } - - // load the web error app - final WebAppContext webErrorContext = loadWar(webErrorWar, CONTEXT_PATH_ROOT, frameworkClassLoader); - webAppContextHandlers.addHandler(webErrorContext); - // deploy the web apps return webAppContextHandlers; } diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml deleted file mode 100644 index 0eedab416a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 4.0.0 - - org.apache.nifi - nifi-server-nar-bom - 2.0.0-SNAPSHOT - ../../../nifi-server-nar-bom - - nifi-web-error - war - - - - org.apache.nifi - nifi-web-utils - 2.0.0-SNAPSHOT - provided - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/java/org/apache/nifi/web/filter/CatchAllFilter.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/java/org/apache/nifi/web/filter/CatchAllFilter.java deleted file mode 100644 index 793124c5eb..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/java/org/apache/nifi/web/filter/CatchAllFilter.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.nifi.web.filter; - -import java.io.IOException; -import jakarta.servlet.FilterChain; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * This filter catches all requests and explicitly forwards them to a JSP ({@code index.jsp} injected in - * the filter configuration. This is used to handle all errors (this module is only used for errors). It - * extends {@link SanitizeContextPathFilter} which sanitizes the context path and injects it as a request - * attribute to be used on the page for linking resources without XSS vulnerabilities. - */ -public class CatchAllFilter extends SanitizeContextPathFilter { - private static final Logger logger = LoggerFactory.getLogger(CatchAllFilter.class); - - private String forwardPath = ""; - private String displayPath = ""; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - super.init(filterConfig); - - // TODO: Perform path validation (against what set of rules)? - forwardPath = filterConfig.getInitParameter("forwardPath"); - displayPath = filterConfig.getInitParameter("displayPath"); - - logger.debug("CatchAllFilter [" + displayPath + "] received provided allowed context paths from NiFi properties: " + getAllowedContextPaths()); - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { - // Inject the contextPath attribute into the request - injectContextPathAttribute(request); - - // Forward all requests to index.jsp - request.getRequestDispatcher(forwardPath).forward(request, response); - } - - @Override - public void destroy() { - } -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/WEB-INF/web.xml b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 95ae7ff784..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - nifi-error - - catch-all-filter - org.apache.nifi.web.filter.CatchAllFilter - - displayPath - index.jsp - - - forwardPath - /index.jsp - - - - catch-all-filter - /* - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/index.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/index.jsp deleted file mode 100644 index b95c0377c2..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/main/webapp/index.jsp +++ /dev/null @@ -1,46 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - -<% - // Sanitize the contextPath to ensure it is on this server - // rather than getting it from the header directly - String contextPath = request.getAttribute("contextPath").toString(); -%> - - - - NiFi - - - - - - - - - - -
-

- Did you mean: /nifi -

-

You may have mistyped... but we'll try to redirect you in 5 seconds.

-
- - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/test/java/org/apache/nifi/web/filter/CatchAllFilterTest.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/test/java/org/apache/nifi/web/filter/CatchAllFilterTest.java deleted file mode 100644 index 0fc6e6daef..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/src/test/java/org/apache/nifi/web/filter/CatchAllFilterTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.nifi.web.filter; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import jakarta.servlet.FilterChain; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.RequestDispatcher; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.when; - -@ExtendWith(MockitoExtension.class) -public class CatchAllFilterTest { - @Mock - private ServletContext servletContext; - - @Mock - private FilterConfig filterConfig; - - @BeforeEach - public void setUp() { - when(filterConfig.getServletContext()).thenReturn(servletContext); - } - - @Test - public void testInitShouldCallSuper() throws ServletException { - String expectedAllowedContextPaths = getExpectedAllowedContextPaths(); - final Map parameters = Collections.singletonMap("allowedContextPaths", getExpectedAllowedContextPaths()); - when(servletContext.getInitParameter(anyString())).thenAnswer(invocation -> getValue(invocation.getArgument(0), parameters)); - when(filterConfig.getInitParameter(anyString())).thenAnswer(invocation -> getValue(invocation.getArgument(0), parameters)); - - CatchAllFilter catchAllFilter = new CatchAllFilter(); - catchAllFilter.init(filterConfig); - - assertEquals(expectedAllowedContextPaths, catchAllFilter.getAllowedContextPaths()); - } - - @Test - public void testShouldDoFilter(@Mock HttpServletRequest request, @Mock RequestDispatcher requestDispatcher, - @Mock HttpServletResponse response, @Mock FilterChain filterChain ) throws ServletException, IOException { - final String expectedAllowedContextPaths = getExpectedAllowedContextPaths(); - final String expectedForwardPath = "index.jsp"; - final Map parameters = new HashMap<>(); - parameters.put("allowedContextPaths", expectedAllowedContextPaths); - parameters.put("forwardPath", expectedForwardPath); - final Map requestAttributes = new HashMap<>(); - final String[] forwardedRequestTo = new String[1]; - final Map headers = new HashMap<>(); - headers.put("X-ProxyContextPath", ""); - headers.put("X-Forwarded-Context", ""); - headers.put("X-Forwarded-Prefix", ""); - - when(servletContext.getInitParameter(anyString())).thenAnswer(invocation -> getValue(invocation.getArgument(0), parameters)); - when(filterConfig.getInitParameter(anyString())).thenAnswer(invocation -> getValue(invocation.getArgument(0), parameters)); - when(request.getHeader(anyString())).thenAnswer(invocation -> getValue(invocation.getArgument(0), headers)); - doAnswer(invocation -> requestAttributes.put(invocation.getArgument(0), invocation.getArgument(1))).when(request).setAttribute(anyString(), any()); - when(request.getRequestDispatcher(anyString())).thenAnswer(outerInvocation -> { - doAnswer(innerInvocation -> forwardedRequestTo[0] = outerInvocation.getArgument(0)).when(requestDispatcher).forward(any(), any()); - return requestDispatcher; }); - - CatchAllFilter catchAllFilter = new CatchAllFilter(); - catchAllFilter.init(filterConfig); - catchAllFilter.doFilter(request, response, filterChain); - - assertEquals(expectedForwardPath, forwardedRequestTo[0]); - } - - private String getExpectedAllowedContextPaths() { - return String.join(",", "/path1", "/path2"); - } - - private static String getValue(String parameterName, Map params) { - return params.getOrDefault(parameterName, ""); - } -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/README.md b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/README.md index 2dc4af00ae..2cff1beac4 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/README.md +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/README.md @@ -6,13 +6,6 @@ This module is the primary UI for NiFi. It contains the canvas and all UI's for that support other UIs that intergate with this. These include documentation, data viewers, advanced configuration UIs, error handling, and Registry UIs. Overtime, these will all be modernized and possibly brought into this Nx repo to co-locate all the front end code. -On startup, NiFi has been updated to locate the new UI and deploy it to a new context path (`/nf`). One thing to note, when using the new UI running -in NiFi at `/nf`, the user can log in and use the application. When logging out however, there is a hardcoded redirect that happens from the back end -which sends the user to the old UI (`/nifi`). - -Once the remaining features have been implemented, the look and feel has be polished, and it is ready for release the old UI will be removed. At that time -the context path for the new UI will be updated to use `/nifi`. Following this, the logout redirection issue called out above won’t be a problem anymore. - ## Source Structure The structure of the application is laid out in the following manner. @@ -43,7 +36,7 @@ cluttered and can focus on its purpose and not needing to deal with activated ro ## Development server -Run `npx nx serve` for a dev server. Navigate to `http://localhost:4200/nf`. The application will automatically reload if you change any of the source files. +Run `npx nx serve` for a dev server. Navigate to `http://localhost:4200/nifi`. The application will automatically reload if you change any of the source files. When accessing the UI in this manner, the login form does not work. There is some server side login request handling that does not work through the development server. Fortunately, an authenticated user does not need to log in. So to work around this, simply log in to NiFi using the UI running in diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/project.json b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/project.json index 5420b71da7..9364f4b7c6 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/project.json +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/project.json @@ -11,7 +11,7 @@ "prefix": "app", "targets": { "build": { - "executor": "@angular-devkit/build-angular:application", + "executor": "@nx/angular:application", "options": { "outputPath": "dist/nifi", "index": "apps/nifi/src/index.html", @@ -47,7 +47,7 @@ "defaultConfiguration": "production" }, "serve": { - "executor": "@angular-devkit/build-angular:dev-server", + "executor": "@nx/angular:dev-server", "options": { "proxyConfig": "apps/nifi/proxy.config.mjs", "buildTarget": "nifi:build" @@ -58,7 +58,7 @@ }, "development": { "buildTarget": "nifi:build:development", - "servePath": "/nf" + "servePath": "/nifi" } }, "defaultConfiguration": "development" diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/proxy.config.mjs b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/proxy.config.mjs index 88ccda0fc3..4f4d30253f 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/proxy.config.mjs +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/proxy.config.mjs @@ -18,7 +18,7 @@ const target = { }); }, bypass: function (req) { - if (req.url.startsWith('/nf/')) { + if (req.url.startsWith('/nifi/')) { return req.url; } } diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/app-routing.module.ts b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/app-routing.module.ts index 27c206e141..b6ecbef155 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/app-routing.module.ts +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/app-routing.module.ts @@ -30,10 +30,20 @@ const routes: Routes = [ ], loadChildren: () => import('./pages/login/feature/login.module').then((m) => m.LoginModule) }, + { + path: 'logout-complete', + loadChildren: () => import('./pages/logout/feature/logout.module').then((m) => m.LogoutModule) + }, { path: 'error', loadChildren: () => import('./pages/error/feature/error.module').then((m) => m.ErrorModule) }, + { + path: '404', + component: RouteNotFound, + loadChildren: () => + import('./pages/route-not-found/feature/route-not-found.module').then((m) => m.RouteNotFoundModule) + }, { path: 'documentation', canMatch: [authenticationGuard], diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/_logout.component-theme.scss b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/_logout.component-theme.scss new file mode 100644 index 0000000000..009b78b2ee --- /dev/null +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/_logout.component-theme.scss @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@use 'sass:map'; +@use '@angular/material' as mat; + +@mixin generate-theme($material-theme, $nifi-theme) { + // Get the color config from the theme. + $nifi-theme-color-config: mat.get-color-config($nifi-theme); + + // Get the color palettes from the color-config. + $nifi-theme-surface-palette: map.get($nifi-theme-color-config, 'primary'); + + // Get hues from palette + $is-dark: map-get($nifi-theme-color-config, is-dark); + $nifi-theme-surface-palette-darker: mat.get-color-from-palette($nifi-theme-surface-palette, darker); + $nifi-theme-surface-palette-lighter: mat.get-color-from-palette($nifi-theme-surface-palette, lighter); + + .logout-background { + background: if($is-dark, $nifi-theme-surface-palette-darker, $nifi-theme-surface-palette-lighter) + url(../../../../assets/icons/bg-error.png) left top no-repeat; + } +} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-process-group-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout-routing.module.ts similarity index 71% rename from nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-process-group-dialog.css rename to nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout-routing.module.ts index a245922015..4cdc945721 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-process-group-dialog.css +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout-routing.module.ts @@ -15,23 +15,14 @@ * limitations under the License. */ -/* - New process group dialog. -*/ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { Logout } from './logout.component'; -#new-process-group-dialog { - min-height:320px; - height: 320px; - width: 540px; - min-width: 500px; -} +const routes: Routes = [{ path: '', component: Logout }]; -div.fa-cloud-download.button-icon { - width: 160px; -} - -#parameters-from-uploaded-flow { - color: #888; - font-weight: 400; - display: none; -} +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class LogoutRoutingModule {} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.html b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.html new file mode 100644 index 0000000000..aadbac5958 --- /dev/null +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.html @@ -0,0 +1,22 @@ + + +
+ +
You have have successfully logged out. You may now close the window.
+
+
diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-namespace.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.scss similarity index 93% rename from nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-namespace.js rename to nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.scss index 7301e37f12..2944f98194 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-namespace.js +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.scss @@ -14,7 +14,3 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// register the nf namespace -var nf; -if (!nf) - nf = {}; \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.spec.ts b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.spec.ts new file mode 100644 index 0000000000..5d242a978b --- /dev/null +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.spec.ts @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Logout } from './logout.component'; +import { provideMockStore } from '@ngrx/store/testing'; +import { initialState } from '../../../state/current-user/current-user.reducer'; +import { MatProgressSpinner } from '@angular/material/progress-spinner'; + +describe('Login', () => { + let component: Logout; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [Logout], + imports: [MatProgressSpinner], + providers: [provideMockStore({ initialState })] + }); + fixture = TestBed.createComponent(Logout); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-port-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.ts similarity index 80% rename from nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-port-dialog.css rename to nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.ts index 223fe211c1..34a6017c8c 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-port-dialog.css +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.component.ts @@ -15,13 +15,11 @@ * limitations under the License. */ -/* - New port dialog at in a child process group. -*/ +import { Component } from '@angular/core'; -#new-port-dialog { - min-height:280px; - height: 280px; - width: 320px; - min-width: 320px; -} +@Component({ + selector: 'logout', + templateUrl: './logout.component.html', + styleUrls: ['./logout.component.scss'] +}) +export class Logout {} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-page.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.module.ts similarity index 63% rename from nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-page.css rename to nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.module.ts index 33eafa65b5..1339d09102 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-page.css +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/app/pages/logout/feature/logout.module.ts @@ -14,17 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -* { - margin: 0; - padding: 0; -} -a:link, a:visited { - color: #191919; - text-decoration: none; -} +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Logout } from './logout.component'; +import { LogoutRoutingModule } from './logout-routing.module'; +import { PageContent } from '../../../ui/common/page-content/page-content.component'; -a:hover, a:active { - color: #4e4e4e; - text-decoration: underline; -} \ No newline at end of file +@NgModule({ + declarations: [Logout], + exports: [Logout], + imports: [ + CommonModule, + LogoutRoutingModule, + PageContent + ] +}) +export class LogoutModule {} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/styles.scss b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/styles.scss index f1f7714cb3..4d255dbdb4 100644 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/styles.scss +++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/apps/nifi/src/styles.scss @@ -35,6 +35,7 @@ @use 'app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component-theme' as new-canvas-item; @use 'app/pages/flow-designer/ui/canvas/header/search/search.component-theme' as search; @use 'app/pages/login/feature/login.component-theme' as login; +@use 'app/pages/logout/feature/logout.component-theme' as logout; @use 'app/pages/provenance/feature/provenance.component-theme' as provenance; @use 'app/pages/provenance/ui/provenance-event-listing/provenance-event-table/provenance-event-table.component-theme' as provenance-event-table; @@ -94,6 +95,7 @@ @include new-canvas-item.generate-theme($material-theme-light, $supplemental-theme-light); @include search.generate-theme($supplemental-theme-light); @include login.generate-theme($material-theme-light, $supplemental-theme-light); +@include logout.generate-theme($material-theme-light, $supplemental-theme-light); @include provenance-event-table.generate-theme($supplemental-theme-light); @include provenance.generate-theme($material-theme-light, $supplemental-theme-light); @include lineage.generate-theme($material-theme-light, $supplemental-theme-light); @@ -126,6 +128,7 @@ @include new-canvas-item.generate-theme($material-theme-dark, $supplemental-theme-dark); @include search.generate-theme($supplemental-theme-dark); @include login.generate-theme($material-theme-dark, $supplemental-theme-dark); + @include logout.generate-theme($material-theme-dark, $supplemental-theme-dark); @include provenance-event-table.generate-theme($supplemental-theme-dark); @include provenance.generate-theme($material-theme-dark, $supplemental-theme-dark); @include lineage.generate-theme($material-theme-dark, $supplemental-theme-dark); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml deleted file mode 100644 index f274a5773a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml +++ /dev/null @@ -1,937 +0,0 @@ - - - - 4.0.0 - - org.apache.nifi - nifi-server-nar-bom - 2.0.0-SNAPSHOT - ../../../nifi-server-nar-bom - - nifi-web-ui - war - - ${project.build.directory}/tmp - canvas.properties - history.properties - summary.properties - counters.properties - cluster.properties - users.properties - bulletin-board.properties - login.properties - logout.properties - provenance.properties - ${basedir}/src/main/frontend - ${project.build.directory}/frontend-working-directory - ${project.build.directory}/${project.build.finalName}/assets - - - - - src/main/resources/filters/${canvas.filter} - src/main/resources/filters/${history.filter} - src/main/resources/filters/${summary.filter} - src/main/resources/filters/${counters.filter} - src/main/resources/filters/${cluster.filter} - src/main/resources/filters/${users.filter} - src/main/resources/filters/${bulletin.board.filter} - src/main/resources/filters/${login.filter} - src/main/resources/filters/${logout.filter} - src/main/resources/filters/${provenance.filter} - - - - - org.eclipse.jetty.ee10 - jetty-ee10-jspc-maven-plugin - ${jetty.version} - - - - jspc - - - true - true - - **/message-page.jsp, - **/canvas.jsp, - **/summary.jsp, - **/history.jsp, - **/provenance.jsp, - **/counters.jsp, - **/cluster.jsp, - **/users.jsp, - **/bulletin-board.jsp, - **/login.jsp, - **/logout.jsp - - - - - - - - org.apache.maven.plugins - maven-resources-plugin - - - copy-web-xml - prepare-package - - copy-resources - - - ${staging.dir}/WEB-INF - - - ${project.build.directory} - true - - web.xml - - - - - - - copy-client-side-deps - prepare-package - - copy-resources - - - ${frontend.assets} - - - ${frontend.working.dir}/node_modules - false - - - d3/dist/d3.min.js* - d3/LICENSE - - d3-selection-multi/build/d3-selection-multi.min.js* - d3-selection-multi/LICENSE - - angular/angular.min.js* - angular/LICENSE.md - - angular-animate/angular-animate.min.js* - angular-animate/LICENSE.md - - angular-aria/angular-aria.min.js* - angular-aria/LICENSE.md - - angular-material/angular-material.min.js* - angular-material/angular-material.min.css - angular-material/LICENSE - - angular-messages/angular-messages.min.js* - angular-messages/LICENSE.md - - angular-mocks/angular-mocks.min.js* - angular-mocks/LICENSE.md - - angular-resource/angular-resource.min.js* - angular-resource/README.md - - angular-route/angular-route.min.js* - angular-route/README.md - - angular-sanitize/angular-sanitize.min.js* - angular-sanitize/LICENSE.md - - font-awesome/css/**/* - font-awesome/fonts/**/* - font-awesome/README.md - - jquery/dist/jquery.min* - jquery/LICENSE.txt - - jquery-ui-dist/jquery-ui.min.js - jquery-ui-dist/jquery-ui.min.css - jquery-ui-dist/images/**/* - jquery-ui-dist/LICENSE.txt - - jquery-minicolors/jquery.minicolors.min.js - jquery-minicolors/jquery.minicolors.css - jquery-minicolors/jquery.minicolors.png - jquery-minicolors/readme.md - - jquery-form/jquery.form.js - jquery-form/README.md - - qtip2/dist/*.css - qtip2/dist/jquery.qtip.min* - qtip2/LICENSE - - slickgrid/slick.core.js - slickgrid/slick.dataview.js - slickgrid/slick.editors.js - slickgrid/slick.formatters.js - slickgrid/slick.grid.js - slickgrid/plugins/slick.autotooltips.js - slickgrid/plugins/slick.cellrangedecorator.js - slickgrid/plugins/slick.cellrangeselector.js - slickgrid/plugins/slick.cellselectionmodel.js - slickgrid/plugins/slick.rowselectionmodel.js - slickgrid/lib/jquery.event.drag-2.3.0.js - slickgrid/slick.grid.css - slickgrid/images/collapse.gif - slickgrid/images/expand.gif - slickgrid/MIT-LICENSE.txt - - jsonlint/lib/jsonlint.js - jsonlint/README.md - - JSON2/json2.js - - reset.css/reset.css - reset.css/README.md - - url-search-params/build/url-search-params.js - url-search-params/README.md - url-search-params/LICENSE.txt - - lodash/lodash.min.js - lodash/README.md - - moment/min/moment.min.js - moment/README.md - moment/LICENSE - - - - - - - - copy-package-json - generate-sources - - copy-resources - - - ${frontend.working.dir} - - - ${frontend.dependency.configs} - false - - package.json - package-lock.json - - - - - - - - - - org.apache.maven.plugins - maven-war-plugin - - ${staging.dir}/WEB-INF/web.xml - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - canvas.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - summary.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - history.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - provenance.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - counters.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - users.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - cluster.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - bulletin-board.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - login.jsp - - true - - - src/main/webapp/WEB-INF/pages - WEB-INF/pages - - logout.jsp - - true - - - - - - com.github.eirslett - frontend-maven-plugin - ${frontend.mvn.plugin.version} - - ${frontend.working.dir} - - - - install-node-and-npm - - install-node-and-npm - - generate-resources - - ${node.version} - - - - npm install - - npm - - - run ci - ${frontend.working.dir} - - - - - - - - - development-mode - - false - - - - - - org.apache.maven.plugins - maven-clean-plugin - 3.3.2 - - true - - - ${project.build.directory} - - ** - - - frontend-working-directory/node/**/* - frontend-working-directory/node_modules/**/* - - - - - - - - - - minify-and-compress - - true - - - canvas-min.properties - history-min.properties - summary-min.properties - counters-min.properties - cluster-min.properties - users-min.properties - bulletin-board-min.properties - login-min.properties - logout-min.properties - provenance-min.properties - - - - - - net.alchim31.maven - yuicompressor-maven-plugin - 1.5.1 - - - minify - - compress - - - src/main/webapp - ${staging.dir} - false - false - true - false - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/canvas/nf-canvas-all.js - - ${staging.dir}/js/nf/nf-ng-bridge.js - ${staging.dir}/js/nf/nf-ng-service-provider.js - ${staging.dir}/js/nf/nf-cluster-summary.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/canvas/nf-component-state.js - ${staging.dir}/js/nf/nf-shell.js - ${staging.dir}/js/nf/nf-client.js - ${staging.dir}/js/nf/canvas/helpers/d3-helpers.js - ${staging.dir}/js/nf/canvas/nf-clipboard.js - ${staging.dir}/js/nf/canvas/nf-custom-ui.js - ${staging.dir}/js/nf/canvas/nf-canvas-utils.js - ${staging.dir}/js/nf/canvas/nf-go-to.js - ${staging.dir}/js/nf/canvas/nf-snippet.js - ${staging.dir}/js/nf/canvas/nf-verify.js - ${staging.dir}/js/nf/canvas/nf-connection.js - ${staging.dir}/js/nf/canvas/nf-funnel.js - ${staging.dir}/js/nf/canvas/nf-label.js - ${staging.dir}/js/nf/canvas/nf-port.js - ${staging.dir}/js/nf/canvas/nf-process-group.js - ${staging.dir}/js/nf/canvas/nf-remote-process-group.js - ${staging.dir}/js/nf/canvas/nf-processor.js - ${staging.dir}/js/nf/canvas/nf-processor-configuration.js - ${staging.dir}/js/nf/nf-processor-details.js - ${staging.dir}/js/nf/canvas/nf-label-configuration.js - ${staging.dir}/js/nf/canvas/nf-port-configuration.js - ${staging.dir}/js/nf/canvas/nf-port-details.js - ${staging.dir}/js/nf/canvas/nf-process-group-configuration.js - ${staging.dir}/js/nf/canvas/nf-component-version.js - ${staging.dir}/js/nf/canvas/nf-remote-process-group-configuration.js - ${staging.dir}/js/nf/canvas/nf-remote-process-group-details.js - ${staging.dir}/js/nf/canvas/nf-remote-process-group-ports.js - ${staging.dir}/js/nf/canvas/nf-connection-configuration.js - ${staging.dir}/js/nf/nf-connection-details.js - ${staging.dir}/js/nf/canvas/nf-context-menu.js - ${staging.dir}/js/nf/canvas/nf-quick-select.js - ${staging.dir}/js/nf/canvas/nf-selectable.js - ${staging.dir}/js/nf/canvas/nf-birdseye.js - ${staging.dir}/js/nf/canvas/nf-draggable.js - ${staging.dir}/js/nf/canvas/nf-connectable.js - ${staging.dir}/js/nf/canvas/nf-graph.js - ${staging.dir}/js/nf/canvas/nf-flow-version.js - ${staging.dir}/js/nf/nf-filtered-dialog-common.js - ${staging.dir}/js/nf/nf-status-history.js - ${staging.dir}/js/nf/canvas/nf-queue-listing.js - ${staging.dir}/js/nf/canvas/nf-policy-management.js - ${staging.dir}/js/nf/canvas/nf-parameter-contexts.js - ${staging.dir}/js/nf/canvas/nf-actions.js - ${staging.dir}/js/nf/canvas/nf-canvas.js - ${staging.dir}/js/nf/canvas/nf-canvas-error-handler.js - ${staging.dir}/js/nf/canvas/nf-controller-service.js - ${staging.dir}/js/nf/canvas/nf-controller-services.js - ${staging.dir}/js/nf/canvas/nf-reporting-task.js - ${staging.dir}/js/nf/canvas/nf-flow-analysis-rule.js - ${staging.dir}/js/nf/canvas/nf-parameter-provider.js - ${staging.dir}/js/nf/canvas/nf-settings.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-breadcrumbs-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-toolbox-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-graph-controls-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-navigate-controller.js - ${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-operate-controller.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-processor-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-input-port-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-output-port-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-group-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-funnel-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-registry-import-component.js - ${staging.dir}/js/nf/canvas/header/components/nf-ng-label-component.js - ${staging.dir}/js/nf/canvas/directives/nf-ng-breadcrumbs-directive.js - ${staging.dir}/js/nf/canvas/directives/nf-ng-draggable-directive.js - ${staging.dir}/js/nf/nf-ng-app-controller.js - ${staging.dir}/js/nf/nf-ng-app-config.js - ${staging.dir}/js/nf/canvas/nf-canvas-bootstrap.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/history/nf-history-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/nf-cluster-summary.js - ${staging.dir}/js/nf/history/nf-history-model.js - ${staging.dir}/js/nf/history/nf-history-table.js - ${staging.dir}/js/nf/history/nf-history.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/provenance/nf-provenance-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/nf-ng-bridge.js - ${staging.dir}/js/nf/nf-ng-app-controller.js - ${staging.dir}/js/nf/nf-ng-app-config.js - ${staging.dir}/js/nf/provenance/nf-provenance-table.js - ${staging.dir}/js/nf/provenance/nf-provenance-lineage.js - ${staging.dir}/js/nf/provenance/nf-provenance.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/summary/nf-summary-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/nf-client.js - ${staging.dir}/js/nf/canvas/nf-custom-ui.js - ${staging.dir}/js/nf/nf-cluster-summary.js - ${staging.dir}/js/nf/nf-processor-details.js - ${staging.dir}/js/nf/canvas/nf-settings.js - ${staging.dir}/js/nf/canvas/nf-process-group-configuration.js - ${staging.dir}/js/nf/nf-connection-details.js - ${staging.dir}/js/nf/nf-status-history.js - ${staging.dir}/js/nf/nf-ng-bridge.js - ${staging.dir}/js/nf/summary/nf-summary-table.js - ${staging.dir}/js/nf/summary/nf-cluster-search.js - ${staging.dir}/js/nf/nf-ng-service-provider.js - ${staging.dir}/js/nf/nf-ng-app-controller.js - ${staging.dir}/js/nf/nf-ng-app-config.js - ${staging.dir}/js/nf/summary/nf-summary.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/counters/nf-counters-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/counters/nf-counters-table.js - ${staging.dir}/js/nf/counters/nf-counters.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/users/nf-users-all.js - - ${staging.dir}/js/nf/nf-client.js - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/users/nf-users-table.js - ${staging.dir}/js/nf/users/nf-users.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/cluster/nf-cluster-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/cluster/nf-cluster-table.js - ${staging.dir}/js/nf/cluster/nf-cluster.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/bulletin-board/nf-bulletin-board-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/nf-ng-bridge.js - ${staging.dir}/js/nf/nf-ng-service-provider.js - ${staging.dir}/js/nf/nf-ng-app-controller.js - ${staging.dir}/js/nf/nf-ng-app-config.js - ${staging.dir}/js/nf/bulletin-board/nf-bulletin-board.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/login/nf-login-all.js - - ${staging.dir}/js/nf/nf-dialog.js - ${staging.dir}/js/nf/nf-authorization-storage.js - ${staging.dir}/js/nf/nf-storage.js - ${staging.dir}/js/nf/nf-common.js - ${staging.dir}/js/nf/nf-error-handler.js - ${staging.dir}/js/nf/nf-universal-capture.js - ${staging.dir}/js/nf/nf-ajax-setup.js - ${staging.dir}/js/nf/login/nf-login.js - - - - true - ${project.build.directory}/${project.build.finalName}/js/nf/logout/nf-logout-all.js - - ${staging.dir}/js/nf/logout/nf-logout.js - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-canvas-all.css - - ${staging.dir}/css/reporting-task.css - ${staging.dir}/css/parameter-provider.css - ${staging.dir}/css/controller-service.css - ${staging.dir}/css/processor-configuration.css - ${staging.dir}/css/processor-details.css - ${staging.dir}/css/process-group-configuration.css - ${staging.dir}/css/new-process-group-dialog.css - ${staging.dir}/css/policy-management.css - ${staging.dir}/css/remote-process-group-configuration.css - ${staging.dir}/css/port-configuration.css - ${staging.dir}/css/port-details.css - ${staging.dir}/css/queue-listing.css - ${staging.dir}/css/component-state.css - ${staging.dir}/css/label-configuration.css - ${staging.dir}/css/connection-configuration.css - ${staging.dir}/css/connection-details.css - ${staging.dir}/css/shell.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/new-processor-dialog.css - ${staging.dir}/css/new-port-dialog.css - ${staging.dir}/css/new-controller-service-dialog.css - ${staging.dir}/css/new-reporting-task-dialog.css - ${staging.dir}/css/new-flow-analysis-rule-dialog.css - ${staging.dir}/css/new-parameter-provider-dialog.css - ${staging.dir}/css/new-parameter-context-dialog.css - ${staging.dir}/css/graph.css - ${staging.dir}/css/header.css - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/navigation.css - ${staging.dir}/css/flow-status.css - ${staging.dir}/css/parameter-contexts.css - ${staging.dir}/css/settings.css - ${staging.dir}/css/about.css - ${staging.dir}/css/status-history.css - ${staging.dir}/css/flow-analysis-drawer.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-common-ui.css - - ${staging.dir}/css/common-ui.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-history-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/history.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-provenance-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/provenance.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-summary-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/processor-details.css - ${staging.dir}/css/connection-details.css - ${staging.dir}/css/status-history.css - ${staging.dir}/css/flow-analysis-drawer.css - ${staging.dir}/css/summary.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-counters-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/counters.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-cluster-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/cluster.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-users-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/users.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-bulletin-board-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/bulletin-board.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-login-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/login.css - - - - true - ${project.build.directory}/${project.build.finalName}/css/nf-logout-all.css - - ${staging.dir}/css/main.css - ${staging.dir}/css/banner.css - ${staging.dir}/css/dialog.css - ${staging.dir}/css/logout.css - - - - - - - - - - org.apache.maven.plugins - maven-war-plugin - 3.4.0 - - - assets/**/*, - css/common-ui.css, - css/slick-nifi-theme.css, - css/message-page.css, - css/message-pane.css, - css/nf-common-ui.css, - css/nf-canvas-all.css, - css/nf-history-all.css, - css/nf-provenance-all.css, - css/nf-summary-all.css, - css/nf-counters-all.css, - css/nf-cluster-all.css, - css/nf-users-all.css, - css/nf-bulletin-board-all.css, - css/nf-login-all.css, - css/nf-logout-all.css, - js/*, - js/d3/**/*, - js/codemirror/**/*, - js/jquery/**/*, - js/nf/nf-namespace.js, - js/nf/nf-ng-namespace.js, - js/nf/canvas/nf-ng-canvas-namespace.js, - js/nf/nf-universal-capture.js, - js/nf/nf-authorization-storage.js, - js/nf/nf-storage.js, - js/nf/nf-ajax-setup.js, - js/nf/nf-status-history.js, - js/nf/canvas/nf-canvas-all.js, - js/nf/history/nf-history-all.js, - js/nf/provenance/nf-provenance-all.js, - js/nf/provenance/nf-provenance-lineage.js, - js/nf/summary/nf-summary-all.js, - js/nf/counters/nf-counters-all.js, - js/nf/cluster/nf-cluster-all.js, - js/nf/users/nf-users-all.js, - js/nf/bulletin-board/nf-bulletin-board-all.js, - js/nf/login/nf-login-all.js, - js/nf/logout/nf-logout-all.js, - views/*, - fonts/**/*, - images/*, - resources/*, - images/*, - WEB-INF/**/* - - - - - org.apache.rat - apache-rat-plugin - - - nbactions.xml - src/main/frontend/package.json - src/main/frontend/package-lock.json - src/main/webapp/js/jquery/jquery.base64.js - src/main/webapp/js/codemirror/ - src/main/webapp/fonts/**/* - - - - - - - - - - org.apache.nifi - nifi-web-utils - provided - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json deleted file mode 100644 index d55134b523..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json +++ /dev/null @@ -1,761 +0,0 @@ -{ - "name": "apache-nifi", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "apache-nifi", - "hasInstallScript": true, - "dependencies": { - "angular-material": "1.1.26", - "lodash": "4.17.21", - "url-search-params": "0.6.1", - "qtip2": "3.0.3", - "angular-route": "1.8.3", - "d3": "7.6.1", - "JSON2": "0.1.0", - "angular-messages": "1.8.3", - "moment": "2.29.4", - "angular-mocks": "1.8.3", - "angular-sanitize": "1.8.3", - "angular-resource": "1.8.3", - "jsonlint": "1.6.3", - "font-awesome": "4.7.0", - "jquery-minicolors": "2.1.10", - "jquery-ui-dist": "1.13.2", - "reset.css": "2.0.2", - "angular": "1.8.3", - "angular-aria": "1.8.3", - "jquery": "3.6.4", - "slickgrid": "2.4.45", - "jquery-form": "3.50.0", - "angular-animate": "1.8.3" - }, - "devDependencies": { - "npm-force-resolutions": "^0.0.10" - }, - "engines": { - "node": ">=16.13.2", - "npm": ">=8.1.2" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/JSV": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", - "integrity": "sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==", - "engines": { - "node": "*" - } - }, - "node_modules/jquery-minicolors": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/jquery-minicolors/-/jquery-minicolors-2.1.10.tgz", - "integrity": "sha512-vXG4hz0h97VtmXXXrG6ceM0kjANjMziWfT1L0TZ1PaTEN2AYdJZWCndrGX/ep4AWMGgXsnEfGl/h95Gjm/4eKw==", - "dependencies": { - "jquery": ">= 1.7.x" - } - }, - "node_modules/jsonlint": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz", - "integrity": "sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==", - "dependencies": { - "JSV": "^4.0.x", - "nomnom": "^1.5.x" - }, - "bin": { - "jsonlint": "lib/cli.js" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", - "engines": { - "node": ">=0.10.3" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" - }, - "node_modules/ev-emitter": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-2.1.2.tgz", - "integrity": "sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==" - }, - "node_modules/jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/d3": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz", - "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==", - "dependencies": { - "d3-axis": "3", - "d3-zoom": "3", - "d3-fetch": "3", - "d3-random": "3", - "d3-path": "3", - "d3-time": "3", - "d3-force": "3", - "d3-delaunay": "6", - "d3-chord": "3", - "d3-brush": "3", - "d3-hierarchy": "3", - "d3-dsv": "3", - "d3-selection": "3", - "d3-drag": "3", - "d3-transition": "3", - "d3-time-format": "4", - "d3-dispatch": "3", - "d3-scale-chromatic": "3", - "d3-ease": "3", - "d3-format": "3", - "d3-contour": "4", - "d3-quadtree": "3", - "d3-geo": "3", - "d3-color": "3", - "d3-timer": "3", - "d3-array": "3", - "d3-shape": "3", - "d3-polygon": "3", - "d3-scale": "4", - "d3-interpolate": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/slickgrid": { - "version": "2.4.45", - "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.45.tgz", - "integrity": "sha512-WvygGTaLU9LnMWZSxqW1agwq8IcDGeCZ289vP1E07eh3ffyLm5TGQsYHXvTwWCHtriZBw+L9RFK/h7TsIMcoLQ==", - "dependencies": { - "jquery": ">=1.8.0", - "jquery-ui": ">=1.8.0" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==", - "bin": { - "strip-ansi": "cli.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==", - "dependencies": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jquery-ui": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", - "dependencies": { - "jquery": ">=1.8.0 <4.0.0" - } - }, - "node_modules/JSON2": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/JSON2/-/JSON2-0.1.0.tgz", - "integrity": "sha512-MRguCg79vy8Kx15/CXzoO5pEPi0tQq7T70mL/t1Hv3G+hVfJVO2BZqX3sl2kbWW08GAmzQYSRfWRtQhmK/eaYA==", - "engines": { - "node": "*" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/angular": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz", - "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==", - "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." - }, - "node_modules/reset.css": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/reset.css/-/reset.css-2.0.2.tgz", - "integrity": "sha512-HG5RQLYcAxou3yw+Gnzwan1jJCbOcIBZjwoD/YLWuAd8kkuDI/ZqC0uRhY4ReKOOJaM1Y1kvwebHOwK4P8Sevg==" - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/json-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz", - "integrity": "sha512-MoKIg/lBeQALqjYnqEanikfo3zBKRwclpXJexdF0FUniYAAN2ypEIXBEtpQb+9BkLFtDK1fyTLAsnGlyGfLGxw==", - "dev": true - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/angular-route": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.8.3.tgz", - "integrity": "sha512-kpIcRmDR2+o1FxDVVYy8Rvfab86/7LDbOgTRb9T+X9ewPQiBRuDEnZtM3oJYBiQLvAXDYTJXHV48n/bGE9Mv2g==", - "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." - }, - "node_modules/nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==", - "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", - "dependencies": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - } - }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/angular-material": { - "version": "1.1.26", - "resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.26.tgz", - "integrity": "sha512-DBLsoOP1D1E14EQsECZYabt3Jh1PpvsG8k1aZgaP/Ml57n4stpClzLhCsuTNbtB/pqq9CL8XtpCfB6fhVRWqIQ==", - "deprecated": "For the actively supported Angular Material, see https://www.npmjs.com/package/@angular/material. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward.", - "peerDependencies": { - "angular": "^1.7.2", - "angular-animate": "^1.7.2", - "angular-aria": "^1.7.2", - "angular-messages": "^1.7.2" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jquery-ui-dist": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz", - "integrity": "sha512-oVDRd1NLtTbBwpRKAYdIRgpWVDzeBhfy7Gu0RmY6JEaZtmBq6kDn1pm5SgDiAotrnDS+RoTRXO6xvcNTxA9tOA==", - "dependencies": { - "jquery": ">=1.8.0 <4.0.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/url-search-params": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/url-search-params/-/url-search-params-0.6.1.tgz", - "integrity": "sha512-haKLRCc3JyU8uVBKNRgWJUu+iTgvfaiDZ3RT8OO3Dx0Ypq1G6cY1HhhcAOUL1y1+rfYR+5UcOyxgNcSa7g+Xbg==", - "deprecated": "now available as @ungap/url-search-params" - }, - "node_modules/angular-resource": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.8.3.tgz", - "integrity": "sha512-x3+4w2SyIDEIe6PUBTzcjDFI5MhZNWAPELUxkYK0QMOkOo4w3BN/qhpd+fO1deFiDS23mZKqT8kfctO1IDkCDA==", - "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/angular-mocks": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.8.3.tgz", - "integrity": "sha512-vqsT6zwu80cZ8RY7qRQBZuy6Fq5X7/N5hkV9LzNT0c8b546rw4ErGK6muW1u2JnDKYa7+jJuaGM702bWir4HGw==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/qtip2": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/qtip2/-/qtip2-3.0.3.tgz", - "integrity": "sha512-vfSEVYg1teA4g3RhT9fnBXzEQrkgyU5CrQE8j6WzZs5LBupG+Nq97mFq4BmDKcA6mGSMFiIqm70+ydvWW1KnGg==", - "dependencies": { - "imagesloaded": ">=3.0.0", - "jquery": ">=1.6.0" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/angular-animate": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.3.tgz", - "integrity": "sha512-/LtTKvy5sD6MZbV0v+nHgOIpnFF0mrUp+j5WIxVprVhcrJriYpuCZf4S7Owj1o76De/J0eRzANUozNJ6hVepnQ==", - "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/npm-force-resolutions": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/npm-force-resolutions/-/npm-force-resolutions-0.0.10.tgz", - "integrity": "sha512-Jscex+xIU6tw3VsyrwxM1TeT+dd9Fd3UOMAjy6J1TMpuYeEqg4LQZnATQO5vjPrsARm3und6zc6Dii/GUyRE5A==", - "dev": true, - "dependencies": { - "json-format": "^1.0.1", - "source-map-support": "^0.5.5", - "xmlhttprequest": "^1.8.0" - }, - "bin": { - "npm-force-resolutions": "index.js" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/nomnom/node_modules/underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" - }, - "node_modules/jquery-form": { - "version": "3.50.0", - "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-3.50.0.tgz", - "integrity": "sha512-WcBPCGF5U/ECu5p/2IkezCBcTBqGPwlbCIKyueWAgXxReNhpaOpSpG/dMr9yra42+ylFELzsuoDWuMCuc3lftQ==", - "dependencies": { - "jquery": ">=1.5" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/imagesloaded": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-5.0.0.tgz", - "integrity": "sha512-/0JGSubc1MTCoDKVmonLHgbifBWHdyLkun+R/151E1c5n79hiSxcd7cB7mPXFgojYu8xnRZv7GYxzKoxW8BetQ==", - "dependencies": { - "ev-emitter": "^2.1.2" - } - }, - "node_modules/angular-messages": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.8.3.tgz", - "integrity": "sha512-f/ywtg32lqzX8FnXkBJOyn13lbCbo333/xy/5TTFcsH/gZdXoiuERj+dLTOs8xHCkOeFQhFx0VD0DgtMgSag7A==" - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/angular-sanitize": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.8.3.tgz", - "integrity": "sha512-2rxdqzlUVafUeWOwvY/FtyWk1pFTyCtzreeiTytG9m4smpuAEKaIJAjYeVwWsoV+nlTOcgpwV4W1OCmR+BQbUg==", - "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/angular-aria": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.8.3.tgz", - "integrity": "sha512-qTXclmTW/KGw5JNKKQPcCKKq6hCBZ39jYINmLgMsjUHBAoxULaMRRTaRj/L2VTOjKvK5f9enkx+EUqRqzXDSFQ==", - "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." - } - } -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json deleted file mode 100644 index 6fbb5dd4f9..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "//-01": "Licensed to the Apache Software Foundation (ASF) under one or more", - "//-02": "contributor license agreements. See the NOTICE file distributed with", - "//-03": "this work for additional information regarding copyright ownership.", - "//-04": "The ASF licenses this file to You under the Apache License, Version 2.0", - "//-05": "(the \"License\"); you may not use this file except in compliance with", - "//-06": "the License. You may obtain a copy of the License at", - "//-07": "", - "//-08": "http://www.apache.org/licenses/LICENSE-2.0", - "//-09": "", - "//-10": "Unless required by applicable law or agreed to in writing, software", - "//-11": "distributed under the License is distributed on an \"AS IS\" BASIS,", - "//-12": "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", - "//-13": "See the License for the specific language governing permissions and", - "//-14": "limitations under the License.", - "name": "apache-nifi", - "description": "Apache NiFi 3rd party client side resources.", - "scripts": { - "ci": "npm ci --ignore-scripts", - "preinstall": "npm --ignore-scripts install npm-force-resolutions && npm-force-resolutions" - }, - "dependencies": { - "angular": "1.8.3", - "angular-animate": "1.8.3", - "angular-aria": "1.8.3", - "angular-material": "1.1.26", - "angular-messages": "1.8.3", - "angular-mocks": "1.8.3", - "angular-resource": "1.8.3", - "angular-route": "1.8.3", - "angular-sanitize": "1.8.3", - "d3": "7.6.1", - "font-awesome": "4.7.0", - "jquery": "3.6.4", - "jquery-form": "3.50.0", - "jquery-minicolors": "2.1.10", - "jquery-ui-dist": "1.13.2", - "JSON2": "0.1.0", - "jsonlint": "1.6.3", - "lodash": "4.17.21", - "moment": "2.29.4", - "qtip2": "3.0.3", - "reset.css": "2.0.2", - "slickgrid": "2.4.45", - "url-search-params": "0.6.1" - }, - "devDependencies": { - "npm-force-resolutions": "^0.0.10" - }, - "resolutions": { - "underscore": "1.13.2" - }, - "engines": { - "node": ">=16.13.2", - "npm": ">=8.1.2" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/apache/nifi.git" - }, - "bugs": { - "url": "https://github.com/apache/nifi/issues" - }, - "homepage": "https://github.com/apache/nifi#readme" -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LoginFilter.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LoginFilter.java deleted file mode 100644 index 4b95b2fb7c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LoginFilter.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.nifi.web.filter; - -import org.apache.nifi.web.util.RequestUriBuilder; - -import jakarta.servlet.Filter; -import jakarta.servlet.FilterChain; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URI; - -/** - * Filter for determining appropriate login location. - */ -public class LoginFilter implements Filter { - private static final String OAUTH2_AUTHORIZATION_PATH = "/nifi-api/oauth2/authorization/consumer"; - - private static final String SAML2_AUTHENTICATE_FILTER_PATH = "/nifi-api/saml2/authenticate/consumer"; - - private ServletContext servletContext; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - servletContext = filterConfig.getServletContext(); - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { - final boolean supportsOidc = Boolean.parseBoolean(servletContext.getInitParameter("oidc-supported")); - final boolean supportsSAML = Boolean.parseBoolean(servletContext.getInitParameter("saml-supported")); - - final HttpServletRequest httpServletRequest = (HttpServletRequest) request; - final RequestUriBuilder requestUriBuilder = RequestUriBuilder.fromHttpServletRequest(httpServletRequest); - - if (supportsOidc) { - final URI redirectUri = requestUriBuilder.path(OAUTH2_AUTHORIZATION_PATH).build(); - // Redirect to authorization URL defined in Spring Security OAuth2AuthorizationRequestRedirectFilter - sendRedirect(response, redirectUri); - } else if (supportsSAML) { - final URI redirectUri = requestUriBuilder.path(SAML2_AUTHENTICATE_FILTER_PATH).build(); - // Redirect to request consumer URL defined in Spring Security OpenSamlAuthenticationRequestResolver.requestMatcher - sendRedirect(response, redirectUri); - } else { - filterChain.doFilter(request, response); - } - } - - @Override - public void destroy() { - } - - private void sendRedirect(final ServletResponse response, final URI redirectUri) throws IOException { - final HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.sendRedirect(redirectUri.toString()); - } -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LogoutFilter.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LogoutFilter.java deleted file mode 100644 index 888b15afb3..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/java/org/apache/nifi/web/filter/LogoutFilter.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.nifi.web.filter; - -import org.apache.nifi.web.util.RequestUriBuilder; - -import jakarta.servlet.Filter; -import jakarta.servlet.FilterChain; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URI; - -/** - * Filter for determining appropriate logout location. - */ -public class LogoutFilter implements Filter { - - private static final String OIDC_LOGOUT_URL = "/nifi-api/access/oidc/logout"; - - private static final String SAML_LOCAL_LOGOUT_URL = "/nifi-api/access/saml/local-logout/request"; - - private static final String SAML_SINGLE_LOGOUT_URL = "/nifi-api/access/saml/single-logout/request"; - - private static final String LOGOUT_COMPLETE_URL = "/nifi-api/access/logout/complete"; - - private ServletContext servletContext; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - servletContext = filterConfig.getServletContext(); - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException { - final boolean supportsOidc = Boolean.parseBoolean(servletContext.getInitParameter("oidc-supported")); - final boolean supportsSaml = Boolean.parseBoolean(servletContext.getInitParameter("saml-supported")); - final boolean supportsSamlSingleLogout = Boolean.parseBoolean(servletContext.getInitParameter("saml-single-logout-supported")); - - // NOTE: This filter runs in the web-ui module and is bound to /nifi/logout. Currently the front-end first makes an ajax call - // to issue a DELETE to /nifi-api/access/logout. After successful completion it sets the browser location to /nifi/logout - // which triggers this filter. Since this request was made from setting window.location, the JWT will never be sent which - // means there will be no logged in user or Authorization header when forwarding to any of the URLs below. Instead the - // /access/logout end-point sets a Cookie with a logout request identifier which can be used by the end-points below - // to retrieve information about the user logging out. - - if (supportsOidc) { - sendRedirect(OIDC_LOGOUT_URL, request, response); - } else if (supportsSaml) { - final String logoutUrl = supportsSamlSingleLogout ? SAML_SINGLE_LOGOUT_URL : SAML_LOCAL_LOGOUT_URL; - sendRedirect(logoutUrl, request, response); - } else { - sendRedirect(LOGOUT_COMPLETE_URL, request, response); - } - } - - @Override - public void destroy() { - } - - private void sendRedirect(final String logoutUrl, final ServletRequest request, final ServletResponse response) throws IOException { - final HttpServletRequest httpServletRequest = (HttpServletRequest) request; - final URI targetUri = RequestUriBuilder.fromHttpServletRequest(httpServletRequest).path(logoutUrl).build(); - final HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.sendRedirect(targetUri.toString()); - } -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE deleted file mode 100644 index 0e398e4d81..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE +++ /dev/null @@ -1,798 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -APACHE NIFI SUBCOMPONENTS: - -The Apache NiFi project contains subcomponents with separate copyright -notices and license terms. Your use of the source code for the these -subcomponents is subject to the terms and conditions of the following -licenses. - -This product bundles 'Javascript D3 Library' which is available under a -"3-clause BSD" license. - - Copyright 2010-2017 Mike Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'Javascript D3 Selection Multi Library' which is available under a -"3-clause BSD" license. - - Copyright (c) 2010-2016, Michael Bostock - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * The name Michael Bostock may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -This product bundles 'CodeMirror' which is available under an MIT style license. - - Copyright (C) 2014 by Marijn Haverbeke and others - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'JQuery' which is available under and MIT style license. - (c) 2005, 2014 jQuery Foundation, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'JQuery Event Drag' which is available under an MIT style -license. - Copyright (c) 2008-2015 ThreeDubMedia - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery Form Plugin' which is available under either the MIT -or GPL license. The license in effect here is the MIT license - - Copyright 2006-2013 (c) M. Alsup - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'jQuery UI' which is available under an MIT style license. -For details see http://jqueryui.com - - Copyright 2014 jQuery Foundation and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'jquery.base64.js' which is available under an MIT style license. - - Copyright (c) 2013 Yannick Albert (http://yckart.com/) - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'SlickGrid v2.4' which is available under an MIT style license. - - Copyright (c) 2009-present Michael Leibman and Ben McIntyre, http://github.com/6pac/slickgrid - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'qTip2' which is available under an MIT style license. -For details see http://qtip2.com - - Copyright (c) 2012 Craig Michael Thompson - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'url-search-params' which is available under an MIT style license. -For details see https://github.com/WebReflection/url-search-params - - Copyright (C) 2015 by WebReflection - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jQuery MiniColors' which is available under the MIT License. -For details see http://www.abeautifulsite.net/ - - Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -This product bundles 'json2.js' which is available in the 'public domain'. - For details see https://github.com/douglascrockford/JSON-js - -This product bundles 'reset.css' which is available in the 'public domain'. - For details see http://meyerweb.com/eric/tools/css/reset/ - -This product bundles 'Angular' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'Angular Material' which is available under an MIT license. - - Copyright (c) 2014-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'Angular Aria' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Animate' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Route' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Resource' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Sanitize' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Angular Messages' which is available under an MIT license. - - Copyright (c) 2010-2016 Google, Inc. http://angularjs.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -This product bundles 'Fontello' which is available under an MIT license. - - Copyright (C) 2011 by Vitaly Puzrin - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'jsonlint' which is available under an MIT license. - - Copyright (C) 2012 Zachary Carter - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -This product bundles 'lodash' which is available under an MIT license. - - Copyright JS Foundation and other contributors - - Based on Underscore.js, copyright Jeremy Ashkenas, - DocumentCloud and Investigative Reporters & Editors - - This software consists of voluntary contributions made by many - individuals. For exact contribution history, see the revision history - available at https://github.com/lodash/lodash - - The following license applies to all parts of this software except as - documented below: - - ==== - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ==== - - Copyright and related rights for sample code are waived via CC0. Sample - code is defined as all source code displayed within the prose of the - documentation. - - CC0: http://creativecommons.org/publicdomain/zero/1.0/ - - ==== - - Files located in the node_modules and vendor directories are externally - maintained libraries used by this software which have their own - licenses; we recommend you read them, as their terms may differ from the - terms above. - -This product bundles 'moment' which is available under an MIT license. - - Copyright (c) JS Foundation and other contributors - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/NOTICE b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/NOTICE deleted file mode 100644 index e521283418..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/NOTICE +++ /dev/null @@ -1,11 +0,0 @@ -Apache NiFi -Copyright 2014-2024 The Apache Software Foundation -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -****************** -SIL OFL 1.1 -****************** - -The following binary components are provided under the SIL Open Font License 1.1 - (SIL OFL 1.1) FontAwesome (4.7.0 - https://fontawesome.com/license/free) diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board-min.properties deleted file mode 100644 index 0cef1c6e84..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.bulletin.board.script.tags= -nf.bulletin.board.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties deleted file mode 100644 index a64480f9fb..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties +++ /dev/null @@ -1,33 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.bulletin.board.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.bulletin.board.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas-min.properties deleted file mode 100644 index 194315757f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.canvas.script.tags= -nf.canvas.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties deleted file mode 100644 index 5a03e7d5db..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties +++ /dev/null @@ -1,99 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.canvas.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.canvas.style.tags=\n\ - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster-min.properties deleted file mode 100644 index f16ca376a4..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.cluster.script.tags= -nf.cluster.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties deleted file mode 100644 index f4d0fcbb47..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties +++ /dev/null @@ -1,30 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.cluster.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.cluster.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters-min.properties deleted file mode 100644 index 8be3bb6c56..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.counters.script.tags= -nf.counters.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties deleted file mode 100644 index dd0f334455..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties +++ /dev/null @@ -1,30 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.counters.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.counters.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history-min.properties deleted file mode 100644 index 1a53f77458..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.history.script.tags= -nf.history.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties deleted file mode 100644 index fc744c8aaf..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties +++ /dev/null @@ -1,32 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.history.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.history.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login-min.properties deleted file mode 100644 index fc60809e63..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.login.script.tags= -nf.login.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties deleted file mode 100644 index 83a69b852d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties +++ /dev/null @@ -1,29 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.login.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.login.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout-min.properties deleted file mode 100644 index 4e385da6c6..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.logout.script.tags= -nf.logout.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout.properties deleted file mode 100644 index bdd9b944c6..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/logout.properties +++ /dev/null @@ -1,29 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.logout.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.logout.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance-min.properties deleted file mode 100644 index 9eb30973ab..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.provenance.script.tags= -nf.provenance.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties deleted file mode 100644 index 0f3e96ae7c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.provenance.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.provenance.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary-min.properties deleted file mode 100644 index 1ac220a12c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.summary.script.tags= -nf.summary.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties deleted file mode 100644 index 9f3cc38b0d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties +++ /dev/null @@ -1,47 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.summary.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.summary.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users-min.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users-min.properties deleted file mode 100644 index e87e952c91..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users-min.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.users.script.tags= -nf.users.style.tags=\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties deleted file mode 100644 index 3913788fee..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties +++ /dev/null @@ -1,31 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nf.users.script.tags=\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ -\n\ - -nf.users.style.tags=\n\ -\n\ -\n\ -\n\ -\n\ - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp deleted file mode 100644 index c9ee08d827..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp +++ /dev/null @@ -1,62 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Bulletin Board - - - - ${nf.bulletin.board.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.bulletin.board.script.tags} - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp deleted file mode 100644 index 152435b891..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp +++ /dev/null @@ -1,173 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi - - - - ${nf.canvas.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.canvas.script.tags} - - - - - - - - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp deleted file mode 100644 index a2c76ca43c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp +++ /dev/null @@ -1,68 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Cluster - - - - ${nf.cluster.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.cluster.script.tags} - - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp deleted file mode 100644 index 682338befa..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp +++ /dev/null @@ -1,66 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Counters - - - - ${nf.counters.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.counters.script.tags} - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp deleted file mode 100644 index b107a8970a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp +++ /dev/null @@ -1,69 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi History - - - - ${nf.history.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.history.script.tags} - - - - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp deleted file mode 100644 index 20327f8d00..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp +++ /dev/null @@ -1,66 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Login - - - - - - ${nf.login.style.tags} - - - - - - - - - - - - - - - - - ${nf.login.script.tags} - - - -
- - - - -
- - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/logout.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/logout.jsp deleted file mode 100644 index 26a383371a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/logout.jsp +++ /dev/null @@ -1,57 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Logout - - - - - ${nf.logout.style.tags} - - - - - - - - - - - - - - ${nf.logout.script.tags} - - - -
- -
- - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/message-page.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/message-page.jsp deleted file mode 100644 index e22d16dc6b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/message-page.jsp +++ /dev/null @@ -1,62 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - -<% - // Sanitize the contextPath to ensure it is on this server - // rather than getting it from the header directly - String contextPath = request.getAttribute("contextPath").toString(); -%> - - <%= request.getAttribute("title") == null ? "" : org.apache.nifi.util.EscapeUtils.escapeHtml(request.getAttribute("title").toString()) %> - - - - - - - - - - - - - -
-
<%= request.getAttribute("title") == null ? "" : org.apache.nifi.util.EscapeUtils.escapeHtml(request.getAttribute("title").toString()) %>
- -
<%= request.getAttribute("messages") == null ? "" : org.apache.nifi.util.EscapeUtils.escapeHtml(request.getAttribute("messages").toString()) %>
-
- - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp deleted file mode 100644 index 64e0c9697d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp +++ /dev/null @@ -1,81 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Data Provenance - - - - ${nf.provenance.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.provenance.script.tags} - - - - - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp deleted file mode 100644 index 7a90f28c26..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp +++ /dev/null @@ -1,98 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Summary - - - - ${nf.summary.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.summary.script.tags} - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp deleted file mode 100644 index 273896547b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - - NiFi Users - - - - ${nf.users.style.tags} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${nf.users.script.tags} - - - - - - - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-main.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-main.jsp deleted file mode 100644 index 7950bbb83e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-main.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-utility.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-utility.jsp deleted file mode 100644 index 33e4c41bfe..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/banners-utility.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/bulletin-board/bulletin-board-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/bulletin-board/bulletin-board-content.jsp deleted file mode 100644 index 39f0a027d2..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/bulletin-board/bulletin-board-content.jsp +++ /dev/null @@ -1,43 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
-
-
-
-
- -
-
-
-
-
-
-
- - Auto-refresh - - -
- Last updated:  -
-
-
-
- Clear -
-
\ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp deleted file mode 100644 index 6453da6deb..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp +++ /dev/null @@ -1,44 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
-
-
-
-
-
- -
-

- -

-

- Tagged -

-

- From on branch -

-
-

- Apache NiFi is a framework to support highly scalable and flexible dataflows. - It can be run on laptops up through clusters of enterprise class servers. - Instead of dictating a particular dataflow or behavior it empowers you to design your own - optimal dataflow tailored to your specific environment. -

-
-
-
diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp deleted file mode 100644 index d323482af1..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp +++ /dev/null @@ -1,193 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - -
-
- - - - - - - - -
- -
-
diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp deleted file mode 100644 index 44768ddd41..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-version-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-version-dialog.jsp deleted file mode 100644 index 5a0d2954c4..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-version-dialog.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connection-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connection-configuration.jsp deleted file mode 100644 index 4289083ed5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connection-configuration.jsp +++ /dev/null @@ -1,221 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connections-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connections-dialog.jsp deleted file mode 100644 index 4db2f56d4e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/connections-dialog.jsp +++ /dev/null @@ -1,35 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/controller-service-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/controller-service-configuration.jsp deleted file mode 100644 index 0ad7ed184c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/controller-service-configuration.jsp +++ /dev/null @@ -1,102 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/disable-controller-service-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/disable-controller-service-dialog.jsp deleted file mode 100644 index dd1ac001ae..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/disable-controller-service-dialog.jsp +++ /dev/null @@ -1,76 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/drop-request-status-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/drop-request-status-dialog.jsp deleted file mode 100644 index f2c71d45c3..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/drop-request-status-dialog.jsp +++ /dev/null @@ -1,29 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/enable-controller-service-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/enable-controller-service-dialog.jsp deleted file mode 100644 index f5fc99812b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/enable-controller-service-dialog.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fetch-parameters-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fetch-parameters-dialog.jsp deleted file mode 100644 index 9872d7f7af..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fetch-parameters-dialog.jsp +++ /dev/null @@ -1,204 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fill-color-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fill-color-dialog.jsp deleted file mode 100644 index 4e76325d9a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/fill-color-dialog.jsp +++ /dev/null @@ -1,45 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-drawer.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-drawer.jsp deleted file mode 100644 index ad1f64ab1f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-drawer.jsp +++ /dev/null @@ -1,84 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
-
-
-
Rules analysis pending...
-
-
-
-
Flow Guide
-
-
-
- Show enforced violations -
-
-
- Show warning violations -
-
-
-
NiFi Flow
-
-
- -
-
-
Enforced Rules
-
-
    -
-
- - - -
-
-
Enforced Violations
-
-
    -
    - -
    -
    -
    Warning Violations
    -
    -
      -
      - -
      -
        -
      • View Documentation
      • -
      • Edit Rule
      • -
      -
      - -
      -
        -
      • Violation details
      • -
      • Go to component
      • -
      -
      -
      -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-rule-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-rule-configuration.jsp deleted file mode 100644 index 21b1015b63..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-analysis-rule-configuration.jsp +++ /dev/null @@ -1,86 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp deleted file mode 100644 index 6f339a320e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp +++ /dev/null @@ -1,78 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.connectedNodesCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.threadCounts}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.totalQueued}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerTransmittingCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerNotTransmittingCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerRunningCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerStoppedCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerInvalidCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerDisabledCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerUpToDateCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerLocallyModifiedCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerStaleCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerLocallyModifiedAndStaleCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerSyncFailureCount}} -
      -
      - {{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.statsLastRefreshed}} -
      -
      -
      -
      -
      - - -
      - - -
      -
      -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flowfile-details-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flowfile-details-dialog.jsp deleted file mode 100644 index 043d4632c7..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flowfile-details-dialog.jsp +++ /dev/null @@ -1,118 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp deleted file mode 100644 index b3513b4062..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/import-flow-version-dialog.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/label-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/label-configuration.jsp deleted file mode 100644 index 61725d9080..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/label-configuration.jsp +++ /dev/null @@ -1,33 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/listing-request-status-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/listing-request-status-dialog.jsp deleted file mode 100644 index a0ac89c69a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/listing-request-status-dialog.jsp +++ /dev/null @@ -1,29 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp deleted file mode 100644 index ee7a520021..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp +++ /dev/null @@ -1,174 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - -
      - -
      -
      -
      - - -
      -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-controller-service-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-controller-service-dialog.jsp deleted file mode 100644 index 7cb75eaf33..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-controller-service-dialog.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-flow-analysis-rule-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-flow-analysis-rule-dialog.jsp deleted file mode 100644 index 00288fcf28..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-flow-analysis-rule-dialog.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp deleted file mode 100644 index b7bcb2ee34..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp +++ /dev/null @@ -1,215 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-provider-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-provider-dialog.jsp deleted file mode 100644 index fc0acb6d0b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-provider-dialog.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-port-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-port-dialog.jsp deleted file mode 100644 index b4bd768807..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-port-dialog.jsp +++ /dev/null @@ -1,36 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-process-group-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-process-group-dialog.jsp deleted file mode 100644 index b0d2555823..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-process-group-dialog.jsp +++ /dev/null @@ -1,55 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp deleted file mode 100644 index 7bf9508348..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-registry-client-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-registry-client-dialog.jsp deleted file mode 100644 index 9918d26c2f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-registry-client-dialog.jsp +++ /dev/null @@ -1,40 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-remote-process-group-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-remote-process-group-dialog.jsp deleted file mode 100644 index 524a8243be..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-remote-process-group-dialog.jsp +++ /dev/null @@ -1,113 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-reporting-task-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-reporting-task-dialog.jsp deleted file mode 100644 index e8eadb1ff7..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-reporting-task-dialog.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/override-policy-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/override-policy-dialog.jsp deleted file mode 100644 index b369c481b5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/override-policy-dialog.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-contexts-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-contexts-content.jsp deleted file mode 100644 index f177871405..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-contexts-content.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-provider-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-provider-configuration.jsp deleted file mode 100644 index 0b23b869fc..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/parameter-provider-configuration.jsp +++ /dev/null @@ -1,82 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/policy-management.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/policy-management.jsp deleted file mode 100644 index f9c82f0435..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/policy-management.jsp +++ /dev/null @@ -1,107 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      Access Policies
      -
      - - -
      -
      - - - -
      -
      - - - - -
      -
      -
      -
      - -
      - Last updated:  -
      -
      - - -
      -
      -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-configuration.jsp deleted file mode 100644 index dc9a28bdb0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-configuration.jsp +++ /dev/null @@ -1,65 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-details.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-details.jsp deleted file mode 100644 index d7ae46e980..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/port-details.jsp +++ /dev/null @@ -1,55 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/process-group-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/process-group-configuration.jsp deleted file mode 100644 index 4064ec5cf0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/process-group-configuration.jsp +++ /dev/null @@ -1,181 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      Process Group Configuration
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      Process group name
      - -
      - -
      -
      - -
      -
      -
      -
      Process group parameter context
      -
      -
      -
      -
      -
      Apply recursively
      -
      -
      -
      -
      -
      - Unauthorized -
      -
      -
      -
      Execution Engine
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      Max Concurrent Tasks
      -
      - -
      -
      - -
      -
      -
      -
      Stateless Flow Timeout
      -
      - -
      -
      - -
      -
      -
      -
      -
      Process group FlowFile concurrency
      -
      -
      -
      -
      - -
      -
      -
      -
      Process group outbound policy
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      Default FlowFile Expiration -
      -
      -
      - -
      -
      - -
      -
      -
      -
      Default Back Pressure Object Threshold -
      -
      -
      - -
      -
      - -
      -
      -
      -
      Default Back Pressure Data Size Threshold -
      -
      -
      - -
      -
      - -
      -
      -
      -
      Log File Suffix -
      -
      -
      - -
      -
      - -
      -
      -
      -
      -
      -
      -
      Process group comments
      -
      - -
      -
      - -
      -
      - -
      -
      Apply
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      - Last updated:  -
      -
      - -
      -
      -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/processor-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/processor-configuration.jsp deleted file mode 100644 index 1e42f3edca..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/processor-configuration.jsp +++ /dev/null @@ -1,251 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/queue-listing.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/queue-listing.jsp deleted file mode 100644 index e4a3281e70..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/queue-listing.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/referenced-attributes-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/referenced-attributes-configuration.jsp deleted file mode 100644 index 510f500a92..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/referenced-attributes-configuration.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registry-configuration-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registry-configuration-dialog.jsp deleted file mode 100644 index ecabc22440..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registry-configuration-dialog.jsp +++ /dev/null @@ -1,59 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-port-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-port-configuration.jsp deleted file mode 100644 index a62700c84c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-port-configuration.jsp +++ /dev/null @@ -1,76 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-configuration.jsp deleted file mode 100644 index dac62223e0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-configuration.jsp +++ /dev/null @@ -1,123 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-details.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-details.jsp deleted file mode 100644 index 3388a681bd..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-details.jsp +++ /dev/null @@ -1,123 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-ports.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-ports.jsp deleted file mode 100644 index 672800c6a5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/remote-process-group-ports.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/reporting-task-configuration.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/reporting-task-configuration.jsp deleted file mode 100644 index f77776bf45..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/reporting-task-configuration.jsp +++ /dev/null @@ -1,103 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/revert-local-changes-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/revert-local-changes-dialog.jsp deleted file mode 100644 index ce18052782..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/revert-local-changes-dialog.jsp +++ /dev/null @@ -1,34 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/save-flow-version-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/save-flow-version-dialog.jsp deleted file mode 100644 index 2d4d8a299c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/save-flow-version-dialog.jsp +++ /dev/null @@ -1,57 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/search-users-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/search-users-dialog.jsp deleted file mode 100644 index 26fd7cd9e0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/search-users-dialog.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp deleted file mode 100644 index a89c3679df..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp +++ /dev/null @@ -1,74 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/shell.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/shell.jsp deleted file mode 100644 index fe470ddb6e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/shell.jsp +++ /dev/null @@ -1,31 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/show-local-changes-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/show-local-changes-dialog.jsp deleted file mode 100644 index bdd4d41829..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/show-local-changes-dialog.jsp +++ /dev/null @@ -1,33 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/verification-request-status-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/verification-request-status-dialog.jsp deleted file mode 100644 index 76340a1cd4..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/verification-request-status-dialog.jsp +++ /dev/null @@ -1,29 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/violation-description-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/violation-description-dialog.jsp deleted file mode 100644 index 23dc2d10e1..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/violation-description-dialog.jsp +++ /dev/null @@ -1,28 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/cluster-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/cluster-content.jsp deleted file mode 100644 index 75a43c5b8a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/cluster-content.jsp +++ /dev/null @@ -1,62 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      -
      NiFi Cluster
      -
      -
      -
      -
      -
      - Displaying  of  -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      - Last updated:  -
      -
      -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/node-details-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/node-details-dialog.jsp deleted file mode 100644 index 655d390fe8..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/cluster/node-details-dialog.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/connection-details.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/connection-details.jsp deleted file mode 100644 index f32ecdb763..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/connection-details.jsp +++ /dev/null @@ -1,163 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      Within group
      -
      -
      -
      -
      - -
      -
      -
      -
      - Selected relationships -
      -
      -
      -
      -
      -
      -
       
      -
      -
      -
      -
      -
      -
      -
      -
      -
      Within group
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      Name
      -
      - -
      -
      -
      -
      Id
      -
      - -
      -
      -
      -
      - FlowFile expiration -
      -
      -
      - -
      -
      -
      -
      -
      -
      - Back Pressure
      Object threshold -
      -
      -
      - -
      -
      -
      -
       
      -
      -
      -  
      Size threshold -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      - Load Balance Strategy -
      -
      -
      -
      -
      -
      -
       
      -
      -
      - Attribute Name -
      -
      -
      - -
      -
      -
      -
      -
      - Load Balance Compression -
      -
      -
      -
      -
      -
      -
      -
      -
       
      -
      -
      -
      - Prioritizers -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/counters/counters-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/counters/counters-content.jsp deleted file mode 100644 index 6399d0b520..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/counters/counters-content.jsp +++ /dev/null @@ -1,39 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      -
      NiFi Counters
      -
      -
      - Displaying  of  -
      -
      - -
      -
      -
      -
      -
      -
      -
      - -
      - Last updated:  -
      -
      -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/action-details-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/action-details-dialog.jsp deleted file mode 100644 index b6c6f7871d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/action-details-dialog.jsp +++ /dev/null @@ -1,27 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-content.jsp deleted file mode 100644 index 65257d2c3c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-content.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      NiFi History
      -
      - -
      -
      - A filter has been applied.  - Clear filter -
      - - -
      -
      -
      -
      -
      -
      - -
      - Last updated:  -
      -
      -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-filter-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-filter-dialog.jsp deleted file mode 100644 index b1f2a9e6e2..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-filter-dialog.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-purge-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-purge-dialog.jsp deleted file mode 100644 index a80b7dda40..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/history/history-purge-dialog.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-form.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-form.jsp deleted file mode 100644 index 6339664060..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-form.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-message.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-message.jsp deleted file mode 100644 index 053af818d9..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-message.jsp +++ /dev/null @@ -1,21 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-progress.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-progress.jsp deleted file mode 100644 index 6b08e54e63..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-progress.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-submission.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-submission.jsp deleted file mode 100644 index 508ead3b0b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/login/login-submission.jsp +++ /dev/null @@ -1,20 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/logout/logout-message.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/logout/logout-message.jsp deleted file mode 100644 index 32e700ac61..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/logout/logout-message.jsp +++ /dev/null @@ -1,21 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -

      Logout successful

      -

      You have have successfully logged out. You may now close the window.

      -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/message-pane.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/message-pane.jsp deleted file mode 100644 index cdba1b5d34..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/message-pane.jsp +++ /dev/null @@ -1,33 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/ok-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/ok-dialog.jsp deleted file mode 100644 index 826a1ff0c5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/ok-dialog.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/processor-details.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/processor-details.jsp deleted file mode 100644 index e91080fbd5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/processor-details.jsp +++ /dev/null @@ -1,205 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/lineage-query-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/lineage-query-dialog.jsp deleted file mode 100644 index 891d4b9707..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/lineage-query-dialog.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-content.jsp deleted file mode 100644 index 6ae4ecd4d2..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-content.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -<%@ taglib prefix="c" uri="jakarta.tags.core" %> -
      - - - - -
      NiFi Data Provenance
      - - - -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-event-details-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-event-details-dialog.jsp deleted file mode 100644 index 73898fe9ad..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-event-details-dialog.jsp +++ /dev/null @@ -1,196 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-query-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-query-dialog.jsp deleted file mode 100644 index a999177867..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-query-dialog.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-search-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-search-dialog.jsp deleted file mode 100644 index bfc64cc713..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/provenance/provenance-search-dialog.jsp +++ /dev/null @@ -1,100 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/status-history-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/status-history-dialog.jsp deleted file mode 100644 index 7daac42079..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/status-history-dialog.jsp +++ /dev/null @@ -1,35 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-connection-summary-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-connection-summary-dialog.jsp deleted file mode 100644 index 77a631f891..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-connection-summary-dialog.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-input-port-summary-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-input-port-summary-dialog.jsp deleted file mode 100644 index 854e211295..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-input-port-summary-dialog.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-output-port-summary-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-output-port-summary-dialog.jsp deleted file mode 100644 index c16c53bc96..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-output-port-summary-dialog.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-process-group-summary-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-process-group-summary-dialog.jsp deleted file mode 100644 index f1dbf89dff..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-process-group-summary-dialog.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-processor-summary-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-processor-summary-dialog.jsp deleted file mode 100644 index 1c1132321b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-processor-summary-dialog.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-remote-process-group-summary-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-remote-process-group-summary-dialog.jsp deleted file mode 100644 index 540cd4237c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/cluster-remote-process-group-summary-dialog.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/summary-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/summary-content.jsp deleted file mode 100644 index 8dbfcb6d14..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/summary-content.jsp +++ /dev/null @@ -1,71 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      -
      NiFi Summary
      -
      -
      -
      -
      -
      - Displaying  of  -
      -
      - -
      -
      -
      -
      -
      Primary Node
      -
      -
      -
      -
      - View:  - Single node  Cluster -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      - Last updated:  -
      -
      - -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/system-diagnostics-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/system-diagnostics-dialog.jsp deleted file mode 100644 index 173791a142..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/system-diagnostics-dialog.jsp +++ /dev/null @@ -1,226 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/view-single-node-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/view-single-node-dialog.jsp deleted file mode 100644 index baee3c89c9..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/summary/view-single-node-dialog.jsp +++ /dev/null @@ -1,24 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - -
      diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-delete-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-delete-dialog.jsp deleted file mode 100644 index ac349eb417..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-delete-dialog.jsp +++ /dev/null @@ -1,21 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-dialog.jsp deleted file mode 100644 index 1d206b4b46..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-dialog.jsp +++ /dev/null @@ -1,48 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-policies-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-policies-dialog.jsp deleted file mode 100644 index b38a101ba5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/user-policies-dialog.jsp +++ /dev/null @@ -1,29 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/users-content.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/users-content.jsp deleted file mode 100644 index 00ab7b85d0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/users/users-content.jsp +++ /dev/null @@ -1,41 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -
      -
      -
      NiFi Users
      -
      -
      -
      - Displaying  of  -
      -
      - -
      -
      - -
      -
      -
      -
      -
      - -
      - Last updated:  -
      -
      -
      \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/yes-no-dialog.jsp b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/yes-no-dialog.jsp deleted file mode 100644 index 657d6d9c5e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/yes-no-dialog.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/web.xml b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index ad89f6c92d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,171 +0,0 @@ - - - - nifi - - - - NiFiCanvas - /WEB-INF/pages/canvas.jsp - - - NiFiCanvas - /canvas - - - - - NiFiSummary - /WEB-INF/pages/summary.jsp - - - NiFiSummary - /summary - - - - - NiFiHistory - /WEB-INF/pages/history.jsp - - - NiFiHistory - /history - - - - - NiFiProvenance - /WEB-INF/pages/provenance.jsp - - - NiFiProvenance - /provenance - - - - - NiFiCounters - /WEB-INF/pages/counters.jsp - - - NiFiCounters - /counters - - - - - NiFiUsers - /WEB-INF/pages/users.jsp - - - NiFiUsers - /users - - - - - NiFiCluster - /WEB-INF/pages/cluster.jsp - - - NiFiCluster - /cluster - - - - - BulletinBoard - /WEB-INF/pages/bulletin-board.jsp - - - BulletinBoard - /bulletin-board - - - - - MessagePage - /WEB-INF/pages/message-page.jsp - - - MessagePage - /message - - - - - Login - /WEB-INF/pages/login.jsp - - - Login - /login - - - - - Logout - /WEB-INF/pages/logout.jsp - - - Logout - /logout-complete - - - - - LoginFilter - org.apache.nifi.web.filter.LoginFilter - - - LoginFilter - /login - - - - - LogoutFilter - org.apache.nifi.web.filter.LogoutFilter - - - LogoutFilter - /logout - - - - - SanitizeContextPathFilter - org.apache.nifi.web.filter.SanitizeContextPathFilter - - - SanitizeContextPathFilter - /* - REQUEST - FORWARD - INCLUDE - ERROR - ASYNC - - - - canvas.jsp - /WEB-INF/pages/canvas.jsp - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/about.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/about.css deleted file mode 100644 index 0c29af28dc..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/about.css +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#nf-about { - overflow: hidden; - width: 500px; - height: 500px; - max-height: 450px; -} - -#nf-about-pic { - height: 60%; - background: url(../images/nifi-logo-about.svg) #000000 no-repeat center center; - top: 20%; - position: relative; -} - -#nf-about-pic-container { - height: 40%; - background: #000000; -} - -#nf-version { - font-weight:500; - font-size: 13px; - cursor: pointer; -} - -#nf-about-content p { - padding-top: 9px; - padding-bottom: 9px; - font-size: 15px; - line-height: 15px; -} - -#nf-about-content span.link { - cursor: pointer; - color: #007ed2; - font-weight:900; -} - -#nf-version-detail { - padding: 5px 0 0 5px; - display: none; -} - -#nf-version-detail-tag { - display: none; -} - -#nf-version-detail-commit { - display: none; -} - -#nf-about-content #nf-version-detail p { - font-size: 12px; - padding: 0; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/banner.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/banner.css deleted file mode 100644 index be5dbe3631..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/banner.css +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Banner settings -*/ - -div.main-banner-header { - display: none; - z-index: 100; - font-weight: 300; - font-size: 10px; - text-align: center; - line-height: 12px; - margin: 0px auto; - height: 10px; - background-color: #AABBC3; - z-index: 100; - overflow: hidden; -} - -div.main-banner-footer { - display: none; - position: absolute; - left: 0px; - right: 0px; - bottom: 0px; - height: 10px; - text-align: center; - font-weight: 300; - font-size: 10px; - line-height: 9px; - overflow: visible; - background-color: rgba(249,250,251,0.97); -} - -div.utility-banner-header { - display: none; - z-index: 100; - font-weight: bold; - font-size: 1em; - text-align: center; - line-height: 15px; - color: #7ea3b6; -} - -div.utility-banner-footer { - display: none; - position: absolute; - left: 0px; - right: 0px; - bottom: 0px; - height: 15px; - color: #7ea3b6; - text-align: center; - font-weight: bold; - font-size: 1em; - line-height: 15px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/bulletin-board.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/bulletin-board.css deleted file mode 100644 index b7d9b83537..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/bulletin-board.css +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Bulletin Board Styles -*/ - -#bulletin-board { - position: absolute; - top: 0px; - bottom: 40px; - left: 20px; - right: 20px; -} - -#bulletin-board-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 30px; -} - -#bulletin-board-refresh-container { - position: absolute; - right: 20px; - bottom: 0px; - left: 20px; -} - -#bulletin-board-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#bulletin-board-last-refreshed { - font-weight: bold; -} - -#bulletin-board-header { - padding-top: 10px; -} - -#bulletin-board-status-container { - float: right; -} - -#bulletin-error-message { - color: #9F6000; - font-size: 9px; - font-weight: bold; - line-height: normal; - display: none; - float: left; - margin-top: 5px; - margin-right: 5px; -} - -#clear-bulletins-button { - margin-top: 8px; -} - -/* bulletin board */ - -#bulletin-board-container { - position: absolute; - top: 100px; - bottom: 50px; - overflow: auto; - left: 0px; - right: 0px; -} - -div.bulletin-action { - font-family: Roboto; - font-size: 13px; - border-bottom: 1px solid #eaeef0; - line-height: 1.3; - padding: 10px; -} - -div.bulletin { - margin-left: 4px; - margin-bottom: 15px; - line-height: normal; -} - -div.bulletin-info { - float: left; -} - -div.bulletin-timestamp { - color: #666; - font-weight: bold; - float: left; - margin-right: 5px;; -} - -div.bulletin-node { - float: left; - margin-right: 5px; - font-weight: bold; -} - -div.bulletin-severity { - float: left; - margin-right: 5px; - width: 50px; -} - -div.bulletin-normal { - color: #016131; - font-weight: bold; -} - -div.bulletin-error { - color: #ec3030; - font-weight: bold; -} - -div.bulletin-warn { - color: #bda500; - font-weight: bold; -} - -div.bulletin-source { - width: 260px; - float: left; - margin-right: 5px; -} - -div.bulletin-link { - color: #264c58; - text-decoration: underline; - cursor: pointer; -} - -pre.bulletin-message { - float: left; - white-space: pre-wrap; - margin-top: 2px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css deleted file mode 100644 index 240dd14765..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@import url(processor-configuration.css); -@import url(processor-details.css); -@import url(process-group-configuration.css); -@import url(policy-management.css); -@import url(queue-listing.css); -@import url(remote-process-group-configuration.css); -@import url(controller-service.css); -@import url(component-state.css); -@import url(reporting-task.css); -@import url(parameter-provider.css); -@import url(port-configuration.css); -@import url(port-details.css); -@import url(label-configuration.css); -@import url(connection-configuration.css); -@import url(connection-details.css); -@import url(shell.css); -@import url(dialog.css); -@import url(new-processor-dialog.css); -@import url(new-port-dialog.css); -@import url(new-controller-service-dialog.css); -@import url(new-reporting-task-dialog.css); -@import url(new-flow-analysis-rule-dialog.css); -@import url(new-parameter-provider-dialog.css); -@import url(new-parameter-context-dialog.css); -@import url(new-process-group-dialog.css); -@import url(graph.css); -@import url(header.css); -@import url(main.css); -@import url(banner.css); -@import url(navigation.css); -@import url(flow-status.css); -@import url(parameter-contexts.css); -@import url(settings.css); -@import url(about.css); -@import url(message-pane.css); -@import url(common-ui.css); -@import url(status-history.css); -@import url(../fonts/flowfont/flowfont.css); -@import url(../assets/font-awesome/css/font-awesome.css); -@import url(flow-analysis-drawer.css); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/cluster.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/cluster.css deleted file mode 100644 index c71077d0b5..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/cluster.css +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Cluster Styles -*/ - -#cluster { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#cluster-filter-controls { - z-index: 1; -} - -#cluster-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 30px; -} - -#cluster-tabs-content { - top: 80px; -} - -#cluster-refresh-container { - position: absolute; - bottom: 0px; - left: 20px; - right: 20px; -} - -#cluster-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-last-refreshed { - font-weight: bold; -} - -#cluster-header { - padding-top: 10px; -} - -/* cluster table */ - -.cluster-tabbed-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 47px; - right: 0px; - min-height: 150px; -} - -#cluster-tabs-content .slick-cell.cell-right { - text-align: right; - padding-right: 16px; - padding-left: 2px; -} - -#cluster-tabs-content .slick-header-column.header-right { - text-align: right; -} - -span.sorted { - text-decoration: underline; -} - -/* user details dialog */ - -#node-events { - max-height: 200px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/common-ui.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/common-ui.css deleted file mode 100644 index f07bfd38d6..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/common-ui.css +++ /dev/null @@ -1,734 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), - local('Roboto-Light'), - url('../fonts/Roboto/Roboto-Light.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 300; - src: local('Roboto LightItalic'), - local('Roboto-LightItalic'), - url('../fonts/Roboto/Roboto-LightItalic.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: normal; - src: local('Roboto Regular'), - local('Roboto-Regular'), - url('../fonts/Roboto/Roboto-Regular.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), - local('Roboto-Medium'), - url('../fonts/Roboto/Roboto-Medium.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: bold; - src: local('Roboto Bold'), - local('Roboto-Bold'), - url('../fonts/Roboto/Roboto-Bold.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: normal; - src: local('Roboto Italic'), - local('Roboto-Italic'), - url('../fonts/Roboto/Roboto-Italic.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: normal; - src: local('RobotoSlab Regular'), - local('RobotoSlab-Regular'), - url('../fonts/Roboto_Slab/RobotoSlab-Regular.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; - src: local('RobotoSlab Bold'), - local('RobotoSlab-Bold'), - url('../fonts/Roboto_Slab/RobotoSlab-Bold.ttf') format('truetype'); -} - -/*remove margin from font awesome*/ -i[class^="fa-"]:before, i[class*=" fa-"]:before { - margin: -1px; -} - -/*remove margin from flowfont*/ -i[class^="icon-"]:before, i[class*=" icon-"]:before { - margin: -2px; -} - -/*shift rotated font awesome icons*/ -.fa-rotate-90 { - left: -2px !important; -} - -body { - display: block; - font-family: Roboto, sans-serif; - overflow: hidden; - color: #262626; -} - -body.md-default-theme, body, html.md-default-theme, html { - background-color: white; -} - -button { - border-radius: 0; -} - -.value-color { - color: #775351; -} - -ul.links li { - float: left; - display: block; - margin-left: 10px; - padding: 4px; - text-align: center; - font-size: 11px; - font-weight: normal; - text-decoration: none; -} - -ul.links span.header-link-over { - color: #264c58; - text-decoration: underline; -} - -/* - General Styles -*/ - -.unselectable { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.clear { - clear: both; -} - -.pointer { - cursor: pointer !important; -} - -.hidden { - display: none; -} - -.blank, .unset, .sensitive { - font-weight: normal !important; - color: #a8a8a8 !important; -} - -.required { - font-weight: bold !important; -} - -.ellipsis { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.ellipsis.multiline { - white-space: normal; -} - -.table-cell { - overflow: hidden; - white-space: nowrap; - line-height: normal; - float: left; - margin-top: 4px; -} - -label { - font-family: 'Roboto Slab', serif; - font-size: 12px; - color: #262626; /*base-font-color*/ - letter-spacing: 0.05rem; - display: block; - margin-bottom: 2px; -} - -/* placeholder styles */ - -*::placeholder { - color: #728e9b; -} -*::-webkit-input-placeholder { - color: #728e9b; -} -*:-moz-placeholder { - color: #728e9b; -} -*::-moz-placeholder { - color: #728e9b; -} -*:-ms-input-placeholder { - color: #728e9b; -} - -input[type=text], input[type=password] { - background-color: #eaeef0; - border: 1px solid #eaeef0; - font-family: Roboto, sans-serif; - font-size: 13px; - padding: 0px 10px 0px 10px; - resize: none; - height: 32px; - width: 100%; - -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ - -moz-box-sizing: border-box; /* Firefox, other Gecko */ - box-sizing: border-box; - color: #262626; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -input:focus, textarea:focus { - background-color: #fff; - border: 1px solid #004849; /*link-color*/ - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); - outline: none; -} - -textarea { - background-color: #eaeef0; - border: 1px solid #eaeef0; - font-family: Roboto, sans-serif; - font-size: 13px !important; - padding: 10px 10px; - resize: vertical; - height: 32px; - width: 100%; - -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ - -moz-box-sizing: border-box; /* Firefox, other Gecko */ - box-sizing: border-box; - color: #262626; - white-space: pre-wrap; - overflow-y: auto; - overflow-x: hidden; - text-overflow: ellipsis; -} - -textarea[disabled] { - background: #b2b8c1; - color: #dbdee2; - border: 1px solid #b2b8c1; -} - -ul.property-info { - list-style-type: disc; - margin-left: 10px; -} - -ul.property-info li { - padding: 0px 0px; - margin-left: 10px; -} - -div.nf-checkbox { - cursor: pointer; - width: 12px; - height: 12px; - float: left; - margin-right: 4px; -} - -.nf-checkbox-label { - cursor: pointer; -} - -div.nf-checkbox.disabled { - opacity: .5; - cursor: not-allowed; -} - -div.checkbox-unchecked { - background: transparent url(../images/inputCheckbox.png) no-repeat scroll top left; -} - -div.checkbox-checked { - background: transparent url(../images/inputCheckbox.png) no-repeat scroll top right; -} - -div.ajax-loading { - background-image: url(../images/iconLoading.gif); -} - -div.ajax-complete:before { - font-family: FontAwesome; - content: "\f00c"; - font-size: 16px; - color: #70B59A; -} - -div.ajax-error:before { - font-family: FontAwesome; - content: "\f00d"; - font-size: 16px; - color: #D18686; -} - -.refresh-button { - float: left; -} - -.ui-draggable .dialog-header { - cursor: move; -} - -span.link:focus { - outline: none; -} - -span.link { - cursor: pointer; - color: #004849; /*link-color*/ - font-weight: normal; - display: inline-block; - border-bottom: 1px solid #CCDADB; - font-size: 13px; - font-family: Roboto; -} - -span.link-over { - border-bottom: 1px solid #004849; -} - -span.link-bold { - font-weight: bold; - border-bottom: none; -} - -button { - height: 28px; - width: 28px; - border: 1px solid #CCDADB; /*tint link-color 80%*/ - background-color: rgba(249, 250, 251, 0.97); - color: #004849; -} - -button.refresh-button { - font-size: 16px; -} - -button:hover { - border: 1px solid #004849; /*link-color*/ -} - -button:disabled { - color: #CCDADB !important; /*tint link-color 80%*/ - cursor: not-allowed; - border: 1px solid #CCDADB; /*tint link-color 80%*/ -} - -/* angular material override */ - -button:focus { - outline: none; -} - -div:focus { - outline: none; -} - -input:focus { - background-color: #fff; - border: 1px solid #004849; /*link-color*/ - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); - outline: none; -} - -/* filter controls */ - -.filter-controls { - position: absolute; - top: 10px; -} - -.filter-container { - height: 32px; - width: 100%; - float: left; -} - -.filter { - margin-right: 3px; - float: left; -} - -input.filter { - width: 173px; -} - -.filter-type, -.filter-status-dropdown { - float: left; - width: 148px; -} - -.filter-status { - margin-top: 10px; - color: #775351; - font-family: Roboto; - font-size: 13px; - font-weight: 500; - margin-bottom: 5px; -} - -.setting-field.summary-filter-primary-node-container { - display: inline-block; - margin-left: 10px; - margin-top: 8px; - width: auto; -} - -/* overlay icon styles */ - -.stop-configure-icon.fa-stop { - display : inline-block; - font-size: 15px; - position : relative; - top : -1px; -} - -.stop-configure-icon::after { - content : "\f013"; - font-size: 14px; - position : relative; - top : 0px; - left : -8px; - color : #ffffff; - -webkit-text-stroke-width : 1px; - -webkit-text-stroke-color : #004849; - -} - -*.stop-configure-icon + span { - display : inline-block; - padding : 0px 0px 0px 0px; - margin-left : -10px; -} - -/* buttons */ - -button.fa { - color: #004849; - font-size: 16px; - cursor: pointer; - line-height: 25px; -} - -button.icon { - color: #004849; - font-size: 16px; -} - -div.button-icon span { - padding-left: 5px; - vertical-align: middle; - font-style: normal; - font-family: Roboto; - font-size: 11px; -} - -div.button-icon { - float: left !important; - margin-left: 0; - font-size: 18px !important; -} - -div.button.auto-width, -div.button-icon.auto-width { - width : auto !important; -} - -div.button { - height: 32px; - width: 90px; - padding: 0 8px; - text-transform: uppercase; - font-weight: 500; - font-size: 11px; - line-height: 33px; - text-align: center; - border: 0px; - float: right; - position: relative; - background: #728E9B; - color: #fff; - cursor: pointer; -} - -div.button.disabled-button { - color: #a8a8a8 !important; - cursor: not-allowed; - opacity: 0.7; -} - -div.button:hover:not(.disabled-button) { - background-color: #004849; -} - -div.secondary-button { - height: 32px; - width: 90px; - padding: 0 8px; - text-transform: uppercase; - font-weight: 500; - font-size: 11px; - line-height: 33px; - text-align: center; - border: 0px; - float: right; - position: relative; - background: #E3E8EB; - color: #004849; - cursor:pointer -} - -div.secondary-button:hover { - background-color: #C7D2D7; -} - -/* tooltips */ - -.qtip-nifi { - border: 0px !important; - border-radius: 2px; - background-color: rgba(0, 0, 0, 0.54) !important; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); - font-family: Roboto; - font-weight: 500; - font-size: 13px; - color: #fff !important; -} - -div.nifi-tooltip { - border: 0px !important; - border-radius: 2px; - background-color: rgba(0, 0, 0, 0.80) !important; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); - font-family: Roboto; - font-weight: 500; - font-size: 13px; - color: #fff !important; - max-width: 500px; - word-wrap: break-word; -} - -.scrollable { - border-bottom: 1px solid #d0dbe0; -} - -/*context menu */ - -.context-menu { - display: none; - position: absolute; - z-index: 10006; - font-size: 13px; - padding:3px 0; - background-color:rgba(249,250,251,0.97); /*tint base-color 96%*/ - border:1px solid #004849; /*link-color*/ - box-shadow: 0 3px 6px rgba(0,0,0,0.3); - width: 215px; - max-height: inherit; - color:#004849 -} - -div.context-menu-item { - cursor: pointer; - height: 20px; - padding-top: 4px; - padding-left: 4px; -} - -div.context-menu-item.hover { - background-color:#C7D2D7; /*tint base-color 60%*/ - box-shadow:0 1px 1px rgba(0,0,0,0.15); -} - -.context-menu-item-img { - float: left; - width: 16px; - height: 16px; - background-size: cover; -} - -.context-menu-item-img.fa { - position: relative; - top: 2px; - left: 2px; -} - -.context-menu-item-img.icon { - position: relative; - top: 1px; - left: 3px; -} - -div.context-menu-item-text { - margin-left: 4px; - line-height: 16px; - float: left; - color: #262626; -} - -div.context-menu-group-item-img { - float: right; - width: 16px; - height: 16px; - background-size: cover; - font-size: 14px; -} - -div.context-menu-item-separator { - height: 1px; - background-color: #C7D2D7; - margin-top: 3px; - margin-bottom: 3px; -} - -/* search */ - -li.search-no-matches { - padding: 4px; - font-weight: bold; - color: #aaa; - font-style: italic; -} - -/* progress bars */ - -md-progress-linear > div { - background-color: #eaeef0 !important; -} - -.setting { - margin-bottom: 15px; -} - -.setting-name { - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - text-transform: capitalize; - padding-bottom: 4px; - color: #262626; -} - -.setting-name .fa { - color: #004849; - margin-left: 5px; -} - -.setting-field .fa { - color: #004849; - margin-left: 5px; - line-height: 22px; -} - -.setting-field { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; -} - -.setting-header { - color: #728e9b; - font-size: 12pt; - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; - padding-bottom: 20px; - text-overflow: ellipsis; -} - -.CodeMirror { - border: 1px solid #aaa; - font-family: monospace; - background-color: #fff; - cursor: default; - line-height: normal; -} - -/* jquery ui autocomplete override */ - -.ui-autocomplete { - overflow: auto !important; - border: 1px solid #aaaaaa !important; - font-size: 12px !important; - font-family: Roboto !important; -} - -.ui-menu .ui-menu-item a { - display: block; - border: 1px solid transparent; - line-height: 1.5; - margin: 0 !important; - color: #333 !important; -} - -.ui-menu .ui-menu-item a.ui-state-active { - background: #D4E0E5 !important; - border: 1px solid #999999; -} - -/* jquery ui slider override */ - -.ui-slider-handle.ui-state-active { - background: #fff !important; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css deleted file mode 100644 index e0945ffb35..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Component state filter -*/ - -#component-state-partial-results-container { - float: left; - color: #9f6000; - font-size: 9px; - font-weight: bold; - line-height: normal; - margin-top: 34px; -} - -#component-state-filter-controls { - margin-top: 10px; -} - -#component-state-filter { - width: 173px; -} - -/* - Component state table -*/ - -#component-state-table { - overflow: hidden; - position: absolute; - top: 202px; - left: 0px; - right: 0px; - bottom: 0px; - min-height: 150px; -} - -#component-state-description{ - height: 75px; - line-height: normal; - color: #775351; - font-size: 13px; - font-weight: 500; -} - -/* - Clear -*/ - -#clear-link-container { - position: absolute; - top: 180px; - right: 20px; -} - -#clear-link.disabled { - color: #bbb; - font-style: italic; - text-decoration: none !important; - cursor: default !important; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-configuration.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-configuration.css deleted file mode 100644 index 378cf54f46..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-configuration.css +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#connection-configuration { - z-index: 1301; - display: none; - width: 700px; - height: 400px; -} - -#connection-configuration div.configuration-tab { - overflow: auto; - display: none; -} - -/* - Connection details. -*/ - -div.connection-terminal-label { - height: 26px; -} - -/* - Connection settings. -*/ - -#relationship-names-container { - height: 160px; - padding-right: 0; -} - -#relationship-names { - height: 150px; - overflow-y: auto; - overflow-x: hidden; - border: 0 solid #cccccc; - padding: 2px; - padding-bottom: 0; -} - -div.available-relationship-container { - margin-bottom: 4px; -} - -#connection-configuration div.relationship-name { - display: inline-block; - line-height: normal; -} - -#connection-name-container { - clear: left; - float: left; - margin-top: 10px; - width: 180px; -} - -div.undefined { - color: #aaa; - font-style: italic; -} - -/* prioritizers */ - -#prioritizer-available, #prioritizer-selected { - list-style-type: none; - margin: 0px; - background: #eaeef0; - min-height: 32px; - margin-bottom: 5px; - padding: 2px; -} - -#prioritizer-available li, #prioritizer-selected li { - margin: 2px; - padding: 5px; - cursor: pointer; - font-size: 1em; - height: 12px; - overflow: hidden; -} - -#prioritizer-available li { - background: #fff; - border-top: 1px solid #CCDADB; - border-right: 1px solid #CCDADB; - border-bottom: 1px solid #CCDADB; - border-left: 1px solid #CCDADB; - color: #004849; - font-weight: 500; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; - line-height: 32px; - height: 32px; - padding: 0px 10px; - box-shadow:0 1px 1px rgba(0,0,0,0.4); -} - -#prioritizer-selected li { - background: #355B6A; - border-top: 1px solid #AAC1CE; - border-right: 1px solid #85A6B8; - border-bottom: 1px solid #618BA3; - border-left: 1px solid #85A6B8; - color: #fff; - font-weight: bold; - line-height: 32px; - height: 32px; - padding: 0px 10px; -} - -#prioritizer-selected .draggable-control { - float: right; -} - -#prioritizer-selected .fa-remove { - color: #fff; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-details.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-details.css deleted file mode 100644 index c58febc4c1..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/connection-details.css +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Connection details styles. Uses many styles from the connection configuration stylesheet. -*/ - -#connection-details { - z-index: 1301; - display: none; - width: 700px; - height: 500px; -} - -#connection-details div.configuration-tab { - padding: 10px; - display: none; -} - -#read-only-relationship-names { - border: 0 solid #CCCCCC; - overflow-x: hidden; - overflow-y: auto; - padding: 2px 2px 0; -} - -#connection-details div.relationship-name { - display: inline-block; - line-height: normal; -} - -.multi-column-settings { - display: flex; -} - -.multi-column-settings .setting { - flex-grow: 1; -} - -.multi-column-settings .separator { - min-width: 5px; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/controller-service.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/controller-service.css deleted file mode 100644 index 967e5f23c0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/controller-service.css +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Controller service configuration styles. -*/ - -#controller-service-configuration { - position: absolute; - overflow: hidden; - width: 800px; - height: 450px; - font-size: 10px; - z-index: 1301; - display: none; -} - -#controller-service-configuration-advanced { - display: none; -} - -.controller-service-editable { - height: 32px; -} - -/* controller-service settings */ - -#controller-service-bundle { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -/* - Service references -*/ - -#controller-service-referencing-components { - border: 0 solid #CCCCCC; - overflow: auto; - padding: 2px; -} - -div.referencing-component-block { - margin-bottom: 6px; -} - -span.referencing-component-title { - margin-left: 5px; - font-weight: bold -} - -span.referencing-component-count { - margin-left: 5px; - color: #aaa; -} - -ul.referencing-component-listing { - margin-left: 20px; - margin-bottom: 6px; -} - -ul.referencing-component-listing li { - margin-bottom: 6px; - white-space: nowrap; -} - -div.referencing-component-state { - width: 13px; -} - -div.referencing-component-state.disabled:before { - content: '\e802'; - font-family: flowfont; -} - -div.referencing-component-state.enabled:before { - content: '\f0e7'; - font-family: FontAwesome; -} - -div.referencing-component-bulletins { - float: left; - margin-left: 5px; - width: 12px; - height: 12px; - background-color: transparent; - display: none; -} - -div.referencing-component-bulletins:before { - font-family: FontAwesome; - content: "\f24a"; - font-size: 16px; - color: #004849; -} - -div.service.expansion-button { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; -} - -span.referencing-component-active-thread-count { - margin-left: 5px; - float: left; -} - -span.referencing-component-name { - margin-left: 5px; - margin-right: 5px; -} - -span.referencing-component-type { - color: #aaa; - font-style: italic; -} - -div.referencing-component-references { - margin-left: 20px; - margin-top: 6px; - clear: left; -} - -div.controller-service-canceling { - position: absolute; - bottom: 10px; - right: 8px; -} - -/* - Comments -*/ - -#controller-service-comments { - height: 100%; -} - -#read-only-controller-service-comments { - height: 100%; - white-space: pre-wrap; -} - -/* - Disable dialog -*/ - -#disable-controller-service-name { - float: left; - max-width: 280px; - text-overflow: ellipsis; -} - -#disable-controller-service-bulletins { - float: left; - margin-left: 5px; - width: 12px; - height: 12px; - background-color: transparent; - display: none; -} - -#disable-controller-service-referencing-components { - border: 0 solid #CCCCCC; - padding: 2px; - overflow: auto; - white-space: nowrap; -} - -/* - Enable dialog -*/ - -#enable-controller-service-scope-container { - height: 48px; -} - -#enable-controller-service-name { - float: left; - max-width: 280px; - text-overflow: ellipsis; -} - -#enable-controller-service-bulletins { - float: left; - margin-left: 5px; - width: 12px; - height: 12px; - background-color: transparent; - display: none; -} - -#enable-controller-service-scope { - float: left; - width: 225px; -} - -#enable-controller-service-referencing-components { - border: 0 solid #ccc; - padding: 2px; - overflow: auto; - white-space: nowrap; -} - -/* enable, disable progress */ - -div.disable-referencing-components, div.enable-referencing-components { - width: 16px; - height: 16px; - background-color: transparent; - float: right; -} - -#enable-controller-service-progress, #disable-controller-service-progress { - margin-top: 2px; -} - -#enable-controller-service-progress li, #disable-controller-service-progress li { - line-height: 16px; -} - -/* - New inline controller service dialog -*/ - -div.new-inline-controller-service-requirement, div.new-inline-controller-service-combo, input.new-inline-controller-service-name, div.new-inline-controller-service-bundle, div.new-inline-controller-service-tags { - margin-bottom: 15px; -} - -div.new-inline-controller-service-button-container { - position: absolute; - left: 0; - bottom: 0; - right: 0; - padding: 0 8px 10px; -} - -/* Status bar button icon */ -#controller-service-configuration div.dialog-status-bar div.button-icon.fa-hourglass-end { - font-size : 11px !important; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/counters.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/counters.css deleted file mode 100644 index 40bb153beb..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/counters.css +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Counters Styles -*/ - -#counters { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#counters-header-and-filter { - height: 98px; -} - -#counters-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 30px; -} - -#counters-refresh-container { - position: absolute; - bottom: 0px; - left: 20px; - right: 20px; -} - -#counters-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#counters-last-refreshed { - font-weight: bold; -} - -#counters-header { - padding-top: 10px; -} - -/* counters table */ - -#counters-table { - position: absolute; - top: 98px; - left: 0px; - bottom: 47px; - right: 0px; - min-height: 150px; -} - -#counters-table div.slick-viewport { - overflow-x: hidden !important; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css deleted file mode 100644 index daaaa0c966..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css +++ /dev/null @@ -1,448 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Specific dialog settings. -*/ - -#fill-color-dialog { - display: none; - width: 240px; - height: 470px; -} - -#fill-color-value { - width: 175px; -} - -#fill-color-processor-preview { - width: 173px; - height: 66px; - border-width: 1px; - border-style: solid; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25); -} - -#fill-color-processor-preview-icon { - float: left; - width: 25px; - height: 25px; -} - -#fill-color-processor-preview-icon:before { - margin-top: 5px; - margin-left: 4px; - font-size: 15px; -} - -#fill-color-processor-preview-name { - margin-left: 35px; - line-height: 25px; - font-size: 12px; - height: 25px; -} - -#fill-color-label-preview { - width: 83px; - height: 83px; - font-weight: bold; - border: 1px solid rgba(0,0,0,0.25); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25); -} - -#fill-color-label-preview-value { - margin-left: 10px; - margin-top: 10px; - float: left; - font-size: 12px; -} - -div.connections-component-name { - float: left; - width: 390px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#connections-dialog { - height: 400px; - width: 680px; -} - -#connections-context { - padding: 5px; -} - -#connections-source { - float: left; -} - -#connections-destination { - float: left; - margin-left: 360px; -} - -#connections-container { - width: 612px; - padding: 5px; - overflow-y: auto; -} - -div.source-destination-connection { - margin-bottom: 10px; -} - -div.connection-entry { - float: left; - width: 190px; - margin-left: 10px; -} - -div.connection-entry-name { - float: left; - width: 170px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -div.destination-component { - float: left; - width: 190px; - margin-left: 10px; -} - -div.destination-component-name { - float: left; - width: 170px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -div.destination-input-port { - margin-left: 20px; -} - -div.destination-input-port-name { - float: left; - width: 150px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -div.source-component { - float: left; - width: 190px; -} - -div.source-component-name { - float: left; - width: 170px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -div.source-output-port { - margin-left: 20px; -} - -div.source-output-port-name { - float: left; - width: 150px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -div.go-to-link { - color: #264c58; - text-decoration: underline; - cursor: pointer; -} - -#drop-request-percent-complete { - margin-top: 10px; - border-radius: 0; -} - -#drop-request-percent-complete .ui-progressbar-value { - border-radius: 0; -} - -#listing-request-percent-complete { - margin-top: 10px; - border-radius: 0; -} - -#listing-request-percent-complete .ui-progressbar-value { - border-radius: 0; -} - -div.progress-label { - color: #000000; - display: block; - font-weight: bold; - text-align: center; - margin-top: 4px; -} - -/* - Component Version - */ - -#component-version-dialog { - width: 550px; - height: 575px; -} - -/* - Save Flow Version - */ - -#save-flow-version-registry-container { - display: flex; -} - -#save-flow-version-description-field, #save-flow-version-change-comments { - height: 85px; -} - -#save-flow-version-name-field, #save-flow-version-name { - width: 100%; - margin-right: 10px; -} - -/* - Import Flow Version - */ - -#import-flow-version-table { - overflow: hidden; - position: absolute; - top: 307px; - left: 0px; - right: 0px; - bottom: 0px; - height: 118px; -} - -#import-flow-description-container { - border-color: rgba(0,0,0,0.12); - border-style: solid; - border-width: 0; - height: 48px; - overflow-y: auto; - width: calc(100% - 2px); -} - -#import-flow-version-details { - padding: 2px; -} - -#change-version-percent-complete { - margin-top: 10px; - border-radius: 0; -} - -#change-version-percent-complete .ui-progressbar-value { - border-radius: 0; -} - -#import-flow-version-dialog .keep-parameter-context { - align-items: center; - display: flex; -} - -.keep-parameter-context .nf-checkbox-label { - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; -} - -.keep-parameter-context .fa { - color: #004849; - font-size: 12px; - line-height: 22px; - margin-left: 5px; -} - -/* - Local changes - */ - -#revert-local-changes-table, #show-local-changes-table { - position: absolute; - top: 78px; - left: 0px; - right: 0px; - bottom: 0px; - height: 350px; -} - -#revert-local-changes-filter, #show-local-changes-filter { - width: 173px; -} - -div.local-changes-message { - font-size: 13px; -} - -/* - Referenced Attributes - */ - -#referenced-attributes-table { - position: relative; - height: 240px; -} - -#add-referenced-attribute { - float: right; - margin-bottom: 4px; - font-size: 16px; - text-transform: uppercase; -} - -#referenced-attributes-title { - font-size: 12px; - float: left; - height: 28px; - line-height: 28px; - margin-left: 6px; -} - -#verification-request-percent-complete { - margin-top: 10px; - border-radius: 0; -} - -div.verification-results { - display: none; - position: absolute; - top: calc(60% - -10px); - right: 0; - left: 0; - bottom: 0; -} - -div.verification-results-header { - color: #728e9b; - font-size: 16px; - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; -} - -div.verification-results-listing { - border: 0 solid #CCCCCC; - overflow: auto; - position: absolute; - top: 20px; - right: 0; - left: 0; - bottom: 0; - padding: 10px; -} - -div.verification-result { - margin-bottom: 8px; -} - -div.verification-result-outcome { - float: left; - font-size: 14px; - width: 14px; - margin-right: 10px; -} - -div.verification-result-outcome.fa-check { - color: #4fa885; -} - -div.verification-result-outcome.fa-times { - color: #e21a1a; -} - -div.verification-result-outcome.fa-exclamation { - color: #eB8f11; -} - -div.verification-result-step-name { - float: left; - font-size: 14px; - font-weight: 500; -} - -div.verification-result-explanation { - font-size: 12px; - margin-left: 24px; - margin-top: 2px; -} - -/* - Registry configuration dialog - */ - -#registry-description, -#registry-description-config { - height: 85px; -} - -#new-registry-description { - height: 85px; -} - -/* - General dialog styles. -*/ - -ul.result { - list-style-type: disc; - margin-left: 15px; -} - -ul.result li { - padding: 3px 0px; -} - -.dialog-content div.settings-left { - float: left; - width: 49%; -} - -.dialog-content div.settings-right { - float: left; - width: 49%; -} - -.dialog-content div.spacer { - float: left; - width: 2%; -} - -div.parameter-context-step, -div.referencing-components-loading, -div.fetch-parameters-step { - min-width: 16px; - width: 16px; - height: 16px; - background-color: transparent; - float: right; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-analysis-drawer.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-analysis-drawer.css deleted file mode 100644 index 50299bd982..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-analysis-drawer.css +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.flow-analysis { - background-color: #E3E8EB; - padding: 0; -} - -.flow-analysis:hover, -.flow-analysis.opened { - background-color: #FFFFFF; -} - -#flow-status .flow-analysis .fa-lightbulb-o { - padding: 4px; - width: 14px; - height: 14px; - border-radius: 15px; -} - -#flow-status .flow-analysis .fa-lightbulb-o.recommendations { - border: 1px solid #176e83; - border-radius: 15px; -} - -#flow-status .flow-analysis .fa-lightbulb-o.violations { - border: 0; - padding: 4px; - color: white; - width: 14px; - height: 14px; - background-color: #ba554a; - border-radius: 15px; -} - -#flow-analysis-drawer { - background-color: rgba(249, 250, 251, 0.9); - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.25); - height: calc(100vh - 115px); - overflow-y: scroll; - padding: 20px; - position: fixed; - right: -400px; - transition: right 0.3s ease-in-out; - width: 341px; - z-index: 2; -} - -#flow-analysis-drawer.opened { - right: 0; -} - -.flow-analysis-header { - align-items: center; - display: flex; - width: 100%; -} - -.flow-analysis-loading-container { - background-color: transparent; - float: left; - height: 16px; - margin-left: 0; - margin-right: 5px; - margin-top: 0; - width: 16px; -} - -.flow-analysis-loading-message { - display: none; -} - -.flow-analysis-flow-guide-title { - color: #728e9b; - font-family: Roboto Slab; - font-size: 16px; - font-stretch: normal; - font-style: normal; - font-weight: 500; - letter-spacing: normal; - line-height: normal; - margin-bottom: 5px; -} - -.flow-analysis-flow-guide { - align-items: center; - display: flex; - justify-content: space-between; -} - -.flow-analysis-violations-options { - align-items: center; - display: flex; - margin-bottom: 4px; -} - -.flow-analysis-refresh { - align-items: center; - display: flex; -} - -.flow-analysis-flow-guide-container { - margin-top: 22px; -} - -#flow-analysis-drawer .flow-analysis-rules-accordion { - margin-top: 10px; - padding: 0 0 50px 0; -} - -#flow-analysis-drawer - .flow-analysis-rules-accordion - .ui-accordion-header, -#flow-analysis-drawer .rules-violations-header, -#flow-analysis-drawer .rules-warnings-header { - background-color: transparent; - border: 0; - color: black; - display: flex; - font-family: Roboto Slab; - font-size: 12px; - font-weight: 500; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #ddd; - align-items: center; -} - -.flow-analysis-rules-accordion .ui-accordion-header-icon { - order: 2; -} - -#flow-analysis-drawer .recs-poliicies-accordion-header-text { - color: #262626; - font-family: Roboto Slab; - font-size: 12px; - font-weight: 500; - letter-spacing: 0.01px; - margin: 6px 5px 6px 0; -} - -#flow-analysis-drawer .recommended-rules-list, -#flow-analysis-drawer .required-rules-list, -#flow-analysis-drawer .rule-warnings-list { - padding: 0; - background-color: transparent; - border: 0; -} - -#flow-analysis-drawer .ui-icon { - background-image: none; - text-indent: 0; -} - -.required-rule-count, -.recommended-rule-count, -.rule-violation-count, -.rule-warning-count { - font-family: Roboto; - font-size: 14px; - font-weight: 400; -} - -#flow-analysis-drawer .rules-list-item { - border-bottom: 1px solid #ddd; -} - -#flow-analysis-drawer .rules-list-rule-info { - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 0 10px 10px; - font-family: Roboto; - font-size: 12px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: normal; - letter-spacing: normal; - text-align: left; - color: #262626; -} - -#flow-analysis-drawer .show-only-violations-label, -#flow-analysis-drawer .show-only-warnings-label { - font-family: Roboto; - font-size: 13px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: normal; - letter-spacing: normal; - text-align: left; - color: #262626; -} - -#flow-analysis-drawer .rules-list-item-menu-target { - font-size: 14px; - color: #054849; -} - -#flow-analysis-drawer .rule-menu-btn, -#flow-analysis-drawer .violation-menu-btn { - border: 0; -} - -#flow-analysis-drawer .rule-menu, -#flow-analysis-drawer .violation-menu { - width: 200px; - box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.3); - border: solid 1px #004849; - background-color: #fff; -} - -#flow-analysis-drawer .rule-menu-option, -#flow-analysis-drawer .violation-menu-option { - padding: 3px 0 3px 10px; - background-color: #fff; - font-family: Roboto; - font-size: 13px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.15; - letter-spacing: normal; - text-align: left; - color: #262626; - display: flex; - align-items: center; - margin: 3px 0; -} - -#flow-analysis-drawer .rule-menu-option.hidden, -#flow-analysis-drawer .violation-menu-option.hidden { - display: none; -} - -#flow-analysis-drawer .rule-menu-option:hover:not(.disabled), -#flow-analysis-drawer .violation-menu-option:hover:not(.disabled) { - background-color: #dce3e6; - color: #262626; - cursor: pointer; -} - -#flow-analysis-drawer .violation-menu-option.disabled, -#flow-analysis-drawer .rule-menu-option.disabled, -#flow-analysis-drawer .violation-menu-option-icon, -#flow-analysis-drawer .rule-menu-option-icon { - float: none; -} - -#flow-analysis-drawer .rule-menu-option-icon, -#flow-analysis-drawer .violation-menu-option-icon { - color: #004849; - font-size: 18px; - margin-right: 10px; -} - -/* Rule Information Modal */ -.rule-info-head, -.violation-info-head { - margin-top: 20px; - display: flex; - justify-content: space-between; - margin-bottom: 5px; -} - -.rule-name, -.violation-name { - align-self: flex-end; - font-family: Roboto Slab; - font-size: 12px; - letter-spacing: 0.3px; - text-align: left; - color: #262626; -} - -.rule-type-pill, -.violation-type-pill { - padding: 5px 10px; - border-radius: 12px; - font-family: Roboto; - font-size: 12px; - font-weight: 500; - letter-spacing: 0.12px; -} - -.rule-type-pill.enforce, -.violation-type-pill.enforce { - background-color: #ba554a; - color: #fff; -} - -.rule-type-pill.warn, -.violation-type-pill.warn { - border: solid 1px #176e83; - background-color: #fff; -} - -.rule-name, -.violation-name { - font-family: Roboto Slab; - font-size: 12px; - line-height: normal; -} - -.rule-display-name, -.violation-display-name { - font-family: Roboto; - font-size: 13px; - font-weight: 500; - color: #775351; - margin-bottom: 20px; -} - -.rule-description, -.violation-description { - font-family: Roboto; - font-size: 13px; - color: #262626; - margin: 20px 0; -} - -.fa.rule-docs-link-icon, -.fa.violation-docs-link-icon { - margin: 0 5px 0 0; - font-family: FontAwesome; - font-size: 16px; - color: #004849; -} - -.rule-docs-link, -.violation-docs-link { - font-family: Roboto; - font-size: 13px; - color: #004849; -} - -/* Violations */ - -.rule-violations-count { - font-family: Roboto; - font-size: 12px; - font-weight: 500; - color: #ba554a; - margin-left: 10px; -} - -.rule-recommendations-count { - font-family: Roboto; - font-size: 12px; - font-weight: 500; - color: #176e83; - margin-left: 10px; -} - -.rule-violations-list, -.rule-warnings-list, -.rule-recommendations-list { - list-style: none; -} - -.rule-violations-list li, -.rule-warnings-list li, -.rule-recommendations-list li { - border-bottom: 1px solid #ddd; -} - -.violation-menu-btn, -.recommendation-menu-btn { - margin-left: auto; - border: 0; -} - -.violation-list-item, -.recommendation-list-item, -.rule-violations-list-item-wrapper, -.warning-list-item { - padding: 10px 0 10px 15px; - display: flex; - align-items: center; - position: relative; -} - -.violation-list-item-name::before, -.warning-list-item-name::before, -.recommendation-list-item-name::before { - content: ''; - position: absolute; - left: 9px; - top: 13px; - width: 6px; - height: 6px; - border-radius: 50%; -} - -.violation-list-item-name::before, -.rule-violations-list-item-wrapper:before { - background-color: #ba554a; -} - -.recommendation-list-item-name::before, -.rule-warnings-list-item-name::before, -.warning-list-item-name::before, -.recommendation-list-item-name::before { - background-color: transparent; - border: 1px solid #176e83; -} - -.violation-list-item-wrapper, -.recommendation-list-item-wrapper, -.warning-list-item-wrapper { - display: flex; - flex-direction: column; - align-items: flex-start; - width: calc(100% - 5px); - margin-left: 5px; -} - -.violation-list-item-name, -.recommendation-list-item-name, -.warning-list-item-name { - font-family: Roboto; - font-size: 11px; - font-weight: 500; -} - -.rule-violations-list-item-name, -.rule-warnings-list-item-name { - font-family: Roboto; - font-size: 12px; - font-weight: 500; - margin-top: 11px; -} - -.rule-violations-list-item-name { - color: #ba554a; -} - -.rule-warnings-list-item-name { - color: #176e83; -} - -.violation-list-item-id, -.recommendation-list-item-id { - font-size: 11px; - line-height: normal; - color: #606060; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-status.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-status.css deleted file mode 100644 index 35ef016598..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/flow-status.css +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* flow status styles positioned at the top of the graph */ - -#flow-status { - height: 33px; - background-color: #E3E8EB; /*tint base-color 60%*/ - border-bottom: 1px solid #aabbc3; - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.25); - z-index: 3; - position: relative; -} - -#flow-status .icon { - font-size: 15px; - font-style: normal; - color: #728E9B; /*base-color*/ -} - -#flow-status .fa { - font-size: 15px; - font-style: normal; - color: #728E9B; /*base-color*/ -} - -#flow-status .icon span { - font-size: 15px; - font-weight: 500; - color: #775351; /*value-color*/ - text-shadow: none; -} - -#flow-status .fa span { - font-size: 15px; - font-weight: 500; - color: #775351; /*value-color*/ - font-family: Roboto, sans-serif; - text-shadow: none; -} - -#flow-status button { - height: 32px; - width: 32px; - border-left: 1px solid #AABBC3; /*tint base-color 40%*/ - border-right: none; - border-top: none; - border-bottom: none; - position: relative; -} - -#flow-status span { - padding-left: 5px; -} - -#flow-status-container { - width: 90%; -} - -#search-container { - overflow: hidden; - height: 32px; - background: #FFFFFF; -} - -.search-container-opened { - width: 235px; -} - -.search-container-closed { - width: 32px; -} - -#search-button:hover { - background-color: #FFFFFF !important; /* override any styles set by JS */ - border-left: 1px solid #004849; /*link-color*/ -} - -#search-button .fa { - color: #004849; - text-shadow: none; -} - -#bulletin-button { - background-color: #728E9B; /*base-color*/ - cursor: default; -} - -#bulletin-button.has-bulletins { - background-color: #ba554a; /*warm-color*/ -} - -#bulletin-button i.fa { - color: #fff; - font-size: 15px; - text-shadow: none; -} - -#canvas-loading-container { - margin-top: -2px; - margin-left: 9px; - float: left; - width: 16px; - height: 16px; - background-color: transparent; -} - -#connected-nodes-count.connection-warning { - color: #BA554A; -} - -/* search field */ -div.search-result-icon { - float: left; - margin-right: 5px; - width: 14px; - height: 14px; -} - -#search-field { - height: 33px; - width: 200px; - background: #FFFFFF; - border: 0px; - padding: 0px; - box-shadow: none; -} - -input.search-flow { - color: #7098AD; -} - -#search-flow-results .ui-autocomplete { - max-height: 400px; - z-index: 1251; -} - -#search-flow-results li.search-header { - font-weight: bold; - color: #222 !important; - padding-top: 4px; - padding-left: 4px; - padding-right: 4px; - height: 14px; -} - -#search-flow-results div.search-match-header { - font-weight: normal; - margin-left: 19px; -} - -#search-flow-results div.search-match { - margin-left: 26px; - color: #888; - font-size: 11px; - line-height: 1.4; - word-break: break-all; -} - -div.search-glass-pane { - position: absolute; - background-image: url(../images/spacer.png); - background-repeat: repeat; - background-color: transparent; - left: 0px; - top: 0px; - right: 0px; - bottom: 0px; - z-index: 1000; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/graph.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/graph.css deleted file mode 100644 index 89dbc5c19b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/graph.css +++ /dev/null @@ -1,557 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Graph Styles -*/ - -#canvas-container { - position: absolute; - top: 88px; - left: 0px; - bottom: 0px; - right: 0px; - background-color: #f9fafb; - background-size: 14px 14px; - background-image: linear-gradient(to right, rgba(229, 235, 237, 1) 1px, transparent 1px), linear-gradient(to bottom, rgba(229, 235, 237, 1) 1px, transparent 1px); - z-index: 1; - overflow: hidden; -} - -.tooltip { - padding: 10px; - display: none; - position: absolute; - z-index: 1000; -} - -/* svg styles */ - -text.unset { - font-style: italic; - font-weight: normal; - fill: #aaa; -} - -.moveable { - cursor: pointer; -} - -/* - All components -*/ - -g.component { - font-family: Roboto; -} - -g.component rect.body { - fill: #ffffff; -} - -g.component rect.body.unauthorized { - fill: #f4f6f7; -} - -g.component rect.border { - stroke: rgba(0,0,0,0.25); - stroke-width: 1; -} - -g.component rect.border.unauthorized { - stroke-width: 3; - stroke: #ba554a !important; - stroke-dasharray: 4; -} - -g.component rect.border.ghost { - stroke-width: 3; - stroke: #aaaaaa !important; - stroke-dasharray: 4; -} - -g.component rect.processor-icon-container.unauthorized { - fill: #f4f6f7 !important; -} - -g.component.selected rect.border { - stroke: #004849 !important; - stroke-width: 3; -} - -text.stats-label { - fill: #262626; - font-size: 12px; - font-family: Roboto Slab; -} - -text.stats-value { - fill: #775351; - font-size: 12px; - font-weight: bold; -} - -text.stats-value tspan.size, text.stats-value tspan.size, text.stats-value tspan.public-ports { - font-weight: normal; -} - -text.stats-info { - fill: #728E9B; - font-size: 12px; -} - -text.bulletin-icon { - font-size: 13px; - font-family: FontAwesome; - fill: #ffffff; -} - -rect.bulletin-background { - fill: #ba554a; -} - -text.active-thread-count-icon { - font-family: flowfont; - font-size: 12px; - fill: #728e9b; - text-anchor: end; -} - -text.active-thread-count { - fill: #775351; - font-size: 12px; - font-weight: bold; -} - -path.component-comments { - fill: #000; - stroke: #000; -} - -text.spin { - -webkit-animation-name: rotate; - -webkit-animation-duration: 2s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - -moz-animation-name: rotate; - -moz-animation-duration: 2s; - -moz-animation-iteration-count: infinite; - -moz-animation-timing-function: linear; - animation-name: rotate; - animation-duration: 2s; - animation-iteration-count: infinite; - animation-timing-function: linear; -} - -@-webkit-keyframes rotate { - from { - -webkit-transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - } -} - -@-moz-keyframes rotate { - from { - -moz-transform: rotate(0deg); - } - to { - -moz-transform: rotate(360deg); - } -} - -@keyframes rotate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -/* - Selection -*/ - -g.component.connectable-destination rect.border { - stroke: #00ff00; - stroke-width: 3; -} - -rect.component-selection, rect.drag-selection, rect.label-drag { - stroke: #444444; - stroke-opacity: 0.5; - fill: transparent; -} - -text.add-connect { - cursor: pointer; - font-family: flowfont; - font-size: 28px; - fill: #004849; -} - -/* - Processor -*/ - -text.processor-name { - fill: #262626; - font-size: 14px; -} - -text.processor-type { - fill: #728e9b; - font-size: 12px; -} - -text.processor-bundle { - fill: #666; - font-size: 10px; -} - -rect.processor-icon-container { - fill: #ffffff; -} - -text.processor-icon { - font-family: flowfont; - font-size: 30px; -} - -circle.restricted-background, circle.is-primary-background { - visibility: hidden; - fill: rgba(255, 255, 255, 0.90); -} - -text.restricted { - visibility: hidden; - font-family: FontAwesome; - font-size: 12px; - fill: #ba554a; -} - -text.is-primary { - visibility: hidden; - font-size: 12px; - font-weight: bold; -} - -text.run-status-icon { - font-size: 14px; - transform-origin: 62px 18px 0; -} - -/* - Connection -*/ - -g.connection { - font-family: Roboto; -} - -g.connection rect.body { - fill: #ffffff; -} - -g.connection rect.body.unauthorized { - fill: #f4f6f7; -} - -g.connection rect.border.unauthorized { - stroke-width: 1.5; - stroke: #ba554a; - stroke-dasharray: 3,3; -} - -g.connection rect.border.full { - stroke: rgba(186, 85, 74, 0.65); - stroke-width: 1; -} - -g.connection.selected rect.border { - /*stroke: #004849;*/ - stroke: #ffcc00; - stroke-width: 3; -} - -path.connector { - fill: none; - pointer-events: none; - stroke: #ff0000; - stroke-width: 3; - stroke-opacity: 0.5; - stroke-dasharray: 2; -} - -path.connector.connectable { - stroke: #00ff00; - stroke-width: 3; - stroke-dasharray: 4; -} - -g.connection path.connection-path { - fill: none; - stroke: #000000; - stroke-width: 2; - cursor: pointer; -} - -g.connection path.connection-path.full { - stroke: #ba554a; -} - -g.connection path.connection-path.unauthorized { - stroke: #ba554a; - stroke-dasharray: 3,3; -} - -text.connection-from-run-status, text.connection-to-run-status, text.expiration-icon, text.load-balance-icon, text.penalized-icon { - fill: #728e9b; - font-family: FontAwesome; - font-size: 12px; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -text.load-balance-icon-active { - fill: #44a3cf -} - -text.load-balance-icon-184 { - transform-origin: 197px 10px 0; -} - -text.load-balance-icon-200 { - transform-origin: 213px 10px 0; -} - -text.connection-from-run-status.is-missing-port, text.connection-to-run-status.is-missing-port { - fill: #cf9f5d; -} - -g.connection rect.backpressure-tick { - fill: transparent; -} - -g.connection rect.backpressure-tick.data-size-prediction.prediction-down, -g.connection rect.backpressure-tick.object-prediction.prediction-down { - fill: white; -} - -g.connection rect.backpressure-tick.data-size-prediction, -g.connection rect.backpressure-tick.object-prediction { - fill: black; -} - -g.connection rect.backpressure-tick.data-size-prediction.not-configured, -g.connection rect.backpressure-tick.object-prediction.not-configured, -g.connection rect.backpressure-tick.data-size-prediction.prediction-down.not-configured, -g.connection rect.backpressure-tick.object-prediction.prediction-down.not-configured { - fill: transparent; -} - -g.connection rect.backpressure-tick.not-configured { - fill: #acacac; -} - -g.connection rect.backpressure-object, g.connection rect.backpressure-data-size { - fill: #d8d8d8; -} - -/**/ -g.connection rect.backpressure-object>title>tspan, g.connection rect.backpressure-data-size>title>tspan { - display: block; -} -/**/ - -g.connection rect.backpressure-object.not-configured, g.connection rect.backpressure-data-size.not-configured { - fill: transparent; -} - -g.connection rect.backpressure-percent { - fill: #67b796; - pointer-events: none; -} - -g.connection rect.backpressure-percent.warning { - fill: #cea958; -} - -g.connection rect.backpressure-percent.error { - fill: #ba554a; -} - -/* grouped connection */ - -g.connection.grouped path.connection-path, g.connection.grouped rect.connection-label { - stroke-width: 3; -} - -/* ghost connection */ - -g.connection.ghost path.connection-path, g.connection.ghost rect.connection-label { - stroke: #aaaaaa; - stroke-dasharray: 4; -} - -g.connection path.connection-selection-path { - visibility: hidden; - stroke-width: 1; - stroke: #ffcc00; - fill: none; -} - -g.connection path.connection-path-selectable { - visibility: hidden; - stroke-width: 20; - fill: none; - cursor: pointer; -} - -g.connection.selected path.connection-selection-path { - visibility: visible; -} - -g.connection rect.linepoint { - visibility: hidden; - stroke-width: 1; -} - -g.connection.selected rect.linepoint { - visibility: visible; -} - -g.connection rect.startpoint { - stroke: #ff0000; - fill: #ff0000; -} - -g.connection rect.midpoint { - stroke: #ffcc00; - fill: #ffcc00; - cursor: pointer; -} - -g.connection rect.endpoint { - stroke: #0000ff; - fill: #0000ff; - cursor: pointer; -} - -/* labels */ - -g.label rect.labelpoint { - display: none; - stroke-width: 1; - stroke: #ffcc00; - fill: #ffcc00; - cursor: se-resize; -} - -g.label.selected rect.labelpoint { - display: block; -} - -/* funnels */ - -text.funnel-icon { - fill: #ad9897; - font-family: flowfont; - font-size: 30px; -} - -/* ports */ - -text.port-name { - fill: #262626; - font-size: 14px; -} - -text.port-icon { - fill: #ad9897; - font-family: flowfont; - font-size: 30px; -} - -text.port-transmission-icon { - font-size: 15px; - fill: #728e9b -} - -/* active thread count */ - -text.active-thread-count { - font-size: 10px; -} - -/* process groups */ - -text.process-group-name { - fill: #262626; - font-size: 14px; -} - -text.version-control { - font-family: FontAwesome; - font-size: 18px; - text-shadow: 0 0 4px rgba(255,255,255,1); - visibility: hidden; -} - -text.process-group-contents-count { - fill: #775351; - font-size: 15px; - font-weight: 500; - font-family: Roboto, sans-serif; -} - -g.process-group.drop rect.border { - stroke: #0000ff; - stroke-width: 3; -} - -text.process-group-contents-icon { - font-size: 15px; - fill: #728e9b; -} - -/* remote process group */ - -text.remote-process-group-name { - fill: #262626; - font-size: 14px; -} - -text.remote-process-group-uri { - fill: #004849; - font-size: 12px; -} - -text.remote-process-group-transmission-status { - font-size: 15px; - fill: #728e9b -} - -text.remote-process-group-transmission-secure { - font-family: FontAwesome; - font-size: 13px; - fill: #004849; -} - -text.remote-process-group-last-refresh { - fill: #728e9b; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css deleted file mode 100644 index 8b28399d06..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Header Settings -*/ - -md-toolbar.md-small { - height: 56px; - background-color:#AABBC3; /*tint base-color 40%*/ - min-height: 56px; - max-height: 56px; - position: relative; - z-index: 4; -} -md-toolbar.md-small .md-toolbar-tools { - height: 56px; - min-height: 56px; - max-height: 56px; -} - -#header .icon { - font-size:32px; - color: #004849; -} - -#header .fa { - font-size:32px; - color: #004849; -} - -#login-link-container > span.link { - font-size: 12px; - text-transform:uppercase; -} - -#logout-link-container > span.link { - font-size: 12px; - text-transform:uppercase; -} - -#current-user { - font-size: 12px; -} - -#users-link { - padding-left: 7px; -} - -#nifi-logo { - height: 37px; - margin:0 20px 3px 15px; -} - -#global-menu-button { - background-color: #AABBC1; /*tint base-color 40%*/ - border: 0; - cursor: pointer; - height: 56px; - width: 63px; -} - -#global-menu-button:hover { - background-color: #e3e8eb; /*tint base-color 60%*/ - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); -} - -#global-menu-content { - font-size: 13px; - padding: 3px 0; - background-color: rgba(249, 250, 251, 0.97); /*tint base-color 96%*/ - border: 1px solid #004849; /*link-color*/ - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); - width: 215px; - max-height: inherit; -} - -#global-menu-content md-menu-item{ - min-height: 28px; - height: 28px; -} - -#global-menu-content md-menu-divider{ - background-color:#C7D2D7; /*tint base-color 60%*/ - margin-top: 3px; - margin-bottom: 3px; -} - -#global-menu-content a { - height: 28px; - padding: 6px 16px; - cursor: pointer; - padding-left: 10px; - padding-right: 10px; -} - -#global-menu-content a.disabled { - color: #a8a8a8 !important; - cursor: not-allowed; -} - -#global-menu-content a.disabled i { - color: #bebebe; -} - -#global-menu-content a:hover{ - background-color:#C7D2D7; -} - -#global-menu-content .icon { - font-size: 15px; - color: #728E9B; - margin-right: 10px; - width: 15px; - display: inline-block; -} - -#global-menu-content .fa { - font-size: 15px; - color: #728E9B; - margin-right: 10px; - width: 15px; -} - -/* styles for the toolbox */ - - -#header .component-button { - background: none; - height: 56px; - position: relative; - width: 56px; - border: none; -} - -#header .component-button:hover { - background-color: #e3e8eb; - box-shadow: 0 3px 6px rgba(0,0,0,0.3); - cursor:grab; - cursor:-moz-grab; - cursor:-webkit-grab; -} - -#header .component-button:active { - cursor: grabbing; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; -} - -#header .component-button:disabled { - background-color:#AABBC3; /*tint base-color 40%*/ - cursor:not-allowed; - box-shadow:none; -} - -#header .component-button:disabled .icon{ - color:#669192; -} - -.component-button-grip { - background: repeating-linear-gradient(90deg,rgba(170,187,195,1),rgba(170,187,195,1) 4px,rgba(170,187,195,0) 4px,rgba(170,187,195,0) 6px); - bottom: 2px; - height: 4px; - left: 2px; - position: absolute; - width: 52px; -} - -/* styles for the status link */ - -#anonymous-user-alert { - display: none; - font-size: 12px; -} - -#current-user { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: normal; - font-size: 12px; - max-width: 250px; - text-overflow: ellipsis; - line-height: normal; - overflow: hidden; - white-space: nowrap; - color: #262626; -} - -#current-user-container .fa{ - font-size: 12px; - color: #262626; - padding-right: 5px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/history.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/history.css deleted file mode 100644 index 80d5ffcb10..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/history.css +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Status Styles -*/ - -#history { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#history-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; -} - -#history-refresh-container { - position: absolute; - bottom: 0px; - left: 20px; - right: 20px; -} - -#history-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#history-last-refreshed { - font-weight: 500; -} - -#history-header { - padding-top: 10px; -} - -/* history filter controls */ - -#history-filter-container { - position: absolute; - right: 0px; - left: 0px; - top: 15px; - font-family: Roboto; - font-size: 13px; - font-weight: normal; -} - -#cluster-history-message { - float: left; - margin-top: 30px; -} - -#history-filter-button { - float: right; - margin-left: 5px; -} - -#history-filter-overview { - visibility: hidden; - margin-bottom: 5px; -} - -#history-purge-button { - float: right; - padding-left: 4px; -} - - -/* history filter dialog */ - -.start-date-setting, .start-time-setting, .end-date-setting, .end-time-setting { - float: left; - width: 48%; -} - -.start-date-setting, .end-date-setting { - margin-right: 4%; - width: 48%; -} - -.history-small-input { - padding: 3px 0px 1px 3px; - font-size: 11px; - width: 183px; - border: 1px solid #ccc; -} - -.history-large-input { - margin-right: 10px; - font-size: 11px; - float: left; - width: 70% !important; -} - -#history-filter-type { - width: 96px; - float: left; -} - -/* action details dialog */ - -#action-details { - overflow-y: auto; -} - -#action-details-dialog { - width: 300px; - height: 500px; -} - -div.action-detail { - margin-bottom: 15px; -} - -div.history-details-name { - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - text-transform: capitalize; - padding-bottom: 4px; - color: #262626; -} - -/* history table */ - -#history-table { - position: absolute; - top: 66px; - left: 0px; - bottom: 47px; - right: 0px; - min-height: 150px; -} - -#history-table div.slick-viewport { - overflow-x: hidden !important; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/label-configuration.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/label-configuration.css deleted file mode 100644 index 65279d81be..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/label-configuration.css +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Label details styles. -*/ - -#label-configuration { - font-size: 10px; - z-index: 1301; - display: none; -} - -#label-value { - width: 100%; - height: 189px; - resize: vertical; - min-height: 100px; - min-width: 100px; - white-space: pre; -} - -#label-font-size { - width: 100%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/login.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/login.css deleted file mode 100644 index ee45bfced3..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/login.css +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Login Styles -*/ - -#login-contents-container { - position: absolute; - top: 0px; - left: 0px; - bottom: 0px; - right: 0px; - background: #fff url(../images/bg-error.png) left top no-repeat; - padding-top: 100px; - padding-left: 100px; -} - -#login-message-title { - font-size: 18px; - color: #294c58; - margin-bottom: 16px; -} - -#login-message { - font-size: 11px; -} - -.login-title { - font-size: 18px; - font-weight: bold; - font-family: Roboto Slab; - margin-bottom: 10px; - color: #728e9b; -} - -#login-user-links-container { - position: absolute; - top: 0px; - left: 0px; - padding-top: 100px; - padding-left: 100px; - z-index: 1300; - width: 412px; -} - -#login-user-links { - float: right; -} - -/* - Login -*/ - -body.login-body input, body.login-body textarea { - width: 412px; -} - -div.login-container { - width: 412px; -} - -/* - Login Progress -*/ - -#login-progress-label { - float: right; - font-weight: bold; - line-height: 16px; -} - -#login-progress-spinner { - float: right; - width: 16px; - height: 16px; - background-color: transparent; - margin-left: 3px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/logout.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/logout.css deleted file mode 100644 index 074424e014..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/logout.css +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Logout Styles -*/ - -#logout-contents-container { - position: absolute; - top: 0px; - left: 0px; - bottom: 0px; - right: 0px; - background: #fff url(../images/bg-error.png) left top no-repeat; - padding-top: 100px; - padding-left: 100px; -} - -#logout-message-title { - font-size: 18px; - color: #294c58; - margin-bottom: 16px; -} - -#logout-message { - font-size: 11px; -} - -#logout-user-links-container { - position: absolute; - top: 0px; - left: 0px; - padding-top: 100px; - padding-left: 100px; - z-index: 1300; - width: 412px; -} - -#logout-user-links { - float: right; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css deleted file mode 100644 index 819ff03e45..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -body { - font-size: 62.5%; -} - -#splash { - position: absolute; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - background: #7098AD; - z-index: 2000; -} - -#splash-img { - position: absolute; - top: 10%; - bottom: 10%; - left: 10%; - right: 10%; - background: transparent url(../images/nifi-drop-splash.svg) no-repeat center center; -} - -div.context-menu-provenance { - background-position: top left; -} - -#user-links-container { - float: left; - z-index: 1300; - margin-left: 20px; -} - -.ellipsis { - white-space: nowrap; - overflow: hidden; -} - -.ellipsis-white-space-pre { - white-space: pre; - overflow: hidden; - text-overflow: ellipsis; -} - -/* max 1 line text with ellipsis - works in Chrome and Firefox */ -.multi-line-clamp-ellipsis { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; - overflow: hidden; -} - -.ellipsis.multiline { - white-space: normal; -} - -.collapsed:before { - font-family: FontAwesome; - content: "\f0da"; - font-size: 16px; - color: #004849; - float: left; - margin-right: 3px; -} - -.expanded:before { - font-family: FontAwesome; - content: "\f0d7"; - font-size: 16px; - color: #004849; - float: left; -} - -/* processor status styles */ - -.disabled { - float: left; - color: #728e9b !important; - fill: #728e9b !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.enabled { - float: left; - color: #44a3cf !important; - fill: #44a3cf !important; - margin-left: 3px; - margin-right: -3px; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.stopped { - float: left; - color: #d18686 !important; - fill: #d18686 !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.stopped:before { - content: "\f04d"; - font-family: FontAwesome; -} - -.running { - float: left; - color: #7dc7a0 !important; - fill: #7dc7a0 !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.running:before { - content: "\f04b"; - font-family: FontAwesome; -} - -.has-errors, .invalid { - float: left; - color: #cf9f5d !important; - fill: #cf9f5d !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.has-errors:before, .invalid:before { - font-family: FontAwesome; - content: "\f071"; - color: #cf9f5d; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.validating { - float: left; - width: 12px; - height: 12px; - line-height: 12px !important; - margin-top: 5px !important; - color: #a8a8a8 !important; - fill: #a8a8a8 !important; - text-shadow: 0 0 4px rgba(255,255,255,1); - transform-origin: 6px 6px 0; -} - -.validating:before { - font-family: FontAwesome; - font-size: 12px; - content: "\f1ce"; - color: #a8a8a8; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.transmitting { - float: left; - color: #44a3cf !important; - fill: #44a3cf !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.not-transmitting { - float: left; - color: #728e9b !important; - fill: #728e9b !important; - margin-top: 0px !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.up-to-date { - float: left; - color: #3da67a !important; - fill: #3da67a !important; - margin-top: 0px !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.locally-modified, .sync-failure { - float: left; - color: #747474 !important; - fill: #747474 !important; - margin-top: 0px !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -.stale, .locally-modified-and-stale { - float: left; - color: #c7685d !important; - fill: #c7685d !important; - margin-top: 0px !important; - text-shadow: 0 0 4px rgba(255,255,255,1); -} - -div.valid { - float: left; - background-color: transparent; -} - -div.has-bulletins, div.warning { - color: #ba554a !important; -} - -.zero { - color: #aabec7 !important; - fill: #aabec7 !important; - text-shadow: none !important; -} - -/* - Styles for status/history/user tables. -*/ - -span.label, div.label { - font-weight: bold; -} - -div.inline-details { - margin-top: 10px; - margin-bottom: 3px; -} - -div.inline-details div { - margin: 2px 0; -} - -tr.alt-row { - background: #f5f5f5 none; -} - -span.details-title { - font-weight: bold; - font-size: 12px; - text-decoration: underline; -} - -.last-refreshed-container { - float: left; - font-weight: normal; - margin-top: 8px; - margin-left: 3px; - -webkit-user-select: none; - -moz-user-select: none; - font-family: Roboto; - font-size: 13px; -} - -.refresh-toggle { - float: left; - margin: 0px 20px 0px 0px !important; - font-family: Roboto; - font-size: 13px; -} - -/* new file */ - -#new-file-description { - height: 210px; -} - -/* upload */ - -#file-browse-container { - display: block; - height: 20px; -} - -#select-file-label { - font-weight: bold; - font-size: 14px; - line-height: 28px; -} - -#select-file-button button { - position: absolute; - float: right; - right: 4px; - top: 22px; - font-size: 18px; - color: #004849; - border: none; - background-color: transparent; -} - -#select-file-button i { - position: absolute; - float: right; - right: 7px; - top: 7px; - color: #004849; -} - -#upload-file-field { - display: none; -} - -#submit-file-container { - position: absolute; - float: left; - max-width: 90%; -} - -#selected-file-name { - font-weight: bold; - font-family: Roboto; - font-size: 13px; - color: #775331; - word-break: break-all; -} - -#upload-file-status { - margin-top: 10px; - font-weight: bold; - font-family: Roboto; - font-size: 13px; - color: #ba554a; -} - -#upload-file-container button { - float: right; - font-size: 16px; - line-height: 14px; - margin-left: 1px; -} - -#upload-file-button { - color: #004849; - font-size: 16px; - cursor: pointer; -} - -#file-upload { - position: absolute; - top: 0; - left: 0; - height: 22px; - width: 300px; -} - -#file-cancel-button { - position: absolute; - width: 0px; - height: 0px; - right: 13px; - z-index: 1; - border: none; - background-color: transparent; - padding: 0px; - margin-top: 16px; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-pane.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-pane.css deleted file mode 100644 index 3adc09891a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/message-pane.css +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -.message-pane { - position: absolute; - top: 0px; - left: 0px; - bottom: 0px; - right: 0px; - background: #ffffff url(../images/bg-error.png) left top no-repeat; - z-index: 999999; -} - -.message-pane-content { - font-size: 12px; - color: #262626; - line-height: normal; - clear: both; -} - -.message-pane-message-box { - margin-top: 72px; - padding-left: 100px; -} - -.message-pane-title { - margin-bottom: 16px; - color: #728e9b; - font-size: 16px; - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; - float: left; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css deleted file mode 100644 index 0ae829bc3f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* general graph control styles */ - -#graph-controls { - position: absolute; - left: 0; - top: 110px; - z-index: 2; -} - -#graph-controls .icon { - font-size: 18px; - line-height: 23px; - margin-left: -2px; -} - -#graph-controls .fa { - font-size: 18px; - margin-left: -2px; -} - -.graph-control-header-icon.fa { - color: #004849; /*link-color*/ - margin-left: 7px !important; -} - -div.graph-control { - box-shadow: 0 1px 6px rgba(0,0,0,0.25); - background-color: rgba(249, 250, 251, 0.9); - border-top: 1px solid #aabbc3; - border-right: 1px solid #aabbc3; - border-bottom: 1px solid #aabbc3; - margin-bottom: 2px; -} - -.graph-control-content { - margin-left: 10px; - margin-right: 10px; - margin-bottom: 10px; -} - -.docked { - height: 32px; - width: 32px; -} - -div.graph-control-docked { - height: 100%; - width: 100%; - text-align: center; - line-height: 34px; - color: #004849; -} - -.docked:hover { - border-top: 1px solid #004849; /*tint base-color 60%*/ - border-right: 1px solid #004849; /*tint base-color 60%*/ - border-bottom: 1px solid #004849; /*tint base-color 60%*/ -} - -div.graph-control button { - line-height: 30px; - border: 1px solid #CCDADB; /*tint link-color 80%*/ - background-color: rgba(249,250,251,1); - color: #004849; -} - -div.graph-control button:hover { - border: 1px solid #004849; /*link-color*/ -} - -div.graph-control button:disabled { - color: #CCDADB; /*tint link-color 80%*/ - cursor: not-allowed; - border: 1px solid #CCDADB; /*tint link-color 80%*/ -} - -div.graph-control div.graph-control-expansion { - color: #728E9B; - line-height: 34px; - margin-left: 9px !important; -} - -div.graph-control-header-icon { - float: left; - margin: 8px 10px 0px 0px; -} - -div.graph-control-header { - float: left; - font-size: 12px; - font-family: 'Roboto Slab'; - color: #262626; - letter-spacing: 0.05rem; - margin: 10px 0px; -} - -div.graph-control-header-action { - float: right; - height: 32px; - width: 32px; -} - -.graph-control-header-container:hover { - background: linear-gradient(90deg, rgba(227,232,235,0) 254px, rgba(227,232,235,1) 32px); -} - -/* navigate buttons */ - -#navigation-buttons { - margin-bottom: 5px; - margin-top: 10px; -} - -#operation-context { - margin-top: 10px; -} - -#operation-context-logo { - float: left; -} - -#operation-context-logo i.icon { - font-size: 32px; - font-family: flowfont; - color: #ad9897; -} - -#operation-context-details-container { - float: left; - padding-left: 10px; -} - -#operation-context-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - width: 230px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#operation-context-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; -} - -#operation-context-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - margin-top: 10px; -} - -#operation-context-type.invisible, #operation-context-id.invisible { - visibility: hidden; -} - -#operation-buttons { - margin-top: 10px; -} - -div.action-button { - float: left; -} - -div.action-button.right { - float: right; -} - -#operate-delete button { - width: inherit; - padding: 0 7px; -} - -#operate-delete button span{ - padding-left: 5px; - font-size: 12px; - text-transform:uppercase; - } - -div.graph-control div.icon-disabled { - color: #ddd; -} - -div.button-spacer-small { - float: left; - width: 2px; -} - -div.button-spacer-large { - float: left; - width: 12px; -} - -/* outline/birdseye */ - -#birdseye svg, #birdseye canvas { - position: absolute; - overflow: hidden; -} - -#birdseye { - width: 264px; - height: 150px; - background: #fff; - z-index: 1001; - overflow: hidden; - border: 1px solid #e5ebed; -} - -.brush .selection { - stroke: #666; - fill-opacity: .125; - shape-rendering: crispEdges; -} - -rect.birdseye-brush { - stroke: #7098ad; - fill: transparent; -} - -/* styles for the breadcrumbs bar */ - -#breadcrumbs { - position: absolute; - bottom: 0px; - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.25); - background-color: rgba(249, 250, 251, 0.9); - border-top: 1px solid #aabbc3; - color: #598599; - z-index: 3; - height: 31px; - width: 100%; -} - -#cluster-indicator { - width: 49px; - height: 15px; - background-color: transparent; - display: none; - position: absolute; - left: 59px; - top: 8px; -} - -span.breadcrumb-version-control-green { - color: #1a9964; -} - -span.breadcrumb-version-control-red { - color: #ba554a; -} - -span.breadcrumb-version-control-gray { - color: #666666; -} - -#breadcrumbs-left-border { - position: absolute; - left: 0; - width: 10px; - height: 14px; - z-index: 3; - background-color: transparent; - background: linear-gradient(to right, rgba(249, 250, 251, 0.97), rgba(255, 255, 255, 0)); - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr=#ffffffff, endColorstr=#00ffffff); -} - -#breadcrumbs-right-border { - position: absolute; - right: 0px; - width: 10px; - height: 14px; - z-index: 3; - background-color: transparent; - background: linear-gradient(to left, rgba(249, 250, 251, 0.97), rgba(255, 255, 255, 0)); - filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr=#00ffffff, endColorstr=#ffffffff); -} - -#data-flow-title-viewport { - overflow: hidden; - position: absolute; - left: 5px; - top: 8px; - right: 5px; - z-index: 4; -} - -#data-flow-title-container { - font-size: 13px; - color: #000; - position: relative; - float: left; - white-space: nowrap; - line-height: normal; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-controller-service-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-controller-service-dialog.css deleted file mode 100644 index 087b0bcecb..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-controller-service-dialog.css +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - New controller service dialog. -*/ - -#new-controller-service-dialog { - min-height:620px; - height: 620px; - width: 800px; - min-width: 760px; -} - -#controller-service-bundle-group-combo { - margin-right: 2px; -} - -#controller-service-tag-cloud-container { - padding: 0px; -} - -#controller-service-types-container { - padding: 0px; -} - -#controller-service-type-container { - padding: 20px 0 5px 0; - display: flex; -} - -#controller-service-type-name { - color: #775351; - font-size: 16px; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#controller-service-type-bundle { - margin-left: 15px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 13px; - line-height: 16px; - color: #666; - letter-spacing: 0.25px; - min-width: 0; -} - -#controller-service-type-description { - height: 80px; - font-size: 13px; - line-height: 17px; - padding-top: 10px; -} - -#controller-service-types-table { - min-height: 150px; - overflow: hidden; - height: 70%; - width: 100%; -} - -#controller-service-types-table-container th { - vertical-align: middle; -} - -/* - Processor type table filter -*/ - -#controller-service-type-filter-controls { - min-height: 32px; - padding: 0px; - margin: 0px; -} - -#controller-service-type-filter { - width: 200px; -} - -#controller-service-tag-cloud { - margin-top: -2px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-flow-analysis-rule-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-flow-analysis-rule-dialog.css deleted file mode 100644 index 073f5554db..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-flow-analysis-rule-dialog.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - New flow analysis rule dialog. -*/ - -#new-flow-analysis-rule-dialog { - min-height:620px; - height: 620px; - width: 800px; - min-width: 760px; -} - -#flow-analysis-rule-types-container { - padding: 0px; -} - -#flow-analysis-rule-bundle-group-combo { - margin-right: 2px; -} - -#flow-analysis-rule-description-container { - padding: 0px; -} - -#flow-analysis-rule-type-container { - padding: 20px 0 5px 0; - display: flex; -} - -#flow-analysis-rule-type-name { - color: #775351; - font-size: 16px; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#flow-analysis-rule-type-bundle { - margin-left: 15px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 13px; - line-height: 16px; - color: #666; - letter-spacing: 0.25px; - min-width: 0; -} - -#flow-analysis-rule-type-description { - height: 80px; - font-size: 13px; - line-height: 17px; - padding-top: 10px; -} - -#flow-analysis-rule-types-table { - min-height: 150px; - overflow: hidden; - height: 70%; - width: 100%; -} - -#flow-analysis-rule-types-table-container th { - vertical-align: middle; -} - -#flow-analysis-rule-types-table div.slick-viewport { - overflow-x: hidden !important; -} - -/* - Processor type table filter -*/ - -#flow-analysis-rule-type-filter-controls { - min-height: 32px; - padding: 0px; - margin: 0px; -} - -#flow-analysis-rule-type-filter { - width: 200px; -} - -#flow-analysis-rule-tag-cloud { - margin-top: -2px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css deleted file mode 100644 index a3c30511e3..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Parameter context dialog - */ - -#parameter-context-dialog { - width: 850px; - height: 575px; -} - -#parameter-context-dialog.edit-mode .read-only { - display: none; -} - -#parameter-context-dialog.read-only .edit-mode { - display: none; -} - -.parameter-context-tabs-content.split-65-35 div.settings-left { - float: left; - width: 65%; -} - -.parameter-context-tabs-content.split-65-35 div.settings-right { - float: left; - width: 33%; - height: 100%; - position: absolute; - left: calc(65% - -15px); -} - -#parameter-context-standard-settings-tab-content, -#parameter-context-parameters-tab-content { - bottom: 10px; -} - -#parameter-table { - position: relative; - height: 370px; -} - -#add-parameter { - float: right; - margin-bottom: 4px; - font-size: 16px; - text-transform: uppercase; -} - -#parameter-context-update-steps li { - width: 300px; - margin-bottom: 2px; -} - -#parameter-value-field { - height: 54px; -} - -#parameter-description-field { - height: 85px; -} - -#parameter-context-description-field { - height: 85px; -} - -#parameter-context-description-read-only { - max-height: 250px; - overflow-y: auto; -} - -#parameter-referencing-components-container { - position: absolute; - bottom: 10px; - top: 62px; - width: calc(100% - 5px); - overflow: auto; - border: 0 solid #CCCCCC; - overflow: auto; - padding: 2px; -} - -#parameter-referencing-components-container div.referencing-component-references { - margin: 0; -} - -.referencing-components-template { - position: relative; - left: 15px; - width: calc(100% - 15px); -} - -/* - Parameter creation/configuration dialog - */ - -#parameter-dialog { - width: 470px; - height: 470px; -} - -span.parameter-context-referencing-component-name { - margin-left: 5px; - max-width: calc(100% - 30px); -} - -#parameter-context-updating-status { - display: none; - position: absolute; - left: 12px; - bottom: 0; - height: 32px; - max-width: calc(100% - 230px); -} - -#parameter-context-updating-status.show-status { - display: flex; - flex-direction: row; - align-items: center; -} - -#parameter-context-updating-status .status-message { - white-space: nowrap; - margin-left: 6px; -} - -/* inheritance */ - -#parameter-context-available, #parameter-context-selected { - list-style-type: none; - margin: 0px; - background: #eaeef0; - min-height: 32px; - margin-bottom: 5px; - padding: 2px; -} - -#parameter-context-available li, #parameter-context-selected li { - margin: 2px; - padding: 5px; - cursor: pointer; - font-size: 1em; - height: 12px; - overflow: hidden; -} - -#parameter-context-available li.unauthorized, #parameter-context-selected li.unauthorized { - color: #a8a8a8; - cursor: not-allowed; -} - -#parameter-context-available li { - background: #fff; - border-top: 1px solid #CCDADB; - border-right: 1px solid #CCDADB; - border-bottom: 1px solid #CCDADB; - border-left: 1px solid #CCDADB; - color: #004849; - font-weight: 500; - cursor: grab; - line-height: 32px; - height: 32px; - padding: 0px 10px; - box-shadow:0 1px 1px rgba(0,0,0,0.4); -} - -#parameter-context-selected li { - background: #355B6A; - border-top: 1px solid #AAC1CE; - border-right: 1px solid #85A6B8; - border-bottom: 1px solid #618BA3; - border-left: 1px solid #85A6B8; - color: #fff; - font-weight: bold; - line-height: 32px; - height: 32px; - padding: 0px 10px; -} - -#parameter-context-selected .draggable-control { - float: right; -} - -#parameter-context-selected .fa-remove, #parameter-context-selected .fa-question-circle { - color: #fff; -} - -#parameter-context-selected-read-only { - list-style: inside none decimal; -} - -#inherited-parameter-contexts-message { - position: absolute; - top: 550px; - left: 20px; - font-size: 13px; - line-height: normal; - color: #775351; - max-width: calc(100% - 230px); - z-index: 999; -} - -#parameter-context-referencing-components ul.referencing-component-listing { - margin-bottom: 0; - margin-left: 10px; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-provider-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-provider-dialog.css deleted file mode 100644 index 6dbf19c0bc..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-provider-dialog.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - New parameter provider dialog. -*/ - -#new-parameter-provider-dialog { - min-height:620px; - height: 620px; - width: 800px; - min-width: 760px; -} - -#parameter-provider-types-container { - padding: 0px; -} - -#parameter-provider-bundle-group-combo { - margin-right: 2px; -} - -#parameter-provider-description-container { - padding: 0px; -} - -#parameter-provider-type-container { - padding: 20px 0 5px 0; - display: flex; -} - -#parameter-provider-type-name { - color: #775351; - font-size: 16px; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#parameter-provider-type-bundle { - margin-left: 15px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 13px; - line-height: 16px; - color: #666; - letter-spacing: 0.25px; - min-width: 0; -} - -#parameter-provider-type-description { - height: 80px; - font-size: 13px; - line-height: 17px; - padding-top: 10px; -} - -#parameter-provider-types-table { - min-height: 150px; - overflow: hidden; - height: 70%; - width: 100%; -} - -#parameter-provider-types-table-container th { - vertical-align: middle; -} - -#parameter-provider-types-table div.slick-viewport { - overflow-x: hidden !important; -} - -/* - Processor type table filter -*/ - -#parameter-provider-type-filter-controls { - min-height: 32px; - padding: 0px; - margin: 0px; -} - -#parameter-provider-type-filter { - width: 200px; -} - -#parameter-provider-tag-cloud { - margin-top: -2px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css deleted file mode 100644 index 1004a4c674..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - New processor dialog. -*/ - -#new-processor-dialog { - min-height:620px; - height: 620px; - width: 800px; - min-width: 760px; -} - -#processor-types-container { - padding: 0px; -} - -#processor-description-container { - padding: 0px; -} - -#processor-type-container { - padding: 20px 0 5px 0; - display: flex; -} - -#processor-bundle-group-combo { - margin-right: 2px; -} - -#processor-type-name { - color: #775351; - font-size: 16px; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#processor-type-bundle { - margin-left: 15px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 13px; - line-height: 16px; - color: #666; - letter-spacing: 0.25px; -} - -#processor-type-description { - height: 80px; - font-size: 13px; - line-height: 17px; - padding-top: 10px; -} - -#processor-types-table { - min-height: 150px; - overflow: hidden; - height: 70%; - width: 100%; -} - -#processor-types-table-container th { - vertical-align: middle; -} - -/* - Processor type table filter -*/ - -#processor-type-filter-controls { - min-height: 32px; - padding: 0px; -} - -#processor-type-filter { - width: 200px; -} - -/* - Restricted -*/ - -div.view-usage-restriction { - color: #ba554a !important; -} - -#processor-tag-cloud { - margin-top: -2px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-reporting-task-dialog.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-reporting-task-dialog.css deleted file mode 100644 index 55eb50f598..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-reporting-task-dialog.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - New reporting task dialog. -*/ - -#new-reporting-task-dialog { - min-height:620px; - height: 620px; - width: 800px; - min-width: 760px; -} - -#reporting-task-types-container { - padding: 0px; -} - -#reporting-task-bundle-group-combo { - margin-right: 2px; -} - -#reporting-task-description-container { - padding: 0px; -} - -#reporting-task-type-container { - padding: 20px 0 5px 0; - display: flex; -} - -#reporting-task-type-name { - color: #775351; - font-size: 16px; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#reporting-task-type-bundle { - margin-left: 15px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 13px; - line-height: 16px; - color: #666; - letter-spacing: 0.25px; - min-width: 0; -} - -#reporting-task-type-description { - height: 80px; - font-size: 13px; - line-height: 17px; - padding-top: 10px; -} - -#reporting-task-types-table { - min-height: 150px; - overflow: hidden; - height: 70%; - width: 100%; -} - -#reporting-task-types-table-container th { - vertical-align: middle; -} - -#reporting-task-types-table div.slick-viewport { - overflow-x: hidden !important; -} - -/* - Processor type table filter -*/ - -#reporting-task-type-filter-controls { - min-height: 32px; - padding: 0px; - margin: 0px; -} - -#reporting-task-type-filter { - width: 200px; -} - -#reporting-task-tag-cloud { - margin-top: -2px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-contexts.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-contexts.css deleted file mode 100644 index ef512e4b1b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-contexts.css +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#parameter-contexts { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#new-parameter-context { - position: absolute; - right: 0; - top: 26px; -} - -div.parameter-contexts-header-text { - height: 28px; - font-size: 18px; - font-weight: bold; - color: #728E9B; - margin-bottom: 30px; -} - -div.parameter-contexts-container { - padding: 0; - position: absolute; - top: 58px; - bottom: 52px; - left: 0px; - right: 0px; -} - -#parameter-contexts-refresh-container { - position: absolute; - bottom: 20px; - right: 0px; - left: 0px; - height: 32px; -} - -div.parameter-contexts-table { - position: absolute; - top: 0px; - left: 0px; - bottom: 20px; - right: 0px; - min-height: 150px; -} - -#parameter-contexts-table div.slick-viewport { - overflow-x: hidden !important; -} - -span.sorted { - text-decoration: underline; -} - -div.parameter-contexts-refresh-button { - height: 24px; - width: 26px; - float: left; -} - -#parameter-contexts-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#parameter-contexts-last-refreshed { - font-weight: 500; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-provider.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-provider.css deleted file mode 100644 index 993195e0ab..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/parameter-provider.css +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Parameter provider configuration styles. -*/ - -#parameter-provider-configuration { - position: absolute; - overflow: hidden; - width: 800px; - height: 450px; - font-size: 10px; - z-index: 1301; - display: none; -} - -#parameter-provider-configuration-advanced { - display: none; -} - -#parameter-provider-configuration div.configuration-tab { - display: none; -} - -.parameter-provider-editable.setting-field { - height: 32px; -} - -#parameter-provider-referencing-components { - padding: 2px; -} - -/* parameter-provider settings */ - -#parameter-provider-name { - width: 250px; - float: left; -} - -#parameter-provider-bundle { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -/* - Comments -*/ - -#parameter-provider-comments { - height: 100%; -} - -#read-only-parameter-provider-comments { - height: 100%; - white-space: pre-wrap; -} - -/* - Fetch parameters dialog -*/ - -#fetch-parameters-dialog { - position: absolute; - overflow: hidden; - min-width: 1048px; - height: 62%; - font-size: 10px; - z-index: 1301; - display: none; -} - -#fetch-parameters-dialog .dialog-content { - bottom: 48px; -} - -#fetch-parameters-dialog div.create-parameter-context-label { - display: inline-block; - line-height: normal; -} - -#fetch-parameters-dialog .dialog-content div.settings-left { - float: left; - width: 33%; -} - -#fetch-parameters-dialog .dialog-content div.settings-center { - float: left; - width: 33%; -} - -#fetch-parameters-dialog .dialog-content div.settings-right { - float: left; - width: 30%; - height: 100%; - position: absolute; - left: calc(72% - 20px); -} - -#parameter-groups-table { - position: relative; - height: 300px; -} - -#fetch-parameters-referencing-components { - border: 0 solid #CCCCCC; - overflow: auto; - padding: 2px; -} - -#fetch-parameters-update-steps li { - width: 300px; - margin-bottom: 2px; -} - -#fetched-parameters-listing-container { - position: relative; - overflow-x: auto; - border: 0 solid #CCCCCC; - padding: 2px; - min-height: 100px; - max-height: 343px; - min-width: 150px; - max-width: 326px; -} - -#fetched-parameters-listing li, -#fetched-parameters-listing span { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -ol#fetched-parameters-listing ul { - padding-bottom: 4px; -} - -ul.fetched-parameters { - padding: 0 0 2px 0; - list-style-type: disc; -} - -div.referencing-component-block { - margin-bottom: 6px; -} - -span.referencing-component-title { - margin-left: 5px; - font-weight: bold -} - -span.referencing-component-count { - margin-left: 5px; - color: #aaa; -} - -ul.referencing-component-listing { - margin-left: 20px; - margin-bottom: 6px; -} - -ul.referencing-component-listing li { - margin-bottom: 6px; - white-space: nowrap; -} - -div.referencing-component-state { - width: 13px; -} - -div.referencing-component-state.disabled:before { - content: '\e802'; - font-family: flowfont; -} - -div.referencing-component-state.enabled:before { - content: '\f0e7'; - font-family: FontAwesome; -} - -div.referencing-component-bulletins { - float: left; - margin-left: 5px; - width: 12px; - height: 12px; - background-color: transparent; - display: none; -} - -div.referencing-component-bulletins:before { - font-family: FontAwesome; - content: "\f24a"; - font-size: 16px; - color: #004849; -} - -div.service.expansion-button { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; -} - -span.referencing-component-active-thread-count { - margin-left: 5px; - float: left; -} - -span.referencing-component-name { - margin-left: 5px; - margin-right: 5px; -} - -span.referencing-component-type { - color: #aaa; - font-style: italic; -} - -div.referencing-component-references { - margin-left: 2px; - margin-top: 0; - clear: left; -} - -.fetch-parameters-referencing-components-template { - padding-left: 14px; -} - -div.fetch-parameters-canceling { - position: absolute; - bottom: 10px; - right: 8px; -} - -#fetch-parameters-name { - float: left; - max-width: 280px; - text-overflow: ellipsis; -} - -#fetch-parameters-bulletins { - float: left; - margin-left: 5px; - width: 12px; - height: 12px; - background-color: transparent; - display: none; -} - -#fetch-parameters-referencing-components { - border: 0 solid #CCCCCC; - padding: 2px; - overflow: auto; - white-space: nowrap; -} - -div.fetch-parameters-referencing-components { - width: 16px; - height: 16px; - background-color: transparent; - float: right; -} - -#fetch-parameters-progress { - margin-top: 2px; -} - -#fetch-parameters-progress li { - line-height: 16px; -} - -#affected-referencing-components-container, -#fetch-parameter-referencing-components-container { - position: absolute; - bottom: 10px; - top: 108px; - width: calc(100% - 6px); - overflow: auto; - border: 0 solid #CCCCCC; - padding: 2px; -} - -#affected-referencing-components-container div.referencing-component-references { - margin: 0; -} - -.affected-referencing-components-template { - position: relative; - left: 15px; - width: calc(100% - 15px); -} - -span.parameter-provider-referencing-component-name { - margin-left: 5px; - max-width: calc(100% - 30px); -} - -#checkbox-container { - display: flex; - flex-direction: row; - align-items: center; -} - -/* - Slickgrid selectable parameters table -*/ -#selectable-parameters-table { - position: absolute; - height: 267px; - width: 332px; -} - -#selectable-parameters-table .slick-column-name input { - margin: 5px 3px 3px 4px; -} - -#selectable-parameters-table .slick-pane-left .slick-viewport { - overflow-x: hidden; -} - -#parameter-groups-table .slick-pane-top .slick-viewport-top .grid-canvas-top, -#selectable-parameters-table .slick-pane-top .slick-viewport .grid-canvas-top { - width: 100% !important; -} - -#selectable-parameters-table .slick-pane-top .slick-viewport-top .grid-canvas-top .slick-cell.l1 { - padding-top: 1px; -} - -#selectable-parameters-table .slick-pane-top .slick-viewport-top .slick-cell.l1:not(.selected) .table-cell { - margin-top: 5px; -} - -.slick-columnpicker { - border: 1px solid #718BB7; - background: #f0f0f0; - padding: 6px; - -moz-box-shadow: 2px 2px 2px silver; - -webkit-box-shadow: 2px 2px 2px silver; - box-shadow: 2px 2px 2px silver; - min-width: 100px; - cursor: default; -} - -.slick-columnpicker li { - list-style: none; - margin: 0; - padding: 0; - background: none; -} - -.slick-columnpicker input { - margin: 4px; -} - -.slick-columnpicker li a { - display: block; - padding: 4px; - font-weight: bold; -} - -.slick-columnpicker li a:hover { - background: white; -} - -#selectable-parameters-buttons { - position: relative; - padding-bottom: 4px; -} - -.selectable-parameters-buttons { - line-height: 30px; - border: 1px solid #CCDADB; - background-color: rgba(249,250,251,1); - color: #004849; - padding: 0 7px; - float: left; - width: inherit; - margin-right: 8px; - display: flex; - align-items: center; - flex-direction: row; -} - -.selectable-parameters-buttons span { - font-size: 12px; - text-transform: uppercase; -} - -.selectable-parameters-buttons .fa { - font-size: 14px; - margin-left: -2px; - margin-right: 4px; -} - -button.selectable-parameters-buttons:hover { - border: 1px solid #004849; -} - -#create-parameter-context-container { - line-height: 12px; -} - -.fetch-parameters-dialog-message { - position: absolute; - top: 537px; - left: 20px; - font-size: 13px; - line-height: normal; - color: #775351; - max-width: calc(100% - 230px); - z-index: 999; -} - -#selectable-parameters-table .slick-cell-checkbox.selected { - padding-top: 1px; -} - -.slick-cell-checkbox .nf-checkbox { - margin-top: 5px; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/policy-management.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/policy-management.css deleted file mode 100644 index 90777fad10..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/policy-management.css +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#policy-management { - display: none; - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#policy-management-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 24px; -} - -#delete-policy-button { - margin-top: -4px; - display: none; -} - -#new-policy-user-button { - margin-top: -4px; - margin-right: 5px; - padding-left: 5px; - display: none; -} - -button.policy-button { - float: right; - margin-top: 4px; -} - -button.policy-button:disabled { - color: #CCDADB; - cursor: not-allowed; - border: 1px solid #CCDADB; -} - -/* - policy message -*/ - -#policy-message-container { - height: 18px; - color: #775351; - font-family: Roboto; - font-size: 13px; - font-weight: 500; -} - -#policy-message { - float: left; - margin-right: 4px; -} - -#new-policy-message { - float: left; -} - -#override-policy-message { - float: left; -} - -/* - policy selection -*/ - -div.policy-controls { - float: left; -} - -#policy-type-list, #restricted-component-required-permissions { - float: left; - width: 225px; - margin-right: 3px; - border-left: 1px solid transparent; - border-right: 1px solid transparent; -} - -#component-policy-target { - float: left; - width: 200px; - margin-right: 3px; - border-left: 1px solid transparent; - border-right: 1px solid transparent; -} - -#controller-policy-target { - float: left; - width: 160px; - margin-right: 3px; - border-left: 1px solid transparent; - border-right: 1px solid transparent; -} - -div.policy-selected-component-container { - float: left; - margin-right: 20px; -} - -div.policy-selected-component-details-container { - float: left; - padding-left: 10px; -} - -div.policy-selected-component-type-icon { - float: left; -} - -div.policy-selected-component-type-icon i.icon { - font-size: 28px; - font-family: flowfont; - color: #ad9897; - margin-left: 2px; -} - -div.policy-selected-component-name { - height: 16px; - font-size: 15px; - font-family: Roboto; - color: #262626; - width: 300px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -div.policy-selected-component-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; -} - -/* - policy table -*/ - -#policy-table { - position: absolute; - top: 92px; - left: 0px; - bottom: 67px; - right: 0px; - overflow: hidden; - background-color: #fff; -} - -#policy-table div.slick-viewport { - overflow-x: hidden !important; -} - -#policy-refresh-container { - position: absolute; - bottom: 20px; - left: 0px; - right: 20px; -} - -#policy-refresh-button { - float: left; -} - -#policy-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#policy-last-refreshed { - color: #775351; - font-weight: 500; -} - -/* - search users dialog -*/ - -#search-users-dialog { - width: 450px; - height: 450px; -} - -#search-users-results .ui-autocomplete { - max-height: 300px; - z-index: 1351; -} - -div.secure-port-setting { - margin-bottom: 15px; - width: 410px; -} - -li.search-users-header { - font-weight: bold; - padding-top: 4px; - padding-left: 4px; - padding-right: 4px; - height: 14px; -} - -div.search-users-match-header { - font-weight: normal; - margin-left: 10px; -} - -li.search-users-no-matches { - padding: 4px; - font-weight: bold; - color: #aaa; - font-style: italic; -} - -div.allowed-container { - width: 408px; - height: 100px; - border: 1px solid #aaa; - overflow-x: hidden; - overflow-y: scroll; -} - -ul.allowed { - list-style-type: none; -} - -ul.allowed li { - height: 16px; - width: 385px; - border-bottom: 1px solid #ddd; - color: #262626; - overflow: hidden; - margin: 2px; - padding: 2px; - line-height: 16px; - font-weight: normal; -} - -span.allowed-entity { - float: left; - width: 360px; -} - -div.remove-allowed-entity { - float: right; - width: 16px; - height: 16px; - cursor: pointer; - font-size: 14px; - line-height: 16px; -} - -/* - admin policy message -*/ - -#admin-policy-message, #restriction-message { - float: right; - margin-top: 8px; - color: #775351; - font-family: Roboto; - font-size: 13px; -} - -/* - override policy dialog -*/ - -#override-policy-dialog label { - font-family: inherit; - letter-spacing: inherit; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-configuration.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-configuration.css deleted file mode 100644 index 077cddf473..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-configuration.css +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Local port configuration -*/ - -#port-configuration { - z-index: 1301; - display: none; - width: 400px; - height: 470px; -} - -#port-name { - width: 70%; - float: left; -} - -#port-name-container { - height: 32px; -} - -textarea.port-field { - height: 100px; -} - -div.port-setting { - margin-bottom: 15px; -} - -div.port-enabled { - width: 20%; - height: 12px; - float: left; - margin-right: 4px; -} - -div.port-enabled-container { - float: left; - margin-top: 5px; - margin-left: 10px; -} - -div.failure-port { - margin-top: 5px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-details.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-details.css deleted file mode 100644 index 055103e3de..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/port-details.css +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Port details -*/ - -#port-details { - z-index: 1301; - display: none; - width: 400px; - height: 300px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/process-group-configuration.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/process-group-configuration.css deleted file mode 100644 index 1059af3956..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/process-group-configuration.css +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#process-group-configuration { - display: none; - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#add-process-group-configuration-controller-service { - float: right; -} - -/* settings tabs */ - -#process-group-configuration-tabs { - float: left; -} - -#process-group-configuration-tabs-content { - top: 53px; - bottom: 52px; -} - -#process-group-refresh-container { - position: absolute; - bottom: 20px; - left: 0px; - right: 0px; - height: 32px; -} - -#process-group-configuration-refresh-button { - float: left; -} - -#process-group-configuration-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#process-group-configuration-last-refreshed { - color: #775351; - font-weight: 500; -} - -#flow-cs-availability { - float: right; - margin-top: 8px; - color: #775351; - font-family: Roboto; - font-size: 13px; -} - -/* general */ - -#general-process-group-configuration div.settings-columns { - display: flex; -} - -#general-process-group-configuration div.settings-columns .settings-column { - margin-right: 50px; -} - -#general-process-group-configuration input, #general-process-group-configuration textarea { - width: 350px; - vertical-align: middle; -} - -#process-group-parameter-context-combo { - width: 328px; -} - -#parameter-contexts-recursive-container { - margin-left: 10px; -} - -#parameter-contexts-recursive-container > div { - float: left; - line-height: 30px; -} - -#parameter-contexts-recursive { - margin-top: 8px; -} - -#process-group-execution-engine-combo { - width: 328px; -} - -#process-group-flowfile-concurrency-combo { - width: 328px; -} - -#process-group-outbound-policy-combo { - width: 328px; -} - -#process-group-default-flowfile-expiration { - width: 328px; -} - -#process-group-default-back-pressure-object-threshold { - width: 328px; -} - -#process-group-default-back-pressure-data-size-threshold { - width: 328px; -} - -#process-group-comments { - height: 100px; - width: 750px; -} - -#read-only-process-group-comments { - white-space: pre-wrap; -} - -#process-group-controller-services-tab-content { - top: 32px; -} - -#upload-process-group-link { - float: right; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-configuration.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-configuration.css deleted file mode 100644 index a8af327559..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-configuration.css +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Processor configuration styles. -*/ - -#processor-configuration { - position: absolute; - overflow: hidden; - width: 800px; - height: 450px; - font-size: 10px; - z-index: 1201; - display: none; -} - -#processor-configuration-advanced { - display: none; -} - -#processor-name { - width: 70%; - float: left; -} - -#processor-bundle { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#processor-enabled { - width: 12px; - height: 12px; - float: left; - margin-right: 4px; -} - -#processor-name-container { - height: 32px; -} - -div.processor-enabled-container { - float: left; - margin-top: 8px; - margin-left: 10px; - width: 20%; -} - -div.processor-configuration-warning-icon { - float: left; - margin-top: -2px; - margin-right: 8px; - width: 18px; - height: 16px; -} - -div.processor-configuration-warning-icon:before { - font-family: FontAwesome; - content: "\f071"; - font-size: 16px; -} - -#auto-action-relationship-names { - border: 0 solid #CCCCCC; - overflow-y: auto; - overflow-x: hidden; - padding: 2px; -} - -#processor-relationships-tab-content label { - color: #775351; - font-family: Roboto, sans-serif; - font-size: 13px; - font-weight: 500; - letter-spacing: inherit; - line-height: normal; -} - -#processor-relationships-tab-content .yield-radio { - margin-left: 24px; -} - -#processor-relationships-tab-content .backoff-policy-setting input, -#processor-relationships-tab-content .backoff-policy-setting label { - display: inline-block; -} - -#processor-relationships-tab-content .dialog-content div.settings-left { - margin-right: 24px; - width: 44%; -} - - -div.processor-relationship-container { - margin-bottom: 16px; -} - -#processor-configuration div.relationship-name { - color: #000; - display: inline-block; - font-weight: 400; - line-height: normal; - max-width: 280px; -} - -#run-duration-container { - height: 20px; - width: 340px; - margin-left: auto; - margin-right: auto; -} - -#run-duration-slider { - margin-top: 5px; - border-radius: 0; - margin-right: 2px; -} - -#run-duration-slider .ui-slider-handle { - border-radius: 0; - border: 1px solid #999; - outline: none; -} - -#run-duration-zero { - float: left; -} - -#run-duration-one { - float: left; - margin-left: 11px; -} - -#run-duration-two { - float: left; - margin-left: 15px; -} - -#run-duration-three { - float: left; - margin-left: 12px; -} - -#run-duration-four { - float: left; - margin-left: 11px; -} - -#run-duration-five { - float: left; - margin-left: 9px; -} - -#run-duration-six { - float: left; - margin-left: 21px; -} - -#run-duration-seven { - float: right; -} - -#run-duration-explanation { - margin-top: 5px; - font-size: 9px; - font-weight: bold; - line-height: normal; -} - -#run-duration-data-loss { - margin-top: 15px; - color: #f00; -} - -#run-duration-data-loss div.processor-configuration-warning-icon { - margin-top: 4px; -} - -#min-run-duration-explanation { - float: left; -} - -#max-run-duration-explanation { - float: right; -} - -/* - Comments -*/ - -#processor-comments { - height: 100%; -} - -/* status bar button icon */ -#processor-configuration div.dialog-status-bar div.button-icon.fa-hourglass-end { - font-size : 11px !important; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-details.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-details.css deleted file mode 100644 index 79a529fde8..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/processor-details.css +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Processor details styles. Uses many styles from the processor configuration stylesheet. -*/ - -#processor-details { - position: absolute; - overflow: hidden; - width: 800px; - height: 450px; - font-size: 10px; - z-index: 1301; - display: none; -} - -#processor-details div.details-tab { - display: none; -} - -#read-only-processor-comments { - height: 100%; - white-space: pre-wrap; -} - -#read-only-processor-bundle { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -#read-only-auto-action-relationship-names { - border: 0 solid #CCCCCC; - height: 290px; - padding: 2px 2px 0; -} - -#processor-details div.relationship-name { - color: #000; - display: inline-block; - font-weight: 400; - line-height: normal; - max-width: 280px; -} - -div.concurrently-schedulable-tasks-setting, div.scheduling-period-setting, div.penalty-duration-setting, div.yield-duration-setting, div.scheduling-strategy-setting, div.execution-node-setting, div.bulletin-setting { - float: left; - width: 40%; -} - -div.scheduling-period-setting, div.yield-duration-setting { - margin-left: 20%; -} - -div.relationship-description { - color: #888; - font-weight: 400; - margin-left: 16px; - margin-top: 2px; -} - -.processor-terminate-relationship-container, -.processor-retry-relationship-container { - margin-top: 4px; - display: inline-block; -} - -.processor-retry-relationship-container { - margin-left: 16px; -} - -div.processor-relationship-container { - margin-bottom: 16px; -} - -#details-processor-relationships-tab-content label { - color: #775351; - font-family: Roboto, sans-serif; - font-size: 13px; - font-weight: 500; - letter-spacing: inherit; - line-height: normal; -} - -#details-processor-relationships-tab-content .yield-radio { - margin-left: 24px; -} - -#details-processor-relationships-tab-content .details-backoff-policy-setting input, -#details-processor-relationships-tab-content .details-backoff-policy-setting label { - display: inline-block; -} - -#details-processor-relationships-tab-content .dialog-content div.settings-left { - margin-right: 24px; - width: 44%; -} - -/* status bar button icon */ -#processor-details div.dialog-status-bar div.button-icon.fa-cog { - font-size : 14px !important; -} - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css deleted file mode 100644 index 7264fa0302..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css +++ /dev/null @@ -1,548 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Status Styles -*/ - -#provenance { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#provenance-header-and-filter{ - height: 111px; -} - -#provenance-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 15px; - height: 118px; -} - -#provenance-refresh-container { - position: absolute; - bottom: 0px; - right: 0px; - left: 0px; -} - -#provenance-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#provenance-last-refreshed { - font-weight: 500; -} - -#provenance-header { - padding-top: 10px; -} - -div.provenance-panel { - bottom: 0px; - left: 0px; - overflow: hidden; - position: absolute; - right: 0px; - top: 40px; -} - -/* filter controls */ - -#provenance-filter-container { - height: 24px; - width: 100%; -} - -#provenance-filter { - width: 173px; - margin-right: 3px; - float: left; -} - -#provenance-filter-type { - float: left; -} - -#oldest-event-message { - font-family: Roboto; - font-size: 13px; - font-weight: normal; - margin-bottom: 5px; -} - -/* provenance search controls */ - -#provenance-search-container { - position: absolute; - right: 0; - top: 38px; -} - -#provenance-search-button { - float: right; -} - -#provenance-search-overview { - font-family: Roboto; - font-size: 13px; - font-weight: normal; - margin-bottom: 5px; -} - -#clear-provenance-search { - display: none; -} - -/* provenance search dialog */ - -#searchable-fields-container { - min-height: 185px; - padding: 5px; - overflow: auto; -} - -div.searchable-field { - margin-bottom: 15px; -} - -div.searchable-field-name { - float: left; -} - -div.searchable-checkbox-value { - margin-top: 3px; -} - -div.searchable-checkbox-label { - float: left; - margin-top: 2px; - font-size: 12px; - font-family: Roboto; - font-weight: 500; - text-transform: none; - color: #775351; -} - -div.searchable-checkbox-tooltip { - float: left; - margin-top: 2px; - margin-bottom: 11px; -} - -.start-date-setting, .start-time-setting, .end-date-setting, .end-time-setting { - float: left; - width: 49%; -} - -.start-date-setting, .end-date-setting { - margin-right: 2%; - width: 49%; -} - -.provenance-small-input { - width: 183px; -} - -.provenance-time-input { - width: 215px; -} - -#provenance-search-location-container { - display: none; -} - -/* event details dialog */ - -div.flowfile-container { - width: 282px; - overflow: auto; - color: #775351; - font-size: 13px; - font-weight: 500; - line-height:1.4 -} - -#child-flowfiles { - margin-top: 20px; -} - -div.event-header { - color: #728e9b; - font-size: 15px; - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; - padding-bottom: 10px; - text-overflow: ellipsis; -} - -div.detail-name { - width: 100%; - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - padding-bottom: 4px; - color: #262626; -} - -div.detail-value { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; - font-family: 'Roboto'; - font-style: normal; -} - -div.attribute-detail { - margin-bottom: 15px; -} - -div.attribute-name { - width: 100%; - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - padding-bottom: 4px; - color: #262626; -} - -div.attribute-value { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; - font-family: 'Roboto'; - font-style: normal; -} - -#attributes-header { - float: left; -} - -#modified-attribute-toggle-container { - float: right; -} - -#modified-attribute-toggle-label { - float: left; - font-size:13px; - line-height: 20px; -} - -#modified-attribute-toggle { - float: left; - margin-right: 5px; - margin-left: 0; - margin-top: 3px; -} - -div.modified-attribute-label { - float: left; - margin-left: 10px; - width: 50px; - font-style: italic; - font-weight: normal; - color: #666; -} - -div.modified-attribute-value { - float: left; - width: 100%; - overflow: hidden; - white-space: nowrap; - line-height: normal; - color: #ad9897; - padding-top: 2px; - font-size: 13px; - font-weight: 500; -} - -div.event-detail { - margin-bottom: 15px; -} - -#input-content-download, #output-content-download, #replay-content { - float: left; - margin: 0; -} - -#replay-content-message { - font-size: 13px; -} - -#input-content-view, #output-content-view { - float: left; - margin-left: 10px; -} - -div.content-detail-name { - width: 100%; - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - padding-bottom: 4px; - color: #262626; -} - -div.content-detail-value { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; - font-family: 'Roboto'; - font-style: normal; -} - -#replay-details { - margin-top: 20px; -} - -/* provenance/lineage query dialog */ - -#provenance-percent-complete, #lineage-percent-complete { - border-radius: 0; -} - -#provenance-percent-complete .ui-progressbar-value, #lineage-percent-complete .ui-progressbar-value { - border-radius: 0; -} - -/* provenance table */ - -#provenance-table { - position: absolute; - top: 88px; - left: 0px; - bottom: 47px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#provenance-table div.slick-viewport { - overflow-x: hidden !important; -} - -/* provenance lineage */ - -#provenance-lineage { - border: 1px solid #e5ebed; - background-color: #f9fafb; -} - -#provenance-lineage-loading-container { - position: absolute; - left: 0; - top: 0; -} - -#provenance-lineage-loading { - background-color: transparent; - height: 16px; - width: 16px; -} - -#provenance-lineage-container { - height: 100%; - width: 100%; -} - -#provenance-lineage-close-container { - position: absolute; - right: 1px; - top: 2px; -} - -#provenance-lineage-downloader { - float: left; - height: 16px; - width: 16px; - font-size: 16px; - color: #004849; - cursor: pointer; - margin-right: 4px; - margin-top: 2px; -} - -#provenance-lineage-closer { - float: left; - height: 16px; - width: 16px; - font-size: 16px; - color: #004849; - cursor: pointer; - margin-right: 5px; - margin-top: 2px; -} - -#provenance-lineage-slider-container { - position: absolute; - left: 0; - bottom: 0; - width: 350px; - height: 35px; -} - -#provenance-lineage-slider-container { - margin-left: 10px; -} - -#provenance-lineage-slider { - border-radius: 0; -} - -#provenance-lineage-slider .ui-slider-handle { - border-radius: 0; - border: 1px solid #999; - outline: none; -} - -#event-timeline { - margin-top: 4px; - color: #775351; - line-height: normal; - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - font-size: 13px; -} - -#event-time { - float: left; -} - -#event-timezone { - float: left; -} - -div.lineage-view-event:before { - font-family: FontAwesome; - content: "\f05a"; - font-size: 16px; - color: #004849; -} - -div.lineage-go-to:before { - font-family: FontAwesome; - content: "\f178"; - font-size: 16px; - color: #004849; -} - -div.lineage-view-parents:before { - font-family: FontAwesome; - content: "\f1e5"; - font-size: 16px; - color: #004849; -} - -div.lineage-collapse-parents:before { - font-family: FontAwesome; - content: "\f147"; - font-size: 16px; - color: #004849; -} - -div.lineage-view-children:before { - font-family: FontAwesome; - content: "\f0fe"; - font-size: 16px; - color: #004849; -} - -div.lineage-collapse-children:before { - font-family: FontAwesome; - content: "\f146"; - font-size: 16px; - color: #004849; -} - -path.link.selected { - stroke: #ba554a; -} - -g.event { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -g.event circle.selected { - fill: #ba554a; -} - -text.event-type { - font-family: Roboto; - font-size: 11px; - font-style: normal; - font-weight: normal; -} - -text.event-type.expand-parents, text.event-type.expand-children { - font-weight: 500; - font-family: 'Roboto'; - font-style: normal; - font-size: 13px; -} - -g.flowfile { - cursor: default; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -g.flowfile circle.context, g.event circle.context { - stroke: #004849; - stroke-width: 1.5px; -} - -.flowfile-icon { - font-family: flowfont; - content: "\e808"; - font-size: 16px; - color: #ad9897; -} - -#child-flowfile-count { - font-weight: normal; -} - -#parent-flowfile-count { - font-weight: normal; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/queue-listing.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/queue-listing.css deleted file mode 100644 index 31381d9792..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/queue-listing.css +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Queue listing styles -*/ - -#queue-listing-container { - position: absolute; - top: 0; - bottom: 0; - left: 20px; - right: 20px; -} - -#queue-listing-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; -} - -#queue-listing-stats-container { - margin-top: 18px; - -webkit-user-select: none; - -moz-user-select: none; -} - -#queue-listing-refresh-container { - position: absolute; - bottom: 20px; - left: 0px; -} - -#queue-listing-last-refreshed { - font-weight: bold; -} - -#queue-listing-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -/* queue listing table */ - -#queue-listing-table { - position: absolute; - top: 53px; - left: 0px; - bottom: 68px; - right: 0px; - min-height: 150px; -} - -#queue-listing-table div.slick-viewport { - overflow-x: hidden !important; -} - -/* queue listing table */ - -#queue-listing-message { - position: absolute; - top: 36px; - color: #ba554a; - font-family: Roboto; - font-size: 13px; - font-weight: 500; - right: 0px; - max-width: 40%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -/* flowfile details */ - -div.flowfile-header { - color: #728e9b; - font-size: 15px; - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; - padding-bottom: 10px; - text-overflow: ellipsis; -} - -#flowfile-attributes-container { - height: 290px; - overflow: auto; - padding: 5px; -} - -div.detail-name { - width: 100%; - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - padding-bottom: 4px; - color: #262626; -} - -div.detail-value, div.flowfile-info { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; - font-family: 'Roboto'; - font-style: normal; -} - -div.attribute-detail { - margin-bottom: 15px; -} - -div.attribute-name { - width: 100%; - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - padding-bottom: 4px; - color: #262626; -} - -div.attribute-value { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; - font-family: 'Roboto'; - font-style: normal; -} - -#flowfile-attributes-header { - float: left; -} - -div.flowfile-detail { - margin-bottom: 15px; -} - -#content-download { - float: left; - margin: 0; -} - -#content-view { - float: left; - margin-left: 5px; -} - -div.content-detail-name { - width: 100%; - font-size: 12px; - font-weight: 500; - font-family: Roboto Slab; - padding-bottom: 4px; - color: #262626; -} - -div.content-detail-value { - line-height: normal; - width: 100%; - color: #775351; - font-size: 13px; - font-weight: 500; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/remote-process-group-configuration.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/remote-process-group-configuration.css deleted file mode 100644 index 4a3fad4f19..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/remote-process-group-configuration.css +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Remote process group configuration styles. -*/ - -#remote-process-group-configuration { - position: absolute; - overflow: hidden; - width: 400px; - height: 435px; - font-size: 10px; - z-index: 1201; - display: none; -} - -#remote-process-group-details { - position: absolute; - overflow: hidden; - width: 400px; - height: 435px; - font-size: 10px; - z-index: 1201; - display: none; -} - -#remote-process-group-ports { - position: absolute; - overflow: hidden; - width: 800px; - min-width: 775px; - height: 515px; - font-size: 10px; - z-index: 1201; - display: none; -} - -div.remote-process-group-setting-left, div.remote-process-group-setting-right { - float: left; - width: 49%; -} - -div.remote-process-group-setting-right { - margin-left: 2%; -} - -/* remote process group port configuration */ - -div.remote-port-header { - line-height: 32px; - height: 32px; - padding: 0 5px; - background: #728E9B; - color: #fff; - font-weight: bold; - font-size: 12px; -} - -div.remote-ports-container { - padding: 5px; - overflow-x: auto; -} - -div.remote-port-container { - margin-bottom: 20px; - display: flex; -} - -div.remote-port-removed { - margin-left: 19px; - margin-top: 17px; - width: 18px; - height: 18px; -} - -div.remote-port-removed:before { - font-family: FontAwesome; - content: "\f071"; - font-size: 16px; - color: #ba554a; -} - -div.remote-port-edit-container { - float: left; -} - -button.edit-remote-port { - margin-top: 2px; - margin-left: 2px; -} - -div.remote-port-details-container { - float: left; - flex-grow: 1; -} - -div.remote-port-name { - color: #262626; - font-weight: bold; - float: left; - width: 250px; - line-height: normal; - margin-bottom: 3px; -} - -div.remote-port-description { - float: left; - margin-bottom: 8px; - width: 250px; -} - -div.concurrent-task-container { - float: left; - width: 200px; -} - -img.concurrent-tasks-info { - margin-left: 3px; - margin-top: 1px; -} - -div.compression-container { - float: left; -} - -div.batch-settings-container { - margin-top: 8px; -} - -div.remote-port-transmission-container { - float: left; - padding-left: 4px; -} - -div.transmission-light-switch { - width: 50px; - height: 12px; - border: 1px solid; - cursor: pointer; -} - -div.enabled-transmission-switch { - cursor: pointer; -} - -div.disabled-transmission-switch { - cursor: pointer; -} - -/* remote port configuration dialog */ - -#remote-port-name { - width: 320px; -} - -#remote-port-concurrent-tasks { - font-size: 11px !important; - float: left; - width: 266px; -} - -#remote-port-use-compression-container { - margin-left: 8px; - margin-top: 5px; - float: left; -} - -#remote-port-use-compression { -} - -#remote-port-concurrent-task-header { - margin-top: 5px; -} - -div.batch-setting { - margin-right: 8px; - width: 30%; - float: left; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/reporting-task.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/reporting-task.css deleted file mode 100644 index f162e9ce88..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/reporting-task.css +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Reporting task configuration styles. -*/ - -#reporting-task-configuration { - position: absolute; - overflow: hidden; - width: 800px; - height: 450px; - font-size: 10px; - z-index: 1301; - display: none; -} - -#reporting-task-configuration-advanced { - display: none; -} - -#reporting-task-configuration div.configuration-tab { - display: none; -} - -.reporting-task-editable.setting-field { - height: 32px; -} - -/* reporting-task settings */ - -#reporting-task-name { - width: 250px; - float: left; -} - -#reporting-task-enabled { - width: 12px; - height: 12px; - float: left; - margin-right: 4px; -} - -div.reporting-task-enabled-container { - float: left; - margin-top: 5px; - margin-left: 10px; -} - -#reporting-task-bundle { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -input.reporting-task-scheduling-period { - width: 150px; -} - -/* - Comments -*/ - -#reporting-task-comments { - height: 100%; -} - -#read-only-reporting-task-comments { - height: 100%; - white-space: pre-wrap; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css deleted file mode 100644 index 5fde2fbf20..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#settings { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -div.settings-header-text { - height: 28px; - font-size: 18px; - font-weight: bold; - color: #728E9B; - margin-bottom: 30px; -} - -div.settings-container { - position: absolute; - top: 58px; - bottom: 52px; - left: 0px; - right: 0px; -} - -#new-service-or-task { - float: right; -} - -#settings-refresh-container { - position: absolute; - bottom: 20px; - right: 0px; - left: 0px; - height: 32px; -} - -/* settings tabs */ - -div.settings-tabs { - float: left; -} - -#settings-tabs-content { - top: 43px; - bottom: 48px; -} - -div.settings-table { - position: absolute; - top: 0px; - left: 0px; - bottom: 20px; - right: 0px; - min-height: 150px; -} - -span.sorted { - text-decoration: underline; -} - -div.settings-refresh-button { - height: 24px; - width: 26px; - float: left; -} - -#settings-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#settings-last-refreshed { - font-weight: 500; -} - -#controller-cs-availability { - float: right; - margin-top: 8px; - color: #775351; - font-family: Roboto; - font-size: 13px; -} - -/* general */ - -#general-settings input { - width: 350px; - vertical-align: middle; -} - -div.settings-buttons { - float: right; -} - -.editable.settings-buttons { - float: left; -} - -div.settings-buttons div.button { - float: left; -} - -div.controller-settings-table { - top: 32px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/shell.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/shell.css deleted file mode 100644 index 50793c33df..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/shell.css +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Styles for the custom processor ui shell. -*/ - -#shell-dialog { - display: none; - z-index: 1201; - position: absolute; - top: 20px; - left: 20px; - bottom: 20px; - right: 20px; -} - -#shell-container { - background: #fff; - padding: 20px; - position: absolute; - top: 0px; - bottom: 0px; - left: 0px; - right: 0px; - overflow: hidden; -} - -#shell-close-container { - float: right; -} - -#shell-undock-button { - display: none; - float: left; - margin: 0px 5px 0px; - color: #004849; - font-size: 16px; -} - -#shell-close-button { - float: left; - color: #004849; - font-size: 16px; -} - -#shell { - position: absolute; - top: 48px; - right: 0px; - bottom: 0px; - left: 0px; - overflow: hidden; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/slick-nifi-theme.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/slick-nifi-theme.css deleted file mode 100755 index a9c67c8ab4..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/slick-nifi-theme.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* nifi specific slick grid theme based on the supplied slick-default-theme.css */ - -.slick-header-columns { - color: #fff; - background-color: #728E9B; -} - -.slick-header-column { - background: #728E9B; - color: #fff; - font-weight: bold; - cursor: pointer; -} - -.slick-header-column:hover, .slick-header-column-active { - color: #fff; -} - -.slick-row { - position: absolute; - background: white; - border: 0; - line-height: 22px; -} - -.slick-row:hover { - background-color: #dce3e6 !important; -} - -.slick-cell { - padding-left: 10px; - padding-right: 10px; -} - -.slick-cell.selected { - background-color: #ffef85; - border-top: 1px solid #000000; - border-bottom: 1px solid #000000; - padding-top: 0px; -} - -.slick-row.odd { - background: #f4f6f7; -} - -.slick-cell.invalid { - border-color: #ba554a; -} - -.slickgrid-editor > textarea { - resize: both; -} - -.grid-canvas .slick-cell:first-child{ - border-left: 0; -} - -.slick-viewport .fa { - color: #004849; - line-height: 22px; - margin-top: 0; - width: 12px; - height: 12px; - float: left; - margin-right: 5px; - text-align: center; -} - -.slick-viewport .icon { - color: #004849; - line-height: 24px; - margin-top: 0; - width: 12px; - height: 12px; - float: left; - margin-right: 5px; - text-align: center; -} - -.slick-header.ui-state-default { - background-color: #728E9B; -} - -.slick-header.ui-state-default, .slick-headerrow.ui-state-default { - font-family: Roboto; - font-weight: 500; - font-size: 12px; - font-style: normal; - border: 0px; -} - -.slick-header-column.ui-state-default { - height: 24px; - line-height: 24px; - border-right: 1px solid #728E9B; -} - -.slick-sortable-placeholder { - background: #728E9B; -} - -.slick-row.ui-widget-content, .slick-row.ui-state-active { - font-family: Roboto; - font-size: 12px; - font-style: normal; - font-weight: normal; - color: #262626; -} - -.slick-cell, .slick-headerrow-column { - border-right: 0; - border-top: 0; - border-left: 1px solid #c7d2d7; - border-bottom: 1px solid #c7d2d7; - padding: 1px 2px 5px 10px; -} - -div.status-text { - padding-left: 4px; - line-height: 22px; - overflow: hidden; - text-overflow: ellipsis; - float: left; -} - -.slick-sort-indicator { - float: none !important; -} - -.slick-sort-indicator-desc { - background: url(../images/sort-desc.gif) !important; -} - -.slick-sort-indicator-asc { - background: url(../images/sort-asc.gif) !important; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/status-history.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/status-history.css deleted file mode 100644 index 57a5baa982..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/status-history.css +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* status history dialog */ - -#status-history-containment { - position: absolute; - left: 0; - top: 0; - right: 30px; - bottom: 0; - visibility: hidden; -} - -#status-history-refresh-container { - position: absolute; - left: 20px; - bottom: 20px; - z-index: 1; -} - -#status-history-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#status-history-last-refreshed { - color:#775351; - font-weight:500; -} - -#status-history-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-right: 3px; -} - -#status-history-metric-combo { - float: right; - width: 250px; -} - -#status-history-container { - position: absolute; - top: 32px; - left: 40%; - right: 0px; - bottom: 0px; -} - -#status-history-chart-container { - background-color: #fff; - overflow: hidden; - cursor: default; -} - -#status-history-chart-container .ui-resizable-se { - width: 16px; - height: 16px; - background-image: url(../images/iconResize.png); -} - -#status-history-details { - position: absolute; - top: 0px; - left: 0px; - right: 60%; - bottom: 0px; - overflow-y: auto; -} - -#status-history-dialog > .dialog-content { - overflow: visible; -} - -div.status-history-detail { - margin-bottom: 12px; - cursor: auto; -} - -div.detail-container-label { - color: #333; - font-size: 12px; - font-weight: bold; - margin-bottom: 8px; -} - -div.detail-item { - margin-bottom: 8px; -} - -div.detail-item-label { - color: #527991; - font-size: 10px; - font-weight: bold; - margin-bottom: 4px; -} - -div.detail-item-value { - line-height: normal; - overflow: hidden; -} - -#status-history-chart-control-container { - height: 125px; - background-color: #fff; - margin-top: 5px; - cursor: default; - overflow: hidden; -} - -div.legend-entry { - margin-bottom: 3px; - cursor: default; - clear: left; -} - -div.legend-label { - font-weight: bold; - overflow: hidden; - white-space: nowrap; - line-height: normal; -} - -#status-history-chart-container text, #status-history-chart-control-container text { - fill: #527991; - font-family: Arial, sans-serif; - font-size: 10px; -} - -.axis path, .axis line { - fill: none; - stroke: #000; - shape-rendering: crispEdges; -} - -.chart-area { - clip-path: url(#clip); -} - -.chart-line { - fill: none; - stroke-width: 1.5px; -} - -.chart-line.over { - stroke-width: 2.5px; -} - -.brush .selection { - stroke: #666; - fill-opacity: .125; - shape-rendering: crispEdges; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/summary.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/summary.css deleted file mode 100644 index e8ef890f7d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/summary.css +++ /dev/null @@ -1,922 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Status Styles -*/ - -#summary { - position: absolute; - top: 0px; - bottom: 35px; - left: 20px; - right: 20px; - overflow: auto; - height: 100%; -} - -#summary-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 30px; -} - -#flow-summary-refresh-container { - position: absolute; - bottom: 0px; - left: 20px; - right: 20px; -} - -#summary-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#summary-last-refreshed { - font-weight: bold; -} - -#summary-header { - padding-top: 10px; -} - -/* view options */ - -#view-options-container { - display: none; - font-family: Roboto; - font-size: 13px; - font-weight: normal; - position: absolute; - top: 50px; - right: 0px; - z-index: 1; -} - -/* view single node dialog */ - -#view-single-node-dialog { - display: none; -} - -#cluster-search-example { - color: #775351; - font-weight: bold; - line-height: normal; - margin-top: 3px; - margin-left: 5px; -} - -div.search-match { - margin-left: 5px; - color: #888; - font-size: 10px; -} - -#search-cluster-results .ui-autocomplete { - max-height: 300px; - z-index: 1351; -} - -input.search-nodes { - color: #888; -} - -div.is-primary-icon { - color: #000; - font-family: Roboto; - font-size: 10px; - font-weight: bold; - line-height: 14px; - width: 14px; - height: 14px; - background-color: rgba(255, 255, 255, 0.9); - border: 1px solid #aaa; - border-radius: 7px; - margin-right: 3px; - margin-top: 3px; - float: left; - text-align: center; -} - -/* system diagnostics dialog */ - -#system-diagnostics-refresh-container{ - position: absolute; - top: 0px; - right: 0px; -} - -#system-diagnostics-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#system-diagnostics-last-refreshed { - font-weight: bold; -} - -#system-diagnostics-refresh-button { - float: right; -} - -#system-diagnostics-last-refreshed-container { - float: right; - margin-right: 5px; - margin-left: 0px; -} - -#system-diagnostics-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-right: 3px; -} - -#system-diagnostics-dialog div.configuration-tab { - display: none; -} - -#system-diagnostics-link-container { - float: right; - margin-top: 8px; -} - -#heap-table, #non-heap-table { - border-collapse: collapse; -} - -#heap-table tr, #non-heap-table tr { - height: 20px; -} - -#heap-table span, #non-heap-table span { - font-weight: bold; -} - -#available-processors { - font-weight: bold; -} - -#processor-load-average { - font-weight: bold; -} - -#garbage-collection-table { - border-collapse: collapse; -} - -#garbage-collection-table tr { - height: 20px; -} - -#content-repository-storage-usage-container { - height: 179px; - overflow-y: scroll; - border: 1px solid #ccc; - padding: 4px; -} - -#content-repository-storage-usage-container div.storage-usage { - margin-bottom: 10px; -} - -#provenance-repository-storage-usage-container { - height: 179px; - overflow-y: scroll; - border: 1px solid #ccc; - padding: 4px; -} - -#provenance-repository-storage-usage-container div.storage-usage { - margin-bottom: 10px; -} - -.storage-usage-details { - padding-top: 4px; -} - -div.storage-usage-progressbar { - height: 20px; - border: 1px solid #aaaaaa; - border-radius: 0; -} - -div.storage-usage-progressbar div.ui-progressbar-value { - font-weight: bold; - color: #000; - line-height: 20px; - display: block; - text-align: center; - border-radius: 0; -} - -dl.setting-attributes-list { - float: left; - font-size: 12px; - width: 100%; - padding-bottom: 20px; -} - -.setting-attributes-list dt { - float: left; - clear: left; - padding: 0 0.5em 0.3em 0; - font-weight: bold; -} - -.setting-attributes-list dd { - margin-left: 8em; - padding-bottom: 0.3em; -} - -/* summary tabs */ - -#summary-tabs { - float: left; -} - -#summary-tabs-content { - top: 80px; -} - -#summary-filter-controls { - z-index: 1; -} - -.summary-tab { - display: block; - padding: 0 5px; - height: 26px; - float: left; - color: #666; - background-color: #ccc; - border-left: 1px solid #b5b5b5; - border-top: 1px solid #b5b5b5; - border-right: 1px solid #b5b5b5; - margin-right: 5px; - text-align: center; - cursor: pointer; - line-height: 26px; - font-weight: bold; -} - -.summary-selected-tab { - color: #fff; - background-color: #666; - border-left: 1px solid #666; - border-top: 1px solid #666; - border-right: 1px solid #666; -} - -#summary-tab-background { - height: 200px; - position: absolute; - top: 103px; - left: 20px; - right: 20px; -} - -#summary div.configuration-tab { - display: none; -} - -div.summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -div.summary-table div.slick-viewport { - overflow-x: hidden !important; -} - -span.sorted { - text-decoration: underline; -} - -/* tooltips in the summary table */ - -#summary .nifi-tooltip { - max-width: 500px; -} - -/* cluster processor summary table */ - -#cluster-processor-summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#cluster-processor-summary-header { - height: 26px; - color: #666; - font-weight: normal; - margin-bottom: 1px; -} - -#cluster-processor-refresh-button { - position: absolute; - bottom: 20px; - left: 20px; -} - -#cluster-processor-summary-last-refreshed-container { - position: absolute; - bottom: 27px; - left: 48px; -} - -#cluster-processor-summary-last-refreshed { - font-weight: bold; -} - -#cluster-processor-summary-loading-container { - position: absolute; - bottom: 28px; - left: 212px; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-processor-details-container { - position: absolute; - right: 0px; - height: 52px; - left: 0px; -} - -#cluster-processor-icon { - float: left; - margin-right: 5px; -} - -#cluster-processor-icon:before { - font-family: flowfont; - content: "\e807"; - font-size: 32px; - color: #ad9897; -} - -#cluster-processor-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#cluster-processor-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; - overflow: hidden; - white-space: nowrap; -} - -#cluster-processor-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - position: absolute; - bottom: 0px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - left: 0px; - right: 0px; -} - -/* cluster input port summary table */ - -#cluster-input-port-summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#cluster-input-port-summary-header { - height: 26px; - color: #666; - font-weight: normal; - margin-bottom: 1px; -} - -#cluster-input-port-refresh-button { - position: absolute; - bottom: 20px; - left: 20px; -} - -#cluster-input-port-summary-last-refreshed-container { - position: absolute; - bottom: 27px; - left: 48px; -} - -#cluster-input-port-summary-last-refreshed { - font-weight: bold; -} - -#cluster-input-port-summary-loading-container { - position: absolute; - bottom: 28px; - left: 212px; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-input-port-details-container { - position: absolute; - right: 0px; - height: 52px; - left: 0px; -} - -#cluster-input-port-icon { - float: left; - margin-right: 5px; -} - -#cluster-input-port-icon:before { - font-family: flowfont; - content: "\e832"; - font-size: 32px; - color: #ad9897; -} - -#cluster-input-port-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#cluster-input-port-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; - overflow: hidden; - white-space: nowrap; -} - -#cluster-input-port-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - position: absolute; - bottom: 0px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - left: 0px; - right: 0px; -} - -/* cluster output port summary table */ - -#cluster-output-port-summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#cluster-output-port-summary-header { - height: 26px; - color: #666; - font-weight: normal; - margin-bottom: 1px; -} - -#cluster-output-port-refresh-button { - position: absolute; - bottom: 20px; - left: 20px; -} - -#cluster-output-port-summary-last-refreshed-container { - position: absolute; - bottom: 27px; - left: 48px; -} - -#cluster-output-port-summary-last-refreshed { - font-weight: bold; -} - -#cluster-output-port-summary-loading-container { - position: absolute; - bottom: 28px; - left: 212px; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-output-port-details-container { - position: absolute; - right: 0px; - height: 52px; - left: 0px; -} - -#cluster-output-port-icon { - float: left; - margin-right: 5px; -} - -#cluster-output-port-icon:before { - font-family: flowfont; - content: "\e833"; - font-size: 32px; - color: #ad9897; -} - -#cluster-output-port-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#cluster-output-port-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; - overflow: hidden; - white-space: nowrap; -} - -#cluster-output-port-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - position: absolute; - bottom: 0px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - left: 0px; - right: 0px; -} - -/* cluster remote process group summary table */ - -#cluster-remote-process-group-summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#cluster-remote-process-group-summary-header { - height: 26px; - color: #666; - font-weight: normal; - margin-bottom: 1px; -} - -#cluster-remote-process-group-refresh-button { - position: absolute; - bottom: 20px; - left: 20px; -} - -#cluster-remote-process-group-summary-last-refreshed-container { - position: absolute; - bottom: 27px; - left: 48px; -} - -#cluster-remote-process-group-summary-last-refreshed { - font-weight: bold; -} - -#cluster-remote-process-group-summary-loading-container { - position: absolute; - bottom: 28px; - left: 212px; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-remote-process-group-details-container { - position: absolute; - right: 0px; - height: 52px; - left: 0px; -} - -#cluster-remote-process-group-icon { - float: left; - margin-right: 5px; -} - -#cluster-remote-process-group-icon:before { - font-family: flowfont; - content: "\e805"; - font-size: 32px; - color: #ad9897; -} - -#cluster-remote-process-group-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#cluster-remote-process-group-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; - overflow: hidden; - white-space: nowrap; -} - -#cluster-remote-process-group-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - position: absolute; - bottom: 0px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - left: 0px; - right: 0px; -} - -/* cluster connection summary table */ - -#cluster-connection-summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#cluster-connection-summary-header { - height: 26px; - color: #666; - font-weight: normal; - margin-bottom: 1px; -} - -#cluster-connection-refresh-button { - position: absolute; - bottom: 20px; - left: 20px; -} - -#cluster-connection-summary-last-refreshed-container { - position: absolute; - bottom: 27px; - left: 48px; -} - -#cluster-connection-summary-last-refreshed { - font-weight: bold; -} - -#cluster-connection-summary-loading-container { - position: absolute; - bottom: 28px; - left: 212px; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-connection-details-container { - position: absolute; - right: 0px; - height: 52px; - left: 0px; -} - -#cluster-connection-icon { - float: left; - margin-right: 5px; -} - -#cluster-connection-icon:before { - font-family: flowfont; - content: "\e834"; - font-size: 32px; - color: #ad9897; -} - -#cluster-connection-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#cluster-connection-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; - overflow: hidden; - white-space: nowrap; -} - -#cluster-connection-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - position: absolute; - bottom: 0px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - left: 0px; - right: 0px; -} - -/* cluster process group summary table */ - -#cluster-process-group-summary-table { - position: absolute; - top: 70px; - left: 0px; - bottom: 48px; - right: 0px; - overflow: hidden; - background-color: #fff; - min-height: 150px; -} - -#cluster-process-group-summary-header { - height: 26px; - color: #666; - font-weight: normal; - margin-bottom: 1px; -} - -#cluster-process-group-refresh-button { - position: absolute; - bottom: 20px; - left: 20px; -} - -#cluster-process-group-summary-last-refreshed-container { - position: absolute; - bottom: 27px; - left: 48px; -} - -#cluster-process-group-summary-last-refreshed { - font-weight: bold; -} - -#cluster-process-group-summary-loading-container { - position: absolute; - bottom: 28px; - left: 212px; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#cluster-process-group-details-container { - position: absolute; - right: 0px; - height: 52px; - left: 0px; -} - -#cluster-process-group-icon { - float: left; - margin-right: 5px; -} - -#cluster-process-group-icon:before { - font-family: flowfont; - content: "\e804"; - font-size: 32px; - color: #ad9897; -} - -#cluster-process-group-name { - height: 15px; - font-size: 15px; - font-family: Roboto; - color: #262626; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#cluster-process-group-type { - font-size: 12px; - font-family: Roboto; - color: #728e9b; - margin-top: 3px; - overflow: hidden; - white-space: nowrap; -} - -#cluster-process-group-id { - font-size: 12px; - font-family: Roboto; - color: #775351; - position: absolute; - bottom: 0px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - left: 0px; - right: 0px; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/users.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/users.css deleted file mode 100644 index 31c1613996..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/users.css +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - Users Styles -*/ - -#users { - position: absolute; - top: 0px; - bottom: 0px; - left: 20px; - right: 20px; - overflow: auto; -} - -#users-header-and-filter { - height: 32px; -} - -#users-header-text { - font-size: 18px; - font-weight: bold; - color: #728E9B; - font-family: Roboto Slab; - margin-bottom: 30px; -} - -#users-refresh-container { - position: absolute; - left: 20px; - bottom: 0px; -} - -#users-loading-container { - float: left; - width: 16px; - height: 16px; - background-color: transparent; - margin-top: 4px; - margin-left: 3px; -} - -#users-last-refreshed { - color: #775351; - font-weight: 500; -} - -#users-header { - padding-top: 10px; -} - -#new-user-button { - float: right; - padding-left: 5px; - display: none; -} - -/* users table */ - -#users-table { - position: absolute; - top: 92px; - left: 0px; - bottom: 67px; - right: 0px; - overflow: hidden; - background-color: #fff; -} - -/* user policies table */ - -#policies-dialog-user-name { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -#user-policies-table { - position: absolute; - top: 40px; - left: 0px; - bottom: 33px; - right: 0px; - overflow: hidden; - background-color: #fff; -} - -#user-policy-message { - position: absolute; - color: #775351; - font-family: Roboto; - font-size: 13px; - right: 0px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - left: 0px; - bottom: 0px; - height: 13px; -} - -/* users dialog */ - -#user-dialog { - width: 450px; - height: 500px; -} - -#user-identity { - width: 410px; -} - -/* user delete dialog */ - -#user-delete-dialog { - width: 450px; - height: 165px; -} - -/* users/groups list */ - -ul.usersGroupsList li { - height: 24px; - line-height: 24px; - border-bottom: 1px solid #c7d2d7; - width: 100%; - display: inline-flex; -} - -ul.usersGroupsList li.even { - background-color: #f4f6f7; -} - -ul.usersGroupsList li div.nf-checkbox { - margin: 0 10px; - margin-top: 6px; - min-width: 12px; - max-width: 12px; -} - -div.available-identities { - margin-left: 5px; - margin-right: 10px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/LICENSE.txt b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/LICENSE.txt deleted file mode 100755 index 75b52484ea..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Bold.ttf b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Bold.ttf deleted file mode 100755 index a355c27cde02b13da43c30ae060c5fb164b36b76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162464 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 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Italic.ttf b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Italic.ttf deleted file mode 100755 index ff6046d5bfa7cd4498ad4a549d2d9028f6c73372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161484 zcmb@u2Urxz7ARb)yBXpT2PF+4U?M0AiaF;T(KTSspkhv#F=Ebf&ARG13I@OgDn>A8 z5hJLp?&`X`%JjTbJRjiXI=M~{!U!QJ*f6AR*0@R2JKgR?BVs)j zA=0>6`*xjLj(L6*5!JTE5nA0MwR*Fb!YkpC*U-g;2n;E{vB{&WB#Z6Q39HaKQ%9I`^rFkT#7 zw;eoU(x7dr<&Gf~ycgkz--ZkrInmdz0gYlmuq`EjVW@4P=M0&#giEzJmRLsbM zHCqj6kBGDlo;eg3J2u`Jg9ZRR?fLb%F$3e`w9%xBU7z)cyl` zz%cNa`Pngq_c@Q-F8*G_a97pZYAoER;`b_l@SHS4wgnj6zSoe)!*zs@7F|<1_JY3~ zw#$$k>WTzqB!ukwaCj^d;g~WTybP`&VS^A382FfadJ_%e!}RevL&5IylfGLe~J^)^G|M{$^@Kg&L8$D2v@h9oZn% zQaFiH*;5n+)ZR~ypphiqm_+-b;Vcfd#>T`% zG)Y*2YLP(Hf^|gJ>@A#+M76{mxCZBizGwpbr1Y@>dlcJ+g4hAHS8zgu*>|*4{D3mp zTjL#e6zye)jqgbrqmkA`XP}=ZaOL)okm3TFe64=anBvSFwd3q(yw8j6Q= zjI~ET_yY>XuZ%AAZ=~h>;(g=|@c6I^s0kZrybtiUAp7Ci8ikORs1fUcdeUoXl#q)O z=u2ZJO)>6*{#UrC2L6bA$$sNvp#vIf|VvVoqT{MNL(JuVWm<8u^ z>2h?I9z+f>pC?5JbWC(cTL6~ZQY+&e7L3XR{j_Wws=@XkZ*eVhW^2$-Y$9sRVo^;t z+xT3VgsS5|PzdXZf>{mZNBoe#Fbq|P>*b_4)LC*v&G4TnTo{ZxkVD26LT{k^B-Bud zh5kP3fn}qL`J%e?2-eW4IFPPKFKG`f;SboJ{ERX2Hy)-((NppXohKcQ1<2Yk4BC5W zHqib+)`gGpyTVi=VPEs>k-BzCgbxECRKK>n)iZ zn$Mb`!NM%m0BF!o9EAq4`KSY{ga(U#Xprz2Z5NuLiB{3ZYgQvrBe4fM2J_dDeMHrS z=f*{ntMM1$#Q-?hNJunZVeimNQ9?b16nI|`bVKTf8cIunPQRiB;#uIKd=vriix3!K=+fzCBhHjpC8DV%|)TC7PNWBEa55&V{>31&e2TNSJ;nQvmJ2U z5KR%=1CNdaJRhU3q8jdN04)Ml6Z=5l+IWWZG{;rkYRnK%!ZUGj4DS)2pjc5v?N~h& zBFd!QudvD)dM3(qa_IRCPxs5V<_EM%LFf6*vo0egh1h{I7; zpigTt6de@oK+jc0hw1NVo0MeC726meNm-zaCL({hcNmjUYhe-EAW$?7=5iQyLcdcZ z*n_VKnR{{w^fv>Y`x9v7L9kx|_PKt(YtqLg81yPM!4K^b%b@jim9Y3_;f75LDBu9*UBxAwQUJAAqHUa2#l13;g#JvKA^Be;2}xuZ2u>ji#bjRszuL zHF^g+b(V-xviJ*HA?`v+Vk2~#jYn;SkuWc-f#)Zo18hHP0Qa{cqOmL+imGs3PYXc@ zmqBId7u0|>Miar-#DQ*j2|6Mk^jde|n|N`*sj*wok3kigyr&6khb9Z3 z(P~!5n8I8Ec01z}psg3Q;pBy}0NM{|pW)aInm4piXg1Iy=p3|??8i2&oN)u&i&_c6 zpc^FAn986he4zi10$?mB=7mHSfU42WFm^kmPJst{I?;F=?3fpQY`iNp2Y&qy^LY<+ zUq>{8<0v^BGbLZZqcgy&hi4liA3-uM5Z;1qEe|;4z&uBS-P#R0Q-!(<)^JZp)I+R@ zyu{h?9764d>&iVotUuCT`fJLrWJoqC+QB8#=4U99{G2?BZ=`v_B&=x>j4((@X)1mES zos4(Ezo;Zm0e;>J`u!CeK#);|jnKZK5U`Jvi~8Rj&#@#~b{xYcsZ{Y>!n6o2!7^$HIGznAP&LGHPK z3iI**+H*ga`;weT_`E5+0{$%bDY;);vgf`X_vHW=E!ei2Y%u5$-nb6qI`O|X&>@uT z$P$g~$db*XAGvIoY+N^%Y+N^%9Ea=RlFh7-ON_|R!RHXB{-seq`oBOE0@C}V73qii) z(J(<{{3tX7-M<8BmFp1KDDnaG#CebNFpp#Y8N+ZMQRWrm73Cftvv41l`>o)kDE=z= zq>3-jWt;o^5M%K807Ii|6xO`*qeK<@!<}&LkGpuGf6rUgbbhGbi6^xpw+(4GW2j_mX0zcQE zTz()P;I!aAI`^yjzWKf8-Yi4Pya7Ine+Y35k7dlyS>6pa(RETG8nKYAV)fX$x5;{nBI2U_#FWe|@lF$DMdd7S)j`uhK;^JaYizxJG#+#W%1 z5BmDIf9li!=VNmm`G4#GsYi?APILVE-+D8z{YRe&HVraHii`liDz<{hSit){#^U_X z=fpf$=AO$L=Xo=4SmF#GXXT?xO6!T#w3YFV-~s-w6Zq<8e&Kcr#!%!AVmk9&7x8K@ z^O%Yr=xn^t;{x#4OXpf9qg4>UOcl&_)@^9meHpJeTCs3n-_#h1P;Ke!^H?rr*O}PfXn_@S(J~r8kirk-9e0i?>xgXDU zJJ;Lbvvb?Q_Z1t*{cErT{2XuQSb+P+mUqKF%KO20E)^euAFjNc+cf@u9uIJzm)o5I zptE5N#TSO>6ki+sb+hc6=K>-=3{l`Kl{Ex}gb*qSqChBR0vs^G@~0dyD^UJTsambxS3M82xBrPN)oezi-N=- z;x`f)z>0_zM&yscAEAU%3IKCJ89)G|b9mq>6QJ-i{xpXOUL#4ON+rQAycf0rrAh*j zIjjsuhuh#L#)p*n9v>KP6|5xwADSdutN3*hnw4ZF!JW$3h=a-a6&OHN@%uR-5{HFf z;&117GnJ%*7s1$6PzfqZ2v7wB=%NHT1J;1NK$(cGfZ9NBN#gH<7r+xt#o-3P`1@2q z4H%D7=z%7n6;vvP!kj4Z$4>)+_!IzX`GNAs_h5{oKRz|^UXkN%YD^)Y6{iO$7yJQ6 zl0rHD8ilSLetw0)fV|@yxBxHW`$ezjv=cc-3Wj_-sB#Z%`2GC6`Pg)ZpH=>pN6ZI+ zf{B8bt@60(vgMreI{qAiDI@>~P!$+XVH3FDbRR##xzO^b92dWXPbf!#W5JY}wcKgq zGa>G#zb2 zzo3KY47!N2(Hry$$=Ct%IRQ8bhv81R4<3xC;~6*!ufW@}4u8f*;z1%wG)W_u$Yt`B ze4!YmLq#2^KV3){(-m|()zOpmGQB}>(R(a_g)+$FuzoC-O=9!d4R)X9u|EVXs0C+l z>|M`$uJ>==U%dbJX`{8#I%-|D-daCxkTy&ku8q>x);8A0YiDS8YWHh@(H_yB(x&?g zzRtdGzJ9)ez9GK7Aw@3wIrusGmG$%XtK`?*udm<0fGZ!#w~QZ5HX02^$OsnUss&uP z1FnbAS#$~IpttBVGGaA$!hyIvu7W$`zIaFxuG{co!1X(EFT(XA;Q9b?MHXD=0Io~v zO1gs{p{M8-dJ}L(ERcn*63YPA7?YgKJc3$8n~yR`=Z*OS_`Qn>ak!qu?^t^)v947h^hZY%^`VWy4WjIZ!6 z<9WQ^cn(b7VrcWB&4xA;+6-tDpiMHm8bu?M|CHb1R8As!fZPauHrzMdGh`W#8ul1= z8@3xZ85Y1BuNtrLI}9q=KTv2W{EkrJNoYr)?S{4up8f;c@37wjq1T6B$G+CSZujcg z>o%`@<@L<#hEQJTyiR!?@>;wcpV#2!sJt3^s^>5>&mTd%`~1f9>(A#spY(jf^AWi# zpT|6}p1b1Nf!ukyb91NXPRWhU?UY+Px8~!!&ReZ>#U11TKCEyw2dVfE-h^HOUa+!< z%a>@J(@Xr}VK~0TVX0l*j~~Jv^I*HhbP1=xJ}mBmhmA;cXx*W`fCjiyvDD+r0r~4c z&%xdKruJ{w{%_||1IzccMZyCNMrLVMBPv=7qL zzBC3MrTu7sbc_x_$#ft}p@ZmPbR2S)C(ubcln$fA=?FTKj-s(N4%X<#(6K0!jz$+i zcU?kR=rX#3uF`mP4f4}R=wx)0PJ!(7R631LhxLrx=nlF|XHq?^@7<%b(S16H&P5OC zJoFGfLXYWunt-0rM7jX9*dmbaC3Gozik{IVx(pS7)_jjX(B%TMz>-SR^qH!FPcnKup8E3 zcU*=Zrzb#voCJMa9&}`X_7kpvE8W0ou<+>)`GPJtz3omWihxa z4ri@cYg`Ri#}POZ*T6MtIz7$Wu(tFJJ+>i}nLvbVAm^S<#!YcE)`fMY`LqBx z$1UhP`kswoBXLXmfsLZS(vNs39tJuu7SCYK@mw9M+)Afv-~9;2OQTO<<6PYwuOlkj zr+2UpSJrBq3~j8#eS>wRvJO}D4c5`h+NL@h(6nQB|7h((?ZOrV7HXSnhr|rfu>hrq z3j-HMhiY}GQ}>~;?cCj0S3larvO6$3Ix1Ml_-o(^xO-tVykJ<-3!qm{g&Kl&LgiLk z9Sv;Xy+e0hLSqkI{l?KAzP{Qfy0h)O>&`az@QscR)`=Dv0oG|l-A&L+m33mpV4aoe z4V}8{>U-!=^umSweVw}d`|1)FF7#Lk7?_XGmOeg#(LYbrFL?qe(BuS8Xb-P~&fnLA zpYZqf_XP-}8wcxDm0NY{-ULAO1rV((>&i6=*4b3n1wdz8`A85>)GqAQ{bYT_Q2!HF zD6w<*laTPwkBj!u`2(=p#1m?uThTd=rCnuR{lpVm)T8^60MyvyB&2Tg8^d|qN;*^t z>0!mV64pCl*dBL?3JdU1Bdbd2IBs4m#McFOkCX1rYm`^^Xvap?0^ImH*1JvZN@e(- z5K-B$j04{jNB3%4)r0Rz%P0I4<^HX<$cMK&x7 zxv(WjE$EPo=#E_RZsaJQ<<%p~Ukoz;+lDUUCODIfq0Y1t?Fsth41Ehu9IOg~w5754 zLKESt=qOGVzerl?7pnlPD64i>u~uuXPN;%ZFRlHoms@|aX=pRoCf&BY?FifXwx{h} z?V{`!+GW`X+fTKB>(I<0%^_bMtnQ^g;wU;sI>tG!aXjdF$MJ`gn^SeCROdkF+0Gwa zdb%8Qt?QcTn&zf*>*qGj?W?Ad=4W?%_et)@%Tz2gyG(W&xon%VtIOW^Pj!uzkA3F*{Lo6^l|0t|?pw`wlJ9lD27WPq$$okM#6QY^r2i@Z zi~i63zn60p~+_d})7*wD?P8KGB0{|YM`)+H=4?0OYcrBRi>Ri;;&UnQl=+p4On z0aeFTom_Q$)f?f>!sEkFgy&ZathS>%tsY-u5I3|`KA`?7Ktq~T6(q|-10~(b*uWV zMz(fr-JdrekKOs-4bt?$`NH zXG52vT^@Gr(lxzX*KRMmCq$Qv-W+Z0QLo4B9$$O*{VDjTUwe)1^`Upe-Ya@v=>4LP zSD$KqTJ`noyC#Ok#Kb)9XWuWX-|BuJ`#0}@XaE~9aDaZG_rRG09}k*7*mdxb!H0%O zL!yUl9_l%C)zDAFS`XVh++q0a;rSz4j))#Ha>VJ8wH?=c z+?erA$M+jQWBiKoyT^Z;FnOZq#C;Q!CrzAmdvf#?Hf7M1f~n1>o|x8a+U4mzr>D&* zH>2*1?lZ>BSUkg+5R?#;FfBnpv)0U+Gyj@Zb5^riU1lwvwQ<(@S&wJEo!xTwjyaKY z&d+T$Pcu(5f7Sfo68#br5)UU{SWte!o*AGrV4fye^~erfj0jf1fV zUmR+8XzyX?!v6B+0ms9R*ErtzxDNiEI8pw@x)a||)<3!TtdaBl`W~X|eiaRy`)P_?>PGy{Wbn4esmgcbxv6VY52c<&uW-KB`F7`H&W}Am_x#%P`_8AHzj*%U`IqNE zo&S+xm*JC9DI+qYMMlqz!5L#S5;In1Y|Hp1<8($&#*>WvjPIE?nVQTBnNgXoGka%_ z&YY9ECUbA*vCOlXw=!R5{&7LNQ079#3lSF@UTAxv$Au9Wrd?QYVfBUW7Y<%HbK&ZR zrx!k6L>C<|`d_SmvH8WG7e`&3dGW=i4ww308h2^_rFEAMTuQ%`eJStKmnfbz{$sQ`rI8k=f0&dt{Huo}QhQy&-#dwm$oG_Lb~= z*)OsUIYN$Ij%$urPC!m@PW7BRIZblf{Jj(f$^Jk9n zrgYQcrsigao3(DXx!LFD=$i{}ZoB1r%j;Iyts1xL-|BX2)UENirr(-(Yw4|RxAxxB z-8ymW?5(U@Ikz6%dVVYa*5}*gw)JhN+p)JN+@5iJ#qE8!kK8_a``Yb0x8L8vciiuU z-f4QL*PU^9mfYESC-qLoovU~5-}!jw+g-c6vt$nxC-C=iU-d%Th+ugl)&)$7- z_to9ccMI=X-E+C8y;uHT*u5I}+T9y;Z`8fH_cq--cJI=??0fg`72NxA-~PVa{R;PM z-*0!n-~IUe^X{*`zyE&v{ha$R@4vtQ<$?I1%!A4g>OJW2px=XW59UAE`r!D3><4)d z3=hjZ40u@OVa*3IcQywmPxa(os!#fY(KcbJyKC1et#iId_raxN#Xy>Ej zkFGp=`snjx`q=GpmB+0gcYi$K@%YDyk2gF%@Hpe~qsPBLQ9bc}QsYVcCxf5Nda~)s zp(kgbTzm51$*U)ypOU98Pb)ud^t9*GF;5ph-Tw6C)10U8p9#-ApM^hb`7Gwy#Aiv* zc0Wsdmi6q;v**t~Jd<==Jn1SmN!0cR^HOQ4SBos4!v-HG3UjVm+F_X zFR#3O{R+LZedYeD+^euxwO=)Vwer==*R@`+e!cnizSl=zr@qd3ef9P2*Nb>dqCiczzH(TEvf0O;@?Hl7;&D+qo&EEETJN)g0x3k|Sz1{eB&)cJK&%C|* z_Ql(;`6%Bu-#x!vepr6({O0+c^M~ip%3qqlA%AziKL2$7mHfQ?KMQDqLxD#@P(gS> zy@FN+-3s~_#1>2`m|w86U~9pig2M&J3(gc=D#$LlUyxhyw%}92p9RKu(mS7b5%1c( z8}M$#yZCpD->rIg;N7`*m*3rd_wZfbyT9I}_g3%K@7>>P-b2SV2--E}0?;|TGr8?785I6&&U(RxM@JgFB<9hBShBP*plVr~0XZ)-YZr*t}^ zK4NeCHLQxSucI$@#E^TVz7W#+((;DdBr`((D4)W%uLzZ8ObiA=_kE`z8K#j5KOD(K zLvPYMk=LA|M#kUqR|NxmR8OyRP;=N-9QJ>K)D9rE%b*1jU4?Mm`>#;=mBRDjy z3ifvn#}N^c5pJ$7q8Ny)?A&)+Zil17LTcCUT?=nyuHW~E)*+;JNN6o^kYV&J=16vn zRuFlpP#L77p?YFX`RhoiPRh|ywazLB-b*ECjfVO=Yw&_jquM8a;u~R?u#2`CF!%5t>4Y&kAdbzY(FdPL1A z>R67>OPNR5+T`eLLiJX~7j4u!dpM`oIpyfA)H)aCUbh?_QtRB6Gu|8ne}LXUG8~$( zb2ts>P4ZV7Y@Pi{#`iVLR=;sKCj8}&oz^X1|6|>X^_lL^5+1n!wt7Xi?=!#S4e}to zVFB*92yc`7^0r9cvOpe0{CV;Tqn5@nR$JTz@z+SbPvu}h!$blV;HENT?FR>b98uz@ z;#7utw$0&NHQ(x;u?1zK)|V+h@>A=4a&)i_j| zcCXX@mizDAYm;mc|Nj`X9LEa^{@- zyHm3_5i%F#Fcns7YY178m-c{qL|ErU3-kfC>u?+c)H)%DZ(&YgTS?j00Pe04s*4IO z7Cc9>MXd-0LKTIZRg^9S|0tx{k zfD%DK1|SnvC;@v4nf})`AqZ=T-J~Qd(II)-q!m`8-SI|3llqMZ+Nh+4jhYOyA&;jn zg|o>C6IVi~uPZca*tEZLvDp9{!69y zgbeCn_|6VYZ?xnvBl~AIUUW#F**=D!Zr6%mZU0AeHl!J7HeO*nA86}|0#FsSPVZec zoYU1?t#ioX+pr={QHs;dBBjt*10>aOw$qm7Y^SfFD$6^nt-w2n3R>Q&P1l@Eox7=X zRlCDAU0Jo>%ffSdAFm=Mr4O~746EV{9H=m&hBKZd!Ev}KY5apYfgD_XaiGkVu$Mh?vQC8?i0d;Uh_FMo_qWF)T*jmLYvr_LU+ls@S^ zFm!PHq4hgY0@>WpeDMNE`7)$7={TWC$8puhb>{fi32jyg3+1&qm&@`m1>PA~mp-sBv-9NPz^foa=iOvuz%m^Cpww1B3S*u_Csl)mxl` ztGAmvPM&Z0yD(e6&@(O`U&H}@A)$_qNpb~J11hHZ`=#Rd+j12y5+ns7=ZGK@6zS&V z1VkhL{wHMPCQsaLYzPsqhQ@7d!Kf{1@l|dk-)%b<6H@EVU3~CVTwB>7?>iCG6)+f1 z`p|`-i|vutq=p!<08>OPr;HATy6aTXt3usj#DGWv)M0=|aF!?y!U^*G#@H=(f-HlFRRN1?PXen&?5t9s)bCrj?k!xm zUmaGfUjqed<7~P@vEa@?Ym-JZ`xjwVH2yd|d?)R@W11MuE$$HGTUJT93^4klrh1K^ zKbJ2Jx3m9ZFU+0^C##zU9j*nvEk|Kh1kh|i7AI6Bd4#i%qTZ;eaRR*`i65LeVMSEs z!m$0*Q^zH$@~TX872$`4`AYR~6Ww?^`v0FCUk4=-f$- zWJ!3KFF%WKA^$0fIsChG>96fa` z!-sTK>s6K^;Rx)kUQ>oUhTLI`#EK5$hEl3aipU0@TS{S!8!6LopOanOpxHX-qjrm4 z&P~4S;CSsPxiUGkgjmPyOB%I^vF(fTyzE%YZtp#Nrxz@~0nF9lTNGb_xjdSox2jOl z0<%59Y;T6ytd;estUZSkh3c~r?xo*~@MwJ~-|K_$7@a++g<|0C)jDhL&gjcq&gosC zga)23tJZntaP91Cxdgnfsmc|sf?Py71v!y>1|s7oP-C)xa6Jfbn>Z)g&Mt2Fn5|An z9kFBj@tgLl#Z&wDvr@}%FQ-1UN){)MN!V{|Gi&A|S`{yv5I>iY1@ZV;9$`0?pl=In zl4}+Dyo>>P8wRj=p&@z?Zy$J}2_Ovfg3a?{_N!swlAJ1GI}RSWAZ0D!=>>@!Po14w z=a>Uqy^H0NX*$40ICGU3p>YH4jezDs;cndfDw>nWC&@hz!^OB!3CZW3oaOwRhwh2{ zq{%}P4y)}ak8d%$1}w$hJ|K^2K#2S$=ehiuktfF|&LQmdhWX$rgeh7i&iID@CFqeG z3Pk<%?m^`_NbcMdHeshopcy-b1x+4R38ko)kivt2ognc&y`~rw;6SbA2uLsai%g2p zc#|TG0zupO;y}@XxR`MZq^WBEEcsR2#FVi++t|9u@2~uv<6!061h2(W^2M0_Arh(D zui>PFj@A`p1pQ|A`5oBoDGz5qmGeaQ=G@SucpP46h$Hbm8g=Nnp*3hZ0A?wtNviU4dI%&Gb|pEzZ8du8J2Q9IE%Q5KB*kxx&&rc<>m2 zEAC?1)VZqlL6$p#tl*zp1QR@XuE)8+f=_Sq;el(MOYF1qss-bF_q1}5UtCFl;$X93 zZrfH?_EJva|MjOI6N&i zDq?5vldl+iRHz%hmXYl<;ujOPk@^l?$jHk0A@c}X4idb|C^KiEi#zDEfqExJpXr>` zx-v!dumO75nCamR2hN-x)R_w`k0KFO_MFvvR|~!nO_q#lY)Vo_p+!&#iBz<)#tmX` z0m8M2azSnp^$3q}xbvuSqmeClcO1K;m91Uk<2i>eT2ar2@)S8cSRHU5JKyWMH^Pdt z;RB`~wwIhdB1l5pHiS%nGHcoA*^GU?K76aZP@XGpVg-M**xoHVY~0I)%WLaQ4~v2N zi%Q@R>|{+ro}9iREP-#91gq5Q657kXZgf}`qtUogeu|gCok4KVL^>9WNDZGc7u~4{ zo^mJfZ3C1=Pr#Q@BFJg6m4vH0k^>$JAT3B>ZY2oetNR)P%hF!uNP;01Pg#K{Ux!(U z!%38X6-2=!3P7NTbQEH8pl&fuCAFSej^KsB>6Et@h4(yZrGd(phHN*S-3IVPp)>Rj zR1R3+QQQ;`4@77Jhev@XlG+*e`;x-4g$d=zQcP3ixy$7_m$_!&W&E9<0W0T@%AsC* z?|?u)-w=aX7x6`@7~c}@dRkm5lOLytN>Kiwx|EStD@NKC@!$eL;SsG_XG#&EO_iuZ zlqg(?aFbksAp&s&yS^hjOjFx-?Kx<+<1yzyj_f^Y@0dEdpXM)~^{9huhlbX|>&NQ) zHjACydpskfqw%gwgk9T}vUf=ITKOzwLvXFoklL6;0d|e$TH;1w1H`Y5(R_WwCQUhz z4Y@5sx}Z>9n8~*@dx*uMtHS$XO18*W>2$VmE5!4}5|f6h^<|5Xg4BAy;v>*oQN>5L zYJCICk>cDb5maP^6VO0IMOP6Fi*p14nSeSw(FvpijJkhdIZ{2)34!`xPOdIQ#Bf_Z z;tY2|72@IOk#>nm@o~1+>z>S7GUo%3@c(QSUABxTcf-0ldWgABJCdd#OH?uzY? zVW-8E$#Pk_AX$F39J7w&y5T*z!L5fl19v+@>0bHtwLE!SGOl}o3ahKz;P0MTkn`b( z5{U6I==VjS-zD%Enwlh~I9@Sl>$ryJ4!Q{1M&uM%F(vV(Dk%?oYvm*t1PYEfSN)VO zG3YN{rkY(?d(v?^t`*9l7a4_B^-3UqDEyaMJ#mG^6At#H#>;oG!;HfYb|a_DF9aRVI(l&gHxa>5J`9SQSos<|KiU@pYz}swfh|rNAH{_+;>p;xyKk z)J4pgAK{c66%{lf}t2pQLVSK94R~uj-=vD`qCW3rXD2Avv8V$PVzJ~>Hvjf z+YN=A1>F|8vKfk<0EG(G{~r>hR}sbIE+sVZ!CQ%--6T6jqaHWt;?fLsgr}i>SJHvZ zHcaCK+5^^;jPIZb_7X&~Kk0pxDAqJ=sg$pUuhh0m#szd+i5w>|R0+Sy*K~_-XelWP zfT)FYnUfQDj5Pk-6(CfST)5ifNd-2ggE2|O)FK5t>aPCgc*eW`IY=>aqA2Bi7*m3+f+nFVS+N3UH)Y* ztwBtz%@b=5a+N7J&oXFz$gDsvM88#q$LK><5YiP-uoCm~WJoxLWC)v_HqKCUT$&+m zB)K>;9j3F7pffBbV}QC)i%BrRK_PBY2KZOyqr5L1vs6PW+>7ByPTsJVu;+k6Oiz^x z11xq600fg`Tawelp>P>wpeRoqNtdP__L4u`ID5-B)g~@(%6?}-_v7yye?Y94IWdW_ zpJ$r*UTCk-D&90&sT_a=w35uUQlK|0aK(32lnvC@I@PT2*b<6)hM~z&+_M4gN2icg zFMUlO3&Teh{JL|5*i`H)4id+U^TajcZZSnv^#U%H6heZM$Nofnw=>XjDtYs}p(nm@ zlk7Mndjc_Qkqd_S!Y4&DOSzN^;L#RO**^g+A)8@U0=V>rV`s9(vv9W|eKQDK(VN8M zuxpQ^|Aoq>CaRb%z;IasMXbz3P{f220V6Ju5R56EwbB7{&Nv*VOG`5zFMl9x-VKn2_G=XE0**Ny{JO*>=NX!)*(E3JwwKW~Bcrzz_p z#X?Z55k9C;;@0v&XHQdn=Bb92G81$Tz-ta>=q!ToP*UM?9Z;?WSOFR-Nc6W5+Z)ni zU?Hgzek!!)#Ey)hiykhLTee(~GgcHEY>C@;V@b{!ky_i<9V)F`p%9$ao!{@okBY9X zZ;t+=# z1$QNrC-9Xc6ITD-DKsZ=^lFn+s4i(`^)`xBaWhw(L@hFN0(ZYe$yxHpX2**hly!sB z4LIfXXJ?xuD_`I&gAuzdyXfdJYp(p1v@slo`M_^3F372FSZ_z(;q?jAmcp!H6a*_Z zJCqz?jNZ9K4zLv0`@q!raLFe=JnPJP3f6Hz1d4ft`z!92snPkUb>(tks}HoC1Lz|{ zNjV-aLrx~BC`aG}AD`J19!5i!k44atZfOUj=g z)(kvrJ(~rX?uEs770i@mwls=YZe}=(x(A1*q_d-}1_1YSv;C`FD=#%quI0&^2u|NW z3QkbAkI`VzA6j^?6RNFuC|ViePJby1IspZp%ww5VtlqvPaiGATlK~8^$sKhTw0r&J zwAV?u2RQCMxyNzg;&nGY_6oYfpqKI&MyKR1rH={&)*oi#k!@757drvN7=T1XHS|cb zf|)Y$V5z)eDT`-OoCtGg2c}2~K*C8~((aByy<2{G0b_RfJGYq_L84n~pkP{LMM^1@ zQtG)>+FPN7*@`G)u2>Puc}Wj~$U8fw0{|q*l{#y9!qlGzNw5jWr&(isbn95_dN}@^ z;o^bmtfCxtV9arRPWKD_Qiyh6rcb}OXTbyFf4t;y8t(udD#4x&8vZW?C^awUsZh+T zV*fd4@GUC9R9`g@twFm{3SwZ`i%u;N*NgkalOmjg0uBy2)CogpA|2R1{y&^-!29wI zmvN`tvMjgECynHk96Fl>8v+cKNTlI1c}pNSVdBZE0I3zMk}4pSnyOO%h#Ar%;7sEI zW5Qtl@u%m8vAt6J%Bk1LJ@TkGnxCc@b5$V2J?V}n?hlBQy&&w)Y~B}RaO1gH2l{00)9?3ODA{Z1^P-EmU|+(le#P z11yTpugEsJgHm$msWeVji^a9jm`eh6=l-tVM(MyufaF4n{D9usMoAigSuT+=hAe4G zt?wIHJyPV3dPKQ!SVxCo$g+Y(B~c>vUV|K7D#6 zsZ&(5u8rK6=FnXr_C&7SZDWm~1qV`WRncCaH6a0fWbQBLaMzg8g!E~P`>gCh*o7U2 z{5Fvhj*CgRHo162|JDP67Ct}=8P?OCkT)8j_w>;MTDl_dgD(RE1r&p9CWl$vlq(j+ zAlfM|uZ`02m6T%R%uRK1Xb6)5U#7x}CK%~(zODkEh{@(j6n3Ge;}4gmSEgk43D|>e zl1I)uwds(6r9*Vc@O|St)ZR60Ye(X~TmF_nS<-Y78O|?b>{&+r+MQQyWbBY!VHacb zegpn!YAm2{;5TlxsFfc1`TNyMaK2PgZB2O zWWgWnt8V%R>ugW<;bF5GeQ>^P{l?=Gx!=?ZRx!rGd^ke1I6%*oRW8n(Wq~&#Y0T$C znF2EsW^YNkVm2sxk@2LD-bU&8d=#fl_sEP3%eGby5fxOjFy^|>;S7QA^nFcdD=I}-DX~nGv6a*bRolrsY2|TdbA6}elIF*$JX;HyLY@ngH9`NFt)0DzgYMvYs)6Ap1ub- z4ZdTf?cvuc+)#hLsNqs?;xuJp$-790C_2rIqT=$H56t-T1r=;DD}1S`*azZEs89;$ z3YwG`y@m5sx~3{rtZ?NZ@s-pGJNJ~??NoNa&>i7z-NLH$9%rw9Ugr4@dLSub$4`BU z<63JnE@pUAVHeI}Om4@@gKT&~b=PdYO~p!_&QNm~Skf~$!>35N`9KMDor-W$lq6S$ zBI8)=)$X?ZMUWOMF*k0?HLe^>=s{q>l6nxza5w`-7UeC1B4MUL&O{|wRDu_!&hAOq zC#Ur-xBHlv{O;PQ%Ta^-ZJ&A6%Vo}yfvY<*a-0qw_Vc(dwKuO!cO*VXurQ6Xg_C|f z&Hh^?1G>d7hbU!n-#Ls9&X`!sC22EbJMeF-MD`b0NZ?FFUn*L#g&r6As!k?pQ(OTv z1s#Jj$*5FjD2hKcY?h(IW0vx~f-Qm~inrunJFk9g<6-0 zh?mFGjs?LIO0C|tNfe91i%6}o(Aq4jcU{QXyU0!PT^Pp}R)T7qm{*x-GtP>-fmttE zgaM_vnjD=bRIj!y2Z3gXA0GhC4)a$v(%CrzxYW%R;xSm-S##ZG*WBt2)d3+h%VzuF znx^HPV1VF9ll9vOaayG!8(1p#46RE@osiJlP}d5xq6HtVEYQLhjWfZefMOP^QhLMe zuqhK$oRzXtvQDm1=%0D1E65sr*P_e+nUuOHS{J3Iz)EqS8$6gDOY8IL+7^ow-pdZS z>qY!!hP+rrg~Q@-Upd^c5+LSt_7Na1o$E70Y!-GtJ2?F1F>IX-_hPWTNF1hEs|kAe zrXG07gl;LdQ3_q(T%Y6+4lzErkWVPPs_d09z;2$x@NW%~~mJOChMNL;@NLf)=Zd zsZzQK$P}**m@z3ScFuTS*%hbOuP}?KJx+S)ZnEz zDv|Xv*L0Nv%u+p2!rcMm18< zK4-`MRBzH^MqeBUongE$_oamjZN1T8Ju`W8;5~R1>Go2toZ>B*nMhIeX5DUf^7J-# zJiOr!M2UhD(BGvOj}(Uv^joBfi=c2hvYNs-998=b+*h;C+@rCzh+Z5#qdpdgn@^O9lG^~zn3xk5N4%?+*h$#YN(tYqDNld94hV- zS)6h+9;LWQ@!icxStbj9x*Q&dG_BH=@Qh&UN_s|^8zrd22c-tsIDv1fWGPLa5ovL} zukRkY@L0cDzpP7<#HNc*XA3lT$olcU8?IT9248*881+4nu&Io^I6D|s;73mZpVbse@=`UJM+Zw922%T$47dI3*cd3wje*w`FtL# zYRK6xhX%||PCM)|c9U;)x>~il&GL2nI&3J+S z@KVAZFU2jkvGU@C2Up9%!s6U>DW;)bYr4g&bV3qG1X=2dl?)dzAl85^aM9qEY%Xr$ zZV@EiVPV=wE9uWYJFl~2WLWp!jq6$4CG(mt!os}t1pVU;n#h@F{FO|# zXJ}##7YiLQ9yjppWK*{xpB2~eDXN>y_?pJ&ksvX zPCGCh%4_bOB&mjml`A&yNW~r0<;O*UYZMr@UjeRv&7qk=QRK~hphzNT9;B3LL-?fR zuEOzNJnxJlci|nqf!6tP5#EVW0%WFS*t11_^+E|rC^b)|SW~g_{~StD2bQ7&WTO~8 z!PHqR9ZZx01y2d^b(wcKI#qUF87EI(IqqOXoUj5T8ujBMty*}4MHN1xfiNe=Ou+ps zKxczGnI@wYSf!-ZBA{F`S;AxZU3RWi-pDP zYa#{+U{E9|>c~h)Dek~CvkcSc-3n-~4(&QEtU+oz{MK}ZA5QY$uo|*PU|sr5W&WHd zQ0zg0ME}U2nFlxXWU0{l|1p0?`g#jp4At3(>Qzeh<5XS)U*c;b2n@M`2PA>>xxEciDysuDBIt1mOp^mFi)iq(EvuY8 z!5v?zeyH`Sh5LBi3HI~V54NTZl1Gm7-Vp4r-9>|%71*$>fL5( zJbLCJug_YZU+5#UOK zeh-I281~dYWAXGUwVO9gtZcPOov~!Xi0H=kS`Brg);k^&8W+`w?g^kj-(<8`r#hns zffw_eybf=NT008svgPgOU;-%yEw9AIouVhWTf5)s?8@=&pUI@!_bxwRk;P z9rDYM4??@px~y(+SS^ATAGD*Umz0%FlVF#M&5Om?G8Z~Yt%JHf*h0hw zISkhvD5K=1pq`dniqb?7_$Z%iDUO5bdoEXh?iGPMD7xW-n9Ux)xZd0rk{mi=xxH=W zNv9?RCkM}7xj!yu-9>v$<7bhvF?e3Ocfkkmv?a0F=GI)-7kS#NtB1{D@EiZHDlUaW zT5S9R5z+$T3dFC&^^PSff=Vr`m@}AqFGzTR`SvQ6c!nHhaX~+Py1>gG;KMxlJkKsi z?`nF&sbsY$Of>LZ0OY$h5s{HfK0>KXFIu^hd?kFs)1^DP>Q(6K)o8Sr$2N~mK4q}m z*}Z42Ql)+aM{Q7RafAmMb!Yuxx_J|+@bt!J!?kZByLki;o6OkGnLhwGf}G%&_?NKX zK;DBv&s7Qu<*--!M-3N`3ZQn|QORig6+0!6xvOY7f+^vgDFt!iaf$?O$GJ07!<7J$ zG!hogPPvlK6X~ne)0YxAkKF2Q?HoO1+>$XzQ_>b3jy~>aJ-}uLY9&CuqKhisq9bdtm-z#=L+COANFU zeCPw>=?v)z)xwm8dsF75$iGufVFAq|-{1{TWqY<=xCj}JdT6XA#pwsc@B{qyt`ZN2 zxr9Yorc+N`qxeaXLSR%_k12LW^&x&rz!IX?hZo=P5gx+t|Mzb$!4wpIP7ztm2IaW7 z8VM~T5?H0=mzWwB5X5~~HwN4f(J`y%bbGL!z5M*y!{2R^#d@>4cUtw6%67Q?zWwhm z_P6@mSiERrq2X?{7m1$`wm?r z?9C{>xhe{);TcVca3}2RpPg6l%xpH->Xh~DqZ9s|r$2cl9w5ZT_ zJM4$mhN9b$IzlukQKhsNv}bTgUDyu`HEB|c`a$j3uTZ_fzZH#wUqVwLMY; zwtN(-gSig092Hq1Zt#_fGbtq{)X=y^3U2USRXL}iK=_n{5h;QfqCxSXNLUarx@Ar5 zPpw|Q&EDE2d-KwbVv^XTN1qv9m`Lp!@Ao$ZyJ2=Z6}LI=;$}qW(&eKmJ>6d6-skn$ zbE&K5mAp62`na6Glyq6Uhp`8H`lUZ6Y{x3xr5}{x8@>J8^q|t2vf1+AgyrICr>|r9 z1zJ%e?q@$9EDLnkuf)Sg)Qg;}XfjcyK`Y;?1y%(aeS*h)@q)zhy((WQ$f+Yx1+d94V#fO2wOc>-US>qxp5M$A6Y2`L9Ko?S_{A6coYTV$=_up;mJ74 zD1&~Si6_ttR0}m;@I4}Yu&G#jzIIWv1P_99&|h>)N~mFp7kuwH0b6Z{FGFMC3uexf z4qz8+qK5E`dfjlENCVN@_k(W!)fpF}Y=8x-;^w%h%-1R~S2kdxy+^ zGM=(0cxuMn2l24rAc0Pv+I|M<(oWFU%sa@HGKYDkLUo5Z;~pQe)sMLH_fG%HG&$Y%vqlmqaxg=9)% z!E&T%Ev|}1Fy(=us<~^ae0uzWZ66#1%(Zn;zuD8oI#nXNh+>Uu5#8AF*zJU@9vBDT zwJ#rBrA7N1VePsA3;__i7}@{f>^;k0?qm&`YhJtKl z@4fflyKHEgQrRGcNXsfyKv99Js31K4wBRV`<$Db-1x!o_xJt3UN$D7NzZxC zbDsHrp655n$xx0^*C#o-H32dCjM`To0`q2M97+g>IGhYrVil2K_UKbfCg(`HiwuZn zFE!oUl&y>*Q<}a!!TEkPT9S3!$_A2MTglF+!3Ch*i*!5vO1TJm?M55>K)pnyF#LG%imN_J=+nqx<3r_$jFjV0CBE-K5!V|$YxX32;BBQ)3kruhmMvy^+f=pSpn&pLT z3p_S|`YOe5Ym=*F7TrFXRPEBHRyHARbIFv=D7G0oYfk2R?i-AyYv}h%DQxix>Y0f! zqIQ!+_?fTMVC6~2*^o%lC1se?_p?Fj!|7)7uG8Njz~~6HC3`QLIaw?|R(u=?Lr1*l z1K5hn|H(<{hLDZoJ8-g_2eL8|G~!Hv>c{RKn)NXmbL)(+xFc})oVodmsbH$C6fc>! zd26!Qv+6&lonaW z6)nr_d6LL-1J}AP4NghMol@e{>yuW}wydhc*J+rA8*p7Yfg6wlbCREkdaNRnp&hGO zG%f_tq85JRa%rX_(TLtn-n$q?+K9O@~7hAuLp1e*M~ZTKhAWN;+D zxof>;6S&m7L|>6+p>BhB)W}pxEvSn>;4sCBJU4HR;gOs?!5!^+g)58Z{!4d^SZWGb&1(#iXV4zvLOpH0y05#?=n z=_Q;`n7Rv%OuUxPa1x)HAwDzP@D-3-{IjiT0Y3AA=+W!`j0nSH=i)N}3M#9W^Wytg zi_hGZV!#L{@}c2n^nY}JCIKd7g7^$PhWFS^`UKGdUbhDM9i~PHgvWsJljFY%)TDne zP>a$E)W9zgEF2?{ZL_Hw22ZkW7Ezj}MipqQpch6Am=+w|x6i;O=98AkCtkS_8hUYZ z@0ceIGio&?IW=J>9~!e~aPLWz22Q4QLSJ&=Em?kZ|Ec3cyKW{;cy2Sd1~;7RV;74- z?&;8*p~!m%BO~P2wuAkR(;U;vrz|_Ir)tNzdpHdS5WVPB9Z!(%Qlumn@-N?K| z6r@0gapfg`P>O9lBxJ~5IRL)da+oX`GZOGszZk>pKe4$@%}vorfdlE;AGmkbHzdzBr^ z_vkK=j3~iSN01sNKzcf%3{V7nl`@sIJ_<`Cts^d2D4sO&KYN-ez=yu_rtjp$^_H8C!bXAUul=HTKbL6W5Xg@5S86e3s z_mvwa&pgDMv&+pgNcrd&q}9U}h5hjO5^33?gL7pAVBOP5$VM(}>LDUD5PZce;Cea2 zM9u@nnRX4euL&N(SDKPR<$|d3h5Z%~DCAK9EN(r|@Pw1s&E{&z3ZWE2lT%^1TC{>U z@_pt{Wj}-luK8&_`_@+C8qp7?=#}u01ydC}yGO{w(uLPX5%xM>J?Hw26waHTFN1^P zQP&@1j5Jg?^mZiF;7+3MLTJfzk)`1VnkVJQFGQe`w{)>b=mS)aN)eiR(05k?B0^Lo zbLC*<)$b6f={A5BpeT5?vc%177){Z|LhG7q=0W;aZGGDa>9^R zfhOC=Mn?+Zf6_4X+qB4b24pR*p?3JR)5r%X^k5W z=-sbD=h3pX6_%7_u#|se9Dw|6b=0LcHN5Vi&7R}Shgne@Rm5TThHie1gTRZ^g6SH+ zik*9cd6G~ZjzCp^1Og`&csmd#3OXj$^MpQ7@CYno9RC|&WowzEg8Hc(^;0?cRL<=j zcr-eA4!GT0*zTyR{wAV?HN4*nBx4=VD|cOMDr^MRffQ6!{YR_lGXV4zxP{ABt5Jt) zM9%>P5#ev9$>V37$vnh<*l;KyfPM5JD5zVn;p;+Q4Rf9y^Kw$rm3hb7gqvN>{QZL$ z4DYqGP1Z_h;FV1^lsB#%93{OO0d<*!+26^coF%xF2-tz z&Q~_%Iil2Rj3^Zyg(y8|K7oAF*wPau4hs>HCzxwG`GMe6s*X^Y-HBiW_)aa3x4L7J zU_zT!5@b_VkhJSWo#5!5_ZOCaVF_9J+2U>EDcm%AZnwHS>n&e6#$}tU$Zs85bxu<5L3K;O zJ0Fs3V&*cBuE(I_5r|-2E*V^SBG_%WoiMqdKo*=ZYi~xopFjxk;9*@{9|1FxvbAS& zh%-A;y5agp7{JIWB|ec_Y5I`sFj_s`6>9D-qaS$a58& z3rUWiX?WCnIEX8u-4Bmh7$>|7M~doXqzHKqZq}U#EJQl2;O}ZK< z=C!b}wS_!SO%u`_`=fJ*^&Yx--B=U#v+Vvkzh|GJi`PuW92A;Dvh4wxB9XJo_~9>&@6~AM3ZOTD#$6!Evt3V2FS%|2()#83M!8+q z@1Syl>#wznbPsnb3sxS_k6Ga9x+@QSJY5f@C&Ewow#YSwMTlqIxGUqm1$6Ke^D3taoA7@ZYn);|_t`!i_H=+vFNcx<-XuNHNxX!?HM>&7+ zf<_$ygsVO9GjFYfrigG*VcqQ+n^#g=(kYL;^Ns5fnS6)bWSMdUmQCJtedpqth$LJ* zyRaB~t1A?tG0pk$WYbBIP^y6R<3wN^c;j$(oCs`CZ|@3j;~|mcujP_N<{{Oja4Qo| z5`0&(l7vLF-v)?s%!wh$lh4Uue9l;?Sx8^X1a6=2H#nYxqFhl?x zvAN4Kl>zLpn9EzUo{O(nWpQda3%Y*JSxo-ChI$Uy(Na00F#LR9dE(Q26l<=N$77`_ ztfllT?21^F-wI0k2uL4Hl%S!u#2DBaG2D*A3=D20_*i*3MjehHD>Y?9jhiIzdOgrq z3t14g`r^xlk#nLhZpnJCQdZ5?3A2q-$ll!(@=E}=+YVIV!}Ctp{1GnUhG)|obZ^F*H(3yRrB7Q z;n3BqLoIkgOMIg`0R!tsk8ev%G?~(%u`Ond>h<_a=z?fLrW+thZrd0qI`4ecqTt?u z$c$>F=WlJ^lj^I5{c*0HDD{8(QoEJ!jP7^*hs2BkQ$W6%$h(MnH|C3&NgGNnDEr^( zaz;zR^15*P+Z}eNLx)9MA!k~ae`S0izknN>X=r5F7#9%<6B(sJ|Jj?^|Yv zNm$GKxw<^N2qVwO;NyUMn0M(M%k9>u_!Zs;h-bo$CT;-&jE`TTb7x$r=J;riy-m2q z)y~ftFs1*|b&Z<8F=_Vs>PH?gDeW2t4O?R;hOkW;5`rhMecRT{N6h>jcjvQ~9?_RpdJ>fY&>zf5RtPuNnIe#bD-# ztz-aapu?4OXVj~``5}1C8)1oq&?-sO)6^sm?~cJUTrj^eLJ-VKJ0AOSP=yGoOp5dm zJzuc@&E)2H7MvzzLWPh@x7g=9_dRXt{Kga-5Vkjh9wZqTW=lbX`tLX+N!`|GWJ~l_ zcH#P-BR2w9y8&o72xVxZB(g0)N#mw?udO;XmAn?s)8U@@6EXbumwn5?zKVVC9$&h9=(uG%N zwC!wJ7dB(6Sq{i&kM}LV*dt6zB6SZ=AG_v8tV#BtI&|!@-hkAu2pKeI)82%(ZC_`H z&dYNCpPM5Y$#(T$y+>9a-e}xn#u`~(`zP-4F!d3>IAg z5&ZCGRJacDn#@A?;gqluUX;z1fwvktEq>fIOQH4MOXH(!9ufv!cH?$3aS7J8Q#CvQI{%ZGPLkFe5S<=-eBdQZ(ry) z%}mDHP)6^Fj^goZc%u%<6OHE3T(6eHviXYDx-PL~+F5!E!sDsM|KKXOG1MXguCMSKk z(u3v>5io9!pab)H_s&z?x^ALy%e|Kobm6FcwDrTIpJ??#7U z(XTF4g45yeN#3ce<}Lwm=_?R`ye}!g-%`7vBlBl%q#I2OT6PXnKAf{rrWpU0p9AB1{d;hPbos>AD&IN(8-MJ5tm(6jR-Jam~fP|mJavm>&| zRcq!c(|gaI+_mTIiCt?pZds>hv)17K<7mVmg$z|Fuo+tZK{KlziYIZyol%k0hF<2` z1>8I|cjGvVR1(z`O^%u-JSR7Qp+i3^ktivnSI@?jRG3k1Naqs^K_A1X^2gFKf{{S&R1-+G_ElL7Yl*QcaElNauD+Jhj!aNyma_ z_DOA&lbh1D(#)VaePT04){gC#pnN)RX{EGyB8@SPT}{KAn#lxch%0iLbU`VHMQT#x zMe2F~cT$w|EF5#Nx8}9-g__D@z}fDMDcsUz`qf=_{nffR*&n-=a`p}s(L0EEe9K0X zta9Fg+RC$k(e4h3O#%&4n3N#ZlA1_L9}OkIBU7ruiY-TaUe&5?sw>Vn;-BYh9sYdt zUW1-*(YK3S88}~)oED$j;IGz0`#slkP|xQpWz;lcA&%`Dfx7H;{ewEqi0P!U(&Ee48s! z{Tefi$EK%@vu$bV09AS{C$3d!+15zADPx2Fo49#lGPPT~* zxyki=RFzQyf!jkDu9i$iLGnk1azL||Bc=YG7FKL!pw4^pm*q>9pTvpU{<%-}1cmG= z2{l$SW*Cvjhd|;uT;7%@1~P`9CT~H3AGY%3)9=XT-IqU*za#g|Ty@b_TRa2v9*RCjHl^BjO?yfhKl`%j^Oe=HyN`K(W^j>a5gaT7LGzDs^7qw)1AdfOcAZAJiLSmqmUnV zBX5t2Eh5RTsN_L$z=$n&+h0}G_8zcV*vDCo0oc&ojqme9L z(fT_PZ06F6ms&!)Y8i4PX5aBU{v4u1`w)9keEbc~)%65~;BR=1Vk}F5H{}(s9{10? zq#>f`iXAuT1itMvd>fyj;zrj9o%zr2(}ijrFp|JZe5)ie6%7{Y0h0CidpOrRcX(gL zoiZvQB*O@F!*K#pCBaHeH*{BRDj!eW6OEyw=6p6ZQ1r?EbUYd`=wejdtkQWe*jKX0 zh2;A}JUI>a6%1b(#%5l)4bMd#i-BOQY7|?trQ^&$mi)n{zxPLgQma`XQtQH=yfT@^hE&%O*69B6A_*QS%{B04lU%2f}V# z%>Cdx^bRdQNQ_tHWlv{ta&lUt!K}PgoRSH*qoYboVcY%JIe8DA^Q^d+jtm9t@9oyX z6@b@8LVJ52V{`vhmh$7A6Ccq}VqMAg&}z`RbmvZ~@lGiOX?KD=fI%6Lb(nbGmT&5R z&p+c{=;D5!7I=yBq|*DY*7r+Ya)z53K|w%GfK9h!zwWAHpFL{98a;DhgFd@~=HSG{ zZjc@38zb~r*YEU~IA?q;t;aS*OO7~KCh0=UTsL>siL62$E{{396d7aMa3dXjdPzv+x*eq3CTZZQ#o>_~wy|wX9*heO zJwhUP1*e~_vJx-CUSSUljVTvWNCzn>yx;9fdv69x0nXn^aPQY=9lR0f>_PJX+O(aJ zjr0sTji)=9bEEM%GUCLr6g%h5?PAc&F+kUEU))b^^FA?4kA+SA_@Fm3Su z^VBcqy_ac>>)!Y5zLjkuqvJ{T0~+G`rA5<`YoevSSU;49{4rvIX~0k!bajcM-M+R; zpMv02oMb9LNv|m3avq)Zy$v||slgOWR`UX>*=B*QOfv$48D#}~*(geDaAX{l$qgl& zDUr@9xSkg7C#_t5@GA`I7|}0=CB=QPr%FV8G4b0q@A_naQ=^`F)9%KxDti)1^dB=u z9lk0nf3encHy@8K+DVB->MlM>5(^}0>gTJ5vmINO^_6zQnra1qyAG;8qoLVnI3m;1 zIh_&h)Vj}z{^XhiC=N$^;Rz`7+bRrBzHKi$%n=kRdPZ5r|2T5YJLv^~!PhkxI5My( z51imfc;*O3@YycHN94Y_Nv^ZlPgbgihXrIcS{=6X((z(zV0A*yTG`>rHBd zVTEDDAJ7~VpgCXx1Sm~xQ;Oo{r~LA!+vvMTZ-s<^(6_&T82jq2qvN`j{1v|HZt%=) zfdL~1jy`0`ud=-LqO)Nk!v}1QRj$e(?k}BK^X#0rm@M~Ub(Iqn&yIAhrwhgmSRm82 zTBrH?O$sg%j`}Ql36$b;$S9e|SviIq;apm;iq;12Y9^Ezt=dDn!el3hApwIPkHO@?4`U`0Q)-k1-c()=eG&l6NXxe6jn6Ra#30_l! zKAhg9qv^rnnd>4J&h0uSAare3@xBNtk==QB+4*iElJ%pPrFLDKnv}rqwc0Pa6dyWk z%(AQUkNNv3we4w4J2dIjG`cN&bS3f$`&5ya|GXjURad3p)TOR|xlLC;mr9jeZ?1R{ zYW^D3u2TNB^hj=x=-qTjny!bR$a-i5)`CHf^cWSsnvUwb`RT~DHA&A)hxOuB3*36~ zYFw82O=fdUJ0&vKv*;tcg27I&>7oQViXb=?)yUmIvRL|46% z6NihQ_Cm$+1UYi!xF_l9*n=6G*(T>$Sw_|CF#%QD+*}n9aQ(%k4gr4s#;u$i7Dt+q zZmylNihTh~sPSQ0+YzxX>MSlO?3vP~d4q(+YDd0eqnEf` zKAS~=O0B{`Fv8nViU;;}0{S1ZQ$&cNl5E-N#|^Thzcr}MCrLpnD{efEg?ut&Ut3w~ zFmN4_N=_T8KZ-rSWt(ZVe<%$+z5I9;^3?Thlq3ztz~cyM?vGn1kvP(5H1amjh{J7*3H zc^ln7j2)Be2DQvZ(fcwehz~17wUGh}%#;=^meOD$o+|%Yx}^L7Tcy1tM6*>?*3|xl z_~Tjxnx`jq+Ac(mx`S@IRGyU^Cv~irD41WMTM}eFtZ^&}Av9Yy$uFt=Afmp-Y>cm* zH!xui8}tsf)eWzf932x>OZnm0(<3iPbelizHidR@{vn5b(I6c`ru;z8qm9`#ITSun zP1KCWWYhwmi6BM1y5Q=tLaM_)(b>li|LUR(9AaC69xn$I798Q8SB}&`twtF`)VSug znuJ7%mrX|PvO#2WRmH`IEgN!HdNjA^>Q{q9*KS%BJMZ#0;XxA~_iUUjDI@w1ZkX#A z(BnY!->pICj`ta=1nymXZP6^nFKtBc!Q%)iAjh|l-tk;QjTV`huHC&+^TrLLYa~u4 zQEPA4ue!Ngao|&`+7*k-?HGwg3>_)N=Qc2 z!WE~Y{7r+$%sd!Rn~uNHdYvMTzBw;vV8L$-s65m42Yq#oEZsaj>Seo3@083AwNX|C>Av#r2Pm=yPistP?7ROK^>=RFlt~O=lgs z7I4@!e8{5nv2r}A+ii1zGOEvuRa*L+I@G-VxIors2+BH`|HcxHVymxEpy ziyfFbZ{~%^-NevOg~tN4DFxYvOojMnk>m~R$8}Z`&)&W{_UKTw<)jIu>OGp}>^f=m zs>>Dp75^!NM(*z+?U4@s9PktS$Vi4>n%eBSu-`~k;+nbkC0Y6WOs|~rOC)LGxBRv* zEB`?b!yO1Ww01~lPH2^rgsRbw!Xu@CP|~rzkC@_YkCbI7XZS?P6oKRix49uA5$%wk zu!8ZVRbs>Vj(tWC3m(Oe$4Xy&ZICRSfx@HSjGpziP^tYUYSa6O5Lc+5e zAC)L>q_#BeM(PA6m(ilxzFC3^3_)TxaL}fO>=~o9X}R|v>U5Gy(v(nkow4Hwtz%F? zGNwJZ}^xy!~A?i|94)*{Iy8wH(d zkoA;)alc~3zWi83xI{m$NvWat}Pi9}q;-|r{$JcXentE_Yc?JF9ZBQBs$9pjx5 zAXWsTLfeps;@(6Pj~4(tin(q`zhH1(2xkH*+e3eaXXkv}XKB>F5B}pX1*I0J`&DFr z?)|k(ao5kv5<3@n4v>`@;}1cNwoQd)6`8wm7M-<#rGC83!s?T^Dv{@% zh;Eo7`Bk*=aDea~1u6*a6~&RR+_{7$W42KLR&9IJj&0t{$t(eUjdso}ZdW%VxW=iB zfbel&Y#&_^G3WDP>zYc+hjRUSi`d`01LiG}f`R*Q%+#R zdRX25mC_f^KRxqgm(c8zY?CQ)MAvCsqv9{U8$v_g-n@RRxnYNF*Ovif=QaeCw^i=| zI?)__>fK4>6=_P@Jko)(kg%nh-+cnUYF%td)cnQ5Ry0lOe*QoY7M0$ zdU75ZhG@!NYCQX_jt$0kiODn>TTW+Mlj9r8+rhM{SZ*|}{8CrEze>ChfDZmU0i!8OYD z4sAtewU&rqVGQlwpPwK&*4SLw9n}pZ9sZ&cz>X4;boUAR*dN*n3TD-+d425ytI^WA{ZBiOF`>0;psdS^MbGJh|6{S5d_9|mb&&qVss6R~7 z#Cvl#e?5*CGDol8WYu@u=H)9PWcVM>7K>LQ%-vxRPHa#4ugXjjzZ;+)l}~uirwGEM zeb8Q02VWy)4mm;?o=62l73pkG9H!Uy#Ky&BL)Zi|Ok>!V{2(EZpqJ$Dn5o;#Q$P3_ zGYmfaEpY3Z(2x~NW*?YYdY_GnlUplhz?&ud%dI;<$pvU#wRAm|YPx#z#_z;19X3EY zVmm1q1R@T{Cr_ZoeIeyfglpMv_|>}6i;~a+z%^t9#`a$w95V}3jLw=?E;#n2A*~hX`jiGq z#-(K)iKD|=z&*$2i(-t4B7P*$*A57Y; zzG4oYhcP*>w}|oQOE>>e%&t3yNQZnY?;yr+h&+uRcGbYBt$oX8Z$bxjp0P49?AHum zcp+LJh=y=5(s<;K@5%?vCK6bhWYH{bp9|}7_fAD#PZk5?Ier0T@P?c?*iI*ck+Ac! z3TI)c9UU0}eD>^~tfi;Mo*PMQ@B9)P&hCEg`ew4L_2l!eQuu9mKtJ!%*Be(8&y)b{zWrJ!{+Z?fm?L#*JG2+Pu;SY*L)u z3fHe=6)J!KE;RoeEwVekAW2nSjnv!Mj1?+lvEo2OD^H<-4-fi?ehu9%_MyoWoeOIh zQ=bKJUJ^-1(zx_KJ@w$6i*?97-@^>C9B*VZRb)j!CLIydXNYrwLs?)vT zhe>Yk5GJa|5E_KX4mZ(jJv*pyi8;(nXBi@J;$;azHSeK&4jgV(kG3TH?hoN%?C!U& zN63vjKj=@|thp2(GJ7_t){c+|7hivjLk@F&N_H)px?G0dDPP6537H#$Rd;n@3LnlH zP6_fn0#3u(+GpXqyezlya4mHX7}5*?DPl`Lk`_`G=W6A*Gf~P^QpJsxpPb8e1~op{ zbJXo25u2or56(QjOJBXtQpQ&7!?u$lY#X{a93pc&(3k%HQIg~-EN~(_1ifB<6t{2+ z=p2cBk2pJ@(36kA6=tbMa?i^7o_r49qgfCohKr7&D;Z&szPI^<_i*fTnZr-3rv-fw z{N!ME90;#DNJgXu(P>_3p%x#=n|Dkqom}X0J)y(dwRcFszOm=VZXjQMixCi=KcNM# z;rvGmp!;3R>2&ea(&dkPmsu*^(iV5`Zf_TfO9z&l}?{{~V6V>X=+3En(^?zxDwW>Wp# zdq0PTv)_mH^9$U{{wgf{&Ht?5rr9l)W{(XES-9zyIH~TE>5~>>%OuD_v=dZs?tR+u}_JVsCYSshT(#DAr{ zO+GB2MM46d@k9e;|0VvL{rCA7`^&tmF+dF#RI6u7^3f}YlX?A{GJSZepQ*~S@^`WF}n z)f*~T<$2}aZ2t(8jx4?_d z@%PMzRz8!2d~6NzXS8$I7?Z17uQdBPhMyBT4e2$q-@Hgbj@e_&vI$%LjYmrYK!r?x|-6{ zN4$W05CoC9F{A#Fr}xRD`{y2z2S8Q)ZNi8+p=X7z#b3qWXM4oo4+YkN&mZ|eEWzXA z5sw(;*b<|t*aCx65v9=9BF@L6U(bWJBZ?aRT}{8HuUP=W#6wsBD{xlx@r+vleH{pt za$O4hFxYJY_>jp%47DXQbUwHJbPfwt>%SWTkR#790`}52!$|hW--d^?kG^qz^?*$z z54jC+5jMaqX#Qh_JUV~l7bV(t&}#!oh8F0-&Mg-{BhG3V<1nie%U}h7E_jS|uir<} z`j~+}4ymS2k>wRGD1?A+TX03acnaJE&o(kWvtzk{#(+zYG4r*vbfL$Tp_ecwQtJEP z){Ltuwt!Q}h8?!Ry_@##UNl_lkZ0{eTloL~wJ!UYbv|o};N8grP4*@b#cu5`9DD7$ zc%x8aP@1keC1jxh!8$VhxM{*4bcPpF4_*@yfdB-ZL0azmnNbmw=+*KD73P8PAyj-i zsbyM|fAj~N>t-CS;!mZ*^=q%yK39`8`egO3X(nUadoPWf^Zs9cl$+)tm8-aKfR-f`evr0V zA9fOVgZmD8>&$`Db|Jz7d_)+s8+s%iu8kM|;;sX7mw}2R6JY5?g9>5kaO^uLizQn& zZ~tsW*sZZ(r^&A;ULi62|A(QAMI^h#wFp;e@Ga8pWxm`0aquE7|3*ZgPKaI<103OM zFA9V~(K}LX(Z{Iv*}N7dK=M?;kWjqm6;=@B;!W7tdRGu$FzinlZJ4K|NL()}7Ua^T z_(AM4oADkgoj5$uOzQqX-f_7~!j{Y-F@xE*>tgEI_y%vxEBhH;jHF*@@01D6CENHd zdL9wQuEua=&#S=-icxFPg%N4cQs|n|<1qNC7?cc0tm@7K$>uHn=VGmzN7{ldMg0K} zSv00*1BdQrhEUmP%C@GVQI{I7z){gPGf#92lH%Ei?<~F2GfY;}N&2r7w#IA@XuFb~ zeYeS>ZSzWEO_DTY^ony8LgvnpoOJFN%dC%qjG$|NSsPyi;nV%KBNNBx~M zOGh?mbX~lYO1Iu9D2DGN8EWB-f)R7${X*h3WTy`tMLQUW)xaAp&4z&!t-EOsQ;3l9 z*rC_2g~az6{fjBhJXB%g4~Thd@rhK?d?P)*Rw%8rPGJtG9QHUeIO30ZQ(%v!r*YRvo3yq;rRS6X8|~Dy^kO*oiNe zR*TMiJRgJ;y#5SMLb$ckFjjF-Nh#eX?Q!DQ*oln|a zskY)5ND6tlm|bk%eA7_pF|x(khgBoF>Gw5jMa&*kUS>~+PYYa+<060XP9SoaRR|s~cHF;shrG_$gs8X1!@LH}>l|{=kPMyW=Rc@N zul(?nVSgPxbU7g4O4}BSaoXF{4!v(YAy4i%Y-3>L%`GcOq-1&3( zi~oVsJ$|1w`&?=9a@US?r6+;QK(~8;U>zDbpYU76|Ek)rz}=O~hs%Yyd*)vivYhKK z@C=yV-LF9HQE=NxCh+zJ6MWhij5Csnda3^G_5~MKbV4tMys^aot&5S~AL!Z_{Kxen z=l?gb;`*RdIQLX_nOYxmX%2xPq-J(+#ww}<7A{`HnrM2&ln4I`q*9^|Sr7pn@=(8oS9RZvT#qo(Y{+BA>V zXQ2+?Q3ihQQ3e>OfHflYg2zl+M4o(ATD*)^pIerHvh>j((sMXj#ragK?!1GAxX(5l zPXjTY+xy3~We5qTz0icd_%*=-!Y&b_40x7t7>0iGqW^7w;Nu$m<6v+5f9_8wI6^Tg z{p4={%dTj1mSk%E%G5#L|?8PxGyF?^*?#LK95 z;%27MBFN|8VlNe)+`|r3;Awp4i_+dL(6Q}Uf29#>|0)5C-oP-&k=`(e+l1*Hjm#gj zpi|sU?tPfn=Z=fX9vW)JGx7=I8P0^avY5Be^tNUKMxFDxO>cQ15h?n-@c9Qu$T5zE zHKqe6g`UY~Gy0a{nL3NnrWhkt*H|<P&i{l_`g%!lR&K3}CTf-}W_t5B=Kyw5NJJ5L z@YDIc8WZ@)Dvw6ibt>U*w%f-Re(m?gd&vEw;-a~Oi|RSQgAD8=y$mf|nTX6k`ee!m zfo5st2+^SueblIrw$;Q8>?74^4}q;D>&Tz@Utxz#sd-7;SyLV7BI^`q8kMkJV^<6; zAuAFo{rC*YVXxJ#vB@Y^qOs}?F#3u6tB*Non-^k4d*Q=6n!M9VTh-wQAR?oh*)A~Fw` zh|DP}DcUsX<$6yg-BQ%k!6IOvcf;^g7k{CuU3l8ko19EE>kJvAw|AICM;wSBPi)8MD*WG~3eQ^V zzbx}vE9Cm2F3{drVIL-HotAuz6;ECcMAFG`bdrJy7x5iD>XXfQFCH;n*o^VeUKja8 zLOhh29vR5{mzZ+-+;&l_X3$xMNTO$_(T0NxB8~(sx-ok6-a-C~QL4z^FWdK~-x1@e z{*&#s+4xwp*l&__icarK1|R81q(SGVHEkO6lwDWkPY#kHD`e%wv4ZtHu2u_C1rw@9 zB2gJLN7YY0a0nmK=h-Yb?KNzK!(fgS{u|0!9rIB{d9sNi4^53v=0WvAUwhpXxGehE z0$dk;Y=LBE^9TxuBy-FQ?_7>3G$wd)Or)B_L}!=0$IVFcrR5j9hoXnp+jr+)?i0w$ zU%(tn(orGP$F6!S)})}X!|FFG&~cB5L6O(~UEt50>`jF({$eR%RltE|Rcow4XNND* z*O*S5o$~U)mT39MeWXO;#k}rk6mmQek?N8I^z#>Z3VOm z+R~eB=HihDr`4!JwurSOrhp-`<)tO9(U|n&ZPKr6o-y$6)9lZHZXHNc<3C2^bBmDd zW4+0>syq5@Kh2J|?;#U1jL@N+ODkb^(?i$-$%gp`^p^M9SK69|X{hOWQS}7N%W*N0 zn^62Als_a@NaPkol22HKRuB#A5f<@w@Zo-^9vdQjoFv{(PZ%x2rIC!#|LL|U-j>0w z{zbzypk5N`Ire>a{@HEoEeoP9ZLZO_QtjHSk{1}!7lBVNeRp?--Ia#N2;hPNa`vCL!FV zLxtknRzQhYhT~!dP@|kbWbg-XZK-!!GY4XsG4}yeJk+j3C?v!Lo?ixF0#E3YTch55 z$125>8Xq2dlOCSXZ>FO*$&Y1oLNTrx6L^Lk>@O*#@{h5ElG=*==|ObFP!7COu%#Hh z_!>O#49G*C4VvKyP_Z8Yd}-cGGry`i!O6Xlil+b>FRXr_Ms z4$&MM*V}9@p<{Zs>7{Tz03XrV5&PyCkXg^bfCyVzJ6IoM$>Sw*!K48~93))C^H6OM zS&Yb$F60mP)zRS}5kCR`&~2UzB9Ef$N$$5SZpB`{B=&9V%_{Zg`mHYC?#kf6?l00k zq>v3F^09T>FVXR@aBbjN8dNW;tsC43Er_B2x|#2=cWVE0obY?AVpql&Cy*NQ z1@`BEjTM$JY&~)WJIi1@+;%h~3(vBnee5_*Zi=0ItSE0d)?-9+S!p3KB4JUNveS)E z=CTuR%kAlPwu21jRs=DO1Iq6qaubP|^=EYB+&NLjZPDW5BAlbW5Ot5*3$HVZ&v=&O z4Ftn35n`|+mvCIPA;!-i+?hV1rQiba060Q$#)l_k%g>D5k+AC1BPT5di9}9`{kW78ow@)lb?Q4qeh2blCo~5obvRO=_@5^=`=Y5 zJL`!2^yk=QBDatEmc+ufi{JybO$53&QTrEd7o7bOgz)YKaE1SuO(>twjQR9vujQ3y zT_`9DpLueoEJ@9CdM`51Dw!G3v18Zi=9ysb%J#Qq+P*~rz@q!;N3OKAv?h6yJbe`X z*p)VP8kMGup&#?xU9;RNy=IIOw|jykQbl+nouYM+7S~p*9n_ZYFo$x7hbvVbgG=h0 zYU2oG$YE0f8-p$CkWm2jd1aeWO6rYHPt=-rqO@8yUg-zyMg!Nr(x8y1#Vo7zZ0za! zCG|-?)~kK_@cf|Q?%g24?8JC=m;HTNZm^ZKVCP&5SPM#Ljp#iM(QYDgGq0kOtD0e% zBU;4s)q|>rSU^+yOb<}T<{_(t8c8SL!CH-R$^FME6*toy6`VMS)H2OPZk_^+*` zL!+^m1ay%+WKWGUiGGxq7e`#(aUY4HI(kv9frd^oTy;pI#!aP;k8PO(8l-5PE7(}0 zj%et{sS_F}ZeS?7ONZVLg@xHTv|}hmkSO$X{=d-BN}&{CqR``bRwU z{Fldt&ciT;(r1a#&N+QoUVi^Hn^;V`#-13(1lCB51gbvtScFO{V2 zPBbMkuN`=s9vU@(+VCF%Ug$+z zVqHbBnzvzzfrc=jb!q4L|FSMBP^ws$SM>9Bg+6;-=_a~=a^2#(6Axad!*@JB!KRYb zR!U`3g?-3>gpquiJm0Q2Bu+2b6J0?y3vBw?D%He-G^+XFJbdK8kM7kR9bXG85?U5a z6ba2;hODq2Fb1pxu5U=0BTD=Z7e1V-lAFRv$?!{;D3N(&D!F{%&oj?+T5ta1jj!32 z_UB#aF)ejTFWOV;{&${6b8?!sQtZydoa*SNXHeRL>K0gt^K|>ts4n)Uz4*WG%Md2| zLqY@rTdK1kAZAf)0>niGwp-?~n)&wsYioRqd~4|@(g~*Ri0zN<&rPXYoHgm-<-^zO z7MGUb?bKGrbaI)_fIH(pHBy<~g(g|%KDRV(|Ki-@k;$Lx2oZBM(RBdMg}PZWK3Y3O z5!BE`g%9g%Z4Df;Ap%VtD~<}yMs?_Cz@^Y0pi&u7Q4XIDgJ|Z(FEY1|()p8gUSq-E zNXg7Z$4~so&4TZ~ADwf)k)J8@#g#DSqobpmvPAD1fdS6Qa zstkti#OLb1B+*pYRyy4x(dFye3Nqo|=X42m%_iRvoNE=FYaq@w4%LP|)U665Njpl9 zAe7_8z)e7!aU|$Hj^;wx2<$yw5iq7#$^w^&s>1}2zCcq^8x(_-C}zJTbH7@*KNGQ9 z601~*|M7!T>1DR&$bqPsk{Fb46=#KaEbbyTShPJlj{NTbJ==Zw-4FfAXDmMO%WHf0 zHOf3_qERf5l=>685c9KNB!u&6E3~ESg>y_nwQr##LG5`D{iJmZ5TP9H9EAz5y%08= zcBnpvqGu2_mvkP2pe~PJMr07YK~Y}e0jmH+K#>L>amaWlRbXf<>j;u)LC-?Ywjc`b zDeSjr96Ud8+VZ)?er(JnXu$DO3-(xE#{w)L3?FV4JP=`DUujI~MAQ7uhof`p3UTmc z^}#`sYc!w@v*}{jG%|6Ln-4Yx%jvE{IxT|IMVnEdS(P&YD25(gMm`NY3DKC%fE&rwf7i_Y|xS8nHkrK;+ag_vCsu=v`6+J8Y(G`Vz z-JDc@i?xyyP0Nvs&*sSFOx0ZyMxw?tq6|xmZwQ;1^ABu7Z=D&hA*@kmN9PG|os}a@ zg$f*V7%5yt?sXSkU-Mq3o?#5#7nKY{PjO;yq=dA44X^RnbjQ7&f+pCO6CwR98Kebx}LPpStc&zBwPCi`ext3r= zZ@|G3lG^EUrN(F4!vELiGQ0Q0?!Ml}>C3!2)UD0GV~wWYTa6>Gt6Vr@SS+u=rE=|})jBC-D*SW>I zlQFdDMc-aFT{&c5cUh_<9WGi|0^j2mZY!ZLHfGwZ>-T}l`M6}B&5&R*Bm&NtUx?Pj z4;LOijBu&>1Wgl+yzm zXJ33Wvxt4ij!PGb)My|Xn#BHkf8r3f{rO>JXgV={c7yM*dHHg=hFk)xI9-dAh});B zOO3ABhaFuffm#hH(>Zy3d)^!j4+A6mpUORHu`@s$k($7yZ{E-f2uE`kg1&s4(0s#kjqQoQr_ifwILL>5O)SYxH8l~KiViwR^x8vFQ`^&a~q zVKf<=Mv~u*dPowTBQi+T)xqoH2a&?|sbJ0sYcUzsB?SU}4lPjqp5)CG7e0UXIuVrnMDI)OiQ=tI-^h~4_4W%lKnqhC&5e(&WI0aCx@88a@J zKd#+Vp){|}=)%aBrO$^99X4QTbRX1ww{LwkAoqFpbGz&o{&bGyzhq3U?j^mMp zo{TV1HJt5CPK#u`}IIEVjBhjhd3cqy6JBXLm~j|i3F$GkQaiSo0ipdnp7HaE4zHZAj}Ct`YSf%LoE9QR42_cjJI{@N7hoQZ6Fm_P#Da0#;TXZZ z^I9YvqKLN>#G}}p+uBR=Zo9JZo>JZ0PXC`aExKxA)5_YR=$jOWnixi`Y^TdDKr+xL&vg(WMa&w2MeohV=HC(GXViGvU^`He;MuFvA!m-Qcf$m(47`fqeLxm1md81 z6as^&YvVtN@8C79?(FRR&Q4OFc4j2l)y4ViQFf=i>)+(m(TRuH1+w|b#KUCDk;#Wi zJ2v3R1YTY0{6^kiUZyyKvFPLt_lr!^Wf zPLXC(zy8&`{QX>;AZ0VDQll~<<6uif43>#`h(hM!uQIC=$-Xpp2l6{ea2Sf26wdvS zn^qIEMjVe#ZLd6WukX#P`K+PJpHx?}2ILy() z`yQe|ZAFWlwqcG=-nSFW?A?XH>K^9k<9)kE85~?kea{$AM`MEIyOyJyAaZn*9bsyYE{q2lRrM+?O-+f4 zoV4~rOW5)LO1exP4HoG;QGjO;6k$q8UY*|Y$xDI<6UCK<%_7ot94g{X)4AA<0iHD7 zgR`+`l1h@0rpwgQbf~?1*PW(Qq6;oxb{2V)bQB0#gZvXTWGFO7dq=3~S_$|EJR5ay zLf&cH(GWfktIUg2c=4@wS3J_{wH2^v9Hj^XK`f*j(Kw2i%ce?+b!-Uz^cr*?tshq0 z92{a^G;q?$`3Fh8tYGufx$NK|lGC?W*U7Yj>$+km@|dgh&dyrbw;-Fuw(mZ7i%eYC zD$VbMQz`!tUFclU9vq`J){&%!Rg$d0>1Z>SH_5@`Q1zZQ-PKT(^=3ci5uW4-NiDvusH*`pm!V7>B;eB?z zgEx@V_M+*u%VLJhZL;xfZ(2G|$%00Qt{$EC?*DFNcpUrk`;d*r)~Ex=Uqyow-qN3C z5IMixaDch6#0}D|*I#>=5Z3?^t4Lw@C1muGE$i(Fdd8|XuKJf%Q+3t2>%QHAaN)g% zm%3^mF{Q9wyo;9lvAEiUmfaj29R9?SGGkX*=*oFByQrm8>`Nj~e{b<2R-U#cVduOR zMKWO(u};G4Q5EFHP)jvXy$ZtP*QhJ5g7(65lKc=n_CM^xP=qvjuJ|^8@CJ(=L>(Fm zr7w_TwQBoQWVc|{iX0cOJVNY6Y2|W~%3nO_Ty1^z!4pfJ=f@AOvA$*tatJa1=B^-` z|M;2r4!^DU5_DJZ<5!ps6#&A|B#Tku$OblSG*1ShiLOxeeR`L{xj*XMJybC zMqWzV*SnFi)%4*O(!~ldOC#YDf52>{mKD?r>6)pp?Dm=#|>P|!%3Z8-P zYP||CMBxQ26Lo@uOClNa7mI z^aZFLZ0M`*K&(?Eun)J3y=e(F4;v9aI>wPfkletf^ezl(T^;B1E6PVba3bR;lPsgx z$4F_ht}PGFO>xzqf(*5kOD7im{SBXHt4a>gb`xkDY}l?_nMO_@mGtbDAz!X84(()7 z0Yq+NxDAXFUI9ct2gV&Wpu7Tz9Ouu=@jLttQ~>d3d_O10A(;+z$Nyzp&B^^vG(MIU z6rIdtl>{1N2zkHI*-xzx;&-(f`^+>BJG2^xJHp+4noO!3_ldxHDjPXpd9ZpUN@OL0 zKZI8GN)}FSU1A*(Iv??v8D-E(biwNUBos2zMNAbuBE9I91(Q9~F{CC&_I9~PreAtj zb`A7Q%s?0H`^Kg?ooHT%>&E5zpvF8YA9P?em_?5_v_fN-VxKRDG*Z#bt5wsN;xjwmd3|BxMBJfqrTCX z0Fn&_4IL;krDXlt zce3l(fWmvV6GG&`wZqrNCk0fLTQsB6!k@Rj*ncmnK-w$&6z8W`x}CXCY1r2!`_sQk z76v8UnAW)dH|*H82ueOPVmdua+NIpOUa$Y|ZiEDt{M_^AZ;E{3rH)JP z?F^;l;Jed1+`m}mFj8SZ^4ort?J*9*ZMPUOu{!)2zMPMU^;ki^mm6+BN>`w0kz=4D z*y|mm1Lowy)s~o*8Oa4KHy}lE5{+h?Dv-e_SC3_@UZv_sYK&vuxLIvJ0J0pq6Yn=Og97m&PSjy6_hO7^aZ z3}8+TTg`>Gzg`)JjRKh|*Y?XT(AW=5Q*rLGA1bc-8ZpnkT{(eDYM>X6~Z(#mxG~OFK zWlqfvHSfG@ZL8Rs?fI;{&PI~W-U&{mr+A;8k2XL@j#ypA)*SO84QXb4&8p8f3; zCH2u%9v?8A@UdvK!4lE>j5s2xXga|=j`Qj}ZE+$7>{)f+k~VdR#BGS%QfRJITvs8| ztn7_-8}&jb?-ilJ%a@t&yuxeos#RW9kwmj^{Vbv$?*~wIAgF5Aa+W@NUc+4TcW5a*lX;)R}{srsMt~LCHCICQDch{PkVo!`FYNF{q zH@P?Errgw<$Q=I9+Goy`T<`n7-|tI)&M-rnUDjUZSh}KgGWbAUUZy zSVfc3f|%`}q8ri25B$0jxsK*?`I`qu-@n7El;i3Q?XjlnTjd52)>K4C?z_4CVtzBZ zt)*K8;XK{1*)5Jhx&WG?Sra|Fl<)zs_8^@=u&bzgkB*8K1r_KiVg+PwLg~>eOBZnh zsZ?pk=|2nOohudxZIvb4q=+7@`Ma-vp|D^_<$+LpkmJPK;ivkiEOvd$Pls@6&GPm4 zn}h@fvBfYjarO?F~(nPu-AHkfJRg+ z^4x*5dn4EMpWs#&&gCP%b#1!;ZcLp1@i#$R5V;;XqyLKdX(KOkEsxRfeghxp19cC7 z{rctmjF9y@`kylR*@#&SJQ2Jf|55lh=AN0_rxc|SPVATSu9G4rC%niiJP>9JMdZVJ zL9Wj0szG-fv=pDfRZN9XK61(t_Vc;4MLUB-*KI8ou~RR0=Nq11{i`RB{gl2VY0uO} zn-pe5PYg})2qWkyx}8N>#(KOmKfP(N@pBbm4MM;amQw zJae8$><)XA-*PR2O2W9)^p0|EtayZFq2ZT_L7OWq25r6&NhcG2GH37zNBR~j z5A#6+&VN2T`moRXl)V!5(vHWvCN-+PE_I0T?ZGlbz5m0)wW4qyqBme*Tj|S{qN|drzH6}t8>ZkLiIndd9P8&t~Cdj z2W`s0T^ggs3S8GGP&1usVg4v;gp21zyENl$Bi%w~kZxf`9vg)SsOI#>0HvU*#QIK_ z{0TZPMo*J$Lzxjol`ECFHYZ4ZqV?3W>mfm#ep>(1NA?Q=^QSDkr_OIi@OyLr{L;j4*R&?QS5xN%&lWMdYOxt@%dx<%@l0A9lMx88s8 zBYRmu$+VT%LLIBtY>P+izDSP>|GfPA&$9f_^D~gt+`Dl7CQPELs_Nf*d-)&OjSNdE z{PYa=@$;=MR(96%wFS3%;>Ozc(ml*D!}4u+@!h=}a9Pq>%lj6(=NawP7}{+@cI(5J z`3!%Bddu}fb8afbC8n!cvnm`Ib8k)f2x}wm-$H-~|InuZ0+Q@k~yAs zrGdFimkVBUxgNgyWmp)i`^o18dIj3wIp)omX7Co^s;l2#d;KR@P2QO8Sw3gKiV-%b z($#E?FdBL3AzF-ae+pQbCUPwlggHX9`GlrM3!*CUSahB6p)`Z9<4{Gt8iQ_XV%_C1 z$AY;m;JZt&|HLqtZyEo`8-04Q-n~xi-|pc1#gvNo%M?>}10Sc28UwE=+p<_w8#ba< zhZmjZ)))e2H|v=Ez+@46nV^iP1XqaVf_S22gO`a*Ayt;gnR3(Ugp+Kz zOJF8t=F;TpHaeA9HW|6-I4`16@}{9@a{EWFyS@0Cyu$LkvaGaia^&Rz?l=)FSy$<< zr@pVV_O+eotdhz1vA#QjHF-FFL};Y`Yll9nY_~RRmA7f2Dml*DWp(L~ z2RH5vV6$dFq3{E2#q#MTGDCy!MH5f_V_MR@-VKX84wIGTEc$Z6=+Oml>jy7!eqt}p ze05L3^5mui`&o}3`}Fq?OT1)y_jNXOjvUB&xE2%jk#wnu3q6g`&L#KuE87p=^N{XVSuqD*8mnxoEeFhLjsKp&b=d zA(Q}ZW&p$hamr04A*bxe+4!x;FNV@ieii@yM_+~otzN##AzP!>Q_*S9j~|$opRAx+ zdhoc3ym%*DyJYTSnIXD<_hQlUX01?Ujd#6vc*C4**7R*A5b&d*AYU=jcS}npBn_w z=_=Vxkn&Yi8M*Rez4n~UR^L6>H7tAK{@Ssdq>dM%n%d+ZyoMsMvrtW|b=T2D`@?XF zz(*JL5A@&UeUkm7A2;w*4^O71wd@R4)Pf}oRrH>I=(4O{CB8}3`&D163igg>iYtjQ zARpCZ?%)4$rd|mx^`B{6vRm``7s>n1)T?l$-uf$jM4K;X#^{CBgGcdw^U*`4UGD0` z3JW_CtOOK)v1#xAFe;RHcm6tgtqXhKm6)2|x;s-@29t;5zw7$5rLue(?b?~8S=HaI zbQfcynNJdIe$%Lmqi4SGltqvfoBp^DB%}p}3zY*44L(>xmR6O3$Y=yTfL@P4i5`*? z0KE642QRV;#rw#eH4+GjJCs2eFweG)4qivXr!-i`j_ObC+ZUYW8iZKm#TonrvSbgB z(`K>&)`}&H&HMmm_L6-4B+I1WgW?g)Hx(UAz!k%M*BaaDS0nYGbq%J$70w~OP!Z&z z)tHL8RMA5yb&xx#o>h@rX!VzFa%FebPw0K0oD>Skya2Nn5%11PiByTe&%Bn{XXC^5 zs9xw3(1(59r+hvMcjMJZajp095N!G9TX*jdbvK|xmqOa?HeDo@)np8Nop)1z4n6%| zK7qMUtolk`3PdIaj4h#x{%f&;H)^F2#k*5lHFpjQzzeBO>R=IV#g||=8w1bD0UI=% zTnOIjW!-7DW!7O6D_>pPe&Np2s#MfpN(WYsKR%EJJ!`YB)b&WE@=mv&f3QS0jPn6& zQ5CKK`QdL3bM{~7()g>|kipNsrT>fW4DE(KI%~jUNV2pr#_q?I6=ZZ$qh1B0DM2C) zju_nQ1d9F}Ik_}IRTK{7qH7GzfVitP0rp#$iFG+YsY+w67C(W?0jV0R_2!9*O-3$U zaXHSe+U76it)|bMHS^%b(UQFW-&^7yGSCqo-_U};e{Nidnd|6G?E$m5I?hxa?j;fH z>=%ohj_Q8`tngR8iUJ)P$kTR55l{%G10ozWtKor+)3X!g5ea(j!vXEuO*%4IVvc7* zBxS_#Z6EDA6pT>lKxM~Kg)v*D1;GvV*t&;$-VZD80!f-BwR@>vD;^2@9M|mq@pyHb$)_89#yZ>DN}s2wlkWRT0GjY0DAe0&q64 z5CnY^ZUpuw+R9&l@m@%1>Hh7XMP3X!sQ5D}vU_h?0^hZ9(X6!+-#VWyzcNw!qZe|mvt*wPWzZn z+iE$AeTv>ip5GQxlL(;<4y6-b9vBMhccW*=L~G78IjYOnHOq=WgN@&XX0_i~%JI9= zgraG(;^9aF%p(G(C+2@hpZq|MW*6|uLB#L`h#*V@#NWN{ zq#)Vhs34myW8ygYTal_|MfVOJ+qa*%zkdD2Sh)(hzSI))&R~-RFn%_ffeMQEx64ry zei-i;+Ufm51}+nrT-)?Fd8Fkxj5ZV=CEbSNGhU#?=l~4(lv1?*V~=*vK^{LdKCvt| zbL_a8af#)znfjYuckVpB?_WE+?%8&F-;bEl9AE;yp}B(08W_J2TX=G&UJx$2`NCrz z;f;G$u%RSK9{?%@qJscCS#GQsZzhwL6UrQ4+E z^x17H+Ug5q*phkTktVPvMxR~G*68`{&`!xF=CK=1YvKFzNdB1g8ubLzY$24cqJEm^ zY+m0T%vi8wt*V-ulF{g}I%`1h30y52(q|lZ4KFGjRBOnTiTz0)npFM7uUPH_(FsRX zVYP%asBhzaWEjl%GmZD@`%+8D3$w)WM9T-b7ea!(0EItCk^j5#9}Y%Hl$x7;=~(hmJYbRVTFZ?7cz~IMR4gqTLb4$0k9KB-hX8KaEU$P-U z4Xs#Eyd}UIFnE27QBu(;{fzbTwjBzB0Gp zKCXAq9tE5i^zGGcEN)2b*|RI23i|Rdy5pM#{d&;5<9pJ6j)1Q1CzWHz92O{gjavnl z!HFl11`)Z)iUes3KI3fYE+Etk*s=(=f_{%%cCp{h-y`NcDD*&`B=LKw0%Q`4`i$$x zcCk+9q;h>hq&^>I!YgnZf3QrGt}4|bL4nZBSrDRn^>eY>y=iHtVGf;04oC7${0rrn zWCh*6h;PE#_4h7=aiC}%3;9~9i*f5?^1Zq{Y?QQL(QpXz#Ds*d^n z41Kp6op&-V8;ubOZ^s;w8M$hi25yK}-4;)Q0Hu1o*M3tH8kK=K1DS$bkH^$|rKwpJ zp{Yr!S*cQL#^E?5Qc!UkSmTj=0;c-yJaIyEil z9;i9fWKofG1WMr}k|KB>uuh~q!JICQahoa>OZp}Qpg^#A z611{AlBCL_>Y@)DGK63pdm|`fh1UdU;+~cfP5A{aGcXQMSifv*sulmxHic9`a!Ms!V)0PW<2hxzF^8{V(>vAOB_?{tYSrj;$K!&o_2N4U*TT1rH2$Nm_E0xZxo=%Xb0so48V}S{7x@vwdA+`aAW&Wkss)2{ru=%xc_|nDt-W+NnE!imTPn|j?PU7RUWM#GBd66QP%nSYgaeKpX>E$yzaVoy1u^oqtl7{!}!naW$_!U zRm89^@9anGy10ll`tSpTswDYfcfDi)kRX@Zmj$+G+eg`WZRr8~P*2-+b(fyVKBs^9 zlHOq-R^GZw|LG@qP3>A7i@9)&C-9-8CQ*!$R8^@EKPUvJ-_3CmqH4;m=b%IOyu?E) z{snbT38yH_FC+{ijSb0z-h!l2b|qa(jpw)?6Ma3wc2P6=x4Snw8xycD6prMmitK&yS_^bsY> z^f{k@U%f2q>DV(-$6B&xUk%=tGO^(B{km*kl)f&8&EnO%bey|Vl2Q&=!_B-ozp;|l z3s^9V=ZQztIKOpu!D`ePwFCd>AS^`TVmnD#I4rRw2of=ovSp6iq5uXT7hs|)nqDu zQWQ#lJJT~Vli9X{7uH{nyBu~U{&Fq$-LcOzzmGp}3%L^iV3&TB%?@;xIQRm6-{I-5 z3yyv~r}1|EIF-*x^>z;5`3qY(YbVRD%XhNh*z*l>efN(XU9{MjyeGPgqDLP*1%Qme zN=6v#=~pZ4ITg6Z(Tg@wU=Dv+utmt60gCcDGKdx-C}@=cF1{D`!E}*nf#JgS$IObV z85GIjo~R7UUL?yk|DGw|?YyyJmE}uT!rs#hB0m3htn1~@oT(+_^-nuXtCeszeB1%; ztkrchgioKzZ?gk=s7e%fIofc;RRrdcXjyN}!HDzoLKnOqc1S^s1DqIK3(vu=T|{EFc-Y6Y)6m($DE3 zlGNiZ{n=BTJ9)n;7pHE(Ki2Qz^o!FsPQN(A^_jvVe}sl(RX<@TS3<)jSo#~Q;AfYG zuW5#k9>Ncq6O-nwSwiW`a=61jSyzf4p)=x0ToZX@gn%nxW68Wy>xWc8r2rwMh}p;c z+Y-wYBGjM>c}vQd?0h*hr93H%<$P14T$&oa^}DrQJ6$+cGH%_j1XnhHExpR}-ks-J zZ8kCWRYCy1#My3y9gKpNEHp;%7ax1l^r|G-7C@?fd{l@dj+Z!dWudkt8_u#<@W@5O zcd>J*5W&WSpW#=^RFj+v_mn9{BcpVFM!#6^g?g_h+>E`IaB~rJ-Twx+biehZ zek=wZFTZE)cV7#0Jh4!JiaGV~nDfBu{ro*<{pU+>{>)Y*FR^d!Jk+c~d%cEkrA>fQ z$HQ;RMO`bZTpDMUHuXuJnJ#B4vc9RbQy4D}mjpqTD2Jwn*aSrZP(+v~l!Q9bV!W^5 zev1?Z{BW&~_iglTZ0LD~orHA~$iY&>Jcdhys9aEzr=V_=7hEpzrG9l6?zrcf&fO+JDhu}~H_4jEj6eyH32uZ$8 z?%XK=71d*C)*+V2s#>rJeem~yei3OpGbN|Utd(vs6qcx3Li0**^U+}D#Tx= zx<2a<$_>P%VeqbNncj6K#39p^jhc8-(|jQSAoGP^!Y&OzmPR53+6&YeAUqD*HF`;U zqDwN6k=|EeQ&jW3(o$=tk-XJNu4(unq%a=D)Kz^7Lv;CyzU-B<$}4QqE6=ih8>F4`wXFk>q4Cny zEd!psskbZ`2aq`5UQiQV0SiYx+%3<3xCTkEC*)%6{WsDM`3&@g9hj?IPxuip{SrSS zlY;fpSR|!gsmKQ;A(|P0TY5vj2k8)$HN+fPC)IH-*bH0o4zzo)gA^cDhB0tHXqrwq zcer_3nC@h`>9vL(Iu0H_vHhDx!w2aTH}o3Zb7Kgbi-N+HoNd;p@mPHZTkrY@yQw#3 zH+y3SOJS=@MAd2n@~_;ex8-DT47KNn1e)-p7H4zww6svd*^=Ll|3%QzoSs)&r12xr z4pE*ri2{L>4sbtQ;QB!O$ZwMXCL}vEq|);*Ex$K9Bt&EKn#C{W2Pv+IW+OJ9di&0* zJ=r`cJ1=jh%=a+9dJ79fyZJQ_x761w#>v)2Qf;Y3|Ar+^M$}VY^@}o7*=xzfwLx9@ zN<5cXK7l#1vJZJB;va`GEn$SQ7xn7nceYghqB@ic{OmiHoqQYp4g&+7en-Ny`8#G= zwfLQl_#IU_il2SYQp`7s-vO#CerJRCcZ36Ie$Go6+ePs^A6PcJe<#}gJCA#R$2&Ic zPj@f^bCrL>mv{`l2T%qnw2PT6f{hfBKOiG$4Id)|z2dbhgn4+$Nst{v`$VCP3XlUj z7ZhJ|3~(JG(sUWBJHtpIA0ItnXG59GZHoJJ-PnO|J+}2)zkuKax_0x~3d+3bX*425}F8&&S^NC%q$1#V~K;8a@{ES37BbtCXEm3sd zJ)S@QGAXaOE8mKjYV)-_Y3^;{YlL8|0T$eA9Y~hdQtGZ=Go?rTIgiibrUs&*#fwtV zkh4h*3-7C$PFKQQm^$ikW+;6H<3@5Dw$4$3mMoL!T<|G7Cpc_$3Cq z3|AUKg-^hRmQ+3!Lsz6;S8t znG8F9D_5DY;X#cBzpOa&Al$iy1sz!bR*iWW^$UYT6ZM;azBOlJztgJ|&}FJ|kKq%J zjZ*H)(u@iHPHd=VRl7gYbN%(`Ncok6uO5@+FQ0pw4S~LX`SA7AlDzfddXUebXRob3 z&iRz9d9}KnXxdwrm;D~vcjIB1Pq>y}v*(L5WaS^vV(sDNwnv+#IMnR7(73p**jN;i z@-VHpSa_s7d`&kJ8(vmzz53C#2AR2-mtmq2c%tvyznsr+Z`3BCVeG!dYt9?{bB3kV ztMOdwq$6iI*v%o#`l@0-ah@t)o7eR+a7o%cQ|ubFy>j zP2)ZB&bq=)eS0;oKfG!4Io%_tE^U@yzd^q~i&i(Dvc5sz2i@l_kC?jju`ciRn>?+K zw6d^vQni|mJH9xT*Q}P1wdn6tSlrx27pL;5d4n@Z>Ze)u<0hB;z_4>IAo=@-v$6L?na9L}n=N0*)*y5eYp>qUKf0{i;P&@Jby z>EB;OujY+EwK;dF>M)brTsvF^e5~q$g-fr>ZNclW9yYSIrO6&-0C!f^bj^W9h{YNE zO74#Dr9{l|d~b?tHueeUReFH)ssO8RjJ{L?;|L%fWyp>n7u|DcRSP-GT7Y=M;IkP^ z4dhPHSXZ+UU0I|5#B1mq%NUiRS3^kh8L-ZOxO5(k(ag0RWk1TlLpO#4b@r9 z>?PZ%RrYfn;RfiZT0 z{j$R1#^afzFS12e@O~8H_zA|igeznoDL+z)i11C^OMqZzTEY{ zPH$wRpBp`b!(biA=JFQlWH!ESS52| z{8q_qa!rwLn#bM~rj3O`7z~SQ2&|9(hFj)!(mV@8@+<6zXJtqhoS;sbGLkIKA$bn3 zHgD{PMqQ(t))+d=5yqB>#=d=OK+z?={O2XjUr!17EbbFyX-GyYhWDUlu}>K{c~aRG z&ZBDlSwk5e#s4%3Mq4;YG1xY0#Eh5r!%a4>TKVxK2QX1IWwwZzq%H_CA z+3hFxpC10YI5A<-Hx4}gR&&4H$=;>>z($sw#wSg9*cXd4_t-Tqjn&s;1!`7(ts0!UzRk#)ygAWe)H5oizTY+v_3tcgYpbG9|`c58e3Yzo9%-8>;|GHd<1F?$H9Y| z3YN`$+`O>N@&q`j8yRd`OCz%Ah~4T)f%u{>Qf;kdJ|5;S!^7fcc(AqXNQ(`)T!38! zsG`0S*q7mo^cD=0(%xCxG^-i;YEiwXiQhrJsOL>W!ZN(C;I!1bS6VBp6mA;a=d3KP zk@uS|9a;-dkX+i*Q9Aiv>G*r4qwkfrx>wr5QCfJfbi%#TG51PaqhqK;>*W2}{ClOt z?v)NgPdWNd>BxJfdG|^Oqtz=$?a=yoKLX+59M3DriE0RlvDr>1Z8?1Ns7Mv*a4OHp zfcAl-4gijlM>P-Zh?pp9!at|`nZ9NK zuX3_DbLWTg3)$&DUrP?#+7ZKN%7FoE^Ydo%p!`$AM@T$3vnPvcxI#a#G;Z2#fIZmS zWN!Z;>E6g@wn^RljAeu6L60>F{G%XuYTBg;xhmpvT4C-Vk`RABVAJ>SxBU7Y9tGed_97NM!2R#u#gDX)Cd+F!3GVSA8c!%JiPMG z)H+imr#?3IES{~F!p90D3+oh~#WQ;_2CS2LBd3g+kEeY7JWpp*m$vnqL{=MAFS&=z zy0(Lw?a^s^t3Gn?_N=GAqUX>){rL#a8rQ76#hTqJD!QfLP?K1-nI})q)caUg)8DLI_-AG09}A5q_?*LBZ&}|7m;sNE?w_DL8yZ?l z)3eavPD@CXYEvprxNYFSyFoUb5fV;xVoc&9ftm!LE>Kb$Vn=e&ADNsFTth?@sR+nG zWOQmIa;K5#Ssj@w$4Hkd+f+U-hbE?V8Fqa8rbGNTZ(6%aEg;U6DuLJn+=DpDIhEgDlEPgr&7SFiL(bvk%xZ#U79~_-J8|WL!hLnP#Y=tz}1#JqYhP}@%im%di9Pv!jv_x z5l?`&@-He9Sq^m0`y{4FY3E3uc0fogtZ~hUcj%We^24S zjEcb(`fiR@WKQ`VX@+_i+{8rkdx7@{da!!R*8`hCBnk}I>eh*rdBV+Kt-_J6gqlNs z0}KE(`Si&HK>H+k{|It*iRAYR9n>gVMe5BdbPRM)rjW!as0*oE;L%0%w``IZEK4{a zIJ`s6rJ3y$``AaeOPibKY?q>(9Xp-#S^0bxpUr}MjqAyz{t*`e=M~} z*Wn;UAYh04&%!-^V=k0UqM9KwZY?&Bcph4CL@b`pIo%>-jUH(Gaq29-djG;^= zIv|N4v2`Hjp|jLhsz@^vG#!gTFb0qi2@a5G!!jZdCu110@g0%wY8{kh%d)ky^|Xz! zDS4Eb49+TR72GozY$Vf!0>svwo}RLJTZ{6(LR=R^qLG?uO-;|v^_L0~iXB^zz5g8R zx%k_lycRW!GFztf49aVrF*~Dmiu}d?{lEOZ!{9DV?%-^n*O~DSnByJ!3%MB5tODc7 zGdd7s%rqO!Lrk~An5~3vTaTU`e$Wtmu_ao7mB<$!WL}F1q5e_En5`^38p1(UeTG4` zN;|e4`nZDSJa@ubdqBv@q@X#|aXnuboBYM|C?Qu%mMK9K6`p79)h?&KqXlWP6#1^S zRb7e^+i-^z?TW=aVq@hM;-6Q9DoIL~VvO5oFEHEygkW^*P%I8>45Be37wKMBmaRay zOIy#bxqOdx+@^0V*-;_i-M^oy{TavSzbStvKUBAi&+jMDQ~2r(AIFkd7Q@F$BnGj7 zH^mwvs=*s#M5UaTG*&c=!Fz`68cP>QV~B-UMIwth9oq}XB9+H)|Mu*v%Wq19@BM3s z@|FI_fdi~ecm01n8$$mOwHO3A_}pRmAT)u&2f?GEw%_ivk)9o$`j@kzf3~{ofWID& zmnjyilsE89wS|F&06`H(6@SuX$X_1UH6o@gteV0}UzeBTmE+|8)2PiLi-uw?eaNiZa z_esV|^;EWeJd4)9me)U=!Jc8TClWf}TBLtqEOb*cYRJpL=CKwe(=R%aIpNWXtqCZ9npy2OTX^ZJ&Gu%`0dl~1moK&bWy*GY(7@4uyf<}&E#jTeB9l=VY+JB2Fvg)L?~*`&4a{Qf&>y5A_?FQ zL8uQ`1U|c$Iza*?N>N1lRa7*I65L|wS$F}t(%)0{?{2QSG9b*J&YFCB{;hy#mBP7O zZzaX6%IwJxyRmsM+$ZC{YYZ$Tu71Ni>%B_k61+&)5Hdtj&dnAWqk8IFQ?X*aN zKbL~q#NF~D5(wt_J$vIVvc`GyDLN(qff$AW-;orjfF*F)t-8|cKf#UOXU&v!7KHj99x2V2qvWG2aGHT-5Ub!bpM30q9P|_ zj!1|z32hK=gobPdWtAlbWd%V(E(L+f;uYXhq;q|6Fu#gaEHa=TtI^6ZS*q`HwdI53 zD}TN%S>s*LG(~w^h`xHKyneTiKPblaImQ)e>8M%Vy=DoPdgRISIZWOR42{LxIYxXs zz$Q_4kgNv`EWgeFjCZ}ziv7WU)`RI|DG`XOxbNjQkgz1nFfFk<-M;-lNmz)GFv2&y zja?`l^!BXKl8hfog4ga7y{E$?q9#LB?iUq}&GU*I+O8vS)au6roA2g@At}}Dt7qSK zoQrsW+iTSmg6u1%9-CN4|2~dg+tGWV#5Yy$Z^oinjw)Y1%kBp#H_sm&F>jTm^!R?0 zdw1nMVt2=D%x8B6aAEGQP)X(sbE}1qE>wn4Rx(+>64;uUviyK)0jR({6aaN0zRvUU z-$m~&BDSC~1^@1r4RD>uQkM_$3d(A$CRPQ%4(;C@;ci*)82PTQGS9#%K9SqQG9w4;C}P z2a7c{Q8LXUQzl(g#S_Gl*qhm+!~lB!YH4e%(ughW+IOzkSjlT#-L7xMT79~j?R5R< zTIN0xsThZXIV&pd$0NpJezadElA?2G_CI-Uyesl{*-o4>w`?e-Vh!_g1M7cTL%+@N zlMOLrbCM=oPXpnICTTUEY~l%Xb&?Cqu&$~Tdb{nfc zLn4#5mp!Zm7u@xMUW}0mEg?yx}hCR2ZOqyA_4ntWh%_5!M1^vc)Kof*Q7j)1Pgf1urr82;+vmgDj0K~oN z!cv5pUNF>bu7)#jC~sVG;XU_=GuUq%Zwv}ksA9~ zGkVd$F}J%%FP6q!LC-n2qXZiI-Ja!}CWk)rP6?ZdoiyocCRdFmb}PTlo`3eOAiMtO z8#)@JE;twxG<6(0MdN~6vOiZ3J$++0n?7d5WRTJ@zV=nQa#yUb(~?SE`$@G6)`dAF z^YBs(;jNY~1z6w>1_`io634+>Xn zEe>2bW&2&MYhX#?_B%;YZH|t;5hSr{Uu8Ce5$~YNn|0TL24J&Ro3~b0-mO?ZV%|ns zx%c7<)0)GgTFB$-{y!bU5W~j<9o1`=u(HC2!h?o?1{>wuiwzdiy|{`qGL@MQ6wlVb z>wyK{{NinUxcm-Rtk%sFHa8b9S1%IT5gbbkL=BlT1}AH-(n4;^oKOJUHG-^u%d zGr+s274}p6o+cntqG*(X@XW_QLIi|;_gQ)1`hU4?i~;6LLkN^h5l|+1Ai$SYN-$gD zO$ilC#6JFB_|XL|^{U{2e>_|B*>{vOrDpD;qAm8Y3vFLG7GTqVzjEORrQEu>WbO`D ze?EGqjJ>mt7U}wa*1KVQX?UNaCK0*X{9Wf1{>m{nric$C?Ntbmsx9_Fbc(0B`8h1+ z!ABtLhr^3xGM1Q-r3`&xX?dx>FhP1APLW;uWjFoZ_Bize@pr?h13mp+fgYJsX=*^9 z{x?WXA`YQrVN4o29c(=W=uUayvRM6_o0r~mE_-%)@T{5hPDU<=dinLj$Flt4vy#2? z=UGc6dFgy97@s>2^VuzL05_zurntEw^znXL#_!OYCj^br-H=%{)vHm}+MCwL*zH$c z^G^O)&eDdClnNfsfQ;Z%wj*m;6Q2@p_P+7^iz3lsPSx*&{b;)$i^f9f{ya?$B8X25 z4ktI83>${wbdRMGU5S^=CaLjk?cv^tEBijLN1hrY>u3vkoMrTBE6u4~*b*&1pt6wgdBRbxpYk2?l}lozNY~nUX+-qSohziNyO#=WR`nxaBBfh`!G-9c zIYif3l!O6PFb;qi0mw~aWj*E? z?7_}6tCuXXhd56+lnYi=i(vAY<<*>axor2mXU@xV`R*mB%6R<}NxJ@Q?jlKj6~e%f z<-vtTQY5g72F9?2_?yG>7%-U$rab^Q$!9!BFk5revsv+;@gK&p(UH7=<0p#n2dlou z0?d%oP^%8c9UV6z=>PFoy>mmvrb(gVCO;sZ0iMr5OlOqkBxAi{%7tOK8cTrY)X6-{ zbs>Tk6xgke>b30^vM1=7#dFsx0Xth?XY*&WTK&4z%VDf*OEzme=L^TqUy!{SqkCBO zGoK5dS(;_CF*;!(&Cz+8fzcGUl@QcbvDmW7a>yd(RUE=^T((F>WIu6Zw8`AWMtRF7 zweU1iwn~MPo*w~mBpNy$pl1rQh;-8skWWe(L8CXyju7M_pk80}Xq#tMTQ-N%1G>R;aBN>xniVxdz)m#oA#u zyC0*MHf!CsaEYuwvuxI8Wn19XHUk3GHqG0$Vk_Ck<);%?%qZE*`QidLhWB~Ac?VVt zo>U@g*~d%Oq0_6G^%vrlnlmtcb8<$RXGofA7kiI-23Zw#o<4&|r9zD7CrP7&k&uJ? zr!Z>DHKPTgltD>DF?QZOI7lDRXY9n;s#;pP1y_Tyzz477wUDh%7Yo71wtRmJ0g zEG4I2PG?nZT(?0F-nFQ6v)L0COVXTCOFQRIn6!ZNIeOdrxvd*E$Zf;c)N0f`t9GLn zkd>UO-}xM96esd#y$xv>OJJ^tY3DT_Dq23G`8?EIm`4@}hl=pN!h{n%uV{+M9((k@ zoSF&Y&V<&dESfP*cD4JEN%K_o?9xRmg5)T@>On;C6MF~sZV`ZPRJnCpU~((2J z=AYpF+@|a|KVyrAKPh)@S*==D<6&)^cZ0la1^YHeuy4bt2ZN7mjS;}qahGdHJfA2y zw_qX2t)zIh2+|M=`_|H!vpCe09yB0ppBx#T;&4y)oKA6!=N0}uDVK&u0#(e_(1w^C z?|bvNMSI6|Y&UphhxWtzC@qtlTIH0K$JL^Wk2{Rdd%XSFp^x{<&P+mKu2i)L9eXy=_2Xe(8ns0ClVW&C08vTa}^_8LDmV(jXRgVDXWR zNvx>y*Pctm0+&o5c6Lmlt?!gi)LDZI_Jwlmw7gOK9MW+%Y-HLq1>Jdc<0c(su5Mda zurFUyHWUwDTQ93s$?(ag_Ls)>MVT6V_>;9&apykSLz=XDT;lr&Oyzv;(5L~kkUks^ zHG>MCFXSh%@=kCladVfbYbADUklWW0uC2KV;xL#mJbH+{1i=m@wPE4p^J*bRGg}-E zFYrg8pl@+cI>#wMb~z`U{Gw=(Dx9gfSwSGoIpT~E79cg)S-BhiJ_91w-(6U8s(P=| zTaFX1&(ZaBa{i&I^`jNFTK2MaWpO|0KUw7m$ zUf!tGDWlJ-%6G5PtWm!zf2o`WYMu_1H_@0iE|oBQDvKZhEE(YenXZ(0;hAVPqe*Qw zzidUIr5Xt$;zVy`2>GE9mTZM+_DLW*UC}M_>L|JNAO?knxQFedkG}~+cTaSMR8h?= zCri&)SERs*;0fdP3YPxl^N!$oi}Z3n)3r`H%ig*4#Wd;*xjnZ=(^|20I@E2yX69=3 z09&B@sGX#F!8G2beso#%;1|GCq7)OQ zS{$nJCx$Oi)ru~~c!Up_Q0L~Y;6P;L$&B2mHi_Kxp)u9zEwBk5t zH~(aKDT05H zH1LR=B)ldcl0J|fA7zj#%GmLkN#t3-8yCDVO19M(NFmJthl?s*y;#coZY(A6_O{gGpqX-uKZtt>So6<2s-=-`^$V6xozLCs-(U+z+NaoAqEB8kQj!lhtDr#R) z^fzaYpR!dr&g3s}1f$mV7j|b@Bfe_~t9fHOE1vklkBa=}GYmR&_lD`17fh}^1(9{M zWt(Pk-x)=6CM4RNmk6fJ7pBjzS%N9)sX0V|Mcu(d9bmo)`iRkarKoi%bzsSgXcf^j zVnoE$2x}gg5)k21YHs0O7$nURQ6o)Gtya8mi;G?;P{9(=Du}=ZE)2D_fO*~ew%+)M zDE*C~FxDzcegBTnD zFd~C@FZ9eQmY*nI8B@_;T7OXoLq6oS)t%gY3mx33>HnfMMAg zU47yKk}ZFQ=cQ))WAW^Pe(LQ{;{npQ{(?YyHCey@Y+%Wh9rpkx2P`Tike>aq+cjKa z&3<`|*;yyx^i`IF4fP-Nt5U?=RkHG4+46kcvk9PnIbjgy+7iNKtnB}=rot+llSN=p z3rx8&Vp?EbN0(tue|lxV4L4x}Q5!ZnA1hjQ9}nBb?pdMnN4pU<5>%W|ld|B4rg^r| z%gm#n74EW@WW~CELJvN-838@^a@S~|bCbjHkC0YeRS_7^e|N2k=d(EzV53e+^OCnm`D=6J;5XgrQE zVf(>(0r(LZAi6w&D+cTXWidXN+aSRAW}E0QgJFza3w1kXjGp>M#r-Y~D zK4_`)tDl92>$ks+DUZ4RS(tt6zxTzKyO3synfc@e$(E#lGwaX`a)k5O%l81{Pnj0x zy13?z;=tLiGy3;Qd{*%B1uQhlwJwYSys4QJVhuPa9V>-dPb5 z9Ne&?VIb$D^Ojby=bN%oxT5&x@A?NZ`X?+o>hhiuWAMf+t=mlB9L*nK4rmZ5Pm~Ws z_rSjwy2p@6QKDpy)C`n`L?**2NT!Xd?g^u?Q{dkClx@=SK~AN*kt|40bGk7?)k^+x zGOimk>MFxSIa)`-^7Us)4Hf6|b-V9J*%=Et6{B}aIGNAnZ7lrw&98AIK+OkQyxw_V zJGMUURb6M>`V-9PPE2S zN3Ta{8MDu;n3ahyLeKjciBbin>!K?y5zoLp_m*YRN%1;BWKHOR824SlkI6-@2$RH~ z0jN11FHMct4>sMt{rMaAkgBgjS#)f0-t>hPW6O|;*{#3bP?qnUzxWE@seC7v8+#qOnG@I{x|?IR7GT`X z0Y+b}+un(8DW?3Hewf%P(_g`P_ff(GWq8XewP;mbM*^akPvaS=P(KzFDGE6iS{saG zs0%6-r6%zRKMj~tsq@V1LBYCyOV2s07tYAJwXa=NO2Lxk@IwAa_c#zSrymFo8aNV*X*R8J~u%ky`nuP9&U3Te%S;^Re6BLR`q4(8tp%LRP%Qa@)Y|e;N{0O=9 z(->w*B&KejLzKspS`;8S_;{jc0R>lnRkSeq-b6OZg;#fyv_grv^V+lk2<@0TZPt!A z8dBB`eRW?C3exr4dZU4^+eB;O%e!FC2ZMt~jpu8)q=S)qY5$2kZla5Z3C|lpV4?!a zrF`Xgm~WJ2pk{U7=0%#(&vWuZwfK(N9p@3}&o1T%>Yz7a>wnxZddkO&!}hX%Ji$0@ zoA+G29?`VC2|$|@OP(EDZk)6R5`Xsv^gbKYxb9|E95i^5`d)bjMjK>l>){On3#0-2 z8Rkbi4R9=c3aH5!Ag>auOaETb*S9Qhsjs~Wdmg##LvTKz=(yx$-q^gI~2l!Mw zSaL%(r@@i~Pgr`C$7jZ%w2xjNR^vvME^tAwDkA2w|5m#<8W++eGXuR!m!vDM%MDoU znU^A>^lz`|-EQ%p^qNK6WIlbIUe!hVUH_EHFC92@M@H(u(#GeG8;T@`J{Tu=wf?kV zsf1wM{k3po+@PnDr%D+MteT(uZ4TYnJRpmK@BqAP7zxCZ5LGXu40${Z5;9378d^*R zEnBo;pIUgoNLMHoQ{DI-Ku`4G5eL{lF-!B>UCqvol$0Hpq8+jm zQOrKg4t&zbVPp^zS@32tb+o=i0#Nv}EE5w%pA$wmdP86gP(wO2eqhC*A^Mzuv2T97 zb9?BZiorcu$v^bw%<+Kz%5)q1O}Fu(yn!w;7yWZxbHTA@mawYt;rSgx^~_Q&t|r0s zhJF!>!}mg4z(KMsk8!dRLXT(zIq8|XoGsd7v&LrcnAE;q zScT)^b1%JPv;EXRU$HLue0BMKMSE|_$)Fhh;qrKXaOA+8^zJgR^H^`Tqm)Zetv^31 zd1c!AL#3R$qVsAaEIQQ*i=sS)X zVooHKjDRrd*Qal3`&@yi@hHNNMU_i%RF>eg6Y<%^s<6ZR`2WM9Gstt|l2YvuV7an< zbs9C$^HBgc(P0PU@i~!3rt9T?X4ZE9aH%U88E|msAg* zDi-S(*WIt)k&klgf%8*%0@iF0YMlCEL}7?oSU90AkFboQBd57}=7^ByqkzGOq=In} z5*ET!Q!;arbIirD`Z$8Ee$VxO%Yu?#jT$_=UE zYPhA77V4x*9b@)>5u2Y{GJ`}d#6q(#K{02HkHQfFq6!RNG|7b19YtS^F7Ll_|Ap%j zP0E|%KBiMkOUIV6YxOyQ`z2PO?`vFlt0dLu4QLgBn7YI&bVKUY%aiuA-~YR9^!3ja ztVgnG7xAn#`14z=1)E=5K@aeb$Sw-oD0V^7@%f>aKAPP@z78e7{uhfZ{CQJ49^0JEe)d|prDUwZj7DQLiX&jJ>j_i+&ntSDQvE_a`=eX=jLkAH8efIx z6mP>+pS~wExHx(j*JWNjcE~ug*63sbFGC?cn89&H06KwOm3|kUEXez~kM|A6WRSs_ zLK z+KC1}ciezU!p(pTRtGmN4v}e+WrimEL_dC!fu}tIB2aYS^J*q7Ab}zP9};(-4~e_T z$M8`c;nTbTC<65%a}pq(L+o^zF!+{a!q5naIF}ZBo# zhz+W~QGN#!9f|$~YcwV-YAIra6!%W}`6+%f?iUt$6oO49G@*oQlFIUJ(`>|Ew~_In zuk(Bff{15*5ELl(R3GcDAP6MH0X|6%(e}m6$-YB)oAf0ZxmlPEcxUg`?okRy;{p&`ibL@2BA1KBYIAJz$!Yh19hmP~s0U<13 zK8|>&4=%&YL~k>>HMo1hSeKES!#Hh@zworo!*0%9Cf$5`Yq9 z);F3+WyDj+$yUgIF{c`>I6?1BW($T5RfGO`mEF8m-cSEjFRzID8{=*D*_(M-#`e)q zoo8Tif1)Q#HP14J=4zrp=${z*V>nsCxa%~?eQyK#j(#V~^eO>r8tNMbZQ3EAjAi-O zX;%1J;;G0-qnEP(0Ou&(;5Pk;UPZM>HXrlB;PSyA#J@j?e;Mz(*Wv@iLEH(HRzC#G ze^!55c*C)lGg^fE&UDGptbW#2IJf5d`hh{FYvi}s;)NNRYf%p3tCRqEz@z{=l;uZF zi=s)#l+ZO%#(88AM0m<*9`jd!S#EuMZ~vpsr+ql) zQ9d*8rFQ`LsUNvOfAyNlV@`ypcHilSzf~@R>C>QaG1J(?byn@VYGQaQ|b?hwJyf4ju2TcQ+?w z_;fT2*y~`-BEm9PQ^c)|hX3GaqWw}^=BUNS3C{x7O0&3i2gr3Aqy=L~Lo3=idMZMQ zNA8~w%o5-bv??Kn09vi?oGhv!bA?07TJ_D`TqlS8(6`}->JQq~+??KRQ2Fh%d?Wkf zOQw@QiiXK|?~sE^`!NACX^JmHEDJQNPo0L}O#Do(d6fJ`FaS5bxz)dq-p5RgdLAEX z!!CH6m*5gwk~;UPA`48^Iz*bqlLuCm>d(is%E5!#8()j*kUUAh?t)*VaPd2Zdd{%!- z;LeA(^XyW?qa_Ti@+jaZoHU9#>R?mb0Fwom@7Qg_q0@TTt3d;MB8<)8y^Tgrsrsd64$+kXgbDhC6C=f}py>cV` zt!F3{saNZXgde{Tu8v>?BSkbK{SzZ~5@TCR}VnS2f2rHmkpdA zRY}-X1E7#nzbfy)W7~o=y@Hz}Hd3Qbl{_~VA&K6i0hjVG6ng-}Y}Xy~*|MtsrHq7c znuuzX30g>vnsmz1&7ivbl>14XXW3E#+v4X^0j;D0TJbr*NW7&A@&L}P7osMB#<%{5 zTr!g#0iTS@s!UiuT9x3UD&(F?Nn5{}n7}se2-+UlsZV2;`_|Ss20J4vZwK3*JLjz0 zUuR+7hP$=+im)K(%22lM*Np)|uO4Ovg^urVMLb{i;LdOdFP-7Y-FoEm>WXPzLI`~e8uBd zz@We0PH!p^kKXW45CQ#-HvsDREFZ21?n9(T8=AxT9>_9&ArhTcij(}CRb`;P0{_(Y zAVI1gq0ih}8em=d>B{mq6>a+1l~37i(`Kwn!~tHYAB=eZi5bTSNlN*?LAd#8=D0xx z3VQ~J#KR^aY&HRLQ?$|d7(4>RM|gC&<Rk;q!>z#Vi3+`bltW1k_k|`ef86IH|x4qg)U=>Yi`x$bHWxo z{Fwv?vh<(z^9Pj|pFj4BG*fx$xudUO$6yl-_D-hdtd=fLpCN;y%ImK?1_VR&2LhW6 zm#yZJBh9i}2U6FER;(uz%|LJ*xtFN|m%!?Mh0XH@5T!t@k-|pXJB0q=#&BxvLE##1 zH30J`1%7J^{#Xlo=!OTp>0^Z<+ECKOegPB6O9YC}HLhpMfozM~GW4oi#x_Ul#aNEj zk@}*{EH^3W@r_{-~`1Nq;|OFoOoqi{U4VhlR6ZHnlxbgQ|_IkFUdr6*qnV z?O?6g(n&2 zg(nntM_bV*kjm+iD*g@q>t`4BDh{4D`N9Xb1Cd)IwnlDf!9uSOTaz|;>K{Yc)+oKm z$u{90>V<2$RBdN9v`M_eiVKVHzsGsf_9R*Vx|kAFWLKDpRwr$eSv>eK5$u|IOQxc;hJxPzyjUWg3SitV*F2TF*6d8hjXm*Be^#%k z{zCi(2mXy?<v9Hau^7MPUNabYl@MpR;VGd1t^Q~*M;+Da#~H}C%$8b%jhXWk%eX#PsAng z$;2c6_3f8H4PLOb2%``ZlBW_KC2$w31eZJ~H%AV13~smf#w){X9{}~WaOs6{2L>wq zeBg}HCuj9;`qY}2;{th1@tfWDD)QE)s>OA6lg!3npVgx6EU>4a(Q7^>D<5AN0)5a9 zmhU&YA8bWe&EnHxMEEa%osN$$s>z~aLJJQN9u52yUmK8)G3JtKGfjatwIN~$*z|}f z_RYxs@lQKezBcLBTd`6itNZR#uk%wyBlf-;#AYw$(?_u}Cr3y!d+eKdkenN;@_SED zS|+Rdzdujgwi8}RNA!(ffxQUFUX0XaV=r*FXfNEpzc`HM;7t$TKRQ%p!eOZ`6+QVl zA_%K|9TBJCuY+iV27h$a!0XOdqp7!KF4g&|)?UsX?=3DHIiXztb#KV>i+f+N%WAp8 z=1zKY)_~^w{~vE}0v|=uJbq8l%=3gy4RnMS>cVizgPqz^xo3{T0=epKoEkk{LZszov8D;r_ zcyx;uN<>Er!V7JHLh(e7P9jU6@bZuOWNFu1_l%jl(}R^@!nC-fdh%6R1?`;qR}Yz^ z+(~sG{iJYSmXpXj%-i!s?c1)Na?2&hPkyqbS*=FyomKyityg!y;JQC8I_ZR-JG{;I zSGPXuxD%`Xd@AN_n{z28-w(cyqU43I>x&)37gKS<)e8UQCS*-pnUJ;6J7up7y}T{k zd}WvzCi`TXn1&M6rJNbdl)YI{Y!lKodOe_xYWDSqL)uUA_RYES{+ZWIxg_B(NW`6y7aTYF@ekxMI92;0$9?ABefG~@mFu22_B1=L z8r?!&T{NTn2|auE9`l%+cth=aKJKhpL@RQiUl!}dnMb_wNR8$dSgVXFEvf@(9;a0hiCkg0-l27|>$RhXo9avWA3ytxhCWJhoA)~9}aAiMV9RVr`F zYUS3NA3uJ;OOI@v(9k*a*`ccIFtu`%_lN5|=uLi=bFf=INqpwdjgOyqz3aZ{egFOW zca_}W)K*MbRn~)kd8{{Q0Jdc|XP)le8iz(lwg16IeMg6I>A0plcCt1o?b8;w$<lYt^Mij{Ea>s(CH7jo!^a6u^Uyt zmqc4-?MvgBoaEDl=t*t8B0yS}uo~(?{*b${8q%N17*3a-dwPIOZ^zZu)h5w)IjpA% zE8-eR+t{Z{J@v6_c>FPWPSbVXn=7)uD0%*mH+$A=yl^t7d4Bx*luz@&^*)%VVh#Qt ztL{muBkq|x#}yhMLh_fPKjL5Y%a{w;G}FBQgGQ`(hIxa=%!ZruJFsb@H{v{Dy$L^x z4-&VTu++GF1N;6b*4=c?7J{={+X?ynuoinsj6`$pX~W8!mrUWmUv{+T_`HgX=r z7`&q{S54W^`4NB0!1FtN=e;@Cd1T>E*InSf;f>ho#^)(*6&~{4*wygRh#g+~6*~tV zEG;;8ym`Qbb`V1zLZ48)!1Vf%BD}!#oLV%+Z1)l}!Vp}O#w`02FGK>hnh$5@s`v`l zQ{M5Wdi(4xE4I1rC*JEzmcq<@HH4ZlpSG91p=#_t5c>4tv=9!D*Q>&1_kj%kCiKS{ zeBJE+v!{CZx3TjMaHc+9^aWTso8I}8J#d%wEYTFP=s{Y7NA#cDIurL5HnY1PdT&ncp_hz)y%DZZi%+kAYhbN< z<=$oX;IV4afj5mj=Nj96`ZhJ|SKB%7xhv*>=*@ys`h~6&`%qC0$~ldtLOR66N3LO~rqax#H}78SH}_&Zel|A!2!$p76-# zj98cSD5a=JT3L#l$0Wcc0R@RA3C|c7?Xfl1Q;*yCaB{1j%6Bem?DZM;!YNsGr+dG? zIp>=bo_+gWb^&Pk!n9s>buei}!#n3+Us&}7Q^v<#=(^v|eCdstx(Sc#J8!Pr1&U?2 zf__F0+RqC0Knq1ee3?zO?#{89C!IQCny{evDEPd6BkdQl655y7 z&8$?YdLS0KA@+-$BK}Trig*O4X%;wria2nOv7*}6aO*U_dIn!;2=ysg&oICB$Jjh@ ztV)o=g0md2j zQ}!>hkAU8gnX~qmBxhOSAQ7%uwZx+M?Q_dkyzhNeiWUq(o@L9UKuH()o&2Avz=ntsa0(3ujX2}*mU z1O_vkC#C^qb}rhsjj@lHUVhcJaW|q`65Ddx#(FdqBc^+pv8`1vckY>~eq2|z z&%N}5@fVLPbe%QRpZZLEh^vVU+y;MgreiR9u38C4g<5TPw752zy&`cNB%Bs;5m(}J z+KEQNc@lQB7nTlcVAs3qoL7HcxhdOiSm-I+ZT-Xh+Y%4lKKX|h*^S)sD(B6-ySJS? zJr?t}?CLSs+ceSs=|rzq+*|u++n3&TW2u#w$~jG0UO)97=kdfX9JPO5vm=+KUeV9T z>F0Mazh17}SzPnhYhPt!&1ypJ@@8Z}C9IiFcPuzZv;X;k4+=eq8- zCVtsk410QISaDWsy`Cbgb8)RGDp`b{q-}q3GuCS9;3Nac2#~Q1rORCg*-#1@MrOT5 z9C@mtr(ZDSv7ClG1~*epkGrbi;ke{L9iXBVlsK^HDD;?_bD~`IkxHG?I-{jomu^yFJ4|t zOcQGonS>MT>gt(NvZ$g-S4;Oj+qZYxUNmxY{^Xm~9klf$nq+tM3cQj9Ud5mfzgO)$ z9$33>(eoS6R}Jh*6YP6bvG?WT)4avrLpG;=DOIa<-hD5<=PHjW%{BNduG^}$Fj2Q& zQGAtYR&=W@4TV_Ikl7-=y|!l0aQhGDGTaQ@nv9CBLlOVK@u#fgDL=Y>_(@k;MY19e zHmY@^!?`N@NiS3Vlo*B&Elo-!IYqWN^5)18BuV)LlZws&IF`Jwo`<6L9Ca6ABrg*aVf&ZJo z!+t(?649jsLrb+&$)eRo;qiJzff=c3z$jMa(hEt9O{C9cl;if&MiXC%8?wxdPkfoC z9N_?^M3eLxd$IwL7O7MYW;L;;OgHh$V;!wosz*W`cS`qO5gcADL3 zNwd#eZ?-S?ikde*D|_N?3i=b*g*l z6KX{fIp-v`PpF|^%zz%P_N1XByO5g!JvPxj!adpgGYuW#u9pG*9(oc|GL0#K$A*+d zxa(v#?NUw)FIixu<9f3Ul0X5Nc$8iuZ!rt)w@rN1+c zQ&%4;<5++bXs1O6^k{30p^`aM@idIRB_UKAjFbJl_k%Gj4eewngh~Tl;LkHug0WeW zF)QuYBg@zrUH&pjCBa#SN2SX@^4CLIjv+>tt97eeAo<7D(V^rc`*2V|K~3nA4b)7QM1wc?kfiRUp-p0qyJ{+FTcC2Z`q<=4SEF`-sT<>9D`Ot{_BEVXKT>ako~EAtDv|2L z)6i~q2J~n(6lgf1z3P;PaaP8y0At*m%-rCb_>M@!x@}{>MzGUHx&gNCX$a@{*q0G~ z1=e(Ogi~_tl`QIL%0qJzzchk+)v9D2i-9^Ssn4}V9zeNu9%*D>*?E*|2{4fDD*TS~h|a z*_{1Pe4&<`+=X+KdjTgKYRkYg)Pl4Wfzc8d zj7a>VNa7K`&{7zDqKyW2+7L}2*h2j`5K<5Uj|A06+se?~JJ3KqS6By%_j8LvRA*3y8 z-2<;g*T8nMc|eP`iCZIXtrf!7v^9ahQ#Zm~h>hzJLPwax)>te+Dz+}boUjV{SHcf= zqOST;=5U7l zt?C(OvU5<=hPu1hG;^I$aq~v9tdGf|O^DCpA2L9vcTnshaZ{OP-PU26Z?8MD6202= zcKe)n*5$Ud^yI4IFPAw@rmHqpn5x^I&KF;FqOF?W-eKsulWtbmdk@BnI0wAB{RVxb zZr%WArF#y2z+;L3H0*htxYx{3JR;~DwWnhnZ8{jzuQ>~s^6HDufOVDtuXw#_<~qyt zIbp6rdwrBvbNwYJY_-pvrdfPIb3M_TEs?sUedy-ZkF)%T2-@pGcG+vRNf^mKL1O#~ z2T3LLgbEguInE1jJTO3 zyzr%?+dua9+?=e7s)_HGE?pjX?e`y=xkwEhaWNZU?!qPE#5)q!MYKrlt!4q0)gGc0Q@Jv^g3}o9B-?s>6km?Y(7i_G9H^J4{vCk2vm{4|?@F@42sC_j!AoGv#Gf@9sB3 z&DOQTX!aB<8R=xuhnDjPob7R`TSl{|4ApfDO$uw@?W~TBC&XTK(Dh@oRb^^A;tjRd zMcWS1_Tmgw4gDOjZKeALtr@PwX^!6SCZ zP%~A1A5jzLW$;M-FnFf2Z*@pdw~!uY2F0~^0v@pjYLGVpnHf%A2;Ws7s;-1<8(0;Yc;weyJ{)X|nWFIl`XPYu?7Gg5bsOdJlJ z>FG}MA6ES&KfK}4ry#CsZ;Aa3jPZu2`A4Gp)nNqBG1`h5JR|(aj1>cq8}Qs5JY})D z5uOo#52DxxPY44Z+t+r?;3@QH8Jz)7BETd5_B*k)5uQSSh>>p^#(&ZqWUE*aFyN6` z`Nk}~v=QC_wN*>~OmlaUj2lXxJy_No%3!K>zL6*RLV2F%m&Qk6&kR0J;Q(6R?d3Mi=6W%Rl_N_fRX4q_n^|F_3$K3*~~epi2O029i- zr#C2ew&sJlw$_u2y+6sfjn~(0t~Gvuxo@rYO1Y12IPWJqlP^ss`Hr@Rsv`s^I$SG| zADEmviRXc#+ofTyQ{#hj2;(I^y(|a&ZSd%P5BAv`d2Lx2~#>Vi3e+Hk?>S&S=C&V zBeg){fF}Af+HP-p^)luha4J15rTr1SFSxeZ(IJC;5h@CbjQ(ZPg@SJccpas*!7xG-b|Kw)bdfh1mPX z8o`y0`@}1`-%V3ILLID5670lXLThJwU($P!-WR=xtF5RE-%TK@>;9Q3z>&;%l7`y?rS=F*CU{Q zaTJdW?S3b`U(=VQ=c=_0zf-6W{UXZO;1OyJp2^nI2v6vf3ZA*TjtL&TUrdX^686yB zdz>Yu?HE{eboW_pbvk*yow@GWVCPMJ{}TTX$+gPQgr~LX=oNCmQ`NsS;nDHEx)m~1 z9ve|P#o7?*PuLO)m0PsT43$%^3|sC{9&c9pG716~j+W6S)k^2uyULdl3GNRv_pST& z{WrZcGU16?Kd8Ct?VXVcZ{2Q{>-!Sd%hEMbj;={q;&tnqnBh71_IEf>#BaBvyzIMU zkHfi%MM~`c82#=v{N-as%4mNWg)tEciG!GE!?d9~4g&U8f!=5=y4P>8jIexq{RT_J z0LEaE+G?O=PuEIQpP*P0%&p z;F@l&qeOuMSK}muK?EF>HO#v+b_i`}YuX##9#rcD=t&1*Cm>q3nI2s&b{psg&`dbU z7ic?%(mYc>7d9%sK<6p=KD7XXH?P~Vshi}w>eB6uQzP225x`xROzHCW*57)cG|!ET8Ay z^Z83JG#oW&bj*qM@3Xkz(K!n;`z#Y~9{hmouKCcOUv+ZF!%jWdiNEIL{r!dbFif9F z^wPEs?*ZMKOkY}CX4&_E)@KF}FxjRy zm{^*|V`6EO4+^n_mR4iYF@1xj0DoU=9#~o>_5MBhA-~d^e63rP6Er=e)dG_j6P&`a zza6wDU+dO{fStC-WF|Ccz-T=2zo`ud&r~%r!V}bB-{28{-r$+4RD>slG4zOCH+ZI4 zKbSg9UV(fJ9&IrN53S6J+G1uvVDA#Q>5;7a48`{Ec%qpRPU$*_o=Zc&JU&F%zJ~+o zk?3jwt?QWdI{O56sEt1@_HyEGD10D*K1AIcLPt}ay9Ch3_;3-OR&l4&S8dbU^21H)l?an0{?1YkS{Rl5n#A;C+X7sQe&ECy~@l( za-%O0T26hgs-|bDhUsJd0j5CT^yryT-!`asHK9kV`weaQkYVi8z=%u@#>vDfG>^bk z$0K@XV5V_Unx+hx(9hI(G>-FH&~&GKX)B0PZ_zD;_Z#935* zm}KQqUe?Qt?3Z3us%oTq@Y=2yN0GWoYch%og`{h)5EjO7UB)#IBjNDk8 z+&a)h10!W5FqF|~Em@g%~kFmmwA+?B@$ag)Tz_QFyz?0YunqG!R0qKnS(@hFV~> z<)!6pNhw!Q$}OyM#r12(tfi8QOZUHtSk zuG(Jxp!rN+@R{q(vGb9|7wH?xO}QwPTo|F%C&X)OxzK3B$WRl)64Ve{`T`*}=*_5< z!-#}|5&0XKsYC}uJmGjv|Ehg*7QKPd{l$bg+0clU6#!|q3e0w`M+Rnuf0U&)379bcC~d>rnim68=wEJl0Vaq)`gagTd`o*f z!036n;zdgvwN=*#c{5I&O7q8ip`XAh?(Vgk4?J#Zca&>juxg>STY51$eH~su2e(9> zR(h`o<#eE~vr9Dg(M>dVe1b5l*V1F|qJ9$y{pJeq&G1e4NifQrV6+>u&uM044%OC? zIjJKV7~o)2RgXyi;scphZnS#d(47%!Yw0<%C$xdlWp|J_EqYh<%e*_qde6u+BU)zK zA+gb>9U8%G0$nb&L*e+Afe|ZhU<$2|4IW@Z9TS+v@s<(HbS+=nY+w#Z>ID`7MM_KZ zD_shsRcFHuvJB@AAWPZy8ce`wSuP7@$=p=oM&8APKV8=r-pmi|rapsOV_y+q?`yCV zOA6av10(t@Fxb{JbXfus)`a@r8FG@ffzbXLF=}WxZ%Y2=%_&#t{CTrukpFN`xttRX z1m16;Kdv?EHhkIvczKKtG6fK`GBQ&)C;z^j+dfF}8kI*p% zJ;%~O=z3)!MvT^_2ShM~B7l(6Gwpey^@=GyV8Y&v$wxd|1M{j?VLV!3@{?>SqIFcD zrs*;^P}8ka&6EL&$|#a@ipuOYab1y6tTkifa>Ea@~gyFZAlXFbWZN z=!@Nkvg?K{(#wikY&p^?J^7X4MIC~u5rZ(h?wS|`=VCXUcJKM8yNPI4gL~!dFKe8V z{m7Sx^}M2U7=;*dLGJpusvVh4N$At8wf$J7b!##`OszQ$(!Q1PiA1-=CqlPQ(h%t$ zxbd2_Z)G3~?$Gk9*1JxkEp@aOe-~(R;8|t#oHdNLcLrvvYGSAXChQd(Jfg1xLw&hG zYh6Z<_dRkN8$Xd=>A~o0+=bLZkSJ7GvU9qs7)c{>fVZZ|44w@m}2T7~DTw z>*yG)_R#oA+&?_HKTz)xR6rD~t;W+W&*0JZ$lnQ`@%sMp2HvAqkZ&uf*{Sb;7{K?} z_uKftajNDhs5Gs@yZ+&R3O_-61kuhPXleabMJ%b2rCju9HE+Z}g z$+e8J#AW0^jA`iW6GC`BG7*6yM@nXr3BYU>gzX=io|Q<60ZebuDj~%U}6HShmNH0mk@n@2Ix^UjoAnoG|8mkT=BH zqwy@%n){CGY4Bu>_&mfpxkKXz2c?P59aJh&DQ0;TIbt@`;UMsv!E8cT2!z3Pq3rt2sd5g*`3tBe`r(Tq0j*Wi`wu?R+355bl<%s9~?98}bG zFuh`_wO&%eMnN2f!#awLWi717%h>0owN%rh*43v_n6n9)cg1Sj_Q9gH*0$@gl?`(# zn#3Es-JRi$7rb+ z)By|Bn8MRfZ1&Ku+dmrWu)y_h_3(4H{opMxoOx86`+e)qSywu0THLTu0tel=x?VbaCUk#53;%w5_ln*>1 zRkue>qQe!22WvW!USm%}9%@RX*h9rf=7MXnDaS z^9R+5HGH~!+*>PV*tZOMVtx}R?k3oaY4qjlnl~?V*tdIP*O&jz{yfPUs^9_FS-ZIT zNqt5?D)vp!pVjtjut-DBm8fRVw6yd{CDIbxu;1C+SW)MJ*e}SCIJ)SlwUYKV&^oQ7 zB80G~qsK=X<&4WHrzrtFt0OLRFu0~3>}Ni9jo6)^$Lh<~P!?xBet^ZjP|tFyG&HDV z7-h(e(+LehJRz79ETiY}jb~GMQ51QPw$2KpS)bv0^wMJ$=rY{(vHLT|5MYk%T^Jp^ z7yb2g@ZB5*x?KS(s9s1ZcagVkerE%-cS~7Sv<3hUSHgp%* zjlmt*b-kO5*aAit4>5M#V3&E)hVlY+0oVihh;qgS4>0iBGthFuzYw|T6;YWI7yQ*m zj+xD#GnItv-u`Zn zuF&@n_Reu%)D~{N$X^wy2mE=!xAo3--qLe1b_Vwk_dn$RDBv?z<^jK4!}s&f$y|NI z{eJp>4KLh!5RbCCwzvy){@B&bUV%RoB1Y>rm9co_Q)qWgx8Tt@Ul8e#(WZDE-FodX z(CSiJub>WUXpv4B7pa-od&qWd;{R-ILXcN9qTbnfmBzQw)(3rukN;u4q^zmFF_4-4dgBl#Z!2|L60l&+&hb9Txu)t)o_I>T9XIz>_~V$!73cH&0*= z%|`bubo*tUyIgOkht^K6pJf#rA*dgJ~U@2hUiRKL~t&{8% zs^w-ZituJE3S*>(w`x$@GyEUdFq(OA(rTHW(*D;nUB~>debRSUjde+#On{@BuQFoM4>%$H1F3>U~HjDSFpt-#@ z&dm;JDnMHU9`t*{L-d~iz1LUAS=w30@m@l`=a8TH*2q_41?{X$&3*eVt$VC2aYt)k z=Tr^1ocD)nPa$dG+=KM}rO5Jh{r;{1FV+sc?|H9O^DJh%yoYSMd9PISEM~fg8hCB> zKZFirncs>j)lcd%S{%j=bgwD?05Hb>z2%N%%)!JBj!9ei*p9?!As+RCwOe%x<&x1e z4c6+3g^yhxXC%X{no}QK{bvZB(RvgeWwh}GQu9aAt64EmVugM?NRw5d?xl_eJa@9pW<^O>~n^ehR~VVyG7V(SEYAh zu+O$C(9MAMsK-zz8TvRv`|okFt0L{Vnmy#35IVwsc(SN_fL+R4&(i`sdZ~9gK%aHF zhi!k9OK1bMHt3mK{+xPK577c^#21VRHH);$s%a@*N)7JE#w0XhQw=`27L( z2{p@l%>P56^qR$@o|!U9+uvd%pg zu!Li1P!pS| z_PN#<>a>4guN$r+*8QO^+IAT1a|cAWBNKbjPZrvbP5e8;KF3<5+V2m05HA&Je5P%O z!9M5o$aX~7X+4bH3utHlm?vp0D-oaHC7kLq^{i zQ4f32oq)M6ejl`t3t+mj#tEIwfT`oXnXwW`_QN{QlC?mxPgZ&@P_R!H@)+a263f*- zIHM$5|7k5nPSnlTdOZk!qP~y6CGd;hpLIb0+U4jU?_Azz6Fh1s6 z?hsQi@K-|^@WktAel;HTfoiC_gyj}_7kFF2UJu}movAfiaK_aK=SCVG&Cg6j8!G7q z8!B0Q(M+AVKkR|WZzz`5&|sfCDAMRm>;bf3es^$K$2U;Z9S7?nk*yo%V zX>^30@eX5Q0}0cY3TU6L>Zw})zz%%icNyA6qYd`i10s#i#2!HF^46;ex>2sQhO&!_ z)@bpPg5GH)|8OiyYlGHk@(_)_$Y`|q;K4glUg0~#{Ga3bdTrJOttq4Jx~$ErnL{{| zC4B{7M~7ZC(CV811@1oTq5a?vt!GW#eJt@5Ytr35&|X9LY~*R^ek<0Jbp@*H*-q@+|yJ`<{i|;9nNkrbjyki!A-j`$_-&7X@_(S^InPP z$9ovey1s7J_4Q`?`iA8*;B)q#XU)nhD|i(Y-iD{2qd7_ z4of^MT$6G!wf-y}DW7DZ)fMSjnx1SZeTi_6UQOJ6)IDk3QEw<*1yvJwA8Sn-cN7Z> zDKWUkA24*k6>EZhu1R;O`x8ot+=r=gpDK;&TAazO^8p@bMV2eOL?_hk&co$O1e z?^6dPy5iZKNG4iAzf|8}?_Y&hn3%R`1@OAWzfxK&=qU%@jp=Xe8p698rlZjcU_$8{ zJZ&R9)2y$|`Xpe&*%fB*5~&S>2fjOMF9`@ebCSq{>^UIkmNdi9z02Y>PCZx}1&9haS-l<=or4e`kJ!j4IhW9QQ&qDZGc~7qT*PJ0;_T^W# znA3dj-<8e{*G|4;;Bix~f9(SI+rK-F8t1xOKka$$bd~*}ao&xGFB?FTbCJ6-0$p7)T8?C z*gr|%clv2<=;=)i)`~LrsNsj|`vTuxYr~!Z9$PKi0DR^OxFQ>0hWl4|6PsJ<*Im0(#8-f56*i z8qYuARjIz;8$8oB{vw0NGVq5(&jXr%#_L257I7EopXp6ZjMnh$%>B5wm1z9LcpVK- zEK_g*-6xc`S*wa|b06Q4gZ!Au z!-Rp19VFRpK7C%FXmlbb+nKrtwvANTiOIgF?b_QfY&%SKUz@65&s+O*RoSP@^OqgC z;K1$Pf-BVNPb{oo=dQclvv(`C<JbI+czY+2R1stsz&1Ghfv*5K*p{qPhG!dK&| zK|Re=gUo$0iXC&4sV^K9$=OrvGR$1J1-qORq!`pZ3$79~gpK*gTv_;jR zb5zWpS#`cWbAmm5igyI2l36Z{H?y8^zqCjL`hSg(V7#ajypLCl6mW%a$;Prf$cAOuKO|6_{sdC?6&i#yNFZlcE`%A%piiVedj8HikD$U-scr^5r2Nq{%oUa_Q8)@1)XSS)VHFl|0-5N5W-_5ye-6iucUY-AfSGuA?RcxwS{j{A`^}C%l!Kqi( z&R)NdCRSO4&8Q|+T~(|ysM1Eenl6PG+HnbI>}u~ntQoq_NX=nZ!Ljpi;0 zRne4HxzN$-PC)ch$we({EC_mekqvfAvmR?mAksLd19V((VT90xJjU~u z;EG#K_4O_EuJtTAd}De3yzjXU8QqUtE%o(XJU=nEjO)BSd2aUok=@VmIjHla)$fdx z2ECm~7Y+(~%w`8559l)j=riFUfY$0MS{(LjB_5c$lSv;nSw-`MqF7ouKSKLJIxcXo z#@)wa9(Raa7oXs+HbXDL3~UqWX12t=>?l-oB!N*7IYa|KB^JLj+KH6e70zzIDuj>X z`-~+V5yS(L>-&k0;3po4T;6uiQYVD)5$)`KX~qbHnIqC?A-*T@&JSt)Q4El1rWqmk zH{#|!uJM~F;M<%G7~zj*)Wo87;ZFd6bjDsqZ`;Mpdky&2@FJZEK8P*J{8pkrn*OQk z$Phk?`Vd6hg|EmRRGzGmSr@pOq1^7X$Fs_p}iCZ%gCP*poBZtJE(> zH;>aZ;#XcRt;jpxGrE4r=z+{-Z%6D)?$2~z)T0Njz44COC!k+&|6#N5H1Ml6{2{^p z2^#(kqAN0X8SIJ&o{0hetW0=zENQKGb2+2R&xGfGTfKJ(^i*qQXS#m{^vuvb2E7lK zrt=Rw)e7QXZ}TMFfl(FRPfs6^1>%KQeb}f|GBpi;#F5Z+qrW zP24}5`JT))@n%%p?wW5kHUa7Wo%uMGmeIIPGA$r#{>L;~knzdO)@ug@MLO3VoM%vOHu`Td= zG0?)>yEw0r|e;zwK?{{${kGL#(yMdeGy9o_D;3-X`u>aeqy$1@{*P_mcvT=VqzW zSS#)?4(@OAHgdluV^)JS{8A=82%dc!|4ZPRs_%arz~7sXO~{|kMs*B!DZH7@H81NcMr^JV&aIQhwXySS{kBUt zjebu4_CNO($ZVfvMOu2VXpOJNYOMfTx0V7;YY?oC6X{fFXrzIr%3cZqv~G(9I=v1< zpf~ANUcUe>K21+nKm}fk_6h|)oOP|&9mhIL-jlF>0PDOvX( zO${ZXsX07NO~h+xZ3p4soiFQjZP7sHUyo`XQm$Kh!>Jy9{I7JVL{owsOc~2M@KC3u zO-5(QOL>~ILhF0(1#*fg3;TQUQB8w{FIgEIYT*7f>S6tyxorEm@Gwrt(Z6plJ~VOx4Xm1X;he8#Uu2(p@tpUk zcoWqywcEpVRaM!}z8nv ztl03|o?G5JKOVdFhQIr(J7#=S$Gck1I7GGkVvwq(y2Rbpb8ordjV+%$<*LzR-Rym$ z(>1Ijv5#|NL)@vFz}7sJ-U|dl3En*flhmTux>A3Q%q@v(qIR1?)NqKt=am1Pa@K0KTP^Lv}doW zLv%acmpvmgXUn{1`8=1uT=s%-EahhL`!bUGEwgzq3x3PY&w}8$V>P#K4Su^BzhkWZ zd^)%v=l+7=cfvZ!S`+-vvT~SpYVg;#^3(yr?;Kjw?!oU|>r(cpE+gbuDGohIOJ{h&mm?uTyw>6ZdbhhH`b9bt7wXJMpU*cW&VO+~}>5`f8{( z63AQNVW@RAkmvIDm84Om)A$_1Ti1aj^S7$l!{YIqg*Ks``_wfFF+3uGJD73C8Qd zB$S#wh5J$DC)D@Xybk4;Nabo^M)O;8zlGnUz#&rYh5Uyg6LVGlosK-;zeJ>@M)Bsc z%%<*ajnV&|z>~(+2^wyp>^cWB59t`mo&HFxH@bZmb0hk)j@U?9wA1o`BNag9{{9pr z6SeeO>$>9ep}FSIMw<_2&oc$K%lN#Vf5*Cyf5kpy5AgXg|H^ude`Sqj4ZC8b|7AX3 z9wqDHV7yK)0Isb|^ASHaRWPnEz_xP62b<8AI z)+YXywT*wptm$$-e_>UKvi9+>EDw^EvXw3K;+Q+4R3lb{D1!0%e706?`8-e^WI4?I zIELRRFz%#OU)7h-Gu4@V4p0O5JWrj+=LJN5l)6YU<%9kwwOqZXX0Qn3BUZUHs-w2> zxlKWd`bGW1=N`3(&%J6dpZl=Epyu-PN&-I28+^X)yv^r3&TKyC zI`jDa*!h&tMGi7_RyynWOgbq(E8J7DRA;zn@Oh>SzwQ8fsmi^?y@byz-K+V$hJK=Q z3tVz{Z*Yh6d6Rn+pJQCg*L}o&#IoH-UCPldc9-+H!ljJdZ{5{={@{|A`y=y;mHU&s znGz8l%4Qz(B+Kp7umAa0^Q&&ZCykD-3{Wd8Q?)QzFk#b?p*_t}MR z7VXI#Yp(SHtD8QwzCnY(!<$@j>iMsH?s&aLS5c67STDpws< z7xpbbS{2=w$HK8wa>H9w=b{<+85e` z?2GJ+?Mv)S?ZNhC_T}~!_7M9@`zkiKA8KD?KVUy(KVow(uKfh3&pu;6XTM-iuqWCt z*^}*8?5Xx^_H_FVdxrhC{f_;fU2MRN&M82@?{w~R{^i`wxs3Os=l44gI1f4xq3e%0k2;Sz zk2_=0_$Qnvou{1nqT|l@&U#wq)6nPvjN@PAUWV2hEvi%Z>qfhex)Pl~U$jO|&;B<1 z+xY#pM`Yid?bV%>W5pk>v$M|5oPKo*vk#D8bth#%9)C9Hnw);wYqMwOo?EwG_GPuV z)UKD)IR0YpT=~ywQ@dXF**X1li*owct`~njx3u<%x|3>;h|i1{#}~vG$Cu{xkAEFs zn>#n|CGrx7CAuW~CHg1MO+1)*Jn?ky!rX<4PwMPUY^r7Fo?EMn;78fYQ3I&YOQ&>MYX=IRbIPZR@bclS=VM=%dactn_nYx+GMYl{BuilPpwl}r!egvWWisL(K@Ff|TuF*B*R&J?06)mV! zSi7CPms=X*$$lIuU6Xrm?Je*@+3S*ToO^0c|LmFaFS#4J3(dm6a4V&Q+=A5n96MT@e_0RRkb4JXDIF}O?0$bV*03R-LO(p&)2!3kL8U+c zt*mp1BDTig8ORR17xRA*EyG~me4PLGcndFMaf`5=hhjPBVR1j={|J2HkMUnV#Zx#E zKjCvM?-$lrSl(~=KM}jS0UvoI|7T!Fx026xZ0G>%XV$}=%eZ{@VW9`pI5pud+5`y??YeVZk?8o3Y{>tu0t`q=+@AJ;I`I zx5TQKS*2L^pRF>i`>$3x7Ji5IGgf}L^$S-1H*2T;Z~Na?1=fC$RjECfe>=mS;VLfv zi%Q_Xj8wIpG0qs3C01T#W91)KIau|_Rby=WGpd>Mob$YD?TmLOs&^^ys58@fUmfnua%M5y{DCu19Z4(jvFc7suvGPMzH(NmUe4FfH>$U@ z)>)@caW*&`)M?H}XS+Jx`NjEFor4F|M4jh0bDOEV+hihG57g(`HfcCS`b z#e3q!AG{~^n){afmYOE@!*4_V80eR(kNk!Bh95Ed?a*(`qi4_nkG>%=dwsk{R^sOZ z`GLQfU-jhL$H%n3@OSHHb$GUnRl9q^l4X6u?3P9BT(H>x+4|hCw3hf~Jl$%2<$rCh zU>v)|{}GR75i>hKBO0>A|AnWY^R$e+r}NGtc1Mz2mH@E~3MKctJX;22if4QMw^cVk zr3Ud_=)=F`bUHa@@O07=el4Rv`jP*sTEMBD3xQn9EQ#fOukiO$2kNMmRxZ0!b8DbAVr_F7&@8-(~n=+xgt3^wK`D@j;{-<=9R-#R-kboWWmf%+fZ&dQe z{NRlbfLYBOvpM*qgf~_q&2PZU1u+WheiEl;{v@&`17P zVEh@3Wne4=V;SwsN{UgeT=FLZVY5BB zQBJ0QH-MIRX*U~Kzeqjt-?4W3Ypi|L35%K-r@rJzEA)nLz zkJb6WUI;ZUtONbeEYayp7}KAKq(6YudHy$8m-^(rG^j~S(3j=p{|Yte95CHUtzHhc z4b;lr)Vku-TMIT-PzN zd|!w)rJPd!QY5nrf5+uSpMm}ya{AI5?#;9A@(-b`&$J%)pJZj?RHX1O7W;0j^)M{% zBVZUx&QqwV1?bL5to3D-!F0-?uJtpv;upUV?4u}$d!ekDviO(f`S(&Dw^JVfg3^1) z`9-K*Pr2Mjxx7fZ{0shPQ8tB0^e!Yi35ni-L`x~7>*45Gbth$27x_FRHV@w3 zLvubv${!--57C?t)e3(B(%z+O&^PFf4K>TiaVIlyKEQ%6;+`qdO}b54K`B!YDcuIp z|1&iI04+a2$9K@N20E5NM;S4eTp}zvrgao~O8G1d%4a+Jv=_T#?0Xs5 zHliQjpdTspqYzBr;3*FDha>xO*6^xNt-HK`S@&@$`on$)WPb+q4ng*Ht;JqBvTtpD z;cZ9u{j9IN9o7o3$|~{JA^UTYeGJ+^M)s#!DbGXp4axahWM2o_H$?UcWM2o_*N4jE zko`<#-w4?shwSS>VF9u~4W4tL@aPSfw;YdfULV0xT7X`6pPZPkDP0CA=65vBWP&lRtv?pV0!bg6q+OFV$#D{UiK`1=Q1p(7KegoK!;1 zTt)f@`;bKr8?D*?9&0W&@-win<(hVyQr*PcJAe|OsHybdspW^!cX-Q5x)-~j$Ku>i za6gB;5{WsHnwf1K4Hw^#R@0Vn!j?MLUu*wJ+CbXquXUdE*Scr&yb-Nf9#NYHL~RBwt-#2_b#h3UTkA$7^#3%Xf<$NB~2r}&h-aY9?`YNZZA@AQeP5qL@ew1 zjjaZxgZ+V4C+`oeLLT#=eqtZ)U)lHYSL-y=8Km<_7mzN3XV$b>gGtYE{UT`+_ul9I zStPMJlrSy&uNLjRwVY?)fO9p8QB`G=a{Pg+3E$1ogqD1_C3R(NfIY1gTq^QY{YkVa z>PEk@x`lKrX^h|4?(Yw@&m^5i8bCUmbPnlU(lGxg`&!aeAr12zVV^1QzOqxO}B)v+SMk@CHu)p9N8QJ(k^l0+v&*agY$+NeR?>15? zshso+DMhMe{@Z!}K<5(D^^8#8#Lg%1;*8|}t^6Lt@7wsk$NR&9Ugt?l{b~Ov=Nax( zR?Z8g@xVft^9tW@klq8X2$)&io5%Hse1Ae($nPaQ`+{d*^1YPr72N-tgqPy1BmGF) zK-vuKR?>D-it7sCD}mp|_in!T@ckR#d-?u1-@o(y2j744{TJVV^SzJnD!x6weSaW3 zt^VXHzHPo8zFod!e8>5&#a`9fq#RNmQaw@wQXZ)>sRgMOsSW7>(m|wlq(exDkvft( zk-Ct&l8$6PNO#iFq+?0Pkxn3;L^_$V{63_9q%+as*3{V5*0Hp9J@J%|_cu^`S5tde ztEO13u6!TsuePu8H&BaLQ;Szqi&xt_{FGh6yKFDkg0vZ6$3dm63iX{p#;@?(uiJ-AG6A?kV^l_>rVjum`7-P9w4E3p*mVqa52& zj=d0DQI4%B$3B!}AH*hZuW=o2`1(>vHOK zIrX}ndRSQ@}vYa|q zPF*Rdo=6=jciv=P`V7)c(k!k&Bz;0!LHe4slJp}fg>KX$Ws`D9bx8F{4M=&U#-zhY z9Z8)?UEx&`Pm(sG9ebs{tp2j|h=i|j7Q6Fe&&E5}`XYN=?aOk`uhYCv|2lWq*;j8% z{Xq>5%j@6BZhUQ%1Dd?qG~RS+vlCh^Y<70@S6ggqX}4NTJ z$|gnGq$rydWs{<8Qj|@KvPn@kDas~A*`z3&6lIg5Y*Lg>in2*jHYv&`McJe%n-pb} z!dpBKs+*A8ZKT^tcaZKR-9`F>1jktI6xKI|)lFetQ&_|l)-Z+jNnw3bSf3QuCx!J% zVSQ3qpA;4+CAET`z8d%s(zZQF+x8%B+k>=i59&IXqRyqLb1CXviaM8~&ZVexDe7E` zI+vo(rKoc$>RgICm!i(4sBNf+az3?@ncuo>wFeCFY#n@A%_H~YJ3 z+xF15?V(-SLmRS(wqXzL!XDa%JC?BX8m;vTf5 zJ)a#&-AG4~9w0qSnm{TheG3H%Qe#qcQVUWmQXA6Iqzj7U(N`A`ZO&8tex2X%={E5@XEE1H`28hm6~BKWRq%TkX%A^H>37nfq`yg3B;VhLC$Y_S zNHJ0`|2tZ{?`ZA5a|ig}y2R~h@xH@y*7I9YFI&N337nO{SqWT~P)}P?Pg_w>TTxG2 z!DR_tmcV5RT$aFP30#)IWeFUXz+nj-mcUsFT$R8{2^^F_c?p!4Kye8amq2j|6qi78 z2^5z=aS0TcKye8amq2j|6qm4T<|%#>E1bj%C$Yjw>m2m&T+(^;XU^yQ0`6Uee{eB# zWCxR;~$-9x&Ubf3Q&>$I6xB1tQeq?Jh0N+f9|lC%;@T8SjB zM3Pn_Nh^`0l}OS`Bxxm*v=T}CQ}S6v`i%5B=?n5$N?K0Z0{(5JQc^kT7gCB;>2IcW zNjk%^3pe45-R!TyGH%AZ-hiE7gLl1wmM7^v%k$^BexC0axE>D-v^W#Foo-X6 z@_QEd=`mtOH`7WbX{C}_)6KM0Nm{BTEmhK4&GR2f>%jRV*BkiW49r&2cGAy0OZiD! zvLr28l9ntuJN*qhXb3SS1=(iH238VU=i7 z1)5ZWCRLzG6=+ftO-iCkm1t5WnpBArQ5Ly|Ui zJ#FfG+SK)EMI{=ML?bHEh)OgfiAGeS5tV2}C0bC41|-pdBpSd>7{8LzucY)VDg8=H zzmn3gr1UE({Ypx|k`k_@gexiGN=mnq(ygF$D=6IxO1Fa2t)O%(DBTK5H%aLxDcvL^ zlyTxFwMiEd$GVuf&S26celOsAIT5vH#By#RrZb#$6KMqLX1@?g??TeMkn}Djy$eY% zLDEZ**e)ct3yJMQV!M#oE+n=Ki7i1|yO7orq_qoa?LtaRkkAq&v;+wiBB4SgRETtz zAeALZVF^-Lf)tj((JnaJ1xLH!Xcrvqf}>q$;eygGrgauLWG!?142QuH1|&e&u^c4z z&z>032<-eX*!f?u^S@x{iKtk$?fXgpFMDa&@n5jxzhK9Sh*-6eYB_fL7iT2D$M7vZ zxaatmUfg)@Nl)$-zTY6dY30zP%b`b?gY?UtdE5(obqo2O*|S>*4(Z)(;CnOAwvx7! z{+r%j3nB-tNNq?5kPafXBOOA@>I|SDAo|p(ARr7| zHjL06k^rJ|-~XIWNTN71=6!fyUfag4YRd|(yA$~n$m7T0BZ9h zFay*uwJY-$l2%Oq6~Jopuj9=(K-W}~zLk6l&PiZ9Pz}@oJAvqE5CG}0agrj!0S*yBm!&jL{QR%qWM z&a;E%tc%N87neg*6hluGBfa^O)-OYX^94OnX5Xi*Mcn@xXJpmT6vfaK#dZVF+Q{`y zoHuhW;fz+;mML9PY`@W-N;sj5`$FXlZQPHu(8v8bpAi(hfxwy2$%C{P6K)7J!P&sM zq@PC`x-;m4V(5Zm=z?OUr#sNQ^XWzD!2~^+p!ep}d-G}e1T8pQWjwizakHIqvyE|6!I-IH9F$X&GHOyrAD2^$GHOvqEz0P}a{92GJ}jpX z%i&A5(}(5s-8O1gM&HT&s-lm|>5Fpup`1RD`Bp_A$egR9?YGhH+i3G`w08waf0KF%EP&z#@jT+H>)iGM+S1@X0R-&VliR?tiA{sGnl z3CgJgcGJ3NBd0r$^ZCJgdm-`5h+jecDu8Ff3s+dmr}s9{YwPW6q`gHP86>=M1wFXl zen8q%U={z@0BZr6DdptbO8Pb+0nmoF8mI+!0^b4O13v-*elGAS<7i(O0@~4|U{co! zK(6Ty01g7^Q~2x(`0NV!>trXLPJ*bYQ{3OdHBsX528&S5oFEfcJtY zuV9}q^bn(=rfwZg((_f`7igkZaF(@lE%9~mW>I!*^km#aJNZL`T6!T#YgW;kRkUUm zt(l}XleA!xmP<0`W!*|L=BsJ7DqXK;@&7H-7jTv}N7kDST;Bwg0J5HJ4QhFdByW-A zEt0%Nm98DKR$R$7%Eas3LFkQBv$c%f$XSf#GRAKg>OC}Z4arDiSXwZJ;C;|6rL zRb1c2n6&7FGk~bBU2V-Y4w?{x1bSBff$Bn}8CajPGKV zGnT#~eJikyJPCkzVH{;MjV%ORXAS z7GtB7u_3EQDPx0`gEZ>P_{gS}%g{3SV!sPJerVkiT6HtyqLfzM%(y6JT$C~{ws=+0 zdlu-4*0nc4skBrHt+Sc2v6->4nXyqq>xisI6SXd()+KeduB6uJ4$%|$21L^Ib+CyVZ=%MVs9}BWHc>mNl}L?Bep0Iv zYE?q5DyhjPYEnW?N~lQ*HK{}v+>5Xe6jCwg75X%^lxXZmLKUF_<7t&Vt&;YsrhTeu zpK98tnzoTSQ%Rdt(7nHVZcSq3h)~gO#fi!@HjK~NzTs#^ME&jMWhu2D~NvuYym2nxo3b^2LgkMpUat*0Zg9&(1)CCwP5;M zFnz7-&odnJe=GB8D`S5v<9;i8_Mb{1QX1>zUde+<9qJ_x_0k5>LjQuaVV{zPeQAuR zux8#5{936(BkeCdOcEZZQZ=|DJxFP5lkhG{E0ThGDZ$6Y>m>v!4Qx_1u;0=v|4KUW z&$Xfrl7p01G|AUJ(%3c83Sb4Nb>r~Uaro&t{B&F;kLPf1;3(tp)^T|2ID4O4!CS{! zRbKOUpqDg&WxtL}4wb8n!)wRkwd3&Gad_=GymlP@UM5^+CR}AETxBL)Wu^fOq0>*I z(@&z)PomRLqSH^J(@)Yvad`7Mym=hnJPvOjH~W$-)^nV9bI)YpUSJA&?+4I@nyJ7v z;89>YzM$Km1Q@bGc-JTMb@31}=uOmUy_l$4M)UL=IbmEb_*^x#T3(0CmO8gImb zX2OAH!hvSmxb|+mjth+=2Z&qYLYI)f4EUJ;p8%f%Dal|wB^e}712-CH?Rw27$-f<_ z0T|tO7qA=n0ocRn@Brj%&H-sa7(H(~kO5=?IY1uJ2FM5gxg;@;+#!zKA?{L=#CT&4 zmUZ(rb`GYf%%o76%+#b%PR!OMvo$Hy3p?#kgLC~Ya5^vmI0twHcmj9_SPCoys@PAn zgY&LnC+2Axlo<6paNZ9%4&YvYAaJfoApoQj2C0M*sl+&73UEL0ATSk}20RK(2Y8m5 z0Xz*n3p@|Z1YSZya5eBS@EAZo`v&kfFdz6B_yqVA_!=k=c4DoT!COXM*voL~Kn9Qn zq;lpdt~|+1s%8d>Ca(#1&Kg?Jk&Be^ zryO}|MQ_TH(+}XErd)YaSM^cgqjWg)m2l=OS-n@n1+Rn)UI`bx5-xZpEA&dZ(3SQT z@<`5Fa>_a{yAo^3Sxe4Za>`m>OU_zy)`G_edWC4E3%$X>+3XEGFPO?&Fp;@B(cA*u z3fu-v0G0sDfaSpF!Bq1luo74WtO=$v*CsO0CNjS!+8O*`&3Rogk?}eaiOWP+2<#6W z2pkM_2DLv& znc$5e8lW2p9t!RcxE4$c#swKcHai+6Uq5y?wg?6Uli4}fLQ_t}Z|<#fCAezO?}HpogiS_4n7O|AsD$zy^Acsh)8zHZM} zq*-1tBuMpR>tCpZ$4JR0-|E!$pO2Yfe6Vp3Qm=+9j7=}-^-JY7q$BD5#h;WxDLO)t zqDfpvUEPnJz#cnIJ$-|(B{7wUNN%tZ=~*t)2uZEn8)iwY;ioO6YsoA4jmKQC4a-5Zm35?IX_QpG_LgihP?lNEO_GI&nr2l7EqEByIDf{ zrT(Yl_2JL^MRVeDkze-D-$k!JMp=7T-bQ)q`_E$q+UJ^}V`%T_s9!(yS$l(h->J{t zXPJ9%+~@nHuI}s28{PL9JIH_X3+}DE^8-0coxotMI!%A#|7C|^=L$|AL+oUL}0bJULVWwoQ6t9F#H zs2%02YDYOw?I>SUJIc7)QNFHrl=Ib&a)H`WE>t_p_tcK^eYK-pq;`~x)sFH5wWD03 zc9cuij&hmWQGTd)l*_TB-06L!wv%6~?c^Gkbjt!giMo7ziG zPGU<%Zo}?eiVVMULbE1 zx7P9YGP{heA&tx;1@LqE-;eF;lN}d8g+D2`sow*;rw2fL&JM$p? zX&bepc4jJkY8$ntwyXk=P?JaDSo86G@fh*xaIX3Iz<8Ya6L7Hkc*A&-_zXDNeEecO zMf_$ znNJA|%mPYVXciKG&%8(cee*u?MP@Pa56lO&)e^IWc35hb5?^MP5&zJ9NPM|jPFyUy zW4aQ>bR~-EN|dH6QJStqX}S_+=t`8KD^Z57L>amgW#~$jp({}iD-m*ZlVmSI0UkV% zr{l$AyO(RKO|{ovExmJ1t*Iq0_TIT>Co5NbJbVoELgMAaGx+&9&$IaYI3Jn&MfM{6 zZ(M9I=IU@e+{+ceALO~zUh1{P`^O04m)Xn6f4RLJIm}2q(o4e|$Q9gsrD_UB*-_-V z3Ok%^T@%~tni$nJu|U_vC~M-alz$s5V+-*eLjF7K9Y_!GAi`7bMAMLm7ZLH9Gs#XO z&tz85koXfJ=M>gZ%Nlw=Pk+EZ;5mGYJV+fLvJatGm};kbt?k3Cu=%X8k9bl0sD0Fn z*vF7!w82t+x>sNyw~u@6>=Vc|^6iuMNiWPQ{2b}e+vkzhV8Kp^1v}v^JBzm{V(&zO zosHb81MBiDgs<9HsmVM$&ueSrHqH}Yx35z}tlY)g2z#SU`&Z;zvTFaG8qP;%f(4RY zKxqr@Lek%}?@_}0sxw){mqgmx#da|%OY9O#TV|ILeq=wQ%#V?^ts&fDcM$Hfy9jsN-Go0_z6WIY*galrb@tQR8E1&|BTRE?ge@Fj zYIk9zKl!euYe_uar4w)ES`im%P`=A_nZ&b@3gx?OhvmA3&M;`vC8@?Bfk7B5D40U&JW+IiNsckPijb#NVscXSvy z@9*{}etWhh@Xo6Shnl$`V+_FfY(yJGa2>Hlm-SJg#KwTKAPHrN6+zExO3gPUKn3D zqMJJ3olm;>ZfXl=z1Zu7|C{0Dxx`&UIrt;s?eIrHDBhg11;2uK402(i8CxiRZK3$J zweXVQGr_X0p&Sq5pJ3S#zK;$k6wKOQ@n{HpyQ4`tmZLziX}V(5v_{yprD9XDuIq!Q zQLrg?a2zqP=;>g=0UQy7$G@_Uhf9Matg{-k=7-p}txy7)DT z`U8;mM*Jb@dd1(_IpjPS*>A)jYA< zV61^=C|E(Ten>HWNHKkyV)`t_^f55~I4`0&KB_oAZ2n*-vWHDDy}?7(U6dgBK8CNV zNyG)~$M9Np4{^c$F~$8M#r+Y*{UOEu5ykx>#r+Y*{UOEu5i<=bbwsg#MDcw@F?~dF zd_=K(1pimhQ0HfnTSxGO^&Ii%&GW=xFfS0Fi5xqEcdQqQzl1zHqBy?2;_s+p?x^DI zsN(F9;_R^E?2zK@u;T2H;_NVp5pPSFUcKFcxg7}x_OX4fc3gRoxO5$IcuZXWQ ztB9{QtBJ2MYlw@#mUPAL>5ARc6}zXIO$P0_;`lUEV$hN+rcX0vri{3Fa7i;2rh>Tm zaY-{+LJ}8mE@|dl^DS}l>C#dufGni|j8XtuN&&P{3Lrx%fHq12WGDsDMk#;{v)k+j zyPR#$2FD8p5K;;t3vLE435xsMD5ei7cF$7mo~L*{%U*4-2Ga<~6SZUQSTM2hJz*<+ zkFn$Jcv6J>3EP|P&BO(}w^zKLgMTnai(>JR;_r~+?{vlAd5XVdioYXvnw>`Zg2ls% z#iNSFBZ|e1V)1;%;t|E-Q9HxV0G~Z;pXDyW=tePmOU39d6{ELQjGm$GLc;Z*~D?-8XA;s}wyr!)o{x#Z` z2%Z7g5*Mr=R(zkM_}(bK&ry7D6yN74zBiWLZcrZOwj7FKi`_!WLILC{1(0vQMROCe zTiKW4+ihrYoK3JdBUdSdn5|-uMy}EaFY)W_Q}1#D!vr+3(oH zk*jn=%zn>aj$EZ4V)jS&bmS@x5wih%J93qhh{-ZaT?D@!5+9IY@ zMMUX|h*A;}r6D3pJw%jlh$zJnQCcCQ^g&4JgRs&EA*Bz(N*{!jJ_sv)5K{Uetn@)h z>4UJ+2O*^o!b%^6ls*W%L;1pb$Q_3ED&h`zU|81$Emp*JbzO-cfi^4Ry18z|g^~!n z9qa56<(iUlak?t7cy<9KC-mW*{3GM{K6Wxh~C%Kadh5pD=`ok#w zk)`y9QTiiG=?}v<5qIj#If(k4Ru4Ia?W<_>v6-}Fycay zM3o}RQ;HP-Qh5v#9&D z?M>bv)t~Bf-W;fyR2#5^3F_+rq#nm1pBN04bQykUZ}#r=?)Rp9&*M!w<;}P?bY2d0 z*MZP)y`jTSgX+2vKb2$g-g=k!05sDJ-dy}trs~=P8mS$$UpFKozd@Tk6v}HP{$_9W z?)DypvYP3=f)#8kZCkZ(27|yB(hNUi4nY_hl+?OWL6W z)MO7R$Ub;#7zPa|-gPJ7F?K4n+DqO%yuH0WqUZG^-1*H6M~u1F4Ik00@UqdPu5crp z8D2AXj2nGfv%-<%E*;^j5ja6>-pvs?`$HI}QX zu#LtA>-emp5{5J^&`>ne;`dTQDP6n=OV~=o3=Ksy>a(Ith<=(7ojjp@!?c%OlJ;hc zOEQz0$*i=j&RN5=?#}vi){?9>c-Zu^W7!vF-a*oL9n{#Wrnf9im>0o{^Kbk!zusF@e{k4S{ z3)wWw=YDNVn{Hd#44Y}QY_`p@xi-(Xwry<0=G(S5Y71=4wzKVR2iwthvW0d(yT3ia z9%v7;2irqzXM3nU%pPvL*sk^n+s$^jJ#0^Vq&>u1MEP1raj9JvV-jqJJii}ueev;JolQ5yVvn+{f2wf z{l)#4d&~XRz3tv{@4COazq|Qvfm`U_bML!FZn68oE%5`l)Gc!#y5;U8{9ymL`^0_f zK6Ax*!~Vj3=~lRvZk1c@zBVzp)?~S_OlyFM?bEoC!6bKdJ?ot99rc6{Y?Mg z`I&B*jW>92HD@lGA8mJL;%*r|^|Q?njHjchnDMjES=V@$HkpBKnSITjaf5!a);|ww`*%>s7edKi4AprL^zkE}cxb7_N6S{cw20)c3Yi`D`uJ) zO6tDndjg`L4p`vjivsuy_CtOe`mrAVkx0{y_xt!K`KOryNVTpsqs&$2YBSo5LAo{8 zTx+f~q>AKzAVJ3>K3mMmBByyK zAdh+$+0#tqOtZ{v^Rjux%rkG8znHho+vZ*KcVtfQA!}NKTxmJlpHI;Ge2)BRCGw%Q z<{xGQlAsc#J{3rKzBSvBy3P3o|j4-GGKAx7xa3k~Tv zH%dRNQTinf>1JM|bn(4kSB`zEQF`}A>CZGuk2a*c7#Q4#KbuPlDXbmlb5R}PvETYTz*#-PhvVsqnY89Vz(+A~%`x^$I}Ts;laczogLGvF ze0xv$-D})Lu)|{ak5D)i3mq6bBGfC?H#9mlJ+v_NOAtb0jbN z5XwbEBIW*pa4wn?DK}NdO`K;VwUjdCNe}9^rnNkuv?B96&52f%($I}i+8u;*MMFYq z7F@-fxvBh{?WRc@-lnD0x+~_t^va`p<*#~0YaqHU?wBs=P*53+peVfif$kPkibMxW z{m={Z)F&j5K@noJ^`i(E!(l4|*x zoaeZgG^MVMtdv`XMo?-sORqF)5wwF+Hrg7lo=P|eEs>OcGGSe*X1iXM5%S7U#>5q* z6`3pLx{+@n%(0U9WjBFvE?POcL)u72n8whYlNXS&_MejK9@xhlkL5~{xmNO`b(319 z6Ta-wv+~Aa!c@686PvA1cxZ2$%*lqa^RVP_k4T#NOOt+hORqepSKe;u2Q;E`$K#UT zWbE8ZN|C`=Fz$c4GGs-e#A1x;DIkDAErEHct=vys(HO^zXa*-a*#i!@Ja zlIjiSD_7ZV(9n8T$}O^TWww)9+N4F$DNEUZ)T{jo=b&4ZvilO&kDY40I!9A@W3x;C z%ey1HuaAAVH}<{88jVkbG@fVNAn8WN%^VjceA!JToZF;-4kx7u38&Px8{r(Jnv$~z zVUv2hE~FG81(lrL3FjdBl$<>Yo8~-@lp=R5;cVB3aE?2k@MZTK!lpTUlTw5%RC1n3 zI0sp%QcFJ9d zEKMkh!;s4T5lNkBBD*5Tnv8_)K8|is822L;dmOn|5ARcsqiN$5-zJ=-U@3#9XXV~h z!}AxQ*H$_kfL_WdF%tJO(x~tZFh^nXSHzf-`)1gYzZ7FMTR8QlWSn?vgPe zvQo(-D-qxOAvQ~64Y_1K)aQ~hH&}DYh?1B*=|#?a-@t#2e?G0!IPDNkd#6d7w6#xr z*5@-)e}A)I(kO+s#4q*BNHMe=UtX$vjsZtxpkF-994h)n)5#Q?{mlOUJaeEqh+G*+ z6FbvyN7A|}DsTW2NTK-}O2}Z3%)#amBXzS-i3803jjoRL!lsYuYK}17O%HRN>1|GE zbTyxm(5_B45Jl43L0d8GziJL}*ST@-dUu1n(T#6U7RxBtg2zC@yj9sz!-g`S&#fH5% z1bZ)tH8GmRH0AdG&+OhEkmU3I{m(r2Zk>7Oo%em`op=^Yfs z3?E^MC;h;W1HYd*EGBWvy!bFeDu2THVZvpD+NZr7GQXE=-QP)Z{um+WKDkxqH0x2@ zIbV$CJB}qBhU3(cKdXN5o<2^2%p4=W7?mcDCDf9vH#re=_!WH5CEg^8NY?vBd39_U z(cxSWhtd$-A<_y79MLiw6|zZxUX86PLY@;ROMBus0T=yv+0ELuYepInVlnH8LP&r8 z3Py~CuI2Z{+L8$;M#6+NwA=cjzoLAOOtPG{CUeEDq_dbnhD+~Ay!aD|qut49Hk+ie zmBdeoA*IF1q!pb`>av!kDt$-h3zdj3o=*Z~U?9*3XasBnegN74gMb*ihfJVzNnOzg z*W$@yu`EduHjqyGwq&SiK{;>8VW}FKBz;2;i?e}LoF|d_(spu~`H@@V0Mbly#`Oqt zSoag|?EwanapDJ+j*&dcLGd_=6fctMQbV#q{7A~^L&!JcD-t1IA;rYYq$~ZAY!re? z6;L8{B5i~bgt8W7fY^fc1CJ}kGNh+CjKqolq$}G(>Whgu?nhS9t7I{~WmzWts2=ao z`;aAK3|S>6ldkG}qevXvhjSMa!xj)9+*>9*AVE3@QeVg=RfOxr2-<~hB8}-eB7-_g zW669Rr-|LjXmJ7QAzg;dFOm?NLDq`*NPl4{nX8K-gN2!7wXm5ai#<(*D@q(s)=HB|F?tDo*#+{fO}v;JDK4#moJWw= z`Y|L<-;ea9*<`D*=Y*J-gYE#02Mq;{W_of_xI>onwuytt5osX_k@}EP zQYdLGjv*tUBgaAOONU9MG>0TZhmypJBmw%cPk2v4z;8D(3bOo2THtt%xR}gj{Yg4> zs;ck-@;^($)a%Xg&M-X7b+j2-DW#C1(7`dfWn_l9luQv@TC#O5Nloc9sUbBdQyhkp zFozA~s4fBLo4}Vu_DNSrGrbdZ;0);s9nFx|kaD;lA^k#HO9#n*sUz8?k0t5)nIv6T z)$)gK4>>BnCNj#Kt#3}U#az-IeDy|qwhO(`-X)~EE&%%L0^6EEHo$Dcb5d}a`Dbc z%O_rzz69B!TS8Wg%`7kVLFA_N8`&aWCuPN&q_|#3a&Vc~VCE6PRzkiQ zfpWZlsVF%Bf3s5TgFZ|}pRFNBgs-4)$$s%WvOzbBbdZ`s{;uR8WWL6s9NDMKLYseu zt(+pGbia}SsWvGkwI#d6{$wfW7M&9b6c1beP|K)EHb@&Gd*}n#UvVY;5XWp%TxbdV zSWH^!>XX*GXOLS55+((a%3@>m0V9d}4AM}SNW%12$#LB(_<~=^bg>v2DQzQuQc2PX zeL0V%lU|}HAr9r?eXW!of&X@bzs1M|c@tIz#~TPC*#JJQA*sqC)gWtiA!HnEH-yHK zK0rO%o0JEQV*N;8Hjp%C9Y}fTNh9$G_<<#4fv}!zk^IOO@|uL}Gf6kr8$PKw=`AcF z_23KY2t6T}1teM*44s%ojyUur2VuiibR{6;1kzC&M*@Vmu!EB5yKl)L$sh8|fxkFH zx^dZxpU7azoh;UsA$@g^NhWlNpX0az};4lK?hTbv*yv3-# z-iI_1gJ5S)Bm%a)6=Tgv`i6{w-PIRclPd6m^>u4Cz#rAurH~jd4~NPm(jgrF;|r-N zjwZcmwq-V5MCJ%<$zov~{K*f%82C*`5-*Ij%tsr$03P(n#k+R_LPDXGLiqu7v?3 zNH1M;&>^I~ScxP;560MLdUv|%miE#Qnj9^o-bK_C|4@rVs-EP{AMZ4@E9)Da$5!WU)&%5FTj7O{*n7gE9gVZJNU>gpbvq|cHhYD zx*)h;EC}uw3)aK^Z$a36ae=ycovL5vzS#!VM_V?a?$y9`@KOX=Tfk?}=YHD;l|Syk zISTT}eYg$WzZL|SiwybW^9!$VNwU; z%=%k4s&<7rjcOn0C)+%R>+C=0FI-2|e#Kmc`wjJ&$FGQ4d3>VAs)$F`IGo!ykM%LX zK;KtEUD-TVRc#(rja9i#B2MNy3cIpTwSd|2m9s!stg{GJ-K!aiV!i@9Io^Clj%@@H(i{7-7rZFRnh zd8n`ou|DjZ$32`Ub-rcuQ&wJWe5mn0VsvZV>FCg$bajltyygt}L(FXRV`?3k3vhYx z_?*Yo{P>^#&t^k5zoy29n8WaSjO{&p*^n8R1(%&l`Fx7|5^F4Mr-kY#{^PvVKhFQ<*Z-gQxz79_ejM^>jQg%Ox%`tt zmgg`YEeAbwGo@mdwanYHQ`~RK6MI?eVy+de-b3uBjvL$` zt78S`D2V0NIG+3e1{eppZ|8m+@wz&O;aDBtcx;VvfX@N=b=#Q2<6?W+ct$NBW0P7Y z>QKiO9$WLW`IyGb=W_ubU-SF?8tPEvU_PetIGe}n1$-Cp3)snQOm8S6&0I$(5dkP; zf+Xp6Ob|qg2~3piAI5MfI_U6`B%O{)I!QfI&m8d0L?()O8y|c#oH}U7f+Xri++qUW zlJpW&&m}z`76jZxoua7M>qQ5YDXA~<2N^1GU^+pEt9S(;&X6F0VSG?LxZw9xhQKKP zLt$$DxTZ%;k4yfHh&;JAPx`QO50swF7 z@t#&UXH(>N^g2hqBY&PVqUXHuTfB7jY23t1s9TU6B}V}gWDI##L8nKX(P}ha5=0$! zgtQ@Vy;_z|hedc--9L`U_TfAI#PAYO>IXx?c$-Xb(m;BVne z`|!v4b=x_=S>U6-Vm}wTtPB1t@NoWh{*L<5Lj+(0b)w%@Ey45F=LD#YrixnWc)<3E z_5>sg{&^!rRRDG-G(|%N`B&^mT;5!CTAR4AZRhq!YzJKSTvB>23RNaL2F>H`=ei9M z@h{C@__L@_l@V@Rt;*VX-ospk;1f#4*@m?+ru7=HK_@yofub#&9wNMk0l@Bffl!b20 zXN*6kHk980O9JPgOTa2b-e$a~>N%$n6>Ng@4o$L_uC@fVtBQv-FX8TkqZGd3_f(2Z z7-n>$4r@r{JxRst#~>Ur;zGugbz~RWO-_;vh;UiR6mAN4#j;|k z*hFk6V!c8fBTf}F#e3ol@pp+z2Fb&h`quZI;`@v5Z@zz*X=5y6bTfJxeU1LcU}F_y zn6b98uCcLkgmHp#lW~V}mvNu*sPVX;^ z*0!#rd(qY}teCZ}7tq%GXe*qXwXKuU);YpLVWY55I4WEbve8x|28mU~reb@sub3!~ z6{m|g#QS27_y;=A&6oJr^G)?#=liSgXS9_V4Mq>6kI`r>i?&uX*0Q&Cqj8IIC)#?% zm{F*$-K=eOE6~<{Xe&iqDcYKcwxY)^e^_$qCd>zxSx#f)B64E%!Q7KFUo^J>VeGOya^?tj(#RreR&UUVVkMW+`XUvzlU;^oK} z-@c50QS*i4bM(yfhrpfZna{63pZa{v^U=@ao-KUd`+4}Y1y6TAoBC|Zv+>W8pCvr& z_^j@;T958{taW;(+sJm(y{cw&mhwL+iR7YPSmC2s`?P~=dVvoeL`M`jEp$lx@KZd& z<+Vn;MbmMNMLre;GzTJq901uYtPcI_!~Xi$C0t-{HT>7T|JOCvinV5KSXr< zGuDlDXFXU?){8|GG7GIrV|$s2?PD_A&km5;>>x{LhuC3ugdJtaSO%Fx=Cb4L z1Ut!2vD54fJ4@z~`Rp7!&o00VTw<5W0%ijJpX@L8H~Yfw zvU}_yd&I3z_>SxqItrbH&cuYwaCe~xvdOa0ONb`>h2BCRazN-y4hsE9x)3AuCx?Uq zSSLOr#0mq2LBe1mPKXzV2npn@FjN>u&IyU+Jbc$ha*13fSIAXiIJriy!vl>W*}_qK%__<`ILCJB?tePIfDKpv7u!c<`bc`Qs5rVBIR$7aF0 zXOk!7DQtW$c?YlgBl$^~M?R3B$wy&6JjXBOSMr;%fP97zSVVpo7Lz}OC4ww0rBql( znXp_~A*>WuQGtq75>^ZQg*8-1_0&P^E*uaJQg7-*i_zjjx^M{I@-X~uIk7jqWH(x# zR-hGW2(2Xc5PQ;fNiOl&T;fLE?6_7bCMH5w+i6kE~iG@RC;5ws?)C1eQ4 z#nxgQ;e>Ef94HPF+luXIZCVHZr~|D_zoGTSuCzXFAV!K&!YSdjaE5+M8;S$OSlWm- zhR^CJekXPmW5oWniEv%G1`mEi$bx6PNt@DUVkfb)@J4t`o6{D;JK?=JSd61Bg&)Ou z;V0n(9Z0eIEDoU)#Ab8~!OA?gA2i_Kupb28_75ME_&8;Q3ywMXm}Laup9p_`od(tz zbUm;O=nL%Dz?y*W0Zsx5z$xH7ifsjY!HS8X7l9kN{vBwR2G$IeuLRx2^=_c|fcwA? zzysh3uJ;Cg3OoZQ1J8k1xZWT1wG~rA-vA$RJsyvu{0VTsfORJF5}GYde2G!X9JgEesfr24%ocxDTZ zt7;%=pw)l~T;B^?Qv;tH(ON(QTt5i>sLUd0mzR*rrf8}7#u$a?GFsVG0LT}0Q#Ce2c4jSECQXYfh-2)+p27M#e4Yxj78LDd&>6B0^fwJyA5>LZpt!yj$Ix$eYPTKK zQ3Cbo!%#~hHiFiiu23D=P_$V^U(j_L z2=oUlqZ;~wZqz{1K{o-Lff#_x1t5n&xm-8~0NVh_2ELx~z7#mW&=IUe5#b1~9|g4` z0msKQkh7rZBLR9U30&T9F8P3b=rB&VydGVmRm}0DXy3g9ulEOkf0%4cx?a zehyvX;Qm7d;o$s<=vxkqHAG|@xL*+k4H$ojh=(}{$`U2O0naCcLI=bmxPA-NS%Z)Y z3SY><+btH=fDwy`&=C&qvqXaijABG|)4+Y0=ni<`-ASOH8n|B*y)5Qul7>&V=x;JPLT0in45477>{jG9EO3RK7S zcc9@KFoqJb22c~%KY-TKfH4(&r+{y8{S#v6pr=muaT z&=S}LY{&KLps;tW)T?$Z?!xhIpf#`u*o*5YKuy3tU?3m^T&`^aE~A4er#2{;%OQaG zEtds&q;)}$S(S<@)$QgTSACs6pWGKLVcNdH()$;05a9I-3Lh zj_bET{{a33IstzHf8+Wa&@aGOJkR?g4>05UJ5U9%0E3YgCmQ&8E>R6w)g=-G40yK{ zsGA1tCLxkL;DK^}BE%Q(`r;h{ed1dWfc%7ApsBzV9Ipjk2mFHLpFw{Ge#7x*(9Zz) z6dMpyri}*P_eKH~LA~8TQNIy&^Z3AsI*pzV2%yEGMarv|YZDCEL{IG7lrvmA6P=n>#3j;DcU09+4eU{k52fzQ?b&~^@* z2I{SW&IUzWIp`eFAPofN`Bm1y<0e1I(XS_-nMa5}`jmq%0@Z0C;KScl1BGq-L*D-A zW4Z*iga*0{6f)+Z%Rwt@pesP3TO4#HXtV~p3bY>(gX^maDGQt6pwNe(p)Wsk9@Zfg zh7EAg4TOBf^{*n1AxFicfkKX!JOFx2cbZ5@E0bgU$bFQ~i8@RzQ%sFZ?{gG-^{ix~ zAx2}9fsIWxx{`^7m}mvRN+u!1*wiGHZTekgK$LN&ab}BtGmTA+vAz45#Ih>IjhLBH zp+*zw7&#E%og)2A4Wdfg4`ZUDYF9FeycoQJr)Nf?fI-#*K-Ej3=1L|hq?OSm1htRs z5NS$nT+-B_aa2h^KVuWqsrHekQ;kddMMYII>Fhj$*Kq@jY24~VOu7n{Ob%KJ9V1N* zN}5R2%$dBrj*$U=rqr1;OU^_KZ0Dy6pC6{=pBEYwyZ{L_IZRXAqbQI7zmohyfM0+g zIE-ps$>bQ)s$*mmu;>RCokC2(O)8m+gqX^KIEU;DrqhixJ4PO9fbgd8VFxn3Q{)j6 zEWAyODrpJ;v&QL%4Un7l8gHdbh^fK!!$#6Ia$h;pxa1L1PI%iG*PSbxNJS#kBCH~n zohiN#IoGaI-q)QtR3wLJd{mQarEz$OjUUjyrg|idif&ayJrXDNYg=1AlA6`lUOA+j zKe~JE0RD#F{;orZhSkgZ@N15>LIX<}_>q(Sxgxgmi0tB`2Rm9X$R;;BTyF11N64xC zE76UPlwC{XT0&_$l2jnEq$`Og-;;HuEg6DY(7n#9i>i z4y@Y56XT~rG7(Q*G2*2=MGTlvy6Z*N)#5dLqV4~dlVh|FO=tC3Cd(Dvg$BZKVHq+8 zmxQ;1MeHn25^qcGrG?V(x<0zOdQbfX{Ve@b{U!ZJhmsDX9RnQuI^J+HI>kGgoZb{^ zS7dIH9Yvlv`#Lvtp67hcCCFu{%k83}MOPQS=&ExKcb(;W+aMb17W!~KItLywc5I?sBZGdwdr-+6WO+UE7eySMi_AHgTy=TtFWu^Po@6}w&B zr+C}qvx{#ko>QW1iJm2nlq_3vM#&#bIhER5DyQ_+(q>;r-yq*RzCV_!R3@%WhB3t0 z!noRa+4#XP#IK9rI=@|h7yO?4eev(*e>K1%U~<6yzHkbyN3XTny zgFlvQT5eCbREh{Bfnp^2=r7xB1R31`! zU**ioKUV%68WP$!^oP*3p}CCFV_U^`jomuX zY2f@p!k}S;9uBTEct@OP+?;r)_$@7xalYdSTQ);DTkMkV2Y}|u!KaI1D zuQ|Te_>tq6j^8-Jc|z=jywqtEohR;{xOdW+NzW!bPo6w^&*XDcf~Jg|vTv&Y)X`H< zPIH*ncv}Byo2UCsA3S~k^gm}*nlWd_wHa?_mY5kmbMnkPvx?4&p0y*5rS(p`miEW& z>a+XKK0JrcsX8Zi&i*;i=T@D&cJAwWE#_^TcW3^0^AFF@Tu^MmrG?cOE?bzhD0orq zq8*F<7tdZIEUC1l&yq(=U6yuTnzr=DvTv3xS@v~#aDoAviQo#m3vp|R;8}` zx;kR@)YUiEc&%x_X5pHfYfG&ix^~>!E9>g5JF~vj`kw3GY-qV*`$or&i#M*{`1_`B zH_h90b924TYqyXsNn3@jbG8L;TfFVB?X9+N+iuz+?TFivwX^EZ9lLb9hVDAO+kf|r z-TU`A?5VzI)}EVtUhny`*LkmTZ?(NG_V(C&VsEaguj%SOzkTKRRoz!>U*mnP_wmmW zIar=6|GqzB|EB%N_TSw9?f^MZ>_C+Rbq_Q@(Cfgc1G5ioK9F(X)`9m2*}>ums~l{0 zu;;;%2WKDLbnw{0n+M;g)AVBLq3KQ2d!&y{pPjxueRFz7`mOZ$hu9&{LuC)uJ=E?{ z|3l*rEjqOG(3wLI5B+l3;c%J55r^9zjyaric+TNj+{J_edOhlFGmeW{f|~Z z+Vp6bqXUnQJeqcN_0hdYPanO1^!>4J$8wK-&2Y&G%&48wI-_SsV#W^{b28Rt9Ll(y z@jTo~ZyPb?bIp*Y)ldDedK6&osqm#d$ayaFA z%6KZ|RLxT@Pjx#r;MDL_6Hd)Kwc*sBQ|C`TKK1iya@zfL;OU6dEl>A2op}28nTBVg z&Lp0hc4qY%)0vBBo}T&rtn=A`v$f8)KilW*n6vZF9z6T-?5neXo^w1`=3Mx>*5~@2 zOFWlyZsEBd=T4owckaV^;e3hn)y}s#AANq<`5EWeoj-j3#`)Lh%@@2bgj{HNq0@y^ z7j9m7cj4b^=jhPdvc&uAaU6^y=%YKVSXhs&Y+tt>`uHYrfZl zu2sHP<66CIO|P}R*8kf0Ym2Y#x_0*3gKNKC`+8ltUgWyR^^(^sUvF^zyX*a~kGekR z`sPfJ%#xX5nRPN7Wp>Ss%N&uJk~ujuEpub$&dmLp$1=}mUd_Cf`6%;c=8u`b-H>j$ z-0->)dn55i(v4X+Hr&{8L%wn4#?2e=ZdkIsvnpjZ&gzymJZo0ghO8r5r?W0+-N|~B z^)XwQT{^pbc6fH{?7rD!v*%|o&t9K>Bs)9%N%p(!-*3{JE;ozc^t)O9X4RX`Z}z%5 z;O3Z{vuu z4!&LMcI(?cZztZKcze<9Ew@kH&c2;{`;R;BcPihheW&T2ws*ST>3?U~o$+_(-Pv&G z=$)H)-rr?+OWdt?x8>bFcgNjbc6aC96L+)k=HAV_=Xo#qUhR9G?8=bf=C7mpRXDbMFW zfBd52i)k-jzxeruCC4epJ*PyDe@=y*YB{xYTIcl48JUxovneMd=XTCdFU6OoURHnE z`enbDDK8hj-1YMC%X2TYUOs;L_T}eXlIxsXEH^aw+uSy}QMoa>LvzRF&d6PyyFT}D z?v30>xo>iR%eA~J^2+B`r<~Uy?*xk_t)k( z(i@jIUT;F)RDVw2X{_iTk ztBoj5;=kn+$|2Gdh>kd7eZ!R`$j$~gH}_g5XM>4k@o$~_?WlgcWDyf-5@}+gCHJw? z^`g`hf)nCWFG@zb5O2zud2^!Ih=WQ@PLE}0?ShMTff-CiA6KdB=jY}pxKXUm3w~Ji z@e|6K>#}n-l%JKO)H#<4ib9#$ESbJ+lJw?rZ1h(*mSpb9dQN9O2_wrbf6;m>|1PAC ztSjouIoEN{|AS9w@afF?)JaYiBmM4|{2XPXStc4imOfsRUih z%#hZVDzy%wi^Y;(miUK;`ukO?gc|3Hb?7rpJw?dNiG?GNg)%zh^?l&FBq>AYYK*G9*#v3;qXyfFDr#`8 zin;{ul;BM$?aa{B6jSNYVlolz%@MOqrPUt8cabbpkxz!pH22(NhiZ8fF4+MAwgkv`X5GHVhc|kf}xQ;VF_KR|%P2V=yV$e}}N6WYC+m6<0 z*RS2HKRa5Kk8S!rrgb_h=jjTiKV8v-9*L&w6cy1*vmUtiCp|(a8E&Z}n02!;pGuO2 zkVF*${*4Rk~U9c@i7Borg=7(J|V@W+Wimjm;6`!zJPdQfmsPi9y_TuUzi&K)O zjgDU&yXkV#6USX%o?o?Z8Eh@y@}o3aIu9!=L4rtiQj-iKrtnZxgx2yxCKZVG1@caZ zl{jTVII=-3*gT*7vp|EXGd|qh$g9LE%1Xv%|!f%*$+E+ zPH&dFbK6XPkEAitEqaVe>X&!xhaKBzHpAC+sb|udJ}sh0j_Ugs8kswHgsLSkHAs@brnOQ9~0O zUDTyr`tn)3wydM`x+SDuoHxGRjp13J$F1JcZD(U;VA0Cw4pf~sslj(~UHgm>N(|iG zVY$3MW!|h5rSig~f9-s`pl#$GdC>7u=5O0HqxW3{)-9Q|Rty=trC;SCE!z%6dXD1v zZVgEeJdFg6F^N_`qq-OO@UR@Wu2O$#xN?J*TY_iPlnN|f7fsxWL3Z%)R4odxxWcu0 zRCjle@F~iem#4eCk3NX8w8Z-gGZq}-?e5N4{N0JA`)rMl z-X2|g{M|(M&0}StvZrmErZk97dv$|Oq@hjPv{Cjb7nyyDi%F)# zlvxvEhAR*2)2d4LH@ucsWPw-}dGsQ%JQT*qH8>2NT?b5p>iE3;+ydO-_T0kQD0)n3 zGDc}jP$Q*HR~pfR6bQ7J89*( zEWA^dwPyx)5E_qnSg1_x^`cRzju{j``i!-Y!L#!*p4G()tpmme)gS61554N>3e*(A zEtU^d^DDKlT)BOv<^ff!HpS>fiLYf6d#{d%9(cd7W2sWrCxC{{if7Sr<8+mNZ`29ulB@|;k)lg;u3oCw_VoD8y?y$KlfC|60g>bU#;2+PHbcCboV3y3LgJQm!edX)SCIk!TpL ztK3lT>Aq0%<+GCWxAGTdfAc<+!Em~C5OE6BkB1-<_>pYP<%b~1^`jADs4UpIlCe7) z7ZGa&xJltxjuYEEFk}0=uQSuFz5j z&Jzuldr{g$4#n4jcG&gEhMElU5BYo+F_cmt#K@6<(Ypf0McGd)q?ADpwBJMjVm$nh z2C0K4h8Ek9$$ex1U6?XpMTa$u()K3}yOMk%cgl$AX`iqC@L+V(nPn??A4^XXino~1 zF>TG}X+w|ozn?L1Ur5lA)ML4^$5LkPUAuI_3TS8}^h_)0vlBc-3$5P^MF^_9P@C*1 zTAR%5-15kk@;FF#&=uiLa#0`RjqnOkO&#jy=cX58U%pH-cVrtTnTN0v;q*?7GLI%U z7V`4S3JtnL`r9y4d4r46q`zFkw+xEXSfLO&wdscoPF%QsP(wl8(^D7Dm_Af?bK!C| zxfo>6d=~WvxrF^pF0DQcSK{G^cnjL%u8r8iVct9t(MBHq!)ENhd2ZOq)#u;m-Z=4- z+i4l{;2<3%-XwtZk%hpr zoEJo_K2}>-Ey&guSG2{Iw*@Xg-(ATLM2)ZE_ap~?B>UJ|H@O;QU;7zE>=j@n0#|t6 z1dOF5JlsIa3h)LPNVT>It%@pNmD`58M~9z!Iq1TKY~>5>N1HtwcHZyos&nND-IPD?&dHrXLq8?aX>_+}UNJ4U|A|jex9`g0){C__(FwhyBh~)HGpK#Un<5qJ z7GiY?lm>7gEIOGNjAMiH&I!k*!Cw|jE&F3)L-Vv~S7PTaW!1b1$Be2(N^Na+iW z8JLjB`Joy#M~%FAXwH?#&C5Xi0wTf!Nm;~U)`%66*oX!v5>igYCS3gC(Pzb^Z1u+W zLWvrb?MWxg9a%jmeJ|V4b3kg&)OkNmf)2foQ${HxVnu2^J9k)yJ2wPm7rK-&r^TyZp* z>DAGv&>+thFF(|PZBsAIbG@?I;k@%g9X40FJ)S1_rehKFG5qFngK!Tky8^f=OW-w3 z0_K&WGO?SM2_8eVpFvzaU;%`Cc_)O19Ktt)%wGp_epARB;WGA~=tvcfQFV^N87*Mc zlAg~bF`O3Sl5!qtxX{R4OK6j~pDm=J$;#B;%9Ipv*~#*k& z54Y{Q*k{JjX%&NmDpd*!u1FV+ns>HC?|S3r&KSAr{N-J7$H(_NsK~adJNO=|)X}|` z(nt-`kfg|gjT-ZY!;Tw(?~0+OFfCrPjVbx_QLfASFh0P@29;pk<)&IYe{PK_OPE0} z&Fqu3im=`MGc>in{R~Ylinu5!m`^bx>M^v>N6>Ktj&R3vIDRMMF7gu}ZV7?R!`(eF zteWUf`4|x4!A+d$9!h<759>YFGwwv%On2AOC*#|UXcOktu1oTAM-OF-vi_E``&_Zr z^qWWB<+^2RU5ovqEZgtw{Dh|dZlQg4d_7jAYs({%l^S(R*w~uUgl-a| zD}HOfFe3GrOuCpZzlDi_gEBEQB%pmz*bBOqmc;(v-9O$@`YW_wyoHHX_bHdT)?!s% zd;t%v$2i?oQ-SU54v)KOFw&#|C(%TDS=uGRvARqmXraK$`$$wU@B zk_D&cePPX&$8?zzi;PfvMupt)Dw>^#Ebk zl(Z?_ekWo4ISD%}MH^-ig*ti15!tFx!i`OpimKX0JrPaZ!*LpGY9 z(c#K{<*S^h+&*#yJO|k z%gd9A0bH8IExbAjK1`SHr=`}eQC=KXK2Xos)LZ%axn$a?WSyCMR=K%JYWCF+zjhH* zzhZAWmmTM-a1e=Y^MRaQ1h(uXv5p;e5KPwvKf}v!=xS6Y`8zM9f!eet6 z!8LD`FeUE~ww)a{?}2g-G(WO&!Sj=j@HndW|EFD8O(BI(bpOFZ!I1-%Vt&f26&{+S zl7*>xzq74un>mtKcLi;p4}G}>eeoyV;bKA^(YyKmsm=wtIH7HBVdBS>yi>`^LW30aUQ@|r9>%aCiSk{n zv@Plv5c#VG7s}Dus#MDgqivIu@hIMEhPm1y9J&(3$!acLd$~}Ath~K}HmzkxXFkXH4+T@R2ez!ksVTu)AB?^l}Fu=z{att;j~!NW(v&772X-^zgi z4kS|UKdQFXRzRPtR4vQ3H;h(iH}Vdq#KKIhy{rqvVNv`=LsiO!1XW1nHnUY9b3mBs zU~7*(w@KLr2nDrcT^mG!_dbA5=zcQnqP@%A(!Yn4~R?(zHPX6eL z#S+oJk1){w@J-B+Sg=!17uw`nGg zo0RuA9kVjy+&*P9>uKH~nR2eC-7Rlk?7}XZ(pKz%hlqq0$3gbNq_6B)uDsoP3Z-yL z!;DLFPsB>|r5w4aqnd_9cwHdNh!vguT!ZYdK8cksxoknMs|N)JW8R4F_}79CAFyn> zDdE!&rEcsZ>T!4etMMt8yTu5CZV`C}B`VDrIqet|lvgQ&B#TPd3$JZJP=(VWknYlJ&h+L$& zBr8S5XsOwkBT}=0D02hkwGm~yk-D;E&9w87xsXFFBs}{tQna8T-1zh&Fc^cIr?;_2 zxSP0;u1{u3*T z9isS62FiCNjkUfnRHRLt3#hUz64jj`8zI?MPj-~_YLyWf=dqR_?&tMUnDq6n5S@2a zcp4kqLwr9l618nqF3}IVRM?Kcx|D?EXh9<>n5YB$7$|wnOF!Jasif1Ex)OhT_SYl4 zr=*Hy68^#fkI%5$fi?Jowt_?prjJ!dvgnbL>F-;3nxNKJYOTnu;Ax5_wSwI9X-UCw z8OoDCIM=eT?&g`#@lW=-$~t4SXpH%}igHSHImQLf7g{*Gt{QZdDKeGu5-IDl7 zx)MH?|HR!DvhF8)Xlq^`T9o3TsgN2=+L~`mSE#bE_lxALnzWNjc#8_eUH_bUd%_t9 z>-kgzGjDgdU^PjrcjNgUQFwklXM~hEdf4+*&yuz*9lox7*W5*0nY&rJw{4M*m{;#p z9w}diyYGg^E5)w8N3Zup-(5rBl_srZLxHsjHRony+7`zYFe_Pb;EO`Cr-A1!dG0NL zKt*7VEI=3^H5hgUsM$AdTBpN2+?$1r+pZrj4Lcrp=kLVqH2ICgaEGlEHtgTuVRmBQ zjooRvFM;d+n0kBngjMfv1>AVcrHr+G;g%}p5{Ordl~k9RiW#7z1PP#gS^kq@^^QH3 zmjuqM?4*&xBFf&CUel&b^qBQ*3u~%cZEPc|W z$D^g&Sa2S#xSRF*Lgpd%qC|h=<5`+_>jUS!D>%Oc`TD@B`pAw(KQ1lgHj9CC?qAg5 z*T%Lj*q2K=suRspp#@SIJa3dA#mZjVBZzAXvM%v8Gi$Ef%gaw&8$sreVxhzjTTod2 zna@(j+#i4bO&dEck z_Q@-!>Wb1qxDAQ(T``m7z~FLR;>gO{))opeshXpWNp%+FYHf?^w7Acd1fGSGU5lv6 zD9nlS<4D;{y~n*&fn^pLY{4Z?O`9UDb8+ly;3=|ju2|Z}87P)jvz`psCBDBj^m?5} z6ZS6ICJcX^k;`?gdxbR#T*(w#-n8oLoGXdoA3}gKv|-*iyX)Ej=%- zMi>jJEY}SV2?-9WSW&F~waJn-9(`S|i$~~8&Qs%1YoG94H_pVGb5d)z8H{Q@HW}E$ zBDGsoUF6;3#8d~1i7&~Lbq;Ejq)HLIX~`8HDkJ(^JtHY;C|$Eu38%l!Wqy;DzB-au zek@(8)HKflC;06cya1013TB^doY*?Rntg(d@hINHg-0mvt)P%OLsoWh%iV9UrKmQT^h{7N{ZqpjJVB zq>f_U14AfjQv1wE+FhSSlV?qoos#IpsY5peCyBL9efr#tiB~3@E3?b<)7Zw5=IZR` ztQiw0m`mWtNjAGd8$C!z*~Mx%+&33$qbeX4>#m;<9kfE#+|pF_jhN5gc9Nu%za$Q`qN$-U@GYX>gfp$-UJ z7k&w1K`Z!3aP#9a=H7eYN2^A&g=j@lY&FQ{VTO25$~S+ASbN(;C3<3^i{i?w&1a^bbdAm&+x+RO4hO;E7C_ClR+ z-(AE?sd*X~M>VK}{TEmq!-Oh7kt7?{Cr#KwR50Mj*4se)mdk(ayXEr$ZLfnHN@ACvSOr;b}eJ)+{iX*aAx>el`9dW|30sY6uDPNO=_ z*mNju;K(7oO+J>NSPQ8g;-6k}(E{<0I&rqS1$8&6?ZlQT!#ohKn=eoo+R4K=?&NQs z;#+61xaiLP9p|+k?8tK%> zZSE{~vk&#+TrPv;ufTN}NP8I>4ZGwEg*hr?HZE-`5Y>~}Mj)BEsQYo83b>B4oEM%0 zGK3i;cx)_miur(C@!xPH9=UV<>x>;o@4QnS#!wvfcs z380M^y9*!^w|z__v?LJyKwBg$alMs6$(x16UoU808xg5=8i$25K(?|9DR-ez^nYZ4 z+_VgkMqE?^2CNw%KKI9_U3`VnweH0z{`eCuNPerzYIL$?i)wm3~DPFns)BmYPK2Y-$)aE>yc zPMD27kk@9@@yh(!Y!W?W{$PGUuP8NGFylX)Cq|`}U;;-5j4BYdT~7-2jj9?p#%#V? z#{Yi-kIRKr15(jLJ%WRM5Zdx^;M;qvqZKU^Oe!Ah5vuEL_e~VdAr#>^JKvzCMHry9uS4v8Y^*Zh3*^V zzCz?8#rZBNVsb%r94hNw)Y%r&M)~;~*#quQ^L&_483MwqxrNu@dnm9lsrUBsa`$25 zw(WTHhHl$l;`8Cd;%`b^wVY#5s6LiTuMXvewQH+fyz@tkHoxR5k2|1tS^1Uv*m6t% z+DXfkQq(6VM)_5Dg7=Rjcp<65`Sf^$L1o&UrJgGddJ@ahqq zUj(dR(h%n54}Nue$KS-$r$3k2x%JJP9ov+Q4m9w&xpCvKcWB+#?ZRFieWrYkRsMc* zET-muLTdtsiy31t=koH%EF#JlUJ6>tKeQ(zE7{P7jxz=j7Q0pG5yzh>9y1g zU(2l#F23G6vH7_4$ZAo2<2FofIi-7}=!nQzmbds+#QO5166xaO^}eegHa;HXaGJ6l zf5WZqzh)1%XugousH)+Qk2=5-;JFpmHaK6BvPocAQ?Q)Xzh2PS`gBgOb5 zP{;fM`{OM|gjZ4!@gwczlKugzeqi=wP2v=CA^C=xzhg(Q{<6YN{T&P@xh3s)tl1C* zt^7wIJR#z){Ya!>N~B5hcE{lk*B2!nxqa(s(#lIZTS{csuvzB}xvzYv@4LXKG{EQa zBg4&A_RI(+J&Mf+EZIkU3A+aihLY67ThG(7VKpLZ1Pd6VtUIf$BQSQH(nXG}A$ylsvQJnEPv)3$ z*zw7c^jpbGCXQR=NF&)4<;Oi;V`E)V?0q zT@rtBpuQ|r3_*YJLDII)W*aL^hAh5&3bWSyB{iOnDra{ZkUtN0gZ06%jOr1=5k57H zJ`p}JV*D^ePt|P(>fRb`d(?@8+g=))vw3CbwJB4!b>6y}?%KTL`<*|G-T3|2zb59S zPJEs^>8XW0pERX;hh=NNU%&0q%bh#B>`0rlJ96)i=l8a6>cWy|ewvl`aptU#)2Dxg zR)wH{7Q*hm$uKPh^Txc#+qP_J4-<*AH*X-8;AocYs-3{-)cNQESC29t$c2ho{AU{; z$O757ewnZ(8CHot!`42SV$u9NPTUURiqS`E=0sg23P;WtiThr3^IWA4O;CE$4NA{s zr4L;L3{mRN#owj8X?Bac7O7;=#*x>e*hlomTD$Mk!z=JehHIEQBA_8i*b5b5WrzuQ zB)&E&DM|TN5c15zCH4p2?ytCsy`Z5rNE2j-%QkJs8(P+2s)u~#BzomL6`<_=U z?nT)44qHP=bq_3G@XP-Jm$#2Eg97pGC_b2kBBLBE_DYWL);sS({OQJ1lWy!=m(gUM zvSv@z$U)zCr|i!2zmra_-+Z**vbE=qN16x3jcT_3YWKv+Q+Lz7{bu=9NgJ~1RLxq$ zuCY~nXAN!Bvu*T%xiS4_`-P^(tv{P{eZip_!`t<2T`6q9oR2OeqB=&mu35@u`1gHA z)r2JHN`dShe(_ZV*+li1C$f<5>{QvnKcgoKY;i1G;CQZmXXC+;AT?_dB8^bDGghu_ zv{Lxn!T4R-ALy@Q*oP587R#k;*5cyCF97jtKYUlW=2Jq@X(2X6u8x!Hd=AX2tCq?_ z54f^23@Zl?A=UZo4xtB#gTVn8oYfpgK~+VR?`2n9xtNylsE+NA_8**?La;V#KU2HW zsOCA1yrh=wzyNH0)N8vF)ZJg$Vo%e3mgbR}!g725UUMPd znVPbogd&FzFEjBqJ6$m>Ze+h9W54O#vsrUp|4DPFD(Aa*=}blHGgHJ@?e-oC8$({sSGi!OdvP$^jYk?XKUHBCB$fm`S>yj^{ywf2&A6p2J1ahe0OX%VtH|2#nM3gUzqHb7+9?B57+)!5H+QNw>Gt3?mrq`cHW9Rkj zKY!ubTt2Gv)Yo5c+^CCkK7C&9g++_fnsn;aq*)gvlYtS3uke%d5VFr7xd>fxczkRq z2V5Qm4-5<5i3BEmYy-)l+Wp+Y49X-3mV?!ey-K~=3_flcslj2aPr)&{iCjOGw_*oU z*@0)psE)3+v_e{CKMXD2QS}y)Wlfp;LG1bIJSQTAfslb=1_7jeRkn%9w;v2;&+BRt zKXN(L5b-lXaa4+GbqUUSV~IwrtR* zbIZZ=vQzuNnfxi%*Ib$>&BprTY@^jEk@0xJ`XaH|NLn9@q!nf3*dx?ojE!(&ZC=LO ze3@7p3zW!?K zUIW%-OkCLd<&A46PuetaK!-QFUudbcms-?&sa31Gy|Ob?Yxjt#xF|I{C+($ITQ{cI zbv821AB)^{X)QBP@svD&$21g$K65>u_(%L$an=)>Dk_dG-tTOkBsL=^S7fUx8AB!bEWM1@cU z04!mGil;pSLgSui$nj}R60eEEgW(?wY(V5*_{Oym@a{SHb zGSDmf-{=e`{$?!x<}Tz2z5iD6H($y?rr~eCuq8+<^uLLQB#9QE11fgnljIIc8&tc- z*t)1b8X^+%Sg+m@zpP&_k!>VTJsReUVZ1_<55E+iP>X=z@@FgLyHg0c?6^FyAf|(WF5^xdgxB8!oKy_?f;ZFvt&SzY zsACZlOPA^%Tb0>F1qH0J0PQ<~YmJIFN*@@;45=Del|s{!F%yhuwF2VeQT@;?_p=d? zF7tOXGg;F$Ck`&d{IdMiV_AoPQ24v}evoV4E*7y%A?>&f=%p48Z$v5DsxhJ()rQKw zzw@`AxmEq`1jANKddRJo4HYsMK_sK*TO^U)o~IugMU=)rvIQtADeT^=5-zN;cVy)C$_KKqwf22{Kfxd42^T8E0)=I)Hg}EL*MQXt#Oj#>WqG{e=1DOqjeivx-G^rRt)`pNFz55K_F@McIxzp6elLr)=pEqb=zY)J(9a!qa8)M&? z+OJzfR{6~VA-#vo%TI4FvvMD4(=)oH>!!OfKXtf)CxYr1 zDNrYV2~OCQ29k+PQWFK?M_9V;gaw14h@)Wp0IL-i9w)+k;4eh>WOU-8kboB1OOh+y zcMLy2Ve)6$56<;_`(G8e|B!fL)`j@rx1CBvKIENY8}@Zs*MIIFd-zkHK6G8-+^icj zZ!y0%O`dI^-E!iksHBc&&x)l2TP!gzt*thPPF{v>T2X zFuV{v24K%rwd+Zw!bsg)1ZL2eCBEsrmn!fCxx$U#5qge~hL~}XlD+1YAQ|H3bN*VO+CXHN$q;Ay&x(SfCQ9|lgbf1U? zJ>Wqxlu{^}pvH?Y&Ugw~kc2gbR}lm%pHE0G^NrV_1wzsy^B_(~h+yFW2*K+JjfKNY zlDAe;XCMtm_G{atUyt-RznL?*TS||<{f1^VZ^ov*(sjdm>5Ik<`1q!;Z}?C^52~&I zxW(N?(W?t)R@m@S^ZUz(zE@u^Ug_CKMbZv5D7ahp$;aTnbwD9_0kT3U1mG|&D1?8+ zVd_@C9!ys4LNor4*n{VAn6y8|>)Nqz$7W`Z`35*l0X?X=cDMmO@LKQMyi*`C1@_>t zE`0^|0H|y`6)^=vU%I2kA_u1{3LSN#hKP0vi1DidAruTk1U%0_piBUqA@CnzF+GN< z6J9XNQ|tiM!4fw_4B)wF1O=6ZFh7D)BJu2QV*zbK8D~+-M!cwev0yauA zvU%3Hansq+g*-|MTF!pu0ZLsS#jd%2b6vr@kW`ns(BoaTb%}tzejXkb!8F`1+#Qe~ zYT9J`f&7s4hQmmj2>BHskzxVTO@!%Vp+hMq;gtl(5yOiT`6tqaf&=T;Wy{rjcj@g~ zkS^`1(WQoj7VQkT+QuG((~HQQOo=66A=G4!C5IBaLt8+z zefu)=@-pRaFL!;ppisJmFVbav@_zn`atG81!3}eWD3G=Qi!~$Uh)y9-e1@X@7N~(( zC+?rgz)}5dRClNbi!Ws0kkKHZceRp|7@ZmmRPJn?UpKi}m0F#87QBxd%lbg$Ki!oV zoEk83?CZ+)XQff|Rz~>&t6hT}Hz99JLK_t`RXdBzZed9MiQWxQu$G`IEs)7tM-Aid z!1FUuDOe{#VxRy_s||F6vf=!D`wsmjPn9<0HmL7crBSC|6XuTIP#$c5=;JT1x_o!4 z!D;?kW2Jk$w+|m)@RV)?p`Gt}QJ;`-$nT{p(>yAmNQ%4VwuK4*9)g0=B6grlHPWR9 zrbZ3Y;!#2HKZ4+Yn3~7HPBHccMm6hWz=90B8`n3Qw67E&DC)n%iFw68dkuk;mZ(RQ zmrp_7u{T#gnkh~HbM>@5xjEG{Q*HCJ@zX|+op$^hyB@lj72C<`?q)$tLr~(J?s_M} zPx;-CKmLJ#bb~*H6ahZns|-#t8g)^%Y}-{wa&2+Z1Dx@6vz#?vq{}SHVZE!Hpos@{ z=;bTSwnXs-tr|?GH5qsYP)iNfezS!3o3Z(71?@ZNM3VuB%yWW=Lqs${FoiJFbRf2d z=Mg5I8G0Ax2-PjN9^<}#Yu-06)%$$HnIB!s*_D?@)tvTd=67}Le+@+5Uzuk&u0L~* zpE#?moqQ-*nz&u6vZi3>>}eAgKKZ&=slyL5UVCeP_T;w+qIc%cKQD&A|M>9*cJ}F8tXZ1?M6Ev78m#zo^9h2Z1S8w|+zAn6Lf!{1XX@V|b&wou-90Xj3&&NRm$u(oiF7lv(NBT&H*gpNzzaJ4^+{d;jc(LL9r;?2sOln zeHED-onn?ki82U`l+neBh{lkKQN~iVhdmhJ8SIbJYX13@}2L zeo@XEMv2oziU~hoCj5}fgtzg6xoi%Tx6kzj;5Os)ebpm8yleuqvlF zony~_W{_;B-v z56^FeiA$K;`Ch407Of1LwzmpwTUPCfhO9mD48U4Zy=ng$zImjrgIdhgMeaXqTa{^m zCIk|Ulmi`Ds7XSxQ1_Yqy}C0qZQ#aj&y{#y_L;Hj>`^aQ+ZR-N0(GcdRaRl8>1u#! zr9w~X)V5$Fb=DFx*<;p*1`9qTfRX1MREPE=%0vtu2AvCL(jx38OkybFfl12MDRV|k zCTQaLG6Bk}&GYRAYb_YXX^vMbq{5UcoP)Z7icq}8fCMwkML}nM^)E12o-LeGdRJ&78)B+6Iu}`~#i|F2U11>WkT8yfI`oEwG$nsetB1?SfC!+jL_{NZeCe%Zy z_Byg%R)^UlKPWcjc9N4IBQ=90z7|8AfXaf{eIj$o{8RIjSTWzAP+X2ogy= z3OvdIf3GrL30`t{RraED1-(LJ;1VV!CrTd;+rDkc{npAO--8E>VYm&3wkY3A2kpO7 zp2ElzAMj^o5YWO~V1yj0eOS)k)F(7KF%<2ClM>m6-2;Dq{oWvZ)l)_JGv+9QxVN6! zbl8U5w0Hhg`q+L6z6I(YDEjHi0h0*~+>FRt3YLONL+L8`r_#r3rcPd$+Sl3FereRa zxue^6>Xw34F1ClWI`)IGy^%FV{M5i-coG02(6!hDut?Rz%iw}B$|3fbqdGbogxL~A z4inyioRHT*PC<<&WiS0a$q_QYLOjn*?~WEvI%owlX3U6oDID0STVic!n5QCGCp14WQ)H8StX#XtV}x->a2F5! z7@gr**8#0M)=Knm)V5uh?DTd6s&|O)P`PuvR!i#Q-3Kba%0=v#q4VpB{?&jaL6Z7A zSa;an`AVsd4}GpIxt6^r$~U6b*$;qutBFz6S}t4%7=ce z|62Qc|7w>~uT1&!Wuhup1UDC4Q@-U1dL~pjcahj?1iVhVdmh*g=!qg-o-pM40#T%E zW3CnW%RBmCQoS-;*Yg-f6*4=^}@Uk=Z+yUkhKs347T#7r@NJdks-8@s*Cw zh_=*%Vg*Q&?qyyB?-T;~_}N4mj344(o()r(pOFW|>HwxCnUt*MioIO9Z?qfI&1=@0 zt{s_jX}ni_wJJ5*^hjyk-s>gMz92!l$v?E;7blF)M^J1HkcV*EaB}X=i<@+Ss+ALn z{5WU@KU6fzXlIV27H3Yhf%6agxIQ1pFRhT+kf(E%o6ML0$$V*dz4&=}eug49lD3H4K(kZB^#~G-iC!`06$1Vx2#j8LSEsk=&2Q)nW>2-Gm}6o= zfP3v82pD9jJ8LXCY$$TZ9Y2itOgub)JEH4CZU}v-8;YKg46G!h@E)rXC<`UtRV+&$ zD%w&wagTtAwD-h&0me>Jkfe~sq|x8a6f{vCqQ^hp5&he!g`1D``qNLOblz0{hDTEC zHvBuJ9K?H$g)MRu9*7Ki6l2RZb!Y(%|5Kk9VBrPp;>>%>Xs@|PJ`Ta0mm}xO=(4#- zW+U=aFoPT4=iS53R7u&Cjp5ZfDpQ=&*xv|Xg9Jht)QTIa}TT%Su7SsAj7 zJ-uGGQwtp!#qMS=oBHRFS?uZb@`5HhqSFgd?>M=eptj?MT{r~ZUym1fP{KCRW`L+I z?uoRB*P14UWJsaYl!9jpk(;=6G~T(GI7cts6nDH**mBSFg^4`q^eQSC(H?S+9Td*7 z=h}(1b|Nj<0^e80>uNW87)K8#Ko5v%cuvSkBH|z#+v4kJc|}25Z|Q=oMn`!>L2i1w z95_JsMk8isJBD@M!#cev`$^pPpVPRcuZ$R;2v%yWd@rlugDj=0o0mmZG@dzOTR`{G zdt3Ie2VhK5NK!wRZ9w}7wg!?KJuHF*;4+qXI%aC+0#qPqnVFaEPp!d#EIE|EnD%|?05Os1?zr3bNc6B z&YZqSXP1S25|2fo1D(xXi$G+yh#yPxSd?w+3@EG{vZT?`m&`}(*oZKY-G?oQ(N<8| zfsk;Bjbfm2Hm%bQB6^9E>*!UM#c%(W{R_VfI#Ahn8H z0{6%bmd$s@VAZj;P)I->(IpuALE+$_Xsx_}B2S{@Ap!KIUsmjvuD^Ti`?uHg>MUyN zvKfD@S^MYo6%$!BPs%_)@w<~Bu+sed--iFpPt?jt@6B3#FzN`4UbBv0J2d)3exOG> zSwF)H?U5z;(y;gVc@cCDt#rRA7ZVZM*voy|w>aUv};Ijlq7d z?9I!*?p}G_pe5Utx&@c^dv_1-I`9nYbs8`qR{fL1t}`Fs_>HZfFzYexcrPD;j*k?} zs%RUa+O!IUNNm?_I$M;MaCM2(D%hyr(^(nD%jU1k5^4XShb z!p^Lc{q&Wc{kK$!KRfr#ji&Xu-F{&B@u7U$xYg=g1s}KQxNC9lUX}`et;~DN@52N3 z)pdmB{DipFPgaOD5w>>_WCT|SF?nhRgkDK<^K3pMlMl~k{|bwM3w(<=X74E_3ifyI zO!Vvu%^cyN88uZ98w}NQlA!@kJsT z3(@ESOQ3GWeb8#2ss08TVp;UEf(;rM56XUZe$&Q@zH{adnK5Ht{tp>n&%VO{_;@iJ zJlb)FHGRL^`tDmU*nP5=HBM{Pb!B>NJ$~zK$>qOJWih`+pSH}LSb2hQWy(gBh+p{S5Xr}ATxks$R2X$j6v|X^#IiqXF;9jTt zu|9))kD1(eY2Mq|Z%aO2UIR&8+E!nc$`F3qhJ=sBx>G~^MW`1S+9ZW>8w@lF_$d?( zyP-M4!!>M6Jh=(w;;0c@Fsvte4Ie(C--tPC&*uFbHO)xjH|CVD^N96xArI7+%WH0B z_8eX=v2^>U&9}tY={+c+W{XxeT4X!{e;y!CUkgsBoKPSt{fnA9q6yy9PsPIh0;oVi zTv9u_%tlT~q+P+B27C)^cPD~yWpQ0em#|`vkv|>U!!mQ`JZgcY&+Zc+TzdAl(q`Q% zmn#%EPPV;;Tj2{SLr9_0uvcY4J90~5*yB-;TnbgD>kf}$;U_wkAws0~^do!K@3%dPXE51K{@!4JZ?v>B)NCl6j`ET(A}te>6pWjtmJAawqFmmHoT}w~G=U%r`a?rV1_(>dJ*O%j5!9Mh z(Ky{b4gexlo}QDn$;n1#=X`#12b9wa878MKB1%wCI(nbQ5tuHP)%wt3myT})|< zxdV>^9`PTRyS`Bz-!q?r_m2K>{pz#tj)AVj_)O8YA{w~@o2d%avQiO&C*C2h(sSLa zQd|gSEYIM6GC3_RObo3N8en$|X5tjcWv#=PRDb^uBiBt^bBHZi)U$8h#-&mk^?&ea z6gp{qs!m?@`zO(Sf1h$aI@DhoSEqQZ4mFd)YBHZol~z5TrCSDr!4-k94O*)uwH{d| zDR!uFhb6_Piv)tXm>2@VQzN@U3{jH!AlefI$Gni5w!~;*B?3*L*;C43es;*X%&*@< za+MYNLP{t|JG*h+xwD(rpOG&&{b5n`;@_#^NyHsi&UNX`pMT_sAO7V5Y4!7-vfaehzx;_&W)1T;<%M@L~M+?I;C`pnNVJMNzN7o4!%(6!>JtB{s zT({cq`TLHdZlUAqjm-8DbFhecg|>OTkYD`rlC&8&W&|&5_rp4h!yE0X258uGNxoY!f{GgU zPs--};jF9%JqAgip33Z=bzwBWUXYo2^15_rPKBDm0jx4(yI4^BH=5m_aq-VUIlRZn zIe#sE$S(%)B&k|J;qfC+>Qo`AJdQWB`-+`)Qf)#K*hE4GSIBa?EZeg_2gyIu>SqBH>yOpP0-0aR|A-_ls5Iw@5|U;zU||@4;r)r?CK_ec;WZc$5=J~>9I4v<}+^=y|NID z#;;~iaK$=W`Xlj2CM)FPug5LpspN9@_*rHpCbL%MSQ z{o9#r{emS6&VWks$O zU2-V@IN$CFXX%?i4r2XT*jS2T6(RwlOtBw@h1gOp?zXN;ii>m9Z3E#m=}$bu2ZG%= zJpfbH;x>wfU_Wj+hnH~R=-R-3As|z5crq@M5>&rtsffz8TEy_%S^QSH=1G+!O4WF& z^YDbP!y>+_G0c9nL{I;wZCs07??|spgIYK7?@_WxIuB~qhTR>~1?N;7ycY}J3xW?c zT=mxa@F4zI8K9q&U^~y+aq|rkuX+cHBLr3=09`16n4nOX$y`-2wn&_@umB(u zNV{t6mkjkU$HhmJ$S`xNBX(=2tP{E_kDlG<8h&G{L8%r^=T< zdC2(}1qG}E|LtO$>x=Jh{`k#>-_IUpk^HA)XMU$!R;%z2`#ShOCD4N*M0AXL0VfK} zO}9ApZ~^g{X@~aWqO=nEDMSTK(h!gl1CZpFjY4un2NJ-DI+;6Sv??mi?||}9mb=cs zy6@#*m}AtJi`n*Lrw(r3lFi#GeeBI$cgw{7e0{>XA$rCBqux zOpOwKvgop*#rE^_MZ82S1NV%Plb#tPd>hRe$*Rg%p1z|_$nr0JVrGL`C|_ zbXtIe8ZFDvy@52EuuTG^sVqW?0dh{3BnKtNYt;%04yL*eVOl8%*@*dHj^qW`d6X-^ zY)JbRQ)-q^ORp19PL5*f+fN+XfYB1`*?433OwX@j3MPH5PnCVd* z5%?^5A4}hH{OD#mP+I4j-S5cw_kLi6Ed)VgTr0NEo4HM*dx_}r``B}+4N1x8y$yYP zmhhy$J*&5&Dq36;Qy@*35+;i7Zr~b{;3U=UcKqoAE^~eQ?xCl5LGJ3!S7bl8@A?-9y4I+Mtf zii*fOiXDvFBofPpHWjCH|? z&4!`>Fi0ie)`JkkxzGEWhG%Y(XpeU#^csishv9WY!z>{BSfo z#(X3{q#?iOJ$V6dMG`d}-7{(4N2qOvMp7Y3bk?&h*MghYbD-iFEC=oZtp)gqL>fSO z2>~Q&>A|#9C13RxAq@CQNbUes?JlDv^m_~f76^$E#$SWMD+4xX?chPHr4rm{2|Mr1 z+Re@{<~~x%RnmUfE8^d;=VtkZ;(RPu z)zb@sE|BFIJ?T}g)xGK?I^JXb)bkM$i^M=>OjcIG``Ou)VReshiJ?zKTVv%0J~0q; zP!yB5Y58DFD%Vh0W}*|q$P%x_2U~TIawE&N!mMd%DKFA3SXDAILKrxPRiQJfX;oq& z`soXSsz1>g8GK5XoJnVb3gAaC7;6IV-#|i>qP1-80@o+y241KiT_m(Y_A8MMTvz8x zMdU5d>Nh)9q@Pz#mB~s1BB-qkPuq9ce-@g&60rV7#XMW;=35-?D75?nny8?@I4n}* zA2;?z^(!Lkje)PzP)Z1eRxs3fNm!WXPLoKx(P4#Qm>4qnUX=F4R1ETM%Au)>NPOB5 zAB~SMYol~rc%WRX><$*Nd?}3o*vyi<`GXZJSkSJLnWesB%I_b2`ZX{3{o{J}l58>m zYvU&Vc&T*d$|B~wc@rzLIG>*{Xu%v`e!?VQ#tXjuw9w|uX^C8)kMm?KP12&f3g!&wXHCV7m>fy#>PPmVqQ8M^ZAW5+)tu9KG5`TRS!j;HV4P)FK} zbsT^!RmIMsCFyoq_AAU%ozX0pP`?Y$W#MW6P(@^Sh<~hx^m3NeH0vn=97szFO^MIL zC-V(n_3)j)t%J=8R{9@4T+es@?Zb)XP=F;_R-tJgeI;-C40!@U<5|ppUXKxQ2EDHT zgk`fC-;(C;@dC|lA&qhR!t)c#(kuv|75|O$mZASdov~GU`(pZsuDhdn1fFTS+v%FA z>F!ppX}a!~$@;Vt2BQcfRS}q|7%X!6WDNtfhDW_bKrB^1MN2B*Vy5ZYK{Un`cpc>R z4Y@}63d2mpAsfrbCDm<8GBA^j9b{?Cmz%-1to^+4;i@jEPBX)Wy+pfcqk3z7aNyDU zx$Py(>h%Tx|5#&{zpw9aYa{(I7kc;u=;1Q9$*L@(r`iRvpg%nQc5Nj^^3bGX`R9N%1eb&oHQPNpC+BJzgKhe||x6OfxObPz#~DO(g1 zCC304f~kuTnz-`i;+c2k*<)vJy4Fj*?w;c-t7e6GhL2orgv*SaIi3b*Y zOo#?O4&ia;gMes;FN>luBT5O8E%c>j3>?5vn4J^DsPej8Vssz{)bUDLhkS~6=clHz zH|8Qv_X|5xaB)Ap4E~;alE$b>qpF|Hy>RDgJNfB+r!@C%thzV2wzMM<{%8eY;=Q%b z5V%cxKQD23Iv&8dP2PlGCM1u4kid+Dix<@5-eLo|`^IsQUvBOL$xNNklLBmTw<+!I z@WTHv4hgOV#~Z1ED2LSU0<(?zdfw;A3)p^MGA`}qIrF!CSi0fKg0mYoo<7IlJ1zgt zAAVPS(Y-0G)cszp9a|V5@mli^Lz{#bzjdNRIuD6FcyCo~?*ceRCee7}v*eT1Zw4 zlk_Fmx0%u^`Eo%Oyn|$`$xkV-2>OMP=cmbCczz1xZc$Agi~Fp)S> z(7Pzm*E~Oby4mwfPOb%q57$=sf5F7pvNR=WLU6E@Gd!c<@+frMd7Td`7SzAlF4mH* zE~v!2vzPcOwn^@f0R4E9#SySlY*=fkZN4Uih54bcOqc`u6H5TpLlH7AbVFH)D#POo zbbEYx!vb
    • 2a-ytx-(Y1%*Q`;e(V?9Smc22g?_xG~I&%zq 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≀A#j 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%0AHUW;|^l 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 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/LICENSE.txt b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/LICENSE.txt deleted file mode 100755 index 75b52484ea..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/RobotoSlab-Bold.ttf b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto_Slab/RobotoSlab-Bold.ttf deleted file mode 100755 index df5d1df2730433013f41bf2698cbe249b075aa02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170616 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 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.css deleted file mode 100644 index 47a8014dab..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.css +++ /dev/null @@ -1,87 +0,0 @@ -@font-face { - font-family: 'flowfont'; - src: url('./flowfont.eot?8516181'); - src: url('./flowfont.eot?8516181#iefix') format('embedded-opentype'), - url('./flowfont.woff2?8516181') format('woff2'), - url('./flowfont.woff?8516181') format('woff'), - url('./flowfont.ttf?8516181') format('truetype'), - url('./flowfont.svg?8516181#flowfont') format('svg'); - font-weight: normal; - font-style: normal; -} -/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ -/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ -/* -@media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: 'flowfont'; - src: url('../font/flowfont.svg?8516181#flowfont') format('svg'); - } -} -*/ -[class^="icon-"]:before, [class*=" icon-"]:before { - font-family: "flowfont"; - font-style: normal; - font-weight: normal; - speak: never; - - display: inline-block; - text-decoration: inherit; - width: 1em; - margin-right: .2em; - text-align: center; - /* opacity: .8; */ - - /* For safety - reset parent styles, that can break glyph codes*/ - font-variant: normal; - text-transform: none; - - /* fix buttons height, for twitter bootstrap */ - line-height: 1em; - - /* Animation center compensation - margins should be symmetric */ - /* remove if not needed */ - margin-left: .2em; - - /* you can be more comfortable with increased icons size */ - /* font-size: 120%; */ - - /* Font smoothing. That was taken from TWBS */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - /* Uncomment for 3D effect */ - /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ -} - -.icon-funnel-add:before { content: '\e800'; } /* '' */ -.icon-counter:before { content: '\e801'; } /* '' */ -.icon-enable-false:before { content: '\e802'; } /* '' */ -.icon-funnel:before { content: '\e803'; } /* '' */ -.icon-group:before { content: '\e804'; } /* '' */ -.icon-group-remote:before { content: '\e805'; } /* '' */ -.icon-label:before { content: '\e806'; } /* '' */ -.icon-processor:before { content: '\e807'; } /* '' */ -.icon-provenance:before { content: '\e808'; } /* '' */ -.icon-template:before { content: '\e809'; } /* '' */ -.icon-transmit-false:before { content: '\e80a'; } /* '' */ -.icon-zoom-actual:before { content: '\e80b'; } /* '' */ -.icon-zoom-fit:before { content: '\e80c'; } /* '' */ -.icon-label-add:before { content: '\e80d'; } /* '' */ -.icon-template-add:before { content: '\e80e'; } /* '' */ -.icon-group-add:before { content: '\e80f'; } /* '' */ -.icon-template-import:before { content: '\e810'; } /* '' */ -.icon-template-save:before { content: '\e811'; } /* '' */ -.icon-group-remote-add:before { content: '\e812'; } /* '' */ -.icon-port-out-add:before { content: '\e813'; } /* '' */ -.icon-port-in-add:before { content: '\e814'; } /* '' */ -.icon-processor-add:before { content: '\e815'; } /* '' */ -.icon-lineage:before { content: '\e816'; } /* '' */ -.icon-import-from-registry-add:before { content: '\e81d'; } /* '' */ -.icon-import-from-registry:before { content: '\e81e'; } /* '' */ -.icon-port-in:before { content: '\e832'; } /* '' */ -.icon-port-out:before { content: '\e833'; } /* '' */ -.icon-connect:before { content: '\e834'; } /* '' */ -.icon-connect-add:before { content: '\e835'; } /* '' */ -.icon-threads:before { content: '\e83f'; } /* '' */ -.icon-drop:before { content: '\e888'; } /* '' */ diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.eot b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.eot deleted file mode 100644 index f0d0fe0410a609fbd59a0e881ab5b16119e64f02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25276 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 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.svg b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.svg deleted file mode 100644 index 5427d62811..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - -Copyright (C) 2023 by original authors @ fontello.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.ttf b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.ttf deleted file mode 100644 index c16425cc281b148c2b81f162f45886e3515760ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25108 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 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.woff2 b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/flowfont/flowfont.woff2 deleted file mode 100644 index 1917ea71cdff95fd8b8cfda439394ddf756621d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11600 zcmV-WEw9pdPew8T0RR9104-1e4*&oF0AdsX04($X0RR9100000000000000000000 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 O`R{MvNrKm|1ONaMj2LbJ diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bg-error.png b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bg-error.png deleted file mode 100644 index 7b5ea170496c623a009f6dde78ae1136ed70c654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2799 zcmd5-dsGuw8jpEEAR-eKP(U+cgs$KNRJIm@0YN5;4^nMWs0UG00zOEok(XhxkVFd% z;U%SjD7AtRSRhtHh*s7bib4fM{{lk{$mQ8u)qg2~h$+?#n=NGA||}SaLZiHi0Kj42YEieUK>OlqBVNY~m?# zasbc+&7~x;^F-1hQ4;V80D?G?Cn6SL2oxppV)417G%yyBBnA>DDNiir5hkz`$^fv7 zq(GPl5<)BvlsrNM1bj{aK0qMkKq4OkMfd~FTtt3+8bAJWSaN1~a#nOk?!}zEi#hoh zujWZ_6eZm#&XCD7if&z%S6q`TZ&rMFQ+coSo?4-^&rVMI46vXi51~VsaLM#6v~Qce*Z%hC$(E1!_hc~%#5+6)CX>`mNQIdiV>>$yp0f}5vt!S+PotE60$J5%N)AUahrhVorWz5 z*U^x$^C$qK>q~7`17xnKlxd$jM^WK(NqmW*)ZOLQqC*6v#rD`^J_dl9+u;`y#{fLf zg%Uw&!fiV?fE=A&-M;q2IfUTnPb`VR{d~SV%f^ZzexTDd&PfIN;n9l=3X`no2ra$5 zEe{X~#kch1M-CqrtTZOF3Q|Cf_2X27ZwQW%FWk3Io*d#dP2&W5-23y_!L$DTpK^$_ zdv%90<0_^ok~+e*%nlyuJg{UERK#(_OPNBAK$lWJmW5EI=U_{3Q+#^jz42?{bQaz= zpr@{hS%Lj?3r1(ZL{t}JLuya`qiZ@tCA8e` zNKjTfvisqKYg`7J7pVY7rob_^sb($AtXh=eEL;`8f3#=DEpBj8q}+owlB8pdnqy@~ z_(!bBHrE%28^sK^1hF&5<@`u57pfG6GZ^YBDfTRe4)j_wfe{{ezXbEh2*%iuI=yzA z#n-ZtQ@o{otkDUt$^2%?RD?%xn$EU$c(bEV$LiirF?tM~QY_7Gd9QkF1 zy4x#2`_+{laME=jc(Z=)V~46AZjLh3fRVRCeZsouYu3i+cD@g3+#$rmetoniA)nTH zD2Fh5^g2)QydmQ-8g~jY&+75d4iR=MZH&=E$}+K6q0&9!vP};;?=!fH*=LxgY2&wD zX5hHY@|*iX0Ln`C9d@GokDn3x!i;Ks}B70x@CE zj4VBMQ+vjc?H&q*XQn|*2K>6SF`7xKmW9}@Ovu;jEcC`2?eXf`ElscUv4|kx+=rO7F)AGn z(aUXL@9>1beFU1c9JOmGkC$`J)PpoXKkrpF+na?7wH2<=wrwp>pHV*D*-K%a8u^imGG{d&3N!LKL^YM?#Oggv=pjjIjg6MQAl}uiMMIi`G25$4xTLwB6d&_0c;0l8a;4K#d z3qEPE=B3|B-+`q;3=*WlCHlN`mv#O3D+9QW+dm@{>{(+%k(&%kzt}ixr%MP1rVFUI0`l z22$r-l$uzQnV+W+l9`*zU|_0mXsB;!a6xH%Fi=HBfKP}kke|KiP~SMMIbe*g5< z+fQG=pAz`;8E7|0Nsu4VE&IQH`}X^HNDebQP%Pfl#W93Kmh~VfQG^I>C&XPX+a7<{p|S6T$Ya?U%n?<-xmw`6(LwdVJNB yuezu;ADg)Fk%Z`^t?R%3&NOaxIQw_m1mP-Iw!c|FC-eZVV(@hJb6Mw<&;$TBB)Xdb diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/iconLoading.gif b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/iconLoading.gif deleted file mode 100755 index 4cb019f162ada8f7215ab409f35dcf8f03f6142d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2438 zcmcJPe^3kDVpM%$l}N&oWK0nRMu#)BLBM z{*gTM{PRA4yz`mwJkO`9rqWU7Hvtn^1Yl`VUs_a`7PX~_vKUb!5q&8lMIzdg4s~6R z=<1>_>AJS4!H6a;YNDTmrLR}RjDyOQdrb?=+sHz-MSWSVdA}NZZ zDT1QNiXug1LX`zwrXn(~$WW0*IaZP;v5LfN5~WMHCJ~Y(DH5khtSZrx1Qp0Ckd~mR zK}>;+40#ojDkKz0Nl<_gst}hU3!$h$Qi8k$IYlH@5z|B$6a_^jpvX%iBZ{IV(okeI z!KMnRD%dr_tO_Kt+L-1YG5<8gEj0lf>hYrxf0<@HWVk z5|4>IBl5Jsvpmm>JOz22=UJ5l3TGBMQsEGZLlw@Xa6sg6ks~C|&U1{+Asoj^oK@yb z9LK`gkmfi>VF6@OnMFhvlUX3LF38$gmK9hR$5JfIhzu$*h{OPqu|dWpGFG0!1ja5f zD8n$20UYDu7)+$ikOm@c;%PfWQz8vG+9S{=jz;NNQ6dF|SR)*Ta+H;$Y*egBn!;%c z<4J@k0Y{o>(nFINMG_2YBT14Y0Y&08>7rtDlp;J7;UWlvCae@;XK+B{W&+1(+(h9v z8b=7+MdJX+aSAun7@#nO#LPJ6p)i1980i6+$Af!pm%S6`mIEEE z2Otit0N(%r834DFRyJHsdb-q}SXi=q_Ri-0m#g7~yD~6tm>vi<#Sd17O8eKRX5TD4 zlWVc$9_*RR``+NzgexIKy5GWV+&dq5!KWNA-eAe<{IKK`(+cX<7pEH$XVzeO)knkK zA%B0_-XZ-+(JG>_DjRsHTzNCW#t#EGeLXW9vD%68AD@V;Fs`i) zU-CXYyrFBXU97xmvW|=e{%`D&re)3k;DPDtk+}4{&WzH=m80F~5Tpw+I|I(({^i$R z8Vpoq_s+g%T=T=MUTT0%>FUV*`}$ks*PnX(`^Brytac9>v#GWQ`DWjt-f)?BQtnC4 z4UVVZtxY|8t*0q5^9Q%jhff*bT4OMb4abG9SuX4wG@T6g_q_fV_sz3Ac3zmu+k4WC ztaF>opMX8|xU~NVcKFc1vDwX-GuODI&$Zu8)p9S#jT9ZrIBA~z$5aNeE@r5J53b^SAUyMJ_bp<$1uCuOzCYWgoLxPM9rod=yvDSa`*mhty=4MPLRJ`&$3@=%6|+xen~#n9JAPMi{_SF-Xj#ZP zx4dcFg{;2ba<`Xq4Uc`ER&QBVYQY>Byq~kN?3wI>kLL#`E!9J%(|gj#4;a7u+I{00 z;s!GvEIF2M4?6wM$5Hov-PHcheNk%Prq(yJ5)Izww!(v{m$tW;b}V#UtXG4eE|^ol z_UG13j^cW+V>T`9+Iwp9;qYN=AfxHruX=}zEMEuo?)QG0{@*oujFAZakn!ijZ?fOmpmK&MLN30V_N4(*QDTghod0S%Y zyVuuHcJR)bnW#hh4KK~TDbFXgvN4BzcBf@s=xGOr1;AWI$5q3hTgGmc8vF3_|Mgs!?W+C6<0W(kn*E_KH_}iTRXQs@^!{o zo6=WKor{U@w~f!`<|k!@cf`b}A`_|k-o(^D%*UYrR2?_{z!v~1JL>`?G=<=NL`d{p&2>vi$b$OEG9~47%#<1OKOgE8N}D a$Tx$u>&G*~2Qoj~@lsclh=cy=I@8qrW1>`om)ejqkt!3^kf|cTeYg%#=xzFlSumv#xN_{vF-FwK^s)|6Mgz>ZP4bxVBy0(&K-AhRIFZ W$iCS^#UdYQG=rzBpUXO@geCy#OIdRO diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop-splash.svg b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop-splash.svg deleted file mode 100644 index 6b36215cd0..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop-splash.svg +++ /dev/null @@ -1,17 +0,0 @@ - - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop.svg b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop.svg deleted file mode 100644 index c6c3defa03..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-drop.svg +++ /dev/null @@ -1,17 +0,0 @@ - -Untitled-1 \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo-about.svg b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo-about.svg deleted file mode 100644 index 62a8c64fda..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo-about.svg +++ /dev/null @@ -1,17 +0,0 @@ - - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo.svg b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo.svg deleted file mode 100644 index 034335200b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi-logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi16.ico b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/nifi16.ico deleted file mode 100644 index 12da8104a33a42402007ae4b9b32438b240c5905..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmbu7El^768T}o*4c6MgoXS)3mNjURdI0`vh5?N!lj$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G+@3CuAsn*FKh85SFflSR9F3Qb0}3;Ey85}Sb4q9e0BVgG AaR2}S diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/LICENSE b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/LICENSE deleted file mode 100644 index d21bbea5a6..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2014 by Marijn Haverbeke and others - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/fold/foldgutter.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/fold/foldgutter.css deleted file mode 100644 index ad19ae2d3e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/fold/foldgutter.css +++ /dev/null @@ -1,20 +0,0 @@ -.CodeMirror-foldmarker { - color: blue; - text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; - font-family: arial; - line-height: .3; - cursor: pointer; -} -.CodeMirror-foldgutter { - width: .7em; -} -.CodeMirror-foldgutter-open, -.CodeMirror-foldgutter-folded { - cursor: pointer; -} -.CodeMirror-foldgutter-open:after { - content: "\25BE"; -} -.CodeMirror-foldgutter-folded:after { - content: "\25B8"; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/hint/show-hint.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/hint/show-hint.css deleted file mode 100644 index 924e638f7f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/hint/show-hint.css +++ /dev/null @@ -1,38 +0,0 @@ -.CodeMirror-hints { - position: absolute; - z-index: 10; - overflow: hidden; - list-style: none; - - margin: 0; - padding: 2px; - - -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); - -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); - box-shadow: 2px 3px 5px rgba(0,0,0,.2); - border-radius: 3px; - border: 1px solid silver; - - background: white; - font-size: 90%; - font-family: monospace; - - max-height: 20em; - overflow-y: auto; -} - -.CodeMirror-hint { - margin: 0; - padding: 0 4px; - border-radius: 2px; - max-width: 19em; - overflow: hidden; - white-space: pre; - color: black; - cursor: pointer; -} - -li.CodeMirror-hint-active { - background: #08f; - color: white; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/json-lint.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/json-lint.js deleted file mode 100644 index 9dbb616b3b..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/json-lint.js +++ /dev/null @@ -1,31 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Depends on jsonlint.js from https://github.com/zaach/jsonlint - -// declare global: jsonlint - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("lint", "json", function(text) { - var found = []; - jsonlint.parseError = function(str, hash) { - var loc = hash.loc; - found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), - to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), - message: str}); - }; - try { jsonlint.parse(text); } - catch(e) {} - return found; -}); - -}); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.css deleted file mode 100644 index 414a9a0e06..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.css +++ /dev/null @@ -1,73 +0,0 @@ -/* The lint marker gutter */ -.CodeMirror-lint-markers { - width: 16px; -} - -.CodeMirror-lint-tooltip { - background-color: infobackground; - border: 1px solid black; - border-radius: 4px 4px 4px 4px; - color: infotext; - font-family: monospace; - font-size: 10pt; - overflow: hidden; - padding: 2px 5px; - position: fixed; - white-space: pre; - white-space: pre-wrap; - z-index: 100; - max-width: 600px; - opacity: 0; - transition: opacity .4s; - -moz-transition: opacity .4s; - -webkit-transition: opacity .4s; - -o-transition: opacity .4s; - -ms-transition: opacity .4s; -} - -.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning { - background-position: left bottom; - background-repeat: repeat-x; -} - -.CodeMirror-lint-mark-error { - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==") - ; -} - -.CodeMirror-lint-mark-warning { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII="); -} - -.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning { - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; - display: inline-block; - height: 16px; - width: 16px; - vertical-align: middle; - position: relative; -} - -.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning { - padding-left: 18px; - background-position: top left; - background-repeat: no-repeat; -} - -.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII="); -} - -.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII="); -} - -.CodeMirror-lint-marker-multiple { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC"); - background-repeat: no-repeat; - background-position: right bottom; - width: 100%; height: 100%; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.js deleted file mode 100644 index e3a452766d..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/addon/lint/lint.js +++ /dev/null @@ -1,239 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var GUTTER_ID = "CodeMirror-lint-markers"; - - function showTooltip(e, content) { - var tt = document.createElement("div"); - tt.className = "CodeMirror-lint-tooltip"; - tt.appendChild(content.cloneNode(true)); - document.body.appendChild(tt); - - function position(e) { - if (!tt.parentNode) return CodeMirror.off(document, "mousemove", position); - tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + "px"; - tt.style.left = (e.clientX + 5) + "px"; - } - CodeMirror.on(document, "mousemove", position); - position(e); - if (tt.style.opacity != null) tt.style.opacity = 1; - return tt; - } - function rm(elt) { - if (elt.parentNode) elt.parentNode.removeChild(elt); - } - function hideTooltip(tt) { - if (!tt.parentNode) return; - if (tt.style.opacity == null) rm(tt); - tt.style.opacity = 0; - setTimeout(function() { rm(tt); }, 600); - } - - function showTooltipFor(e, content, node) { - var tooltip = showTooltip(e, content); - function hide() { - CodeMirror.off(node, "mouseout", hide); - if (tooltip) { hideTooltip(tooltip); tooltip = null; } - } - var poll = setInterval(function() { - if (tooltip) for (var n = node;; n = n.parentNode) { - if (n && n.nodeType == 11) n = n.host; - if (n == document.body) return; - if (!n) { hide(); break; } - } - if (!tooltip) return clearInterval(poll); - }, 400); - CodeMirror.on(node, "mouseout", hide); - } - - function LintState(cm, options, hasGutter) { - this.marked = []; - this.options = options; - this.timeout = null; - this.hasGutter = hasGutter; - this.onMouseOver = function(e) { onMouseOver(cm, e); }; - this.waitingFor = 0 - } - - function parseOptions(_cm, options) { - if (options instanceof Function) return {getAnnotations: options}; - if (!options || options === true) options = {}; - return options; - } - - function clearMarks(cm) { - var state = cm.state.lint; - if (state.hasGutter) cm.clearGutter(GUTTER_ID); - for (var i = 0; i < state.marked.length; ++i) - state.marked[i].clear(); - state.marked.length = 0; - } - - function makeMarker(labels, severity, multiple, tooltips) { - var marker = document.createElement("div"), inner = marker; - marker.className = "CodeMirror-lint-marker-" + severity; - if (multiple) { - inner = marker.appendChild(document.createElement("div")); - inner.className = "CodeMirror-lint-marker-multiple"; - } - - if (tooltips != false) CodeMirror.on(inner, "mouseover", function(e) { - showTooltipFor(e, labels, inner); - }); - - return marker; - } - - function getMaxSeverity(a, b) { - if (a == "error") return a; - else return b; - } - - function groupByLine(annotations) { - var lines = []; - for (var i = 0; i < annotations.length; ++i) { - var ann = annotations[i], line = ann.from.line; - (lines[line] || (lines[line] = [])).push(ann); - } - return lines; - } - - function annotationTooltip(ann) { - var severity = ann.severity; - if (!severity) severity = "error"; - var tip = document.createElement("div"); - tip.className = "CodeMirror-lint-message-" + severity; - tip.appendChild(document.createTextNode(ann.message)); - return tip; - } - - function lintAsync(cm, getAnnotations, passOptions) { - var state = cm.state.lint - var id = ++state.waitingFor - function abort() { - id = -1 - cm.off("change", abort) - } - cm.on("change", abort) - getAnnotations(cm.getValue(), function(annotations, arg2) { - cm.off("change", abort) - if (state.waitingFor != id) return - if (arg2 && annotations instanceof CodeMirror) annotations = arg2 - updateLinting(cm, annotations) - }, passOptions, cm); - } - - function startLinting(cm) { - var state = cm.state.lint, options = state.options; - var passOptions = options.options || options; // Support deprecated passing of `options` property in options - var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), "lint"); - if (!getAnnotations) return; - if (options.async || getAnnotations.async) { - lintAsync(cm, getAnnotations, passOptions) - } else { - updateLinting(cm, getAnnotations(cm.getValue(), passOptions, cm)); - } - } - - function updateLinting(cm, annotationsNotSorted) { - clearMarks(cm); - var state = cm.state.lint, options = state.options; - - var annotations = groupByLine(annotationsNotSorted); - - for (var line = 0; line < annotations.length; ++line) { - var anns = annotations[line]; - if (!anns) continue; - - var maxSeverity = null; - var tipLabel = state.hasGutter && document.createDocumentFragment(); - - for (var i = 0; i < anns.length; ++i) { - var ann = anns[i]; - var severity = ann.severity; - if (!severity) severity = "error"; - maxSeverity = getMaxSeverity(maxSeverity, severity); - - if (options.formatAnnotation) ann = options.formatAnnotation(ann); - if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann)); - - if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, { - className: "CodeMirror-lint-mark-" + severity, - __annotation: ann - })); - } - - if (state.hasGutter) - cm.setGutterMarker(line, GUTTER_ID, makeMarker(tipLabel, maxSeverity, anns.length > 1, - state.options.tooltips)); - } - if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm); - } - - function onChange(cm) { - var state = cm.state.lint; - if (!state) return; - clearTimeout(state.timeout); - state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500); - } - - function popupTooltips(annotations, e) { - var target = e.target || e.srcElement; - var tooltip = document.createDocumentFragment(); - for (var i = 0; i < annotations.length; i++) { - var ann = annotations[i]; - tooltip.appendChild(annotationTooltip(ann)); - } - showTooltipFor(e, tooltip, target); - } - - function onMouseOver(cm, e) { - var target = e.target || e.srcElement; - if (!/\bCodeMirror-lint-mark-/.test(target.className)) return; - var box = target.getBoundingClientRect(), x = (box.left + box.right) / 2, y = (box.top + box.bottom) / 2; - var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y}, "client")); - - var annotations = []; - for (var i = 0; i < spans.length; ++i) { - var ann = spans[i].__annotation; - if (ann) annotations.push(ann); - } - if (annotations.length) popupTooltips(annotations, e); - } - - CodeMirror.defineOption("lint", false, function(cm, val, old) { - if (old && old != CodeMirror.Init) { - clearMarks(cm); - if (cm.state.lint.options.lintOnChange !== false) - cm.off("change", onChange); - CodeMirror.off(cm.getWrapperElement(), "mouseover", cm.state.lint.onMouseOver); - clearTimeout(cm.state.lint.timeout); - delete cm.state.lint; - } - - if (val) { - var gutters = cm.getOption("gutters"), hasLintGutter = false; - for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true; - var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter); - if (state.options.lintOnChange !== false) - cm.on("change", onChange); - if (state.options.tooltips != false) - CodeMirror.on(cm.getWrapperElement(), "mouseover", state.onMouseOver); - - startLinting(cm); - } - }); - - CodeMirror.defineExtension("performLint", function() { - if (this.state.lint) startLinting(this); - }); -}); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror-compressed.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror-compressed.js deleted file mode 100644 index 262fea7a85..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror-compressed.js +++ /dev/null @@ -1,26 +0,0 @@ -/* CodeMirror - Minified & Bundled - Generated on 2/22/2015 with http://codemirror.net/doc/compress.html - Version: 4.8 - - CodeMirror Library: - - codemirror.js - Modes: - - javascript.js - - xml.js - Add-ons: - - brace-fold.js - - comment-fold.js - - foldcode.js - - foldgutter.js - - markdown-fold.js - - matchbrackets.js - - show-hint.js - - xml-fold.js - */ - -!function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);this.CodeMirror=a()}}(function(){"use strict";function w(a,b){if(!(this instanceof w))return new w(a,b);this.options=b=b?Qg(b):{},Qg(ie,b,!1),J(b);var c=b.value;"string"==typeof c&&(c=new Lf(c,b.mode)),this.doc=c;var f=this.display=new x(a,c);f.wrapper.CodeMirror=this,F(this),D(this),b.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),b.autofocus&&!o&&_c(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new Gg,keySeq:null},d&&11>e&&setTimeout(Rg($c,this,!0),20),cd(this),ih(),Ac(this),this.curOp.forceUpdate=!0,Pf(this,c),b.autofocus&&!o||bh()==f.input?setTimeout(Rg(Hd,this),20):Id(this);for(var g in je)je.hasOwnProperty(g)&&je[g](this,b[g],le);P(this);for(var h=0;he&&(c.gutters.style.zIndex=-1,c.scroller.style.paddingRight=0),n&&(g.style.width="0px"),f||(c.scroller.draggable=!0),k&&(c.inputDiv.style.height="1px",c.inputDiv.style.position="absolute"),d&&8>e&&(c.scrollbarH.style.minHeight=c.scrollbarV.style.minWidth="18px"),a&&(a.appendChild?a.appendChild(c.wrapper):a(c.wrapper)),c.viewFrom=c.viewTo=b.first,c.view=[],c.externalMeasured=null,c.viewOffset=0,c.lastWrapHeight=c.lastWrapWidth=0,c.updateLineNumbers=null,c.lineNumWidth=c.lineNumInnerWidth=c.lineNumChars=null,c.prevInput="",c.alignWidgets=!1,c.pollingFast=!1,c.poll=new Gg,c.cachedCharWidth=c.cachedTextHeight=c.cachedPaddingH=null,c.inaccurateSelection=!1,c.maxLine=null,c.maxLineLength=0,c.maxLineChanged=!1,c.wheelDX=c.wheelDY=c.wheelStartX=c.wheelStartY=null,c.shift=!1,c.selForContextMenu=null}function y(a){a.doc.mode=w.getMode(a.options,a.doc.modeOption),z(a)}function z(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,Tb(a,100),a.state.modeGen++,a.curOp&&Pc(a)}function A(a){a.options.lineWrapping?(eh(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth=""):(dh(a.display.wrapper,"CodeMirror-wrap"),I(a)),C(a),Pc(a),kc(a),setTimeout(function(){M(a)},100)}function B(a){var b=wc(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/xc(a.display)-3);return function(e){if(ef(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;gb.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function J(a){var b=Ng(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function K(a){return a.display.scroller.clientHeight-a.display.wrapper.clientHeightb.clientWidth;f&&b.scrollWidth<=b.clientWidth+1&&d>0&&!b.hScrollbarTakesSpace&&(f=!1);var g=e>b.clientHeight;if(g?(c.scrollbarV.style.display="block",c.scrollbarV.style.bottom=f?d+"px":"0",c.scrollbarV.firstChild.style.height=Math.max(0,e-b.clientHeight+(b.barHeight||c.scrollbarV.clientHeight))+"px"):(c.scrollbarV.style.display="",c.scrollbarV.firstChild.style.height="0"),f?(c.scrollbarH.style.display="block",c.scrollbarH.style.right=g?d+"px":"0",c.scrollbarH.firstChild.style.width=b.scrollWidth-b.clientWidth+(b.barWidth||c.scrollbarH.clientWidth)+"px"):(c.scrollbarH.style.display="",c.scrollbarH.firstChild.style.width="0"),f&&g?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=c.scrollbarFiller.style.width=d+"px"):c.scrollbarFiller.style.display="",f&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d+"px",c.gutterFiller.style.width=c.gutters.offsetWidth+"px"):c.gutterFiller.style.display="",!a.state.checkedOverlayScrollbar&&b.clientHeight>0){if(0===d){var h=p&&!l?"12px":"18px";c.scrollbarV.style.minWidth=c.scrollbarH.style.minHeight=h;var i=function(b){pg(b)!=c.scrollbarV&&pg(b)!=c.scrollbarH&&Kc(a,gd)(b)};rg(c.scrollbarV,"mousedown",i),rg(c.scrollbarH,"mousedown",i)}a.state.checkedOverlayScrollbar=!0}}function N(a,b,c){var d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scrollTop;d=Math.floor(d-Xb(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=Vf(b,d),g=Vf(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;if(f>h)return{from:h,to:Vf(b,Wf(Qf(b,h))+a.wrapper.clientHeight)};if(Math.min(i,b.lastLine())>=g)return{from:Vf(b,Wf(Qf(b,i))-a.wrapper.clientHeight),to:i}}return{from:f,to:Math.max(g,f+1)}}function O(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=R(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g=c.viewFrom&&b.visible.to<=c.viewTo&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo)&&0==Vc(a))return!1;P(a)&&(Rc(a),b.dims=$(a));var e=d.first+d.size,f=Math.max(b.visible.from-a.options.viewportMargin,d.first),g=Math.min(e,b.visible.to+a.options.viewportMargin);c.viewFromg&&c.viewTo-g<20&&(g=Math.min(e,c.viewTo)),v&&(f=cf(a.doc,f),g=df(a.doc,g));var h=f!=c.viewFrom||g!=c.viewTo||c.lastWrapHeight!=b.wrapperHeight||c.lastWrapWidth!=b.wrapperWidth;Uc(a,f,g),c.viewOffset=Wf(Qf(a.doc,c.viewFrom)),a.display.mover.style.top=c.viewOffset+"px";var i=Vc(a);if(!h&&0==i&&!b.force&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo))return!1;var j=bh();return i>4&&(c.lineDiv.style.display="none"),_(a,c.updateLineNumbers,b.dims),i>4&&(c.lineDiv.style.display=""),j&&bh()!=j&&j.offsetHeight&&j.focus(),$g(c.cursorDiv),$g(c.selectionDiv),h&&(c.lastWrapHeight=b.wrapperHeight,c.lastWrapWidth=b.wrapperWidth,Tb(a,400)),c.updateLineNumbers=null,!0}function U(a,b){for(var c=b.force,d=b.viewport,e=!0;;e=!1){if(e&&a.options.lineWrapping&&b.oldScrollerWidth!=a.display.scroller.clientWidth)c=!0;else if(c=!1,d&&null!=d.top&&(d={top:Math.min(a.doc.height+Yb(a.display)-Bg-a.display.scroller.clientHeight,d.top)}),b.visible=N(a.display,a.doc,d),b.visible.from>=a.display.viewFrom&&b.visible.to<=a.display.viewTo)break;if(!T(a,b))break;Y(a);var f=L(a);Pb(a),W(a,f),M(a,f)}vg(a,"update",a),(a.display.viewFrom!=b.oldViewFrom||a.display.viewTo!=b.oldViewTo)&&vg(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo)}function V(a,b){var c=new S(a,b);if(T(a,c)){Y(a),U(a,c);var d=L(a);Pb(a),W(a,d),M(a,d)}}function W(a,b){a.display.sizer.style.minHeight=a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=Math.max(b.docHeight,b.clientHeight-Bg)+"px"}function X(a,b){a.display.sizer.offsetWidth+a.display.gutters.offsetWidthe){var i=g.node.offsetTop+g.node.offsetHeight;h=i-c,c=i}else{var j=g.node.getBoundingClientRect();h=j.bottom-j.top}var k=g.line.height-h;if(2>h&&(h=wc(b)),(k>.001||-.001>k)&&(Tf(g.line,h),Z(g.line),g.rest))for(var l=0;l=b&&m.lineNumber;m.changes&&(Ng(m.changes,"gutter")>-1&&(o=!1),ab(a,m,k,c)),o&&($g(m.lineNumber),m.lineNumber.appendChild(document.createTextNode(Q(a.options,k)))),h=m.node.nextSibling}else{var n=ib(a,m,k,c);g.insertBefore(n,h)}k+=m.size}for(;h;)h=i(h)}function ab(a,b,c,d){for(var e=0;ee&&(a.node.style.zIndex=2)),a.node}function cb(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=bb(a);a.background=c.insertBefore(Yg("div",null,b),c.firstChild)}}function db(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):zf(a,b)}function eb(a,b){var c=b.text.className,d=db(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,fb(b)):c&&(b.text.className=c)}function fb(a){cb(a),a.line.wrapClass?bb(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function gb(a,b,c,d){b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null);var e=b.line.gutterMarkers;if(a.options.lineNumbers||e){var f=bb(b),g=b.gutter=f.insertBefore(Yg("div",null,"CodeMirror-gutter-wrapper","left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px; width: "+d.gutterTotalWidth+"px"),b.text);if(b.line.gutterClass&&(g.className+=" "+b.line.gutterClass),!a.options.lineNumbers||e&&e["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(Yg("div",Q(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),e)for(var h=0;h=0){var g=qb(f.from(),e.from()),h=pb(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new sb(i?h:g,i?g:h))}}return new rb(a,b)}function ub(a,b){return new rb([new sb(a,b||a)],0)}function vb(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function wb(a,b){if(b.linec?mb(c,Qf(a,c).text.length):xb(b,Qf(a,b.line).text.length)}function xb(a,b){var c=a.ch;return null==c||c>b?mb(a.line,b):0>c?mb(a.line,0):a}function yb(a,b){return b>=a.first&&b=f.ch:j.to>f.ch))){if(d&&(tg(k,"beforeCursorEnter"),k.explicitlyCleared)){if(h.markedSpans){--i;continue}break}if(!k.atomic)continue;var l=k.find(0>g?-1:1);if(0==nb(l,f)&&(l.ch+=g,l.ch<0?l=l.line>a.first?wb(a,mb(l.line-1)):null:l.ch>h.text.length&&(l=l.lineb&&(b=0),b=Math.round(b),d=Math.round(d),f.appendChild(Yg("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?i-a:c)+"px; height: "+(d-b)+"px"))}function k(b,c,d){function m(c,d){return pc(a,mb(b,c),"div",f,d)}var k,l,f=Qf(e,b),g=f.text.length;return xh(Xf(f),c||0,null==d?g:d,function(a,b,e){var n,o,p,f=m(a,"left");if(a==b)n=f,o=p=f.left;else{if(n=m(b-1,"right"),"rtl"==e){var q=f;f=n,n=q}o=f.left,p=n.right}null==c&&0==a&&(o=h),n.top-f.top>3&&(j(o,f.top,null,f.bottom),o=h,f.bottoml.bottom||n.bottom==l.bottom&&n.right>l.right)&&(l=n),h+1>o&&(o=h),j(o,n.top,p-o,n.bottom)}),{start:k,end:l}}var d=a.display,e=a.doc,f=document.createDocumentFragment(),g=Zb(a.display),h=g.left,i=d.lineSpace.offsetWidth-g.right,l=b.from(),m=b.to();if(l.line==m.line)k(l.line,l.ch,m.ch);else{var n=Qf(e,l.line),o=Qf(e,m.line),p=af(n)==af(o),q=k(l.line,l.ch,p?n.text.length+1:null).end,r=k(m.line,p?0:null,m.ch).start;p&&(q.top0?b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(b.cursorDiv.style.visibility="hidden")}}function Tb(a,b){a.doc.mode.startState&&a.doc.frontier=a.display.viewTo)){var c=+new Date+a.options.workTime,d=re(b.mode,Wb(a,b.frontier)),e=[];b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(f){if(b.frontier>=a.display.viewFrom){var g=f.styles,h=tf(a,f,d,!0);f.styles=h.styles;var i=f.styleClasses,j=h.classes;j?f.styleClasses=j:i&&(f.styleClasses=null);for(var k=!g||g.length!=f.styles.length||i!=j&&(!i||!j||i.bgClass!=j.bgClass||i.textClass!=j.textClass),l=0;!k&&lc?(Tb(a,a.options.workDelay),!0):void 0}),e.length&&Jc(a,function(){for(var b=0;bg;--h){if(h<=f.first)return f.first;var i=Qf(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=Hg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function Wb(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=Vb(a,b,c),g=f>d.first&&Qf(d,f-1).stateAfter;return g=g?re(d.mode,g):se(d.mode),d.iter(f,b,function(c){vf(a,c.text,g);var h=f==b-1||0==f%5||f>=e.viewFrom&&f2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function _b(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;dc)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function ac(a,b){b=af(b);var c=Uf(b),d=a.display.externalMeasured=new Nc(a.doc,b,c);d.lineN=c;var e=d.built=zf(a,d);return d.text=e.pre,_g(a.display.lineMeasure,e.pre),d}function bc(a,b,c,d){return ec(a,dc(a,b),c,d)}function cc(a,b){if(b>=a.display.viewFrom&&b=c.lineN&&bc?(i=0,j=1,k="left"):n>c?(i=c-m,j=i+1):(l==g.length-3||c==n&&g[l+3]>c)&&(j=n-m,i=j-1,c>=n&&(k="right")),null!=i){if(h=g[l+2],m==n&&f==(h.insertLeft?"left":"right")&&(k=f),"left"==f&&0==i)for(;l&&g[l-2]==g[l-3]&&g[l-1].insertLeft;)h=g[(l-=3)+2],k="left";if("right"==f&&i==n-m)for(;ll;l++){for(;i&&Xg(b.line.text.charAt(m+i));)--i;for(;n>m+j&&Xg(b.line.text.charAt(m+j));)++j;if(d&&9>e&&0==i&&j==n-m)o=h.parentNode.getBoundingClientRect();else if(d&&a.options.lineWrapping){var p=Zg(h,i,j).getClientRects();o=p.length?p["right"==f?p.length-1:0]:fc}else o=Zg(h,i,j).getBoundingClientRect()||fc;if(o.left||o.right||0==i)break;j=i,i-=1,k="right"}d&&11>e&&(o=hc(a.display.measure,o))}else{i>0&&(k=f="right");var p;o=a.options.lineWrapping&&(p=h.getClientRects()).length>1?p["right"==f?p.length-1:0]:h.getBoundingClientRect()}if(d&&9>e&&!i&&(!o||!o.left&&!o.right)){var q=h.parentNode.getClientRects()[0];o=q?{left:q.left,right:q.left+xc(a.display),top:q.top,bottom:q.bottom}:fc}for(var r=o.top-b.rect.top,s=o.bottom-b.rect.top,t=(r+s)/2,u=b.view.measure.heights,l=0;lc.from?g(a-1):g(a,d)}d=d||Qf(a.doc,b.line),e||(e=dc(a,d));var i=Xf(d),j=b.ch;if(!i)return g(j);var k=Hh(i,j),l=h(j,k);return null!=Gh&&(l.other=h(j,Gh)),l}function rc(a,b){var c=0,b=wb(a.doc,b);a.options.lineWrapping||(c=xc(a.display)*b.ch);var d=Qf(a.doc,b.line),e=Wf(d)+Xb(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function sc(a,b,c,d){var e=mb(a,b);return e.xRel=d,c&&(e.outside=!0),e}function tc(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,0>c)return sc(d.first,0,!0,-1);var e=Vf(d,c),f=d.first+d.size-1;if(e>f)return sc(d.first+d.size-1,Qf(d,f).text.length,!0,1);0>b&&(b=0);for(var g=Qf(d,e);;){var h=uc(a,g,e,b,c),i=$e(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=Uf(g=j.to.line)}}function uc(a,b,c,d,e){function j(d){var e=qc(a,mb(c,d),"line",b,i);return g=!0,f>e.bottom?e.left-h:fq)return sc(c,n,r,1);for(;;){if(k?n==m||n==Jh(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);Xg(b.text.charAt(s));)++s;var u=sc(c,s,s==m?p:r,-1>t?-1:t>1?1:0);return u}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=Jh(b,w,1)}var y=j(w);y>d?(n=w,q=y,(r=g)&&(q+=1e3),l=v):(m=w,o=y,p=g,l-=v)}}function wc(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==vc){vc=Yg("pre");for(var b=0;49>b;++b)vc.appendChild(document.createTextNode("x")),vc.appendChild(Yg("br"));vc.appendChild(document.createTextNode("x"))}_g(a.measure,vc);var c=vc.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),$g(a.measure),c||1}function xc(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=Yg("span","xxxxxxxxxx"),c=Yg("pre",[b]);_g(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function Ac(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++zc},yc?yc.ops.push(a.curOp):a.curOp.ownsGroup=yc={ops:[a.curOp],delayedCallbacks:[]}}function Bc(a){var b=a.delayedCallbacks,c=0;do{for(;c=c.viewTo)||c.maxLineChanged&&b.options.lineWrapping,a.update=a.mustUpdate&&new S(b,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function Fc(a){a.updatedDisplay=a.mustUpdate&&T(a.cm,a.update)}function Gc(a){var b=a.cm,c=b.display;a.updatedDisplay&&Y(b),a.barMeasure=L(b),c.maxLineChanged&&!b.options.lineWrapping&&(a.adjustWidthTo=bc(b,c.maxLine,c.maxLine.text.length).left+3,a.maxScrollLeft=Math.max(0,c.sizer.offsetLeft+a.adjustWidthTo+Bg-c.scroller.clientWidth)),(a.updatedDisplay||a.selectionChanged)&&(a.newSelectionNodes=Nb(b))}function Hc(a){var b=a.cm;null!=a.adjustWidthTo&&(b.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeft1&&M(b),a.updatedDisplay&&U(b,a.update),null==c.wheelStartX||null==a.scrollTop&&null==a.scrollLeft&&!a.scrollToPos||(c.wheelStartX=c.wheelStartY=null),null!=a.scrollTop&&(c.scroller.scrollTop!=a.scrollTop||a.forceScroll)){var e=Math.max(0,Math.min(c.scroller.scrollHeight-c.scroller.clientHeight,a.scrollTop));c.scroller.scrollTop=c.scrollbarV.scrollTop=d.scrollTop=e}if(null!=a.scrollLeft&&(c.scroller.scrollLeft!=a.scrollLeft||a.forceScroll)){var g=Math.max(0,Math.min(c.scroller.scrollWidth-c.scroller.clientWidth,a.scrollLeft));c.scroller.scrollLeft=c.scrollbarH.scrollLeft=d.scrollLeft=g,O(b)}if(a.scrollToPos){var h=Zd(b,wb(d,a.scrollToPos.from),wb(d,a.scrollToPos.to),a.scrollToPos.margin);a.scrollToPos.isCursor&&b.state.focused&&Yd(b,h)}var i=a.maybeHiddenMarkers,j=a.maybeUnhiddenMarkers;if(i)for(var k=0;ka.barMeasure.clientWidth&&a.barMeasure.scrollWidthf;f=e){var g=new Nc(a.doc,Qf(a.doc,f),f);e=f+g.size,d.push(g)}return d}function Pc(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&cb)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)v&&cf(a.doc,b)e.viewFrom?Rc(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)Rc(a);else if(b<=e.viewFrom){var f=Tc(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Rc(a)}else if(c>=e.viewTo){var f=Tc(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):Rc(a)}else{var g=Tc(a,b,b,-1),h=Tc(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(Oc(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):Rc(a)}var i=e.externalMeasured;i&&(c=e.lineN&&b=d.viewTo)){var f=d.view[Sc(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==Ng(g,c)&&g.push(c)}}}function Rc(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Sc(a,b){if(b>=a.display.viewTo)return null;if(b-=a.display.viewFrom,0>b)return null;for(var c=a.display.view,d=0;db)return d}function Tc(a,b,c,d){var f,e=Sc(a,b),g=a.display.view;if(!v||c==a.doc.first+a.doc.size)return{index:e,lineN:c};for(var h=0,i=a.display.viewFrom;e>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(e==g.length-1)return null;f=i+g[e].size-b,e++}else f=i-b;b+=f,c+=f}for(;cf(a.doc,c)!=c;){if(e==(0>d?0:g.length-1))return null;c+=d*g[e-(0>d?1:0)].size,e+=d}return{index:e,lineN:c}}function Uc(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=Oc(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=Oc(a,b,d.viewFrom).concat(d.view):d.viewFromc&&(d.view=d.view.slice(0,Sc(a,c)))),d.viewTo=c}function Vc(a){for(var b=a.display.view,c=0,d=0;d=9&&a.display.inputHasSelection===g||p&&/[\uf700-\uf7ff]/.test(g))return $c(a),!1;var h=!a.curOp;h&&Ac(a),a.display.shift=!1,8203!=g.charCodeAt(0)||f.sel!=a.display.selForContextMenu||c||(c="\u200b");for(var i=0,j=Math.min(c.length,g.length);j>i&&c.charCodeAt(i)==g.charCodeAt(i);)++i;var k=g.slice(i),l=rh(k),m=null;a.state.pasteIncoming&&f.sel.ranges.length>1&&(Yc&&Yc.join("\n")==k?m=0==f.sel.ranges.length%Yc.length&&Og(Yc,rh):l.length==f.sel.ranges.length&&(m=Og(l,function(a){return[a]})));for(var n=f.sel.ranges.length-1;n>=0;n--){var o=f.sel.ranges[n],q=o.from(),r=o.to();i-1){de(a,v.line,"smart");break}}else u.electricInput&&u.electricInput.test(Qf(f,v.line).text.slice(0,v.ch))&&de(a,v.line,"smart")}}return be(a),a.curOp.updateInput=s,a.curOp.typing=!0,g.length>1e3||g.indexOf("\n")>-1?b.value=a.display.prevInput="":a.display.prevInput=g,h&&Cc(a),a.state.pasteIncoming=a.state.cutIncoming=!1,!0}function $c(a,b){var c,f,g=a.doc;if(a.somethingSelected()){a.display.prevInput="";var h=g.sel.primary();c=th&&(h.to().line-h.from().line>100||(f=a.getSelection()).length>1e3);var i=c?"-":f||a.getSelection();a.display.input.value=i,a.state.focused&&Mg(a.display.input),d&&e>=9&&(a.display.inputHasSelection=i)}else b||(a.display.prevInput=a.display.input.value="",d&&e>=9&&(a.display.inputHasSelection=null));a.display.inaccurateSelection=c}function _c(a){"nocursor"==a.options.readOnly||o&&bh()==a.display.input||a.display.input.focus()}function ad(a){a.state.focused||(_c(a),Hd(a))}function bd(a){return a.options.readOnly||a.doc.cantEdit}function cd(a){function c(){a.state.focused&&setTimeout(Rg(_c,a),0)}function g(b){xg(a,b)||og(b)}function h(c){if(a.somethingSelected())Yc=a.getSelections(),b.inaccurateSelection&&(b.prevInput="",b.inaccurateSelection=!1,b.input.value=Yc.join("\n"),Mg(b.input));else{for(var d=[],e=[],f=0;fe?rg(b.scroller,"dblclick",Kc(a,function(b){if(!xg(a,b)){var c=fd(a,b);if(c&&!nd(a,b)&&!ed(a.display,b)){lg(b);var d=a.findWordAt(c);Bb(a.doc,d.anchor,d.head)}}})):rg(b.scroller,"dblclick",function(b){xg(a,b)||lg(b)}),rg(b.lineSpace,"selectstart",function(a){ed(b,a)||lg(a)}),t||rg(b.scroller,"contextmenu",function(b){Jd(a,b)}),rg(b.scroller,"scroll",function(){b.scroller.clientHeight&&(rd(a,b.scroller.scrollTop),sd(a,b.scroller.scrollLeft,!0),tg(a,"scroll",a))}),rg(b.scrollbarV,"scroll",function(){b.scroller.clientHeight&&rd(a,b.scrollbarV.scrollTop)}),rg(b.scrollbarH,"scroll",function(){b.scroller.clientHeight&&sd(a,b.scrollbarH.scrollLeft)}),rg(b.scroller,"mousewheel",function(b){vd(a,b)}),rg(b.scroller,"DOMMouseScroll",function(b){vd(a,b)}),rg(b.scrollbarH,"mousedown",c),rg(b.scrollbarV,"mousedown",c),rg(b.wrapper,"scroll",function(){b.wrapper.scrollTop=b.wrapper.scrollLeft=0}),rg(b.input,"keyup",function(b){Fd.call(a,b)}),rg(b.input,"input",function(){d&&e>=9&&a.display.inputHasSelection&&(a.display.inputHasSelection=null),Xc(a)}),rg(b.input,"keydown",Kc(a,Dd)),rg(b.input,"keypress",Kc(a,Gd)),rg(b.input,"focus",Rg(Hd,a)),rg(b.input,"blur",Rg(Id,a)),a.options.dragDrop&&(rg(b.scroller,"dragstart",function(b){qd(a,b)}),rg(b.scroller,"dragenter",g),rg(b.scroller,"dragover",g),rg(b.scroller,"drop",Kc(a,pd))),rg(b.scroller,"paste",function(c){ed(b,c)||(a.state.pasteIncoming=!0,_c(a),Xc(a))}),rg(b.input,"paste",function(){if(f&&!a.state.fakedLastChar&&!(new Date-a.state.lastMiddleDown<200)){var c=b.input.selectionStart,d=b.input.selectionEnd;b.input.value+="$",b.input.selectionEnd=d,b.input.selectionStart=c,a.state.fakedLastChar=!0}a.state.pasteIncoming=!0,Xc(a)}),rg(b.input,"cut",h),rg(b.input,"copy",h),k&&rg(b.sizer,"mouseup",function(){bh()==b.input&&b.input.blur(),_c(a)})}function dd(a){var b=a.display;(b.lastWrapHeight!=b.wrapper.clientHeight||b.lastWrapWidth!=b.wrapper.clientWidth)&&(b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,a.setSize())}function ed(a,b){for(var c=pg(b);c!=a.wrapper;c=c.parentNode)if(!c||c.ignoreEvents||c.parentNode==a.sizer&&c!=a.mover)return!0}function fd(a,b,c,d){var e=a.display;if(!c){var f=pg(b);if(f==e.scrollbarH||f==e.scrollbarV||f==e.scrollbarFiller||f==e.gutterFiller)return null}var g,h,i=e.lineSpace.getBoundingClientRect();try{g=b.clientX-i.left,h=b.clientY-i.top}catch(b){return null}var k,j=tc(a,g,h);if(d&&1==j.xRel&&(k=Qf(a.doc,j.line).text).length==j.ch){var l=Hg(k,k.length,a.options.tabSize)-k.length;j=mb(j.line,Math.max(0,Math.round((g-Zb(a.display).left)/xc(a.display))-l))}return j}function gd(a){if(!xg(this,a)){var b=this,c=b.display;if(c.shift=a.shiftKey,ed(c,a))return f||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)),void 0;if(!nd(b,a)){var d=fd(b,a);switch(window.focus(),qg(a)){case 1:d?jd(b,a,d):pg(a)==c.scroller&&lg(a);break;case 2:f&&(b.state.lastMiddleDown=+new Date),d&&Bb(b.doc,d),setTimeout(Rg(_c,b),20),lg(a);break;case 3:t&&Jd(b,a)}}}}function jd(a,b,c){setTimeout(Rg(ad,a),0);var e,d=+new Date;id&&id.time>d-400&&0==nb(id.pos,c)?e="triple":hd&&hd.time>d-400&&0==nb(hd.pos,c)?(e="double",id={time:d,pos:c}):(e="single",hd={time:d,pos:c});var f=a.doc.sel,g=p?b.metaKey:b.ctrlKey;a.options.dragDrop&&kh&&!bd(a)&&"single"==e&&f.contains(c)>-1&&f.somethingSelected()?kd(a,b,c,g):ld(a,b,c,e,g)}function kd(a,b,c,g){var h=a.display,i=Kc(a,function(j){f&&(h.scroller.draggable=!1),a.state.draggingText=!1,sg(document,"mouseup",i),sg(h.scroller,"drop",i),Math.abs(b.clientX-j.clientX)+Math.abs(b.clientY-j.clientY)<10&&(lg(j),g||Bb(a.doc,c),_c(a),d&&9==e&&setTimeout(function(){document.body.focus(),_c(a)},20))});f&&(h.scroller.draggable=!0),a.state.draggingText=i,h.scroller.dragDrop&&h.scroller.dragDrop(),rg(document,"mouseup",i),rg(h.scroller,"drop",i)}function ld(a,b,c,d,e){function n(b){if(0!=nb(m,b))if(m=b,"rect"==d){for(var e=[],f=a.options.tabSize,k=Hg(Qf(g,c.line).text,c.ch,f),l=Hg(Qf(g,b.line).text,b.ch,f),n=Math.min(k,l),o=Math.max(k,l),p=Math.min(c.line,b.line),q=Math.min(a.lastLine(),Math.max(c.line,b.line));q>=p;p++){var r=Qf(g,p).text,s=Ig(r,n,f);n==o?e.push(new sb(mb(p,s),mb(p,s))):r.length>s&&e.push(new sb(mb(p,s),mb(p,Ig(r,o,f))))}e.length||e.push(new sb(c,c)),Hb(g,tb(j.ranges.slice(0,i).concat(e),i),{origin:"*mouse",scroll:!1}),a.scrollIntoView(b)}else{var t=h,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=a.findWordAt(b);else var w=new sb(mb(b.line,0),wb(g,mb(b.line+1,0)));nb(w.anchor,u)>0?(v=w.head,u=qb(t.from(),w.anchor)):(v=w.anchor,u=pb(t.to(),w.head))}var e=j.ranges.slice(0);e[i]=new sb(wb(g,u),v),Hb(g,tb(e,i),Eg)}}function q(b){var c=++p,e=fd(a,b,!0,"rect"==d);if(e)if(0!=nb(e,m)){ad(a),n(e);var h=N(f,g);(e.line>=h.to||e.lineo.bottom?20:0;i&&setTimeout(Kc(a,function(){p==c&&(f.scroller.scrollTop+=i,q(b))}),50)}}function r(b){p=1/0,lg(b),_c(a),sg(document,"mousemove",s),sg(document,"mouseup",t),g.history.lastSelOrigin=null}var f=a.display,g=a.doc;lg(b);var h,i,j=g.sel;if(e&&!b.shiftKey?(i=g.sel.contains(c),h=i>-1?g.sel.ranges[i]:new sb(c,c)):h=g.sel.primary(),b.altKey)d="rect",e||(h=new sb(c,c)),c=fd(a,b,!0,!0),i=-1;else if("double"==d){var k=a.findWordAt(c);h=a.display.shift||g.extend?Ab(g,h,k.anchor,k.head):k}else if("triple"==d){var l=new sb(mb(c.line,0),wb(g,mb(c.line+1,0)));h=a.display.shift||g.extend?Ab(g,h,l.anchor,l.head):l}else h=Ab(g,h,c);e?i>-1?Db(g,i,h,Eg):(i=g.sel.ranges.length,Hb(g,tb(g.sel.ranges.concat([h]),i),{scroll:!1,origin:"*mouse"})):(i=0,Hb(g,new rb([h],0),Eg),j=g.sel);var m=c,o=f.wrapper.getBoundingClientRect(),p=0,s=Kc(a,function(a){qg(a)?q(a):r(a)}),t=Kc(a,r);rg(document,"mousemove",s),rg(document,"mouseup",t)}function md(a,b,c,d,e){try{var f=b.clientX,g=b.clientY}catch(b){return!1}if(f>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&lg(b);var h=a.display,i=h.lineDiv.getBoundingClientRect();if(g>i.bottom||!zg(a,c))return ng(b);g-=i.top-h.viewOffset;for(var j=0;j=f){var l=Vf(a.doc,g),m=a.options.gutters[j];return e(a,c,a,l,m,b),ng(b)}}}function nd(a,b){return md(a,b,"gutterClick",!0,vg)}function pd(a){var b=this;if(!xg(b,a)&&!ed(b.display,a)){lg(a),d&&(od=+new Date);var c=fd(b,a,!0),e=a.dataTransfer.files;if(c&&!bd(b))if(e&&e.length&&window.FileReader&&window.File)for(var f=e.length,g=Array(f),h=0,i=function(a,d){var e=new FileReader;e.onload=Kc(b,function(){if(g[d]=e.result,++h==f){c=wb(b.doc,c);var a={from:c,to:c,text:rh(g.join("\n")),origin:"paste"};Rd(b.doc,a),Gb(b.doc,ub(c,Ld(a)))}}),e.readAsText(a)},j=0;f>j;++j)i(e[j],j);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),setTimeout(Rg(_c,b),20),void 0;try{var g=a.dataTransfer.getData("Text");if(g){if(b.state.draggingText&&!(p?a.metaKey:a.ctrlKey))var k=b.listSelections();if(Ib(b.doc,ub(c,c)),k)for(var j=0;jh.clientWidth||e&&h.scrollHeight>h.clientHeight){if(e&&p&&f)a:for(var j=c.target,k=g.view;j!=h;j=j.parentNode)for(var l=0;lm?n=Math.max(0,n+m-50):o=Math.min(b.doc.height,o+m+50),V(b,{top:n,bottom:o})}20>td&&(null==g.wheelStartX?(g.wheelStartX=h.scrollLeft,g.wheelStartY=h.scrollTop,g.wheelDX=d,g.wheelDY=e,setTimeout(function(){if(null!=g.wheelStartX){var a=h.scrollLeft-g.wheelStartX,b=h.scrollTop-g.wheelStartY,c=b&&g.wheelDY&&b/g.wheelDY||a&&g.wheelDX&&a/g.wheelDX;g.wheelStartX=g.wheelStartY=null,c&&(ud=(ud*td+c)/(td+1),++td)}},200)):(g.wheelDX+=d,g.wheelDY+=e))}}function wd(a,b,c){if("string"==typeof b&&(b=te[b],!b))return!1;a.display.pollingFast&&Zc(a)&&(a.display.pollingFast=!1);var d=a.display.shift,e=!1;try{bd(a)&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=Cg}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function xd(a,b,c){for(var d=0;de&&27==a.keyCode&&(a.returnValue=!1);var c=a.keyCode;b.display.shift=16==c||a.shiftKey;var f=Ad(b,a);i&&(Cd=f?c:null,!f&&88==c&&!th&&(p?a.metaKey:a.ctrlKey)&&b.replaceSelection("",null,"cut")),18!=c||/\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className)||Ed(b)}}function Ed(a){function c(a){18!=a.keyCode&&a.altKey||(dh(b,"CodeMirror-crosshair"),sg(document,"keyup",c),sg(document,"mouseover",c))}var b=a.display.lineDiv;eh(b,"CodeMirror-crosshair"),rg(document,"keyup",c),rg(document,"mouseover",c)}function Fd(a){16==a.keyCode&&(this.doc.sel.shift=!1),xg(this,a)}function Gd(a){var b=this;if(!(xg(b,a)||a.ctrlKey&&!a.altKey||p&&a.metaKey)){var c=a.keyCode,f=a.charCode;if(i&&c==Cd)return Cd=null,lg(a),void 0;if(!(i&&(!a.which||a.which<10)||k)||!Ad(b,a)){var g=String.fromCharCode(null==f?c:f);Bd(b,a,g)||(d&&e>=9&&(b.display.inputHasSelection=null),Xc(b))}}}function Hd(a){"nocursor"!=a.options.readOnly&&(a.state.focused||(tg(a,"focus",a),a.state.focused=!0,eh(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||($c(a),f&&setTimeout(Rg($c,a,!0),0))),Wc(a),Sb(a))}function Id(a){a.state.focused&&(tg(a,"blur",a),a.state.focused=!1,dh(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150)}function Jd(a,b){function m(){if(null!=c.input.selectionStart){var b=a.somethingSelected(),d=c.input.value="\u200b"+(b?c.input.value:"");c.prevInput=b?"":"\u200b",c.input.selectionStart=1,c.input.selectionEnd=d.length,c.selForContextMenu=a.doc.sel}}function n(){if(c.inputDiv.style.position="relative",c.input.style.cssText=k,d&&9>e&&(c.scrollbarV.scrollTop=c.scroller.scrollTop=h),Wc(a),null!=c.input.selectionStart){(!d||d&&9>e)&&m();var b=0,f=function(){c.selForContextMenu==a.doc.sel&&0==c.input.selectionStart?Kc(a,te.selectAll)(a):b++<10?c.detectingSelectAll=setTimeout(f,500):$c(a)};c.detectingSelectAll=setTimeout(f,200)}}if(!xg(a,b,"contextmenu")){var c=a.display;if(!ed(c,b)&&!Kd(a,b)){var g=fd(a,b),h=c.scroller.scrollTop;if(g&&!i){var j=a.options.resetSelectionOnContextMenu;j&&-1==a.doc.sel.contains(g)&&Kc(a,Hb)(a.doc,ub(g),Dg);var k=c.input.style.cssText;if(c.inputDiv.style.position="absolute",c.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(b.clientY-5)+"px; left: "+(b.clientX-5)+"px; z-index: 1000; background: "+(d?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",f)var l=window.scrollY;if(_c(a),f&&window.scrollTo(null,l),$c(a),a.somethingSelected()||(c.input.value=c.prevInput=" "),c.selForContextMenu=a.doc.sel,clearTimeout(c.detectingSelectAll),d&&e>=9&&m(),t){og(b);var o=function(){sg(window,"mouseup",o),setTimeout(n,20)};rg(window,"mouseup",o)}else setTimeout(n,50)}}}}function Kd(a,b){return zg(a,"gutterContextMenu")?md(a,b,"gutterContextMenu",!1,tg):!1}function Md(a,b){if(nb(a,b.from)<0)return a;if(nb(a,b.to)<=0)return Ld(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=Ld(b).ch-b.to.ch),mb(c,d)}function Nd(a,b){for(var c=[],d=0;d=0;--e)Sd(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else Sd(a,b)}}function Sd(a,b){if(1!=b.text.length||""!=b.text[0]||0!=nb(b.from,b.to)){var c=Nd(a,b);ag(a,b,c,a.cm?a.cm.curOp.id:0/0),Vd(a,b,c,Pe(a,b));var d=[];Of(a,function(a,c){c||-1!=Ng(d,a.history)||(kg(a.history,b),d.push(a.history)),Vd(a,b,null,Pe(a,b))})}}function Td(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var e,d=a.history,f=a.sel,g="undo"==b?d.done:d.undone,h="undo"==b?d.undone:d.done,i=0;i=0;--i){var l=e.changes[i];if(l.origin=b,k&&!Qd(a,l,!1))return g.length=0,void 0;j.push(Zf(a,l));var m=i?Nd(a,l):Lg(g);Vd(a,l,m,Re(a,l)),!i&&a.cm&&a.cm.scrollIntoView({from:l.from,to:Ld(l)});var n=[];Of(a,function(a,b){b||-1!=Ng(n,a.history)||(kg(a.history,l),n.push(a.history)),Vd(a,l,null,Re(a,l))})}}}}function Ud(a,b){if(0!=b&&(a.first+=b,a.sel=new rb(Og(a.sel.ranges,function(a){return new sb(mb(a.anchor.line+b,a.anchor.ch),mb(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){Pc(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;da.lastLine())){if(b.from.linef&&(b={from:b.from,to:mb(f,Qf(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=Rf(a,b.from,b.to),c||(c=Nd(a,b)),a.cm?Wd(a.cm,b,d):Hf(a,b,d),Ib(a,c,Dg)}}function Wd(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=Uf(af(Qf(d,f.line))),d.iter(i,g.line+1,function(a){return a==e.maxLine?(h=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&yg(a),Hf(d,b,c,B(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,function(a){var b=H(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)}),h&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,f.line),Tb(a,400);var j=b.text.length-(g.line-f.line)-1;f.line!=g.line||1!=b.text.length||Gf(a.doc,b)?Pc(a,f.line,g.line+1,j):Qc(a,f.line,"text");var k=zg(a,"changes"),l=zg(a,"change");if(l||k){var m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&vg(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function Xd(a,b,c,d,e){if(d||(d=c),nb(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=rh(b)),Rd(a,{from:c,to:d,text:b,origin:e})}function Yd(a,b){if(!xg(a,"scrollCursorIntoView")){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!m){var f=Yg("div","\u200b",null,"position: absolute; top: "+(b.top-c.viewOffset-Xb(a.display))+"px; height: "+(b.bottom-b.top+Bg)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}}function Zd(a,b,c,d){null==d&&(d=0);for(var e=0;5>e;e++){var f=!1,g=qc(a,b),h=c&&c!=b?qc(a,c):g,i=_d(a,Math.min(g.left,h.left),Math.min(g.top,h.top)-d,Math.max(g.left,h.left),Math.max(g.bottom,h.bottom)+d),j=a.doc.scrollTop,k=a.doc.scrollLeft;if(null!=i.scrollTop&&(rd(a,i.scrollTop),Math.abs(a.doc.scrollTop-j)>1&&(f=!0)),null!=i.scrollLeft&&(sd(a,i.scrollLeft),Math.abs(a.doc.scrollLeft-k)>1&&(f=!0)),!f)return g}}function $d(a,b,c,d,e){var f=_d(a,b,c,d,e);null!=f.scrollTop&&rd(a,f.scrollTop),null!=f.scrollLeft&&sd(a,f.scrollLeft)}function _d(a,b,c,d,e){var f=a.display,g=wc(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=f.scroller.clientHeight-Bg,j={};e-c>i&&(e=c+i);var k=a.doc.height+Yb(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=f.scroller.clientWidth-Bg-f.gutters.offsetWidth,q=d-b>p;return q&&(d=b+p),10>b?j.scrollLeft=0:o>b?j.scrollLeft=Math.max(0,b-(q?0:10)):d>p+o-3&&(j.scrollLeft=d+(q?0:10)-p),j}function ae(a,b,c){(null!=b||null!=c)&&ce(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function be(a){ce(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?mb(b.line,b.ch-1):b,d=mb(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function ce(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=rc(a,b.from),d=rc(a,b.to),e=_d(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(e.scrollLeft,e.scrollTop)}}function de(a,b,c,d){var f,e=a.doc;null==c&&(c="add"),"smart"==c&&(e.mode.indent?f=Wb(a,b):c="prev");var g=a.options.tabSize,h=Qf(e,b),i=Hg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var k,j=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(k=e.mode.indent(f,h.text.slice(j.length),h.text),k==Cg||k>150)){if(!d)return;c="prev"}}else k=0,c="not";"prev"==c?k=b>e.first?Hg(Qf(e,b-1).text,null,g):0:"add"==c?k=i+a.options.indentUnit:"subtract"==c?k=i-a.options.indentUnit:"number"==typeof c&&(k=i+c),k=Math.max(0,k);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(k/g);n;--n)m+=g,l+=" ";if(k>m&&(l+=Kg(k-m)),l!=j)Xd(e,l,mb(b,0),mb(b,j.length),"+input");else for(var n=0;n=0;b--)Xd(a.doc,"",d[b].from,d[b].to,"+delete");be(a)})}function ge(a,b,c,d,e){function k(){var b=f+c;return b=a.first+a.size?j=!1:(f=b,i=Qf(a,b))}function l(a){var b=(e?Jh:Kh)(i,g,c,!0);if(null==b){if(a||!k())return j=!1;g=e?(0>c?Bh:Ah)(i):0>c?i.text.length:0}else g=b;return!0}var f=b.line,g=b.ch,h=c,i=Qf(a,f),j=!0;if("char"==d)l();else if("column"==d)l(!0);else if("word"==d||"group"==d)for(var m=null,n="group"==d,o=a.cm&&a.cm.getHelper(b,"wordChars"),p=!0;!(0>c)||l(!p);p=!1){var q=i.text.charAt(g)||"\n",r=Ug(q,o)?"w":n&&"\n"==q?"n":!n||/\s/.test(q)?null:"p";if(!n||p||r||(r="s"),m&&m!=r){0>c&&(c=1,l());break}if(r&&(m=r),c>0&&!l(!p))break}var s=Mb(a,mb(f,g),h,!0);return j||(s.hitSide=!0),s}function he(a,b,c,d){var g,e=a.doc,f=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);g=b.top+c*(h-(0>c?1.5:.5)*wc(a.display))}else"line"==d&&(g=c>0?b.bottom+3:b.top-3);for(;;){var i=tc(a,f,g);if(!i.outside)break;if(0>c?0>=g:g>=e.height){i.hitSide=!0;break}g+=5*c}return i}function ke(a,b,c,d){w.defaults[a]=b,c&&(je[a]=d?function(a,b,d){d!=le&&c(a,b,d)}:c)}function ve(a){for(var c,d,e,f,b=a.split(/-(?!$)/),a=b[b.length-1],g=0;g0||0==g&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=Yg("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||(f.widgetNode.ignoreEvents=!0),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(_e(a,b.line,b,c,f)||b.line!=c.line&&_e(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one"); -v=!0}f.addToHistory&&ag(a,{from:b,to:c,origin:"markText"},a.sel,0/0);var j,h=b.line,i=a.cm;if(a.iter(h,c.line+1,function(a){i&&f.collapsed&&!i.options.lineWrapping&&af(a)==i.display.maxLine&&(j=!0),f.collapsed&&h!=b.line&&Tf(a,0),Me(a,new Je(f,h==b.line?b.ch:null,h==c.line?c.ch:null)),++h}),f.collapsed&&a.iter(b.line,c.line+1,function(b){ef(a,b)&&Tf(b,0)}),f.clearOnEnter&&rg(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(u=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++Ce,f.atomic=!0),i){if(j&&(i.curOp.updateMaxLine=!0),f.collapsed)Pc(i,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle)for(var k=b.line;k<=c.line;k++)Qc(i,k,"text");f.atomic&&Kb(i.doc),vg(i,"markerAdded",i,f)}return f}function Fe(a,b,c,d,e){d=Qg(d),d.shared=!1;var f=[De(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Of(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(De(a,wb(a,b),wb(a,c),d,e));for(var i=0;i=b:f.to>b);(e||(e=[])).push(new Je(g,f.from,i?null:f.to))}}return e}function Oe(a,b,c){if(a)for(var e,d=0;d=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from0&&h)for(var l=0;ll;++l)o.push(q);o.push(i)}return o}function Qe(a){for(var b=0;b0)){var k=[i,1],l=nb(j.from,h.from),m=nb(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function Te(a){var b=a.markedSpans;if(b){for(var c=0;c=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(nb(j.to,c)>0||i.marker.inclusiveRight&&e.inclusiveLeft)||k>=0&&(nb(j.from,d)<0||i.marker.inclusiveLeft&&e.inclusiveRight)))return!0}}}function af(a){for(var b;b=Ze(a);)a=b.find(-1,!0).line;return a}function bf(a){for(var b,c;b=$e(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function cf(a,b){var c=Qf(a,b),d=af(c);return c==d?b:Uf(d)}function df(a,b){if(b>a.lastLine())return b;var d,c=Qf(a,b);if(!ef(a,c))return b;for(;d=$e(c);)c=d.find(1,!0).line;return Uf(c)+1}function ef(a,b){var c=v&&b.markedSpans;if(c)for(var d,e=0;ee;e++){d&&(d[0]=w.innerMode(a,c).mode);var f=a.token(b,c);if(b.pos>b.start)return f}throw new Error("Mode "+a.name+" failed to advance stream.")}function rf(a,b,c,d){function e(a){return{start:k.start,end:k.pos,string:k.current(),type:h||null,state:a?re(f.mode,j):j}}var h,f=a.doc,g=f.mode;b=wb(f,b);var l,i=Qf(f,b.line),j=Wb(a,b.line,c),k=new Ae(i.text,a.options.tabSize);for(d&&(l=[]);(d||k.posa.options.maxHighlightLength?(h=!1,g&&vf(a,b,d,k.pos),k.pos=b.length,l=null):l=of(qf(c,k,d,m),f),m){var n=m[0].name;n&&(l="m-"+(l?n+" "+l:n))}h&&j==l||(ij;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function uf(a,b,c){if(!b.styles||b.styles[0]!=a.state.modeGen){var d=tf(a,b,b.stateAfter=Wb(a,Uf(b)));b.styles=d.styles,d.classes?b.styleClasses=d.classes:b.styleClasses&&(b.styleClasses=null),c===a.doc.frontier&&a.doc.frontier++}return b.styles}function vf(a,b,c,d){var e=a.doc.mode,f=new Ae(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&pf(e,c);!f.eol()&&f.pos<=a.options.maxHighlightLength;)qf(e,f,c),f.start=f.pos}function yf(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?xf:wf;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function zf(a,b){var c=Yg("span",null,null,f?"padding-right: .1px":null),e={pre:Yg("pre",[c]),content:c,col:0,pos:0,cm:a};b.measure={};for(var g=0;g<=(b.rest?b.rest.length:0);g++){var i,h=g?b.rest[g-1]:b.line;e.pos=0,e.addToken=Bf,(d||f)&&a.getOption("lineWrapping")&&(e.addToken=Cf(e.addToken)),qh(a.display.measure)&&(i=Xf(h))&&(e.addToken=Df(e.addToken,i)),e.map=[];var j=b!=a.display.externalMeasured&&Uf(h);Ff(h,e,uf(a,h,j)),h.styleClasses&&(h.styleClasses.bgClass&&(e.bgClass=fh(h.styleClasses.bgClass,e.bgClass||"")),h.styleClasses.textClass&&(e.textClass=fh(h.styleClasses.textClass,e.textClass||""))),0==e.map.length&&e.map.push(0,0,e.content.appendChild(oh(a.display.measure))),0==g?(b.measure.map=e.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(e.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return f&&/\bcm-tab\b/.test(e.content.lastChild.className)&&(e.content.className="cm-tab-wrap-hack"),tg(a,"renderLine",a,b.line,e.pre),e.pre.className&&(e.textClass=fh(e.pre.className,e.textClass||"")),e}function Af(a){var b=Yg("span","\u2022","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b}function Bf(a,b,c,f,g,h){if(b){var i=a.cm.options.specialChars,j=!1;if(i.test(b))for(var k=document.createDocumentFragment(),l=0;;){i.lastIndex=l;var m=i.exec(b),n=m?m.index-l:b.length-l;if(n){var o=document.createTextNode(b.slice(l,l+n));d&&9>e?k.appendChild(Yg("span",[o])):k.appendChild(o),a.map.push(a.pos,a.pos+n,o),a.col+=n,a.pos+=n}if(!m)break;if(l+=n+1," "==m[0]){var p=a.cm.options.tabSize,q=p-a.col%p,o=k.appendChild(Yg("span",Kg(q),"cm-tab"));a.col+=q}else{var o=a.cm.options.specialCharPlaceholder(m[0]);d&&9>e?k.appendChild(Yg("span",[o])):k.appendChild(o),a.col+=1}a.map.push(a.pos,a.pos+1,o),a.pos++}else{a.col+=b.length;var k=document.createTextNode(b);a.map.push(a.pos,a.pos+b.length,k),d&&9>e&&(j=!0),a.pos+=b.length}if(c||f||g||j){var r=c||"";f&&(r+=f),g&&(r+=g);var s=Yg("span",[k],r);return h&&(s.title=h),a.content.appendChild(s)}a.content.appendChild(k)}}function Cf(a){function b(a){for(var b=" ",c=0;ci&&l.from<=i)break}if(l.to>=j)return a(c,d,e,f,g,h);a(c,d.slice(0,l.to-i),e,f,null,h),f=null,d=d.slice(l.to-i),i=l.to}}}function Ef(a,b,c,d){var e=!d&&c.widgetNode;e&&(a.map.push(a.pos,a.pos+b,e),a.content.appendChild(e)),a.pos+=b}function Ff(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var k,m,n,o,p,q,h=e.length,i=0,g=1,j="",l=0;;){if(l==i){m=n=o=p="",q=null,l=1/0;for(var r=[],s=0;si)?(null!=t.to&&l>t.to&&(l=t.to,n=""),u.className&&(m+=" "+u.className),u.startStyle&&t.from==i&&(o+=" "+u.startStyle),u.endStyle&&t.to==l&&(n+=" "+u.endStyle),u.title&&!p&&(p=u.title),u.collapsed&&(!q||Xe(q.marker,u)<0)&&(q=t)):t.from>i&&l>t.from&&(l=t.from),"bookmark"==u.type&&t.from==i&&u.widgetNode&&r.push(u)}if(q&&(q.from||0)==i&&(Ef(b,(null==q.to?h+1:q.to)-i,q.marker,null==q.from),null==q.to))return;if(!q&&r.length)for(var s=0;s=h)break;for(var v=Math.min(h,l);;){if(j){var w=i+j.length;if(!q){var x=w>v?j.slice(0,v-i):j;b.addToken(b,x,k?k+m:m,o,i+x.length==l?n:"",p)}if(w>=v){j=j.slice(v-i),i=v;break}i=w,o=""}j=e.slice(f,f=c[g++]),k=yf(c[g++],b.cm.options)}}else for(var g=1;g1&&a.remove(g.line+1,n-1),a.insert(g.line+1,p)}vg(a,"change",a,b)}function If(a){this.lines=a,this.parent=null;for(var b=0,c=0;bb||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function Rf(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function Sf(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function Tf(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function Uf(a){if(null==a.parent)return null;for(var b=a.parent,c=Ng(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function Vf(a,b){var c=a.first;a:do{for(var d=0;db){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;db)break;b-=h}return c+d}function Wf(a){a=af(a);for(var b=0,c=a.parent,d=0;d1&&!a.done[a.done.length-2].ranges?(a.done.pop(),Lg(a.done)):void 0}function ag(a,b,c,d){var e=a.history;e.undone.length=0;var g,f=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>f-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(g=_f(e,e.lastOp==d))){var h=Lg(g.changes);0==nb(b.from,b.to)&&0==nb(b.from,h.to)?h.to=Ld(b):g.changes.push(Zf(a,b))}else{var i=Lg(e.done);for(i&&i.ranges||dg(a.sel,e.done),g={changes:[Zf(a,b)],generation:e.generation},e.done.push(g);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=f,e.lastOp=e.lastSelOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||tg(a,"historyAdded")}function bg(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function cg(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastSelOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||bg(a,f,Lg(e.done),b))?e.done[e.done.length-1]=b:dg(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastSelOp=c,d&&d.clearRedo!==!1&&$f(e.undone)}function dg(a,b){var c=Lg(b);c&&c.ranges&&c.equals(a)||b.push(a)}function eg(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function fg(a){if(!a)return null;for(var c,b=0;b-1&&(Lg(h)[l]=j[l],delete j[l])}}}return e}function ig(a,b,c,d){c0}function Ag(a){a.prototype.on=function(a,b){rg(this,a,b)},a.prototype.off=function(a,b){sg(this,a,b)}}function Gg(){this.id=null}function Ig(a,b,c){for(var d=0,e=0;;){var f=a.indexOf(" ",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}}function Kg(a){for(;Jg.length<=a;)Jg.push(Lg(Jg)+" ");return Jg[a]}function Lg(a){return a[a.length-1]}function Ng(a,b){for(var c=0;c-1&&Tg(a)?!0:b.test(a):Tg(a)}function Vg(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function Xg(a){return a.charCodeAt(0)>=768&&Wg.test(a)}function Yg(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f0;--b)a.removeChild(a.firstChild);return a}function _g(a,b){return $g(a).appendChild(b)}function ah(a,b){if(a.contains)return a.contains(b);for(;b=b.parentNode;)if(b==a)return!0}function bh(){return document.activeElement}function ch(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function fh(a,b){for(var c=a.split(" "),d=0;d2&&!(d&&8>e))}return nh?Yg("span","\u200b"):Yg("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px")}function qh(a){if(null!=ph)return ph;var b=_g(a,document.createTextNode("A\u062eA")),c=Zg(b,0,1).getBoundingClientRect();if(!c||c.left==c.right)return!1;var d=Zg(b,1,2).getBoundingClientRect();return ph=d.right-c.right<3}function vh(a){if(null!=uh)return uh;var b=_g(a,Yg("span","x")),c=b.getBoundingClientRect(),d=Zg(b,0,1).getBoundingClientRect();return uh=Math.abs(c.left-d.left)>1}function xh(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;fb||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function yh(a){return a.level%2?a.to:a.from}function zh(a){return a.level%2?a.from:a.to}function Ah(a){var b=Xf(a);return b?yh(b[0]):0}function Bh(a){var b=Xf(a);return b?zh(Lg(b)):a.text.length}function Ch(a,b){var c=Qf(a.doc,b),d=af(c);d!=c&&(b=Uf(d));var e=Xf(d),f=e?e[0].level%2?Bh(d):Ah(d):0;return mb(b,f)}function Dh(a,b){for(var c,d=Qf(a.doc,b);c=$e(d);)d=c.find(1,!0).line,b=null;var e=Xf(d),f=e?e[0].level%2?Ah(d):Bh(d):d.text.length;return mb(null==b?Uf(d):b,f)}function Eh(a,b){var c=Ch(a,b.line),d=Qf(a.doc,c.line),e=Xf(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.line==c.line&&b.ch<=f&&b.ch;return mb(c.line,g?0:f)}return c}function Fh(a,b,c){var d=a[0].level;return b==d?!0:c==d?!1:c>b}function Hh(a,b){Gh=null;for(var d,c=0;cb)return c;if(e.from==b||e.to==b){if(null!=d)return Fh(a,e.level,a[d].level)?(e.from!=e.to&&(Gh=d),c):(e.from!=e.to&&(Gh=c),d);d=c}}return d}function Ih(a,b,c,d){if(!d)return b+c;do b+=c;while(b>0&&Xg(a.text.charAt(b)));return b}function Jh(a,b,c,d){var e=Xf(a);if(!e)return Kh(a,b,c,d);for(var f=Hh(e,b),g=e[f],h=Ih(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h0==g.level%2?g.to:g.from);if(g=e[f+=c],!g)return null;h=c>0==g.level%2?Ih(a,g.to,-1,d):Ih(a,g.from,1,d)}}function Kh(a,b,c,d){var e=b+c;if(d)for(;e>0&&Xg(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var a=/gecko\/\d/i.test(navigator.userAgent),b=/MSIE \d/.test(navigator.userAgent),c=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),d=b||c,e=d&&(b?document.documentMode||6:c[1]),f=/WebKit\//.test(navigator.userAgent),g=f&&/Qt\/\d+\.\d+/.test(navigator.userAgent),h=/Chrome\//.test(navigator.userAgent),i=/Opera\//.test(navigator.userAgent),j=/Apple Computer/.test(navigator.vendor),k=/KHTML\//.test(navigator.userAgent),l=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),m=/PhantomJS/.test(navigator.userAgent),n=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),o=n||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),p=n||/Mac/.test(navigator.platform),q=/win/i.test(navigator.platform),r=i&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);r&&(r=Number(r[1])),r&&r>=15&&(i=!1,f=!0);var s=p&&(g||i&&(null==r||12.11>r)),t=a||d&&e>=9,u=!1,v=!1,mb=w.Pos=function(a,b){return this instanceof mb?(this.line=a,this.ch=b,void 0):new mb(a,b)},nb=w.cmpPos=function(a,b){return a.line-b.line||a.ch-b.ch};rb.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b=0&&nb(a,d.to())<=0)return c}return-1}},sb.prototype={from:function(){return qb(this.anchor,this.head)},to:function(){return pb(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var vc,hd,id,fc={left:0,right:0,top:0,bottom:0},yc=null,zc=0,Yc=null,od=0,td=0,ud=null;d?ud=-.53:a?ud=15:h?ud=-.7:j&&(ud=-1/3);var yd=new Gg,Cd=null,Ld=w.changeEnd=function(a){return a.text?mb(a.from.line+a.text.length-1,Lg(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};w.prototype={constructor:w,focus:function(){window.focus(),_c(this),Xc(this)},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,je.hasOwnProperty(a)&&Kc(this,je[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](ze(a))},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;cc&&(de(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&be(this));else{var f=e.from(),g=e.to(),h=Math.max(c,f.line);c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var i=h;c>i;++i)de(this,i,a);var j=this.doc.sel.ranges;0==f.ch&&b.length==j.length&&j[d].from().ch>0&&Db(this.doc,d,new sb(f,j[d].to()),Dg)}}}),getTokenAt:function(a,b){return rf(this,a,b)},getLineTokens:function(a,b){return rf(this,mb(a),b,!0)},getTokenTypeAt:function(a){a=wb(this.doc,a);var f,b=uf(this,Qf(this.doc,a.line)),c=0,d=(b.length-1)/2,e=a.ch;if(0==e)f=b[2];else for(;;){var g=c+d>>1;if((g?b[2*g-1]:0)>=e)d=g;else{if(!(b[2*g+1]h?f:0==h?null:f.slice(0,h-1)},getModeAt:function(a){var b=this.doc.mode;return b.innerMode?w.innerMode(b,this.getTokenAt(a).state).mode:b},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!qe.hasOwnProperty(b))return qe;var d=qe[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;fd&&(a=d,c=!0);var e=Qf(this.doc,a);return nc(this,e,{top:0,left:0},b||"page").top+(c?this.doc.height-Wf(e):0)},defaultTextHeight:function(){return wc(this.display)},defaultCharWidth:function(){return xc(this.display)},setGutterMarker:Lc(function(a,b,c){return ee(this.doc,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&Vg(d)&&(a.gutterMarkers=null),!0})}),clearGutter:Lc(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,Qc(b,d,"gutter"),Vg(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),addLineWidget:Lc(function(a,b,c){return kf(this,a,b,c)}),removeLineWidget:function(a){a.clear()},lineInfo:function(a){if("number"==typeof a){if(!yb(this.doc,a))return null;var b=a;if(a=Qf(this.doc,a),!a)return null}else{var b=Uf(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=qc(this,wb(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth); -("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&$d(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:Lc(Dd),triggerOnKeyPress:Lc(Gd),triggerOnKeyUp:Fd,execCommand:function(a){return te.hasOwnProperty(a)?te[a](this):void 0},findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=wb(this.doc,a);b>f&&(g=ge(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:Lc(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?ge(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},Fg)}),deleteH:Lc(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):fe(this,function(c){var e=ge(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=wb(this.doc,a);b>g;++g){var i=qc(this,h,"div");if(null==f?f=i.left:i.left=f,h=he(this,i,e,c),h.hitSide)break}return h},moveV:Lc(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=qc(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=he(c,h,a,b);return"page"==b&&g==d.sel.primary()&&ae(c,null,pc(c,i,"div").top-h.top),i},Fg),e.length)for(var g=0;g0&&h(c.charAt(d-1));)--d;for(;e.5)&&C(this),tg(this,"refresh",this)}),swapDoc:Lc(function(a){var b=this.doc;return b.cm=null,Pf(this,a),kc(this),$c(this),this.scrollTo(a.scrollLeft,a.scrollTop),this.curOp.forceScroll=!0,vg(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ag(w);var ie=w.defaults={},je=w.optionHandlers={},le=w.Init={toString:function(){return"CodeMirror.Init"}};ke("value","",function(a,b){a.setValue(b)},!0),ke("mode",null,function(a,b){a.doc.modeOption=b,y(a)},!0),ke("indentUnit",2,y,!0),ke("indentWithTabs",!1),ke("smartIndent",!0),ke("tabSize",4,function(a){z(a),kc(a),Pc(a)},!0),ke("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(a,b){a.options.specialChars=new RegExp(b.source+(b.test(" ")?"":"| "),"g"),a.refresh()},!0),ke("specialCharPlaceholder",Af,function(a){a.refresh()},!0),ke("electricChars",!0),ke("rtlMoveVisually",!q),ke("wholeLineUpdateBefore",!0),ke("theme","default",function(a){D(a),E(a)},!0),ke("keyMap","default",function(a,b,c){var d=ze(b),e=c!=w.Init&&ze(c);e&&e.detach&&e.detach(a,d),d.attach&&d.attach(a,e||null)}),ke("extraKeys",null),ke("lineWrapping",!1,A,!0),ke("gutters",[],function(a){J(a.options),E(a)},!0),ke("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?R(a.display)+"px":"0",a.refresh()},!0),ke("coverGutterNextToScrollbar",!1,M,!0),ke("lineNumbers",!1,function(a){J(a.options),E(a)},!0),ke("firstLineNumber",1,E,!0),ke("lineNumberFormatter",function(a){return a},E,!0),ke("showCursorWhenSelecting",!1,Pb,!0),ke("resetSelectionOnContextMenu",!0),ke("readOnly",!1,function(a,b){"nocursor"==b?(Id(a),a.display.input.blur(),a.display.disabled=!0):(a.display.disabled=!1,b||$c(a))}),ke("disableInput",!1,function(a,b){b||$c(a)},!0),ke("dragDrop",!0),ke("cursorBlinkRate",530),ke("cursorScrollMargin",0),ke("cursorHeight",1,Pb,!0),ke("singleCursorHeightPerLine",!0,Pb,!0),ke("workTime",100),ke("workDelay",100),ke("flattenSpans",!0,z,!0),ke("addModeClass",!1,z,!0),ke("pollInterval",100),ke("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),ke("historyEventDelay",1250),ke("viewportMargin",10,function(a){a.refresh()},!0),ke("maxHighlightLength",1e4,z,!0),ke("moveInputWithCursor",!0,function(a,b){b||(a.display.inputDiv.style.top=a.display.inputDiv.style.left=0)}),ke("tabindex",null,function(a,b){a.display.input.tabIndex=b||""}),ke("autofocus",null);var me=w.modes={},ne=w.mimeModes={};w.defineMode=function(a,b){w.defaults.mode||"null"==a||(w.defaults.mode=a),arguments.length>2&&(b.dependencies=Array.prototype.slice.call(arguments,2)),me[a]=b},w.defineMIME=function(a,b){ne[a]=b},w.resolveMode=function(a){if("string"==typeof a&&ne.hasOwnProperty(a))a=ne[a];else if(a&&"string"==typeof a.name&&ne.hasOwnProperty(a.name)){var b=ne[a.name];"string"==typeof b&&(b={name:b}),a=Pg(b,a),a.name=b.name}else if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return w.resolveMode("application/xml");return"string"==typeof a?{name:a}:a||{name:"null"}},w.getMode=function(a,b){var b=w.resolveMode(b),c=me[b.name];if(!c)return w.getMode(a,"text/plain");var d=c(a,b);if(oe.hasOwnProperty(b.name)){var e=oe[b.name];for(var f in e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var f in b.modeProps)d[f]=b.modeProps[f];return d},w.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),w.defineMIME("text/plain","null");var oe=w.modeExtensions={};w.extendMode=function(a,b){var c=oe.hasOwnProperty(a)?oe[a]:oe[a]={};Qg(b,c)},w.defineExtension=function(a,b){w.prototype[a]=b},w.defineDocExtension=function(a,b){Lf.prototype[a]=b},w.defineOption=ke;var pe=[];w.defineInitHook=function(a){pe.push(a)};var qe=w.helpers={};w.registerHelper=function(a,b,c){qe.hasOwnProperty(a)||(qe[a]=w[a]={_global:[]}),qe[a][b]=c},w.registerGlobalHelper=function(a,b,c,d){w.registerHelper(a,b,d),qe[a]._global.push({pred:c,val:d})};var re=w.copyState=function(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},se=w.startState=function(a,b,c){return a.startState?a.startState(b,c):!0};w.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var te=w.commands={selectAll:function(a){a.setSelection(mb(a.firstLine(),0),mb(a.lastLine()),Dg)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),Dg)},killLine:function(a){fe(a,function(b){if(b.empty()){var c=Qf(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line0)e=new mb(e.line,e.ch+1),a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),mb(e.line,e.ch-2),e,"+transpose");else if(e.line>a.doc.first){var g=Qf(a.doc,e.line-1).text;g&&a.replaceRange(f.charAt(0)+"\n"+g.charAt(g.length-1),mb(e.line-1,g.length-1),mb(e.line,1),"+transpose")}c.push(new sb(e,e))}a.setSelections(c)})},newlineAndIndent:function(a){Jc(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange("\n",d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0),be(a)}})},toggleOverwrite:function(a){a.toggleOverwrite()}},ue=w.keyMap={};ue.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},ue.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},ue.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},ue.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},ue["default"]=p?ue.macDefault:ue.pcDefault,w.normalizeKeyMap=function(a){var b={};for(var c in a)if(a.hasOwnProperty(c)){var d=a[c];if(/^(name|fallthrough|(de|at)tach)$/.test(c))continue;if("..."==d){delete a[c];continue}for(var e=Og(c.split(" "),ve),f=0;f=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.posb},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos0?null:(f&&b!==!1&&(this.pos+=f[0].length),f)}var d=function(a){return c?a.toLowerCase():a},e=this.string.substr(this.pos,a.length);return d(e)==d(a)?(b!==!1&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var Be=w.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a};Ag(Be),Be.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&Ac(a),zg(this,"clear")){var c=this.find();c&&vg(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;fa.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Pc(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&Kb(a.doc)),a&&vg(a,"markerCleared",a,this),b&&Cc(a),this.parent&&this.parent.clear()}},Be.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;ec;++c){var e=this.lines[c];this.height-=e.height,nf(e),vg(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;da;++a)if(c(this.lines[a]))return!0}},Jf.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;ca){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof If))){var h=[];this.collapse(h),this.children=[new If(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new If(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new Jf(b);if(a.parent){a.size-=c.size,a.height-=c.height;var e=Ng(a.parent.children,a);a.parent.children.splice(e+1,0,c)}else{var d=new Jf(a.children);d.parent=a,a.children=[d,c],a=d}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;da){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var Kf=0,Lf=w.Doc=function(a,b,c){if(!(this instanceof Lf))return new Lf(a,b,c);null==c&&(c=0),Jf.call(this,[new If([new lf("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var d=mb(c,0);this.sel=ub(d),this.history=new Yf(null),this.id=++Kf,this.modeOption=b,"string"==typeof a&&(a=rh(a)),Hf(this,{from:d,to:d,text:a}),Hb(this,ub(d),Dg)};Lf.prototype=Pg(Jf.prototype,{constructor:Lf,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d=0;f--)Rd(this,d[f]);h?Gb(this,h):this.cm&&be(this.cm)}),undo:Mc(function(){Td(this,"undo")}),redo:Mc(function(){Td(this,"redo")}),undoSelection:Mc(function(){Td(this,"undo",!0)}),redoSelection:Mc(function(){Td(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=wb(this,a),b=wb(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;hi.to||null==i.from&&e!=a.line||e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;da?(b=a,!0):(a-=e,++c,void 0)}),wb(this,mb(c,b))},indexFromPos:function(a){a=wb(this,a);var b=a.ch;return a.lineb&&(b=a.from),null!=a.to&&a.toh||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},Jg=[""],Mg=function(a){a.select()};n?Mg=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:d&&(Mg=function(a){try{a.select()}catch(b){}}),[].indexOf&&(Ng=function(a,b){return a.indexOf(b)}),[].map&&(Og=function(a,b){return a.map(b)});var Zg,Sg=/[\u00df\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Tg=w.isWordChar=function(a){return/\w/.test(a)||a>"\x80"&&(a.toUpperCase()!=a.toLowerCase()||Sg.test(a))},Wg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;Zg=document.createRange?function(a,b,c){var d=document.createRange();return d.setEnd(a,c),d.setStart(a,b),d}:function(a,b,c){var d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(e){return d}return d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d},d&&11>e&&(bh=function(){try{return document.activeElement}catch(a){return document.body}});var lh,nh,ph,dh=w.rmClass=function(a,b){var c=a.className,d=ch(b).exec(c);if(d){var e=c.slice(d.index+d[0].length);a.className=c.slice(0,d.index)+(e?d[1]+e:"")}},eh=w.addClass=function(a,b){var c=a.className;ch(b).test(c)||(a.className+=(c?" ":"")+b)},hh=!1,kh=function(){if(d&&9>e)return!1;var a=Yg("div");return"draggable"in a||"dragDrop"in a}(),rh=w.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},sh=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return b&&b.parentElement()==a?0!=b.compareEndPoints("StartToEnd",b):!1},th=function(){var a=Yg("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),uh=null,wh={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};w.keyNames=wh,function(){for(var a=0;10>a;a++)wh[a+48]=wh[a+96]=String(a);for(var a=65;90>=a;a++)wh[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)wh[a+111]=wh[a+63235]="F"+a}();var Gh,Lh=function(){function c(c){return 247>=c?a.charAt(c):c>=1424&&1524>=c?"R":c>=1536&&1773>=c?b.charAt(c-1536):c>=1774&&2220>=c?"r":c>=8192&&8203>=c?"w":8204==c?"b":"L"}function j(a,b,c){this.level=a,this.from=b,this.to=c}var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",b="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",d=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,e=/[stwN]/,f=/[LRr]/,g=/[Lb1n]/,h=/[1n]/,i="L";return function(a){if(!d.test(a))return!1;for(var m,b=a.length,k=[],l=0;b>l;++l)k.push(m=c(a.charCodeAt(l)));for(var l=0,n=i;b>l;++l){var m=k[l];"m"==m?k[l]=n:n=m}for(var l=0,o=i;b>l;++l){var m=k[l];"1"==m&&"r"==o?k[l]="n":f.test(m)&&(o=m,"r"==m&&(k[l]="R"))}for(var l=1,n=k[0];b-1>l;++l){var m=k[l];"+"==m&&"1"==n&&"1"==k[l+1]?k[l]="1":","!=m||n!=k[l+1]||"1"!=n&&"n"!=n||(k[l]=n),n=m}for(var l=0;b>l;++l){var m=k[l];if(","==m)k[l]="N";else if("%"==m){for(var p=l+1;b>p&&"%"==k[p];++p);for(var q=l&&"!"==k[l-1]||b>p&&"1"==k[p]?"1":"N",r=l;p>r;++r)k[r]=q;l=p-1}}for(var l=0,o=i;b>l;++l){var m=k[l];"L"==o&&"1"==m?k[l]="L":f.test(m)&&(o=m)}for(var l=0;b>l;++l)if(e.test(k[l])){for(var p=l+1;b>p&&e.test(k[p]);++p);for(var s="L"==(l?k[l-1]:i),t="L"==(b>p?k[p]:i),q=s||t?"L":"R",r=l;p>r;++r)k[r]=q;l=p-1}for(var v,u=[],l=0;b>l;)if(g.test(k[l])){var w=l;for(++l;b>l&&g.test(k[l]);++l);u.push(new j(0,w,l))}else{var x=l,y=u.length;for(++l;b>l&&"L"!=k[l];++l);for(var r=x;l>r;)if(h.test(k[r])){r>x&&u.splice(y,0,new j(1,x,r));var z=r;for(++r;l>r&&h.test(k[r]);++r);u.splice(y,0,new j(2,z,r)),x=r}else++r;l>x&&u.splice(y,0,new j(1,x,l))}return 1==u[0].level&&(v=a.match(/^\s+/))&&(u[0].from=v[0].length,u.unshift(new j(0,0,v[0].length))),1==Lg(u).level&&(v=a.match(/\s+$/))&&(Lg(u).to-=v[0].length,u.push(new j(0,b-v[0].length,b))),u[0].level!=Lg(u).level&&u.push(new j(u[0].level,b,b)),u}}();return w.version="4.8.0",w}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("javascript",function(b,c){function m(a){for(var c,b=!1,d=!1;null!=(c=a.next());){if(!b){if("/"==c&&!d)return;"["==c?d=!0:d&&"]"==c&&(d=!1)}b=!b&&"\\"==c}}function p(a,b,c){return n=a,o=c,b}function q(a,b){var c=a.next();if('"'==c||"'"==c)return b.tokenize=r(c),b.tokenize(a,b);if("."==c&&a.match(/^\d+(?:[eE][+\-]?\d+)?/))return p("number","number");if("."==c&&a.match(".."))return p("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(c))return p(c);if("="==c&&a.eat(">"))return p("=>","operator");if("0"==c&&a.eat(/x/i))return a.eatWhile(/[\da-f]/i),p("number","number");if(/\d/.test(c))return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),p("number","number");if("/"==c)return a.eat("*")?(b.tokenize=s,s(a,b)):a.eat("/")?(a.skipToEnd(),p("comment","comment")):"operator"==b.lastType||"keyword c"==b.lastType||"sof"==b.lastType||/^[\[{}\(,;:]$/.test(b.lastType)?(m(a),a.eatWhile(/[gimy]/),p("regexp","string-2")):(a.eatWhile(k),p("operator","operator",a.current()));if("`"==c)return b.tokenize=t,t(a,b);if("#"==c)return a.skipToEnd(),p("error","error");if(k.test(c))return a.eatWhile(k),p("operator","operator",a.current());if(i.test(c)){a.eatWhile(i);var d=a.current(),e=j.propertyIsEnumerable(d)&&j[d];return e&&"."!=b.lastType?p(e.type,e.style,d):p("variable","variable",d)}}function r(a){return function(b,c){var e,d=!1;if(f&&"@"==b.peek()&&b.match(l))return c.tokenize=q,p("jsonld-keyword","meta");for(;null!=(e=b.next())&&(e!=a||d);)d=!d&&"\\"==e;return d||(c.tokenize=q),p("string","string")}}function s(a,b){for(var d,c=!1;d=a.next();){if("/"==d&&c){b.tokenize=q;break}c="*"==d}return p("comment","comment")}function t(a,b){for(var d,c=!1;null!=(d=a.next());){if(!c&&("`"==d||"$"==d&&a.eat("{"))){b.tokenize=q;break}c=!c&&"\\"==d}return p("quasi","string-2",a.current())}function v(a,b){b.fatArrowAt&&(b.fatArrowAt=null);var c=a.string.indexOf("=>",a.start);if(!(0>c)){for(var d=0,e=!1,f=c-1;f>=0;--f){var g=a.string.charAt(f),h=u.indexOf(g);if(h>=0&&3>h){if(!d){++f;break}if(0==--d)break}else if(h>=3&&6>h)++d;else if(i.test(g))e=!0;else if(e&&!d){++f;break}}e&&!d&&(b.fatArrowAt=f)}}function x(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function y(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0;for(var d=a.context;d;d=d.prev)for(var c=d.vars;c;c=c.next)if(c.name==b)return!0}function z(a,b,c,d,e){var f=a.cc;for(A.state=a,A.stream=e,A.marked=null,A.cc=f,A.style=b,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){var h=f.length?f.pop():g?L:K;if(h(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return A.marked?A.marked:"variable"==c&&y(a,d)?"variable-2":b}}}function B(){for(var a=arguments.length-1;a>=0;a--)A.cc.push(arguments[a])}function C(){return B.apply(null,arguments),!0}function D(a){function b(b){for(var c=b;c;c=c.next)if(c.name==a)return!0;return!1}var d=A.state;if(d.context){if(A.marked="def",b(d.localVars))return;d.localVars={name:a,next:d.localVars}}else{if(b(d.globalVars))return;c.globalVars&&(d.globalVars={name:a,next:d.globalVars})}}function F(){A.state.context={prev:A.state.context,vars:A.state.localVars},A.state.localVars=E}function G(){A.state.localVars=A.state.context.vars,A.state.context=A.state.context.prev}function H(a,b){var c=function(){var c=A.state,d=c.indented;if("stat"==c.lexical.type)d=c.lexical.indented;else for(var e=c.lexical;e&&")"==e.type&&e.align;e=e.prev)d=e.indented;c.lexical=new x(d,A.stream.column(),a,null,c.lexical,b)};return c.lex=!0,c}function I(){var a=A.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function J(a){function b(c){return c==a?C():";"==a?B():C(b)}return b}function K(a,b){return"var"==a?C(H("vardef",b.length),eb,J(";"),I):"keyword a"==a?C(H("form"),L,K,I):"keyword b"==a?C(H("form"),K,I):"{"==a?C(H("}"),bb,I):";"==a?C():"if"==a?("else"==A.state.lexical.info&&A.state.cc[A.state.cc.length-1]==I&&A.state.cc.pop()(),C(H("form"),L,K,I,jb)):"function"==a?C(pb):"for"==a?C(H("form"),kb,K,I):"variable"==a?C(H("stat"),W):"switch"==a?C(H("form"),L,H("}","switch"),J("{"),bb,I,I):"case"==a?C(L,J(":")):"default"==a?C(J(":")):"catch"==a?C(H("form"),F,J("("),qb,J(")"),K,I,G):"module"==a?C(H("form"),F,vb,G,I):"class"==a?C(H("form"),rb,I):"export"==a?C(H("form"),wb,I):"import"==a?C(H("form"),xb,I):B(H("stat"),L,J(";"),I)}function L(a){return N(a,!1)}function M(a){return N(a,!0)}function N(a,b){if(A.state.fatArrowAt==A.stream.start){var c=b?V:U;if("("==a)return C(F,H(")"),_(fb,")"),I,J("=>"),c,G);if("variable"==a)return B(F,fb,J("=>"),c,G)}var d=b?R:Q;return w.hasOwnProperty(a)?C(d):"function"==a?C(pb,d):"keyword c"==a?C(b?P:O):"("==a?C(H(")"),O,Cb,J(")"),I,d):"operator"==a||"spread"==a?C(b?M:L):"["==a?C(H("]"),Ab,I,d):"{"==a?ab(Y,"}",null,d):"quasi"==a?B(S,d):C()}function O(a){return a.match(/[;\}\)\],]/)?B():B(L)}function P(a){return a.match(/[;\}\)\],]/)?B():B(M)}function Q(a,b){return","==a?C(L):R(a,b,!1)}function R(a,b,c){var d=0==c?Q:R,e=0==c?L:M;return"=>"==a?C(F,c?V:U,G):"operator"==a?/\+\+|--/.test(b)?C(d):"?"==b?C(L,J(":"),e):C(e):"quasi"==a?B(S,d):";"!=a?"("==a?ab(M,")","call",d):"."==a?C(X,d):"["==a?C(H("]"),O,J("]"),I,d):void 0:void 0}function S(a,b){return"quasi"!=a?B():"${"!=b.slice(b.length-2)?C(S):C(L,T)}function T(a){return"}"==a?(A.marked="string-2",A.state.tokenize=t,C(S)):void 0}function U(a){return v(A.stream,A.state),B("{"==a?K:L)}function V(a){return v(A.stream,A.state),B("{"==a?K:M)}function W(a){return":"==a?C(I,K):B(Q,J(";"),I)}function X(a){return"variable"==a?(A.marked="property",C()):void 0}function Y(a,b){return"variable"==a||"keyword"==A.style?(A.marked="property","get"==b||"set"==b?C(Z):C($)):"number"==a||"string"==a?(A.marked=f?"property":A.style+" property",C($)):"jsonld-keyword"==a?C($):"["==a?C(L,J("]"),$):void 0}function Z(a){return"variable"!=a?B($):(A.marked="property",C(pb))}function $(a){return":"==a?C(M):"("==a?B(pb):void 0}function _(a,b){function c(d){if(","==d){var e=A.state.lexical;return"call"==e.info&&(e.pos=(e.pos||0)+1),C(a,c)}return d==b?C():C(J(b))}return function(d){return d==b?C():B(a,c)}}function ab(a,b,c){for(var d=3;d!?|~^]/,l=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,u="([{}])",w={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},A={state:null,column:null,marked:null,cc:null},E={name:"this",next:{name:"arguments"}};return I.lex=!0,{startState:function(a){var b={tokenize:q,lastType:"sof",cc:[],lexical:new x((a||0)-d,0,"block",!1),localVars:c.localVars,context:c.localVars&&{vars:c.localVars},indented:0};return c.globalVars&&"object"==typeof c.globalVars&&(b.globalVars=c.globalVars),b},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation(),v(a,b)),b.tokenize!=s&&a.eatSpace())return null;var c=b.tokenize(a,b);return"comment"==n?c:(b.lastType="operator"!=n||"++"!=o&&"--"!=o?n:"incdec",z(b,c,n,o,a))},indent:function(b,f){if(b.tokenize==s)return a.Pass;if(b.tokenize!=q)return 0;var g=f&&f.charAt(0),h=b.lexical;if(!/^\s*else\b/.test(f))for(var i=b.cc.length-1;i>=0;--i){var j=b.cc[i];if(j==I)h=h.prev;else if(j!=jb)break}"stat"==h.type&&"}"==g&&(h=h.prev),e&&")"==h.type&&"stat"==h.prev.type&&(h=h.prev);var k=h.type,l=g==k;return"vardef"==k?h.indented+("operator"==b.lastType||","==b.lastType?h.info+1:0):"form"==k&&"{"==g?h.indented:"form"==k?h.indented+d:"stat"==k?h.indented+("operator"==b.lastType||","==b.lastType?e||d:0):"switch"!=h.info||l||0==c.doubleIndentSwitch?h.align?h.column+(l?0:1):h.indented+(l?0:d):h.indented+(/^(?:case|default)\b/.test(f)?d:2*d)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:g?null:"/*",blockCommentEnd:g?null:"*/",lineComment:g?null:"//",fold:"brace",helperType:g?"json":"javascript",jsonldMode:f,jsonMode:g}}),a.registerHelper("wordChars","javascript",/[\w$]/),a.defineMIME("text/javascript","javascript"),a.defineMIME("text/ecmascript","javascript"),a.defineMIME("application/javascript","javascript"),a.defineMIME("application/x-javascript","javascript"),a.defineMIME("application/ecmascript","javascript"),a.defineMIME("application/json",{name:"javascript",json:!0}),a.defineMIME("application/x-json",{name:"javascript",json:!0}),a.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),a.defineMIME("text/typescript",{name:"javascript",typescript:!0}),a.defineMIME("application/typescript",{name:"javascript",typescript:!0})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("xml",function(b,c){function k(a,b){function c(c){return b.tokenize=c,c(a,b)}var d=a.next();if("<"==d)return a.eat("!")?a.eat("[")?a.match("CDATA[")?c(n("atom","]]>")):null:a.match("--")?c(n("comment","-->")):a.match("DOCTYPE",!0,!0)?(a.eatWhile(/[\w\._\-]/),c(o(1))):null:a.eat("?")?(a.eatWhile(/[\w\._\-]/),b.tokenize=n("meta","?>"),"meta"):(i=a.eat("/")?"closeTag":"openTag",b.tokenize=l,"tag bracket");if("&"==d){var e;return e=a.eat("#")?a.eat("x")?a.eatWhile(/[a-fA-F\d]/)&&a.eat(";"):a.eatWhile(/[\d]/)&&a.eat(";"):a.eatWhile(/[\w\.\-:]/)&&a.eat(";"),e?"atom":"error"}return a.eatWhile(/[^&<]/),null}function l(a,b){var c=a.next();if(">"==c||"/"==c&&a.eat(">"))return b.tokenize=k,i=">"==c?"endTag":"selfcloseTag","tag bracket";if("="==c)return i="equals",null;if("<"==c){b.tokenize=k,b.state=s,b.tagName=b.tagStart=null;var d=b.tokenize(a,b);return d?d+" tag error":"tag error"}return/[\'\"]/.test(c)?(b.tokenize=m(c),b.stringStartCol=a.column(),b.tokenize(a,b)):(a.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function m(a){var b=function(b,c){for(;!b.eol();)if(b.next()==a){c.tokenize=l;break}return"string"};return b.isInAttribute=!0,b}function n(a,b){return function(c,d){for(;!c.eol();){if(c.match(b)){d.tokenize=k;break}c.next()}return a}}function o(a){return function(b,c){for(var d;null!=(d=b.next());){if("<"==d)return c.tokenize=o(a+1),c.tokenize(b,c);if(">"==d){if(1==a){c.tokenize=k;break}return c.tokenize=o(a-1),c.tokenize(b,c)}}return"meta"}}function p(a,b,c){this.prev=a.context,this.tagName=b,this.indent=a.indented,this.startOfLine=c,(g.doNotIndent.hasOwnProperty(b)||a.context&&a.context.noIndent)&&(this.noIndent=!0)}function q(a){a.context&&(a.context=a.context.prev)}function r(a,b){for(var c;;){if(!a.context)return;if(c=a.context.tagName,!g.contextGrabbers.hasOwnProperty(c)||!g.contextGrabbers[c].hasOwnProperty(b))return;q(a)}}function s(a,b,c){return"openTag"==a?(c.tagStart=b.column(),t):"closeTag"==a?u:s}function t(a,b,c){return"word"==a?(c.tagName=b.current(),j="tag",x):(j="error",t)}function u(a,b,c){if("word"==a){var d=b.current();return c.context&&c.context.tagName!=d&&g.implicitlyClosed.hasOwnProperty(c.context.tagName)&&q(c),c.context&&c.context.tagName==d?(j="tag",v):(j="tag error",w)}return j="error",w}function v(a,b,c){return"endTag"!=a?(j="error",v):(q(c),s)}function w(a,b,c){return j="error",v(a,b,c)}function x(a,b,c){if("word"==a)return j="attribute",y;if("endTag"==a||"selfcloseTag"==a){var d=c.tagName,e=c.tagStart;return c.tagName=c.tagStart=null,"selfcloseTag"==a||g.autoSelfClosers.hasOwnProperty(d)?r(c,d):(r(c,d),c.context=new p(c,d,e==c.indented)),s}return j="error",x}function y(a,b,c){return"equals"==a?z:(g.allowMissing||(j="error"),x(a,b,c))}function z(a,b,c){return"string"==a?A:"word"==a&&g.allowUnquoted?(j="string",x):(j="error",x(a,b,c))}function A(a,b,c){return"string"==a?A:x(a,b,c)}var d=b.indentUnit,e=c.multilineTagIndentFactor||1,f=c.multilineTagIndentPastTag;null==f&&(f=!0);var i,j,g=c.htmlMode?{autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1},h=c.alignCDATA;return{startState:function(){return{tokenize:k,state:s,indented:0,tagName:null,tagStart:null,context:null}},token:function(a,b){if(!b.tagName&&a.sol()&&(b.indented=a.indentation()),a.eatSpace())return null;i=null;var c=b.tokenize(a,b);return(c||i)&&"comment"!=c&&(j=null,b.state=b.state(i||c,a,b),j&&(c="error"==j?c+" error":j)),c},indent:function(b,c,i){var j=b.context;if(b.tokenize.isInAttribute)return b.tagStart==b.indented?b.stringStartCol+1:b.indented+d;if(j&&j.noIndent)return a.Pass;if(b.tokenize!=l&&b.tokenize!=k)return i?i.match(/^(\s*)/)[0].length:0;if(b.tagName)return f?b.tagStart+b.tagName.length+2:b.tagStart+d*e;if(h&&/$/,blockCommentStart:"",configuration:c.htmlMode?"html":"xml",helperType:c.htmlMode?"html":"xml"}}),a.defineMIME("text/xml","xml"),a.defineMIME("application/xml","xml"),a.mimeModes.hasOwnProperty("text/html")||a.defineMIME("text/html",{name:"xml",htmlMode:!0})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.registerHelper("fold","brace",function(b,c){function h(f){for(var h=c.ch,i=0;;){var j=0>=h?-1:e.lastIndexOf(f,h-1);if(-1!=j){if(1==i&&j=o;++o)for(var p=b.getLine(o),q=o==d?f:0;;){var r=p.indexOf(i,q),s=p.indexOf(j,q);if(0>r&&(r=p.length),0>s&&(s=p.length),q=Math.min(r,s),q==p.length)break;if(b.getTokenTypeAt(a.Pos(o,q+1))==g)if(q==r)++k;else if(!--k){m=o,n=q;break a}++q}if(null!=m&&(d!=m||n!=f))return{from:a.Pos(d,f),to:a.Pos(m,n)}}}),a.registerHelper("fold","import",function(b,c){function d(c){if(cb.lastLine())return null;var d=b.getTokenAt(a.Pos(c,1));if(/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"keyword"!=d.type||"import"!=d.string)return null;for(var e=c,f=Math.min(b.lastLine(),c+10);f>=e;++e){var g=b.getLine(e),h=g.indexOf(";");if(-1!=h)return{startCh:d.end,end:a.Pos(e,h)}}}var f,c=c.line,e=d(c);if(!e||d(c-1)||(f=d(c-2))&&f.end.line==c-1)return null;for(var g=e.end;;){var h=d(g.line+1);if(null==h)break;g=h.end}return{from:b.clipPos(a.Pos(c,e.startCh+1)),to:g}}),a.registerHelper("fold","include",function(b,c){function d(c){if(cb.lastLine())return null;var d=b.getTokenAt(a.Pos(c,1));return/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"meta"==d.type&&"#include"==d.string.slice(0,8)?d.start+8:void 0}var c=c.line,e=d(c);if(null==e||null!=d(c-1))return null;for(var f=c;;){var g=d(f+1);if(null==g)break;++f}return{from:a.Pos(c,e+1),to:b.clipPos(a.Pos(f))}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.registerGlobalHelper("fold","comment",function(a){return a.blockCommentStart&&a.blockCommentEnd},function(b,c){var d=b.getModeAt(c),e=d.blockCommentStart,f=d.blockCommentEnd;if(e&&f){for(var i,g=c.line,h=b.getLine(g),j=c.ch,k=0;;){var l=0>=j?-1:h.lastIndexOf(e,j-1);if(-1!=l){if(1==k&&l=q;++q)for(var r=b.getLine(q),s=q==g?i:0;;){var t=r.indexOf(e,s),u=r.indexOf(f,s);if(0>t&&(t=r.length),0>u&&(u=r.length),s=Math.min(t,u),s==r.length)break;if(s==t)++m;else if(!--m){o=q,p=s;break a}++s}if(null!=o&&(g!=o||p!=i))return{from:a.Pos(g,i),to:a.Pos(o,p)}}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(b,d,f,g){function j(a){var c=h(b,d);if(!c||c.to.line-c.from.lineb.firstLine();)d=a.Pos(d.line-1,0),k=j(!1);if(k&&!k.cleared&&"unfold"!==g){var l=c(b,f);a.on(l,"mousedown",function(b){m.clear(),a.e_preventDefault(b)});var m=b.markText(k.from,k.to,{replacedWith:l,clearOnEnter:!0,__isFold:!0});m.on("clear",function(c,d){a.signal(b,"unfold",b,c,d)}),a.signal(b,"fold",b,k.from,k.to)}}function c(a,b){var c=e(a,b,"widget");if("string"==typeof c){var d=document.createTextNode(c);c=document.createElement("span"),c.appendChild(d),c.className="CodeMirror-foldmarker"}return c}function e(a,b,c){if(b&&void 0!==b[c])return b[c];var e=a.options.foldOptions;return e&&void 0!==e[c]?e[c]:d[c]}a.newFoldFunction=function(a,c){return function(d,e){b(d,e,{rangeFinder:a,widget:c})}},a.defineExtension("foldCode",function(a,c,d){b(this,a,c,d)}),a.defineExtension("isFolded",function(a){for(var b=this.findMarksAt(a),c=0;c=c;c++)b.foldCode(a.Pos(c,0),null,"fold")})},a.commands.unfoldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();d>=c;c++)b.foldCode(a.Pos(c,0),null,"unfold")})},a.registerHelper("fold","combine",function(){var a=Array.prototype.slice.call(arguments,0);return function(b,c){for(var d=0;d20||b.from-c.to>20?h(a):a.operation(function(){c.fromb.to&&(g(a,b.to,c.to),b.to=c.to)})},c.updateViewportTimeSpan||400)}function l(a,b){var c=a.state.foldGutter,d=b.line;d>=c.from&&dk&&!(f(k+1,h,l)<=i);)++k,h=l,l=b.getLine(k+2);return{from:a.Pos(c.line,g.length),to:a.Pos(k,b.getLine(k).length)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function e(a,b,e,g){var h=a.getLineHandle(b.line),i=b.ch-1,j=i>=0&&d[h.text.charAt(i)]||d[h.text.charAt(++i)];if(!j)return null;var k=">"==j.charAt(1)?1:-1;if(e&&k>0!=(i==b.ch))return null;var l=a.getTokenTypeAt(c(b.line,i+1)),m=f(a,c(b.line,i+(k>0?1:0)),k,l||null,g);return null==m?null:{from:c(b.line,i),to:m&&m.pos,match:m&&m.ch==j.charAt(0),forward:k>0}}function f(a,b,e,f,g){for(var h=g&&g.maxScanLineLength||1e4,i=g&&g.maxScanLines||1e3,j=[],k=g&&g.bracketRegex?g.bracketRegex:/[(){}[\]]/,l=e>0?Math.min(b.line+i,a.lastLine()+1):Math.max(a.firstLine()-1,b.line-i),m=b.line;m!=l;m+=e){var n=a.getLine(m);if(n){var o=e>0?0:n.length-1,p=e>0?n.length:-1;if(!(n.length>h))for(m==b.line&&(o=b.ch-(0>e?1:0));o!=p;o+=e){var q=n.charAt(o);if(k.test(q)&&(void 0===f||a.getTokenTypeAt(c(m,o+1))==f)){var r=d[q];if(">"==r.charAt(1)==e>0)j.push(q);else{if(!j.length)return{pos:c(m,o),ch:q};j.pop()}}}}}return m-e==(e>0?a.lastLine():a.firstLine())?!1:null}function g(a,d,f){for(var g=a.state.matchBrackets.maxHighlightLineLength||1e3,h=[],i=a.listSelections(),j=0;j",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},h=null;a.defineOption("matchBrackets",!1,function(b,c,d){d&&d!=a.Init&&b.off("cursorActivity",i),c&&(b.state.matchBrackets="object"==typeof c?c:{},b.on("cursorActivity",i))}),a.defineExtension("matchBrackets",function(){g(this,!0)}),a.defineExtension("findMatchingBracket",function(a,b,c){return e(this,a,b,c)}),a.defineExtension("scanForBracket",function(a,b,c,d){return f(this,a,b,c,d)})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function d(a,b){this.cm=a,this.options=this.buildOptions(b),this.widget=this.onClose=null}function e(a){return"string"==typeof a?a:a.text}function f(a,b){function f(a,d){var f;f="string"!=typeof d?function(a){return d(a,b)}:c.hasOwnProperty(d)?c[d]:d,e[a]=f}var c={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},d=a.options.customKeys,e=d?{}:c;if(d)for(var g in d)d.hasOwnProperty(g)&&f(g,d[g]);var h=a.options.extraKeys;if(h)for(var g in h)h.hasOwnProperty(g)&&f(g,h[g]);return e}function g(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function h(d,h){this.completion=d,this.data=h;var i=this,j=d.cm,k=this.hints=document.createElement("ul");k.className="CodeMirror-hints",this.selectedHint=h.selectedHint||0;for(var l=h.list,m=0;m0){var y=w.bottom-w.top,z=q.top-(q.bottom-w.top);if(z-y>0)k.style.top=(s=q.top-y)+"px",t=!1;else if(y>v){k.style.height=v-5+"px",k.style.top=(s=q.bottom-w.top)+"px";var A=j.getCursor();h.from.ch!=A.ch&&(q=j.cursorCoords(A),k.style.left=(r=q.left)+"px",w=k.getBoundingClientRect())}}var B=w.left-u;if(B>0&&(w.right-w.left>u&&(k.style.width=u-5+"px",B-=w.right-w.left-u),k.style.left=(r=q.left-B)+"px"),j.addKeyMap(this.keyMap=f(d,{moveFocus:function(a,b){i.changeActive(i.selectedHint+a,b)},setFocus:function(a){i.changeActive(a)},menuSize:function(){return i.screenAmount()},length:l.length,close:function(){d.close()},pick:function(){i.pick()},data:h})),d.options.closeOnUnfocus){var C;j.on("blur",this.onBlur=function(){C=setTimeout(function(){d.close()},100)}),j.on("focus",this.onFocus=function(){clearTimeout(C)})}var D=j.getScrollInfo();return j.on("scroll",this.onScroll=function(){var a=j.getScrollInfo(),b=j.getWrapperElement().getBoundingClientRect(),c=s+D.top-a.top,e=c-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return t||(e+=k.offsetHeight),e<=b.top||e>=b.bottom?d.close():(k.style.top=c+"px",k.style.left=r+D.left-a.left+"px",void 0)}),a.on(k,"dblclick",function(a){var b=g(k,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),i.pick())}),a.on(k,"click",function(a){var b=g(k,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),d.options.completeOnSingleClick&&i.pick())}),a.on(k,"mousedown",function(){setTimeout(function(){j.focus()},20)}),a.signal(h,"select",l[0],k.firstChild),!0}var b="CodeMirror-hint",c="CodeMirror-hint-active";a.showHint=function(a,b,c){if(!b)return a.showHint(c);c&&c.async&&(b.async=!0);var d={hint:b};if(c)for(var e in c)d[e]=c[e];return a.showHint(d)},a.defineExtension("showHint",function(b){if(!(this.listSelections().length>1||this.somethingSelected())){this.state.completionActive&&this.state.completionActive.close();var c=this.state.completionActive=new d(this,b),e=c.options.hint;if(e)return a.signal(this,"startCompletion",this),e.async?(e(this,function(a){c.showHints(a)},c.options),void 0):c.showHints(e(this,c.options))}}),d.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),a.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(b,c){var d=b.list[c];d.hint?d.hint(this.cm,b,d):this.cm.replaceRange(e(d),d.from||b.from,d.to||b.to,"complete"),a.signal(b,"pick",d),this.close()},showHints:function(a){return a&&a.list.length&&this.active()?(this.options.completeSingle&&1==a.list.length?this.pick(a,0):this.showWidget(a),void 0):this.close()},showWidget:function(b){function l(){e||(e=!0,d.close(),d.cm.off("cursorActivity",p),b&&a.signal(b,"close"))}function m(){if(!e){a.signal(b,"update");var c=d.options.hint;c.async?c(d.cm,n,d.options):n(c(d.cm,d.options))}}function n(a){if(b=a,!e){if(!b||!b.list.length)return l();d.widget&&d.widget.close(),d.widget=new h(d,b)}}function o(){c&&(k(c),c=0)}function p(){o();var a=d.cm.getCursor(),b=d.cm.getLine(a.line);a.line!=g.line||b.length-a.ch!=i-g.ch||a.ch=this.data.list.length?b=d?this.data.list.length-1:0:0>b&&(b=d?0:this.data.list.length-1),this.selectedHint!=b){var e=this.hints.childNodes[this.selectedHint];e.className=e.className.replace(" "+c,""),e=this.hints.childNodes[this.selectedHint=b],e.className+=" "+c,e.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=e.offsetTop+e.offsetHeight-this.hints.clientHeight+3),a.signal(this.data,"select",this.data.list[this.selectedHint],e)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",function(b,c){var e,d=b.getHelpers(b.getCursor(),"hint");if(d.length)for(var f=0;f,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null,extraKeys:null};a.defineOption("hintOptions",null)}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function c(a,b){return a.line-b.line||a.ch-b.ch}function g(a,b,c,d){this.line=b,this.ch=c,this.cm=a,this.text=a.getLine(b),this.min=d?d.from:a.firstLine(),this.max=d?d.to-1:a.lastLine()}function h(a,c){var d=a.cm.getTokenTypeAt(b(a.line,c));return d&&/\btag\b/.test(d)}function i(a){return a.line>=a.max?void 0:(a.ch=0,a.text=a.cm.getLine(++a.line),!0)}function j(a){return a.line<=a.min?void 0:(a.text=a.cm.getLine(--a.line),a.ch=a.text.length,!0)}function k(a){for(;;){var b=a.text.indexOf(">",a.ch);if(-1==b){if(i(a))continue;return}{if(h(a,b+1)){var c=a.text.lastIndexOf("/",b),d=c>-1&&!/\S/.test(a.text.slice(c+1,b));return a.ch=b+1,d?"selfClose":"regular"}a.ch=b+1}}}function l(a){for(;;){var b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1==b){if(j(a))continue;return}if(h(a,b+1)){f.lastIndex=b,a.ch=b;var c=f.exec(a.text);if(c&&c.index==b)return c}else a.ch=b}}function m(a){for(;;){f.lastIndex=a.ch;var b=f.exec(a.text);if(!b){if(i(a))continue;return}{if(h(a,b.index+1))return a.ch=b.index+b[0].length,b;a.ch=b.index+1}}}function n(a){for(;;){var b=a.ch?a.text.lastIndexOf(">",a.ch-1):-1;if(-1==b){if(j(a))continue;return}{if(h(a,b+1)){var c=a.text.lastIndexOf("/",b),d=c>-1&&!/\S/.test(a.text.slice(c+1,b));return a.ch=b+1,d?"selfClose":"regular"}a.ch=b}}}function o(a,c){for(var d=[];;){var f,e=m(a),g=a.line,h=a.ch-(e?e[0].length:0);if(!e||!(f=k(a)))return;if("selfClose"!=f)if(e[1]){for(var i=d.length-1;i>=0;--i)if(d[i]==e[2]){d.length=i;break}if(0>i&&(!c||c==e[2]))return{tag:e[2],from:b(g,h),to:b(a.line,a.ch)}}else d.push(e[2])}}function p(a,c){for(var d=[];;){var e=n(a);if(!e)return;if("selfClose"!=e){var f=a.line,g=a.ch,h=l(a);if(!h)return;if(h[1])d.push(h[2]);else{for(var i=d.length-1;i>=0;--i)if(d[i]==h[2]){d.length=i;break}if(0>i&&(!c||c==h[2]))return{tag:h[2],from:b(a.line,a.ch),to:b(f,g)}}}else l(a)}}var b=a.Pos,d="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",e=d+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",f=new RegExp("<(/?)(["+d+"]["+e+"]*)","g");a.registerHelper("fold","xml",function(a,c){for(var d=new g(a,c.line,0);;){var f,e=m(d);if(!e||d.line!=c.line||!(f=k(d)))return;if(!e[1]&&"selfClose"!=f){var c=b(d.line,d.ch),h=o(d,e[2]);return h&&{from:c,to:h.from}}}}),a.findMatchingTag=function(a,d,e){var f=new g(a,d.line,d.ch,e);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var h=k(f),i=h&&b(f.line,f.ch),j=h&&l(f);if(h&&j&&!(c(f,d)>0)){var m={from:b(f.line,f.ch),to:i,tag:j[2]};return"selfClose"==h?{open:m,close:null,at:"open"}:j[1]?{open:p(f,j[2]),close:m,at:"close"}:(f=new g(a,i.line,i.ch,e),{open:m,close:o(f,j[2]),at:"open"})}}},a.findEnclosingTag=function(a,b,c){for(var d=new g(a,b.line,b.ch,c);;){var e=p(d);if(!e)break;var f=new g(a,b.line,b.ch,c),h=o(f,e.tag);if(h)return{open:e,close:h}}},a.scanForClosingTag=function(a,b,c,d){var e=new g(a,b.line,b.ch,d?{from:0,to:d}:null);return o(e,c)}}); \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror.css deleted file mode 100644 index e2d4ec2048..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/codemirror/lib/codemirror.css +++ /dev/null @@ -1,318 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; -} -.CodeMirror-scroll { - /* Set scrolling behaviour here */ - overflow: auto; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror div.CodeMirror-cursor { - border-left: 1px solid black; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.CodeMirror.cm-fat-cursor div.CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; -} -.CodeMirror.cm-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} - -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -@-moz-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@-webkit-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} - -/* Can style cursor different in overwrite (non-insert) mode */ -div.CodeMirror-overwrite div.CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} -.cm-strikethrough {text-decoration: line-through;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - line-height: 1; - position: relative; - overflow: hidden; - background: white; - color: black; -} - -.CodeMirror-scroll { - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actuall scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - padding-bottom: 30px; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - -moz-box-sizing: content-box; - box-sizing: content-box; - padding-bottom: 30px; - margin-bottom: -32px; - display: inline-block; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-wrapper { - position: absolute; - z-index: 4; - height: 100%; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} -.CodeMirror-measure pre { position: static; } - -.CodeMirror div.CodeMirror-cursor { - position: absolute; - border-right: none; - width: 0; -} - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* See issue #2901 */ -.cm-tab-wrap-hack:after { content: ''; } - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.css deleted file mode 100644 index 2dd7b351cd..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.css +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Styles for the Nifi combo box. -*/ - -.combo { - color: #262626; - font-family: Roboto, sans-serif; - font-size: 13px; - padding:0 10px; - height: 30px; - line-height: 30px; - border: 1px solid #eaeef0; -} - -.combo-options { - background: #fefefe; - color: #262626; - list-style: none; - border: 1px solid #004849; - box-shadow:0 3px 6px rgba(0,0,0,0.3); - z-index: 2000; - border-top: none; - font-size: 13px; -} - -.combo-options .fa { - color: #004849; -} - -.combo-open { - background: #fff !important; - border: 1px solid #004849 !important; - border-bottom: 1px solid #fff !important; - font-weight: bold; - color: #262626; - box-shadow:0 3px 6px rgba(0,0,0,0.3); -} - -.combo .combo-arrow { - float: right; - width: 10px; - line-height: 30px; -} - -.combo .combo-text { - float: left; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - width: calc(100% - 15px); - font-weight: normal; -} - -div.selected-disabled-option { - font-style: italic; - color: #828282; -} - -.combo-options ul > li { - height: 32px; - padding: 0px 10px; -} - -.combo-options ul > li.disabled-option { - font-style: italic; -} - -.combo-option-text { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - float: left; - height: 32px; - font-weight: normal; - line-height: 32px; - width: calc(100% - 15px); -} - -.combo-option-special { - font-style: italic; -} - -.combo-glass-pane { - position: absolute; - background: #E3E8EB; - opacity: 0.0; - left: 0px; - top: 0px; - right: 0px; - bottom: 0px; - z-index: 1999; -} - -div.combo-nifi-tooltip { - border: 1px solid #454545; - background-color: #FFFFA3; - color: #454545; -} - -div.combo-button-normal { - background-color: #eaeef0; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js deleted file mode 100644 index fb825d5bc7..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* requires qtip plugin to be loaded first*/ - -/** - * Create a new combo box. The options are specified in the following - * format: - * - * { - * selectedOption: { - * value: 'option 2' - * }, - * options: [{ - * text: 'option 1', - * value: 'option 1', - * disabled: true, - * description: 'Option description...' - * }, { - * text: 'option 2', - * value: 'option 2', - * optionClass: 'my-style' - * }], - * maxHeight: 300, - * select: selectHandler - * } - * - * Options have a label (specified as the text property that is rendered - * to users) and a value which is not. Additionally, options can be marked - * as disabled. A disabled option cannot be selected by a user but may be - * programmatically selected (supporting the restoration of options that have - * become invalid). It is up to the developer to ensure that the selected - * option is not disabled. - * - * The optionClass option supports specifying a class to apply to the - * option element. - */ - -/** - * jQuery plugin for a NiFi style combo box. - * - * @param {type} $ - * @returns {undefined} - */ -(function ($) { - - var isUndefined = function (obj) { - return typeof obj === 'undefined'; - }; - - var isNull = function (obj) { - return obj === null; - }; - - var isDefinedAndNotNull = function (obj) { - return !isUndefined(obj) && !isNull(obj); - }; - - var isBlank = function (str) { - return isUndefined(str) || isNull(str) || str === ''; - }; - - var selectOption = function (combo, text, value) { - var config = combo.data('options'); - var comboText = combo.children('div.combo-text'); - var selectedOption; - - // attempt to match on value first - $.each(config.options, function (i, option) { - if (value === option.value) { - selectedOption = option; - return false; - } - }); - - // if no option values matched, try the text - if (isUndefined(selectedOption)) { - $.each(config.options, function (i, option) { - if (isUndefined(selectedOption)) { - selectedOption = option; - } - - if (text === option.text) { - selectedOption = option; - } - }); - } - - // ensure we found the selected option - if (isDefinedAndNotNull(selectedOption)) { - comboText.removeClass('selected-disabled-option').attr('title', selectedOption.text).text(selectedOption.text).data('text', selectedOption.text); - - // if the selected option is disabled show it - if (selectedOption.disabled === true) { - comboText.addClass('selected-disabled-option'); - } - - // store the selected option - combo.data('selected-option', selectedOption); - - // fire a select event if applicable - if (isDefinedAndNotNull(config.select)) { - config.select.call(combo, selectedOption); - } - } - - }; - - var methods = { - - /** - * Initializes the combo box. - * - * @argument {object} options The options for the combo box - */ - init: function (options) { - return this.each(function () { - // ensure the options have been properly specified - if (isDefinedAndNotNull(options) && - isDefinedAndNotNull(options.options)) { - - // get the combo - var combo = $(this); - - // clear any current contents, remote events, and store options - combo.empty().unbind().data('options', options); - - // add a div to hold the text - $('
      ').appendTo(combo); - - // add hover effect and handle a combo click - combo.addClass('combo-button-normal pointer combo').hover(function () { - combo.removeClass('button-normal').addClass('combo-button-over'); - }, function () { - combo.removeClass('button-over').addClass('combo-button-normal'); - }).click(function (event) { - var comboConfigOptions = combo.data('options'); - - //add active styles - $(this).addClass('combo-open'); - - // determine the position of the element in question - var position = combo.offset(); - - // create the combo box options beneath it - var comboOptions = $('
      ').addClass('combo-options').css({ - 'position': 'absolute', - 'left': position.left + 'px', - 'top': (position.top + Math.round(combo.outerHeight()) - 1) + 'px', - 'width': (Math.round(combo.outerWidth()) - 2) + 'px', - 'overflow-y': 'auto' - }); - - // keep track of the overall height - var actualHeight = 0; - - // set the max height if necessary - var maxHeight = -1; - if (isDefinedAndNotNull(comboConfigOptions.maxHeight)) { - maxHeight = parseInt(comboConfigOptions.maxHeight); - if (maxHeight > 0) { - comboOptions.css('max-height', maxHeight + 'px'); - } - } else { - var windowHeight = $(window).height(); - maxHeight = windowHeight - (position.top + Math.round(combo.outerHeight())) - 32; - comboOptions.css('max-height', maxHeight + 'px'); - } - - // create the list that will contain the options - var optionList = $('
        ').appendTo(comboOptions); - - // process the options - $.each(comboConfigOptions.options, function (i, option) { - var optionText = $('').attr('title', option.text).text(option.text); - var optionValue = $('').text(option.value); - - // create each option - var optionElement = $('
      • ').addClass(option.optionClass).append(optionText).append(optionValue).appendTo(optionList); - - // this is option is enabled register appropriate listeners - if (option.disabled === true) { - optionElement.addClass('unset disabled-option'); - } else { - optionElement.click(function () { - //remove active styles - $('.combo').removeClass('combo-open'); - - // select the option - selectOption(combo, option.text, option.value); - - // click the glass pane which will hide the options - $('.combo-glass-pane').click(); - }).hover(function () { - $(this).addClass('pointer').css('background', '#eaeef0'); - }, function () { - $(this).removeClass('pointer').css('background', '#ffffff'); - }); - } - - if (!isBlank(option.description)) { - $('
        ').appendTo(optionElement).qtip({ - content: option.description, - position: { - at: 'top center', - my: 'bottom center', - adjust: { - y: 5 - } - }, - style: { - classes: 'nifi-tooltip' - }, - show: { - solo: true, - effect: function(offset) { - $(this).slideDown(100); - } - }, - hide: { - effect: function(offset) { - $(this).slideUp(100); - } - } - } - ); - } else { - optionText.css('width', '100%'); - } - - actualHeight += 16; - }); - - // show the glass pane to catch the click events - var comboGlassPane = $('
        ').one('click', function () { - if (comboOptions.length !== 0) { - // clean up tooltips - comboOptions.find('.fa').each(function () { - var tip = $(this); - if (tip.data('qtip')) { - var api = tip.qtip('api'); - api.destroy(true); - } - }); - // remove the options - comboOptions.remove(); - - //remove active styles - $('.combo').removeClass('combo-open'); - } - - // remove the glass pane - $(this).remove(); - }); - - // add the combo to the dom - $('body').append(comboOptions).append(comboGlassPane); - - // stop the event propagation so the body click event isn't fired - event.stopPropagation(); - }); - - // add the drop down arrow - $('
        ').appendTo(combo); - - // get the first option - var firstOption = null; - if (options.options.length > 0) { - firstOption = options.options[0]; - } - - // set the selection - if (isDefinedAndNotNull(options.selectedOption)) { - selectOption(combo, options.selectedOption.text, options.selectedOption.value); - } else if (isNull(firstOption)) { - selectOption(combo); - } else { - selectOption(combo, firstOption.text, firstOption.value); - } - } - }); - }, - - /** - * Returns the selected option of the first matching element. - */ - getSelectedOption: function () { - var value; - - this.each(function () { - value = $(this).data('selected-option'); - return false; - }); - - return value; - }, - - /** - * Sets the selected option. - * - * @argument {object} option The option to select - */ - setSelectedOption: function (option) { - return this.each(function () { - selectOption($(this), option.text, option.value); - }); - }, - - /** - * Sets whether the specified option is enabled or disabled. - * - * @param option - * @param enabled - */ - setOptionEnabled: function (option, enabled) { - return this.each(function () { - var combo = $(this); - var comboConfigOptions = combo.data('options'); - - $.each(comboConfigOptions.options, function (i, configOption) { - if (configOption.value === option.value) { - configOption.disabled = !enabled; - } - }); - }); - }, - - /** - * Destroys the combo. - */ - destroy: function () { - return this.each(function () { - $(this).empty().unbind().removeData(); - - // remove the options if open - $('div.combo-glass-pane').click(); - }); - }, - - /** - * Closes the combo. - */ - close: function () { - $('div.combo-glass-pane').click(); - } - }; - - $.fn.combo = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else { - return methods.init.apply(this, arguments); - } - }; -})(jQuery); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/menuArrow.png b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/menuArrow.png deleted file mode 100755 index 48c4d20fa98e0e023078b0d1bef94fceb8a63e32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^AT}!p8<4C?sm%aVEX7WqAsj$Z!;#Vf4nJ za0`Jj|B^z&!m=MU%I4VD|6@G%|G%PHdP+({@EeQdV?E3~Kv2*MB9|^*dZJ5q f_wL>N2c9s*8cQpFj@Z2yXgq_btDnm{r-UW|fe%ZO diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/menuArrowSmall.png b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/menuArrowSmall.png deleted file mode 100755 index ee380931b21506f0e7c5e9a6737fa4a9df6608cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^96-#%!3HEZpRM}<;uJf1hHwBu4M$1`kk47*5n0T@ zz%2yAjF;}#{Q(Nfl(C#5R5WfrBD=NDxcD>w(6ux+}$0H{t3 zq|Ui0HL)Z!KTjbfGdGpNz*HZI3=KuqEtP;O96eneLpWw8n;0AaKHtE;p`)wI%E-Xr z&2h!|Cw~0@U*C4*hzq+;m(26?^XnTv{;%)gm6Vh`(Iu09W=3H{V`C#D!}LU9 Rm;w!B@O1TaS?83{1OP;~N(=x1 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.base64.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.base64.js deleted file mode 100644 index 32ceab073f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.base64.js +++ /dev/null @@ -1,123 +0,0 @@ -/*! - * jquery.base64.js 0.0.3 - https://github.com/yckart/jquery.base64.js - * Makes Base64 en & -decoding simpler as it is. - * - * Based upon: https://gist.github.com/Yaffle/1284012 - * - * Copyright (c) 2012 Yannick Albert (http://yckart.com) - * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php). - * 2013/02/10 - **/ -;(function($) { - - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", - a256 = '', - r64 = [256], - r256 = [256], - i = 0; - - var UTF8 = { - - /** - * Encode multi-byte Unicode string into utf-8 multiple single-byte characters - * (BMP / basic multilingual plane only) - * - * Chars in range U+0080 - U+07FF are encoded in 2 chars, U+0800 - U+FFFF in 3 chars - * - * @param {String} strUni Unicode string to be encoded as UTF-8 - * @returns {String} encoded string - */ - encode: function(strUni) { - // use regular expressions & String.replace callback function for better efficiency - // than procedural approaches - var strUtf = strUni.replace(/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz - function(c) { - var cc = c.charCodeAt(0); - return String.fromCharCode(0xc0 | cc >> 6, 0x80 | cc & 0x3f); - }) - .replace(/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz - function(c) { - var cc = c.charCodeAt(0); - return String.fromCharCode(0xe0 | cc >> 12, 0x80 | cc >> 6 & 0x3F, 0x80 | cc & 0x3f); - }); - return strUtf; - }, - - /** - * Decode utf-8 encoded string back into multi-byte Unicode characters - * - * @param {String} strUtf UTF-8 string to be decoded back to Unicode - * @returns {String} decoded string - */ - decode: function(strUtf) { - // note: decode 3-byte chars first as decoded 2-byte strings could appear to be 3-byte char! - var strUni = strUtf.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars - function(c) { // (note parentheses for precence) - var cc = ((c.charCodeAt(0) & 0x0f) << 12) | ((c.charCodeAt(1) & 0x3f) << 6) | (c.charCodeAt(2) & 0x3f); - return String.fromCharCode(cc); - }) - .replace(/[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars - function(c) { // (note parentheses for precence) - var cc = (c.charCodeAt(0) & 0x1f) << 6 | c.charCodeAt(1) & 0x3f; - return String.fromCharCode(cc); - }); - return strUni; - } - }; - - while(i < 256) { - var c = String.fromCharCode(i); - a256 += c; - r256[i] = i; - r64[i] = b64.indexOf(c); - ++i; - } - - function code(s, discard, alpha, beta, w1, w2) { - s = String(s); - var buffer = 0, - i = 0, - length = s.length, - result = '', - bitsInBuffer = 0; - - while(i < length) { - var c = s.charCodeAt(i); - c = c < 256 ? alpha[c] : -1; - - buffer = (buffer << w1) + c; - bitsInBuffer += w1; - - while(bitsInBuffer >= w2) { - bitsInBuffer -= w2; - var tmp = buffer >> bitsInBuffer; - result += beta.charAt(tmp); - buffer ^= tmp << bitsInBuffer; - } - ++i; - } - if(!discard && bitsInBuffer > 0) result += beta.charAt(buffer << (w2 - bitsInBuffer)); - return result; - } - - var Plugin = $.base64 = function(dir, input, encode) { - return input ? Plugin[dir](input, encode) : dir ? null : this; - }; - - Plugin.btoa = Plugin.encode = function(plain, utf8encode) { - plain = Plugin.raw === false || Plugin.utf8encode || utf8encode ? UTF8.encode(plain) : plain; - plain = code(plain, false, r256, b64, 8, 6); - return plain + '===='.slice((plain.length % 4) || 4); - }; - - Plugin.atob = Plugin.decode = function(coded, utf8decode) { - coded = coded.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - coded = String(coded).split('='); - var i = coded.length; - do {--i; - coded[i] = code(coded[i], true, r64, a256, 6, 8); - } while (i > 0); - coded = coded.join(''); - return Plugin.raw === false || Plugin.utf8decode || utf8decode ? UTF8.decode(coded) : coded; - }; -}(jQuery)); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.center.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.center.js deleted file mode 100644 index 407bd47e1e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.center.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Simple jQuery plugin to center any matched elements. Implementation - * specifics suggested on StackOverflow. - * - * @param {type} $ - * @returns {undefined} - */ -(function ($) { - $.fn.center = function () { - return this.each(function () { - $(this).css({ - 'position': 'absolute', - 'top': ($(window).height() - $(this).outerHeight()) / 2 + $(window).scrollTop() + 'px', - 'left': ($(window).width() - $(this).outerWidth()) / 2 + $(window).scrollLeft() + 'px' - }); - }); - }; -})(jQuery); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.count.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.count.js deleted file mode 100644 index e61d932a43..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.count.js +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Adds a simple character counter functionality to the matched elements. The - * options are specified in the following format: - * - * { - * charCountField: element or dom id for displaying the remaining characters (must support .text()) - * maxLength: maxlength in case the matched element does not have a max length set - * } - * - * Implementation specifics suggested on StackOverflow. - * - * @param {type} $ - * @returns {undefined} - */ -(function ($) { - - var isUndefined = function (obj) { - return typeof obj === 'undefined'; - }; - - var isNull = function (obj) { - return obj === null; - }; - - var isDefinedAndNotNull = function (obj) { - return !isUndefined(obj) && !isNull(obj); - }; - - var methods = { - - /** - * Initializes the count widget. - * - * @param {type} options - */ - init: function (options) { - return this.each(function () { - // ensure the options have been properly specified - if (isDefinedAndNotNull(options) && isDefinedAndNotNull(options.charCountField)) { - - // get the field - var field = $(this); - - // determine the appropriate max length - var maxLength = $(field).attr('maxlength'); - if (isUndefined(maxLength) || isNull(maxLength)) { - maxLength = options.maxLength; - } - - // ensure we found a max length - if (isDefinedAndNotNull(maxLength)) { - // listen for keyup and blur events - $(field).bind('keyup blur', function () { - // get the current value - var value = $(field).val(); - - // determine if the length is too long - if (value.length > maxLength) { - // update the value accordingly - $(field).val(value.slice(0, maxLength)); - - // update the count field - $(options.charCountField).text(0); - } else { - // update the count field - $(options.charCountField).text(maxLength - value.length); - } - }).keyup(); - } - } - }); - } - }; - - $.fn.count = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else { - return methods.init.apply(this, arguments); - } - }; -})(jQuery); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.each.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.each.js deleted file mode 100644 index 90f76b880f..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.each.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -(function ($) { - // get a reference to the original each method - var origEach = $.each; - - // override the jQuery each method (not $.fn.each as - // we are not calling with a jQuery 'instance', $.fn.each - // defers to this function with 'this' as the object param) - $.each = function (object, callback, args) { - // ensure the object specified is not undefined or null - if (typeof object !== 'undefined' && object !== null) { - return origEach.call(this, object, callback, args); - } - return object; - }; -})(jQuery); \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.ellipsis.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.ellipsis.js deleted file mode 100644 index ceb95dfa8e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.ellipsis.js +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Plugin to provide support for generating ellipsis. This plugin comprises - * a number of suggested techniques found on StackOverflow. - * - * @param {type} $ - * @returns {undefined} - */ -(function ($) { - - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/' - }; - - var escapeHtml = function (string) { - return String(string).replace(/[&<>"'\/]/g, function (s) { - return entityMap[s]; - }); - }; - - /** - * Inserts ellipsis in elements where the contents exceed the width. The - * original text is preserved in the title attribute of the element. The - * element should have the following css properties: - * - * overflow: hidden; - * white-space: nowrap; - * width: 50px (value must be set in 'px') - * - * If multiline is desired, add a 'multiline' class to the element. - * - * @param {type} addTooltip - */ - $.fn.ellipsis = function (addTooltip) { - addTooltip = (typeof addTooltip === 'undefined' || addTooltip === null) ? true : addTooltip; - - // function for determining if the browser supports ellipsis via css - function supportsOverflowProperty() { - var s = document.documentElement.style; - return ('textOverflow' in s || 'OTextOverflow' in s); - } - - function binarySearch(length, funct) { - var low = 0; - var high = length - 1; - var best = -1; - var mid; - - while (low <= high) { - mid = ~~((low + high) / 2); - var result = funct(mid); - if (result < 0) { - high = mid - 1; - } else if (result > 0) { - low = mid + 1; - } else { - best = mid; - low = mid + 1; - } - } - - return best; - } - - // chain and process each matched element - return this.each(function () { - var element = $(this); - - // preserve the original text in the title attribute - var text = element.text(); - if (addTooltip) { - element.attr('title', text); - } - - // determine if this is a multiline element - var multiline = element.hasClass('multiline'); - - // if its not multiline and the browser supports ellipsis via css, use it - if (!multiline && supportsOverflowProperty()) { - element.css({ - 'text-overflow': 'ellipsis', - 'o-text-overflow': 'ellipsis' - }); - } else { - // clone the element and add to the body - this addresses issues where - // the element may not have been added to the dom (causing its size and - // styles to be incorrect) - var cloneElement = $(this.cloneNode(true)).hide().appendTo('body'); - - // make a scratch element to adjusting the text size - var scratchElement = $(this.cloneNode(true)).hide().css({ - 'position': 'absolute', - 'overflow': 'visible' - }).width(multiline ? cloneElement.width() : 'auto').height(multiline ? 'auto' : cloneElement.height()).appendTo('body'); - - // function for determining if the scratch element is too tall - var isTooTall = function () { - return scratchElement.height() >= cloneElement.height(); - }; - - // function for determining if the scratch element is too wide - var isTooWide = function () { - return scratchElement.width() >= cloneElement.width(); - }; - - // determine the appropriate function to use - var isTooBig = multiline ? isTooTall : isTooWide; - - // if the text is too big, adjust it accordingly - if (isTooBig()) { - var originalText = escapeHtml(text); - - // function for creating the text within the scratch element - var createContent = function (i) { - var t = originalText.substr(0, i); - scratchElement.html(t + '…'); - }; - - // function for performing the search - var search = function (i) { - createContent(i); - if (isTooBig()) { - return -1; - } - return 0; - }; - - // determine the appropriate length - var length = binarySearch(originalText.length - 1, search); - - // create the content at the appropriate length - createContent(length); - } - - // update the actual elements value - element.html(scratchElement.html()); - - // remove the cloned and scratch elements - cloneElement.remove(); - scratchElement.remove(); - } - }); - }; -})(jQuery); \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.tab.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.tab.js deleted file mode 100644 index 5155153e7c..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/jquery.tab.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * Plugin to support entering tab characters into textarea's or textfield's. - * Code heavily borrowed from stackoverflow post by user tim-down - * (http://stackoverflow.com/questions/4379535/tab-within-a-text-area-without-changing-focus-jquery/4380032#4380032) - */ -(function ($) { - /** - * Adds key listeners for capturing tab keys. - */ - function allowTabChar(element) { - $(element).keydown(function (e) { - if (e.which == 9) { - if (e.shiftKey == false && e.ctrlKey == false) { - insertText(this, '\t'); - } - return false; - } - }).keypress(function (e) { - if (e.which == 9) { - return false; - } - }); - } - - /** - * Inserts the specified text into the specified element. - */ - function insertText(element, text) { - element.focus(); - if (typeof element.selectionStart == 'number') { - var value = element.value; - var selectionStart = element.selectionStart; - element.value = value.slice(0, selectionStart) + text + value.slice(element.selectionEnd); - element.selectionEnd = element.selectionStart = selectionStart + text.length; - } else if (typeof document.selection != 'undefined') { - var textRange = document.selection.createRange(); - textRange.text = text; - textRange.collapse(false); - textRange.select(); - } - } - - $.fn.tab = function () { - return this.each(function () { - if (this.nodeType == 1) { - var nodeName = this.nodeName.toLowerCase(); - if (nodeName == 'textarea' || (nodeName == 'input' && this.type == 'text')) { - allowTabChar(this); - } - } - }); - } -})(jQuery); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.css deleted file mode 100644 index f12da2989e..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.css +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - Styles for the Nifi dialog. -*/ - -.dialog { - background-color: #ffffff; - box-shadow: 0 5px 8px rgba(0,0,0,0.30); - overflow: hidden; - position: absolute; - top: 0px; - left: 0px; -} - -.small-dialog { - max-height: 32%; - max-width: 23%; - min-height: 250px; - min-width: 320px; - font-size: 13px; - line-height: 1.3; -} - -.medium-dialog { - max-height: 55%; - max-width: 34%; - min-height: 420px; - min-width: 470px; -} - -.medium-short-dialog { - max-height: 32%; - max-width: 34%; - min-height: 250px; - min-width: 440px; - font-size: 13px; - line-height: 1.3; -} - -.large-dialog { - max-height: 72%; - max-width: 55%; - min-height: 560px; - min-width: 760px; -} - -.modal-glass { - position: absolute; - left: 0px; - top: 0px; - right: 0px; - bottom: 0px; - opacity: 0.65; -} - -.dialog-header { - height: 56px; - background-color: #728E9B; - overflow: hidden; - color: #fff; - font-size: 18px; - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: bold; - text-overflow: ellipsis; - line-height: 56px; - padding: 0 20px; - white-space: nowrap; -} - -.dialog-header-subtitle { - font-size: 12px; - font-weight: normal; - padding-left: 10px; - margin-left: 10px; -} -.dialog-header-subtitle:not(:empty) { - border-left: 1px solid white; -} - -.dialog-content { - position: absolute; - top: 76px; - bottom: 52px; - left: 20px; - right: 20px; - overflow-y: auto; - word-wrap: break-word; -} - -.dialog-buttons { - position: absolute; - bottom: 0; - width: 100%; - height: 32px; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.js deleted file mode 100644 index d8d1f6ef22..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/modal/jquery.modal.js +++ /dev/null @@ -1,588 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Create a new dialog. - * - * If the height, width, and fullscreen breakpoints options are not set this plugin will look for (and use) - * any CSS defined styles for height, min/max-height, width, min/max-width. If no CSS styles are defined then the - * plugin will attempt to calculate these values when the dialog is first opened (based on screen size). - * - * The options are specified in the following format: - * - * { - * header: true, - * footer: true, - * headerText: 'Dialog Header', - * subtitleText: 'Dialog subtitle', - * scrollableContentStyle: 'scrollable', - * buttons: [{ - * buttonText: 'Cancel', - * color: { - * base: '#728E9B', - * hover: '#004849', - * text: '#ffffff' - * }, - * disabled: isDisabledFunction, - * handler: { - * click: cancelHandler - * } - * }, { - * buttonText: 'Apply', - * color: { - * base: '#E3E8EB', - * hover: '#C7D2D7', - * text: '#004849' - * }, - * disabled: isDisabledFunction, - * handler: { - * click: applyHandler - * } - * }], - * handler: { - * close: closeHandler, - * open: openHandler, - * resize: resizeHandler - * }, - * height: "55%", //optional. Property can also be set with css (accepts 'px' or '%' values) - * width: "34%", //optional. Property can also be set with css (accepts 'px' or '%' values) - * min-height: "420px", //optional, defaults to 'height'. Property can also be set with css (accepts 'px' values) - * min-width: "470px" //optional, defaults to 'width'. Property can also be set with css (accepts 'px' values) - * responsive: { - * x: "true", //optional, default true - * y: "true", //optional, default true - * fullscreen-height: "420px", //optional, default is original dialog height (accepts 'px' values) - * fullscreen-width: "470px", //optional, default is original dialog width (accepts 'px' values) - * }, - * glasspane: "#728E9B" //optional, sets the color of modal glasspane...default if unset is the dialog header color - * } - * - * The content of the dialog MUST be contained in an element with the class `dialog-content` - * directly under the dialog element. - * - *
        - *
        - * //Dialog Content.... - *
        - *
        - * - * @argument {jQuery} $ - */ -(function ($) { - - var isUndefined = function (obj) { - return typeof obj === 'undefined'; - }; - - var isNull = function (obj) { - return obj === null; - }; - - var isDefinedAndNotNull = function (obj) { - return !isUndefined(obj) && !isNull(obj); - }; - - var isBlank = function (str) { - return isUndefined(str) || isNull(str) || str === ''; - }; - - // private function for adding buttons - var addButtons = function (dialog, buttonModel) { - if (isDefinedAndNotNull(buttonModel)) { - var buttonWrapper = $('
        '); - $.each(buttonModel, function (i, buttonConfig) { - var isDisabled = function () { - return typeof buttonConfig.disabled === 'function' && buttonConfig.disabled.call() === true; - }; - - // create the button - var button = $('
        ').append($('').text(buttonConfig.buttonText)); - - // add the class if specified - if (isDefinedAndNotNull(buttonConfig.clazz)) { - button.addClass(buttonConfig.clazz); - } - - // set the color if specified - if (isDefinedAndNotNull(buttonConfig.color)) { - button.css({ - 'background': buttonConfig.color.base, - 'color': buttonConfig.color.text - }); - } - - // check if the button should be disabled - if (isDisabled()) { - button.addClass('disabled-button'); - } else { - // enable custom hover if specified - if (isDefinedAndNotNull(buttonConfig.color)) { - button.hover(function () { - $(this).css("background-color", buttonConfig.color.hover); - }, function () { - $(this).css("background-color", buttonConfig.color.base); - }); - } - - button.click(function () { - var handler = $(this).data('handler'); - if (isDefinedAndNotNull(handler) && typeof handler.click === 'function') { - handler.click.call(dialog); - } - }); - } - - // add the button to the wrapper - button.data('handler', buttonConfig.handler).appendTo(buttonWrapper); - }); - - // store the button model to refresh later - dialog.append(buttonWrapper).data('buttonModel', buttonModel); - } - }; - - var methods = { - - /** - * Initializes the dialog. - * - * @argument {object} options The options for the plugin - */ - init: function (options) { - return this.each(function () { - // get the combo - var dialog = $(this).addClass('dialog cancellable modal'); - dialog.css('display', 'none'); - - var nfDialogData = {}; - if (isDefinedAndNotNull(dialog.data('nf-dialog'))) { - nfDialogData = dialog.data('nf-dialog'); - } - - // ensure the options have been properly specified - if (isDefinedAndNotNull(options)) { - - $.extend(nfDialogData, options); - - //persist data attribute - dialog.data('nfDialog', nfDialogData); - } - - // determine if dialog needs a header - if (!isDefinedAndNotNull(nfDialogData.header) || nfDialogData.header) { - var dialogHeaderText = $(''); - var dialogHeader = $('
        ').prepend(dialogHeaderText); - - // determine if the specified header text is null - if (!isBlank(nfDialogData.headerText)) { - dialogHeaderText.text(nfDialogData.headerText); - } - - $('').addClass("dialog-header-subtitle").text(nfDialogData.subtitleText).appendTo(dialogHeader); - - - dialog.prepend(dialogHeader); - } - - // determine if dialog needs footer/buttons - if (!isDefinedAndNotNull(nfDialogData.footer) || nfDialogData.footer) { - // add the buttons - addButtons(dialog, nfDialogData.buttons); - } - }); - }, - - /** - * Sets the handler that is used when the dialog is closed. - * - * @argument {function} handler The function to call when hiding the dialog - */ - setCloseHandler: function (handler) { - return this.each(function (index, dialog) { - - var nfDialogData = {}; - if (isDefinedAndNotNull($(this).data('nf-dialog'))) { - nfDialogData = $(dialog).data('nf-dialog'); - } - if (!isDefinedAndNotNull(nfDialogData.handler)){ - nfDialogData.handler = {}; - } - nfDialogData.handler.close = handler; - - //persist data attribute - $(dialog).data('nfDialog', nfDialogData); - }); - }, - - /** - * Sets the handler that is used when the dialog is opened. - * - * @argument {function} handler The function to call when showing the dialog - */ - setOpenHandler: function (handler) { - return this.each(function (index, dialog) { - - var nfDialogData = {}; - if (isDefinedAndNotNull($(this).data('nf-dialog'))) { - nfDialogData = $(dialog).data('nf-dialog'); - } - if (!isDefinedAndNotNull(nfDialogData.handler)){ - nfDialogData.handler = {}; - } - nfDialogData.handler.open = handler; - - //persist data attribute - $(dialog).data('nfDialog', nfDialogData); - }); - }, - - /** - * Sets the handler that is used when the dialog is resized. - * - * @argument {function} handler The function to call when resizing the dialog - */ - setResizeHandler: function (handler) { - return this.each(function (index, dialog) { - - var nfDialogData = {}; - if (isDefinedAndNotNull($(this).data('nf-dialog'))) { - nfDialogData = $(dialog).data('nf-dialog'); - } - if (!isDefinedAndNotNull(nfDialogData.handler)){ - nfDialogData.handler = {}; - } - nfDialogData.handler.resize = handler; - - //persist data attribute - $(dialog).data('nfDialog', nfDialogData); - }); - }, - - /** - * Updates the button model for the selected dialog. - * - * @argument {array} buttons The new button model - */ - setButtonModel: function (buttons) { - return this.each(function () { - if (isDefinedAndNotNull(buttons)) { - var dialog = $(this); - - // remove the current buttons - dialog.children('.dialog-buttons').remove(); - - // add the new buttons - addButtons(dialog, buttons); - } - }); - }, - - /** - * Refreshes the buttons with the existing model. - */ - refreshButtons: function () { - return this.each(function () { - var dialog = $(this); - var buttons = dialog.data('buttonModel'); - - // remove the current buttons - dialog.children('.dialog-buttons').remove(); - - // add the new buttons - addButtons(dialog, buttons); - }); - }, - - /** - * Sets the header text of the dialog. - * - * @argument {string} text Text to use a as a header - */ - setHeaderText: function (text) { - return this.each(function () { - $(this).find('span.dialog-header-text').text(text); - }); - }, - - setSubtitle: function (text) { - return this.each(function () { - $(this).find('span.dialog-header-subtitle').text(text); - }); - }, - - resize: function () { - var dialog = $(this); - var dialogContent = dialog.find('.dialog-content'); - - var nfDialogData = {}; - if (isDefinedAndNotNull(dialog.data('nf-dialog'))) { - nfDialogData = dialog.data('nf-dialog'); - } - - //initialize responsive properties - if (!isDefinedAndNotNull(nfDialogData.responsive)) { - nfDialogData.responsive = {}; - - if (!isDefinedAndNotNull(nfDialogData.responsive.x)) { - nfDialogData.responsive.x = true; - } - - if (!isDefinedAndNotNull(nfDialogData.responsive.y)) { - nfDialogData.responsive.y = true; - } - } else { - if (!isDefinedAndNotNull(nfDialogData.responsive.x)) { - nfDialogData.responsive.x = true; - } else { - nfDialogData.responsive.x = (nfDialogData.responsive.x == "true" || nfDialogData.responsive.x == true) ? true : false; - } - - if (!isDefinedAndNotNull(nfDialogData.responsive.y)) { - nfDialogData.responsive.y = true; - } else { - nfDialogData.responsive.y = (nfDialogData.responsive.y == "true" || nfDialogData.responsive.y == true) ? true : false; - } - } - - if (nfDialogData.responsive.y || nfDialogData.responsive.x) { - - var fullscreenHeight; - var fullscreenWidth; - - if (isDefinedAndNotNull(nfDialogData.responsive['fullscreen-height'])) { - fullscreenHeight = parseInt(nfDialogData.responsive['fullscreen-height'], 10); - } else { - nfDialogData.responsive['fullscreen-height'] = dialog.height() + 'px'; - - fullscreenHeight = parseInt(nfDialogData.responsive['fullscreen-height'], 10); - } - - if (isDefinedAndNotNull(nfDialogData.responsive['fullscreen-width'])) { - fullscreenWidth = parseInt(nfDialogData.responsive['fullscreen-width'], 10); - } else { - nfDialogData.responsive['fullscreen-width'] = dialog.width() + 'px'; - - fullscreenWidth = parseInt(nfDialogData.responsive['fullscreen-width'], 10); - } - - if (!isDefinedAndNotNull(nfDialogData.width)) { - nfDialogData.width = dialog.css('width'); - } - - if (!isDefinedAndNotNull(nfDialogData['min-width'])) { - if (parseInt(dialog.css('min-width'), 10) > 0) { - nfDialogData['min-width'] = dialog.css('min-width'); - } else { - nfDialogData['min-width'] = nfDialogData.width; - } - } - - //min-width should always be set in terms of px - if (nfDialogData['min-width'].indexOf("%") > 0) { - nfDialogData['min-width'] = ($(window).width() * (parseInt(nfDialogData['min-width'], 10) / 100)) + 'px'; - } - - if (!isDefinedAndNotNull(nfDialogData.height)) { - nfDialogData.height = dialog.css('height'); - } - - if (!isDefinedAndNotNull(nfDialogData['min-height'])) { - if (parseInt(dialog.css('min-height'), 10) > 0) { - nfDialogData['min-height'] = dialog.css('min-height'); - } else { - nfDialogData['min-height'] = nfDialogData.height; - } - } - - //min-height should always be set in terms of px - if (nfDialogData['min-height'].indexOf("%") > 0) { - nfDialogData['min-height'] = ($(window).height() * (parseInt(nfDialogData['min-height'], 10) / 100)) + 'px'; - } - - //resize dialog - if ($(window).height() < fullscreenHeight) { - if (nfDialogData.responsive.y) { - dialog.css('height', '100%'); - dialog.css('min-height', '100%'); - } - } else { - //set the dialog min-height - dialog.css('min-height', nfDialogData['min-height']); - if (nfDialogData.responsive.y) { - //make sure nfDialogData.height is in terms of % - if (nfDialogData.height.indexOf("px") > 0) { - nfDialogData.height = (parseInt(nfDialogData.height, 10) / $(window).height() * 100) + '%'; - } - dialog.css('height', nfDialogData.height); - } - } - - if ($(window).width() < fullscreenWidth) { - if (nfDialogData.responsive.x) { - dialog.css('width', '100%'); - dialog.css('min-width', '100%'); - } - } else { - //set the dialog width - dialog.css('min-width', nfDialogData['min-width']); - if (nfDialogData.responsive.x) { - //make sure nfDialogData.width is in terms of % - if (nfDialogData.width.indexOf("px") > 0) { - nfDialogData.width = (parseInt(nfDialogData.width, 10) / $(window).width() * 100) + '%'; - } - dialog.css('width', nfDialogData.width); - } - } - - dialog.center(); - - //persist data attribute - dialog.data('nfDialog', nfDialogData); - } - - //apply scrollable style if applicable - if (dialogContent[0].offsetHeight < dialogContent[0].scrollHeight) { - // your element has overflow - if (isDefinedAndNotNull(nfDialogData.scrollableContentStyle)) { - dialogContent.addClass(nfDialogData.scrollableContentStyle); - } - } else { - // your element doesn't have overflow - if (isDefinedAndNotNull(nfDialogData.scrollableContentStyle)) { - dialogContent.removeClass(nfDialogData.scrollableContentStyle); - } - } - - if (isDefinedAndNotNull(nfDialogData.handler)) { - var handler = nfDialogData.handler.resize; - if (isDefinedAndNotNull(handler) && typeof handler === 'function') { - // invoke the handler - handler.call(dialog); - } - } - }, - - /** - * Shows the dialog. - */ - show: function () { - var dialog = $(this); - - var zIndex = dialog.css('z-index'); - if (zIndex === 'auto') { - if (isDefinedAndNotNull(dialog.data('nf-dialog'))) { - zIndex = (isDefinedAndNotNull(dialog.data('nf-dialog')['z-index'])) ? - dialog.data('nf-dialog')['z-index'] : 1301; - } else { - zIndex = 1301; - } - } - var openDialogs = $.makeArray($('.dialog:visible')); - if (openDialogs.length >= 1){ - var zVals = openDialogs.map(function(openDialog){ - var index; - return isNaN(index = parseInt($(openDialog).css("z-index"), 10)) ? 0 : index; - }); - //Add 2 so that we have room for the glass pane overlay of the new dialog - zIndex = Math.max.apply(null, zVals) + 2; - } - dialog.css('z-index', zIndex); - - var nfDialogData = {}; - if (isDefinedAndNotNull(dialog.data('nf-dialog'))) { - nfDialogData = dialog.data('nf-dialog'); - } - - var glasspane; - if (isDefinedAndNotNull(nfDialogData.glasspane)) { - glasspane = nfDialogData.glasspane; - } else { - nfDialogData.glasspane = glasspane = dialog.find('.dialog-header').css('background-color'); //default to header color - } - - if(top !== window || !isDefinedAndNotNull(nfDialogData.glasspane)) { - nfDialogData.glasspane = glasspane = 'transparent'; - } - - if (!$('body').find("[data-nf-dialog-parent='" + dialog.attr('id') + "']").is(':visible')) { - //create glass pane overlay - $('
        ').attr('data-nf-dialog-parent', dialog.attr('id')).addClass("modal-glass").css({ - "background-color": glasspane, - "z-index": zIndex - 1 - }).appendTo($('body')); - } - - //persist data attribute - dialog.data('nfDialog', nfDialogData); - - return this.each(function () { - // show the dialog - if (!dialog.is(':visible')) { - dialog.show(); - dialog.modal('resize'); - dialog.center(); - - if (isDefinedAndNotNull(nfDialogData.handler)) { - var handler = nfDialogData.handler.open; - if (isDefinedAndNotNull(handler) && typeof handler === 'function') { - // invoke the handler - handler.call(dialog); - } - } - } - }); - }, - - /** - * Hides the dialog. - */ - hide: function () { - return this.each(function () { - var dialog = $(this); - - var nfDialogData = {}; - if (isDefinedAndNotNull(dialog.data('nf-dialog'))) { - nfDialogData = dialog.data('nf-dialog'); - } - - if (isDefinedAndNotNull(nfDialogData.handler)) { - var handler = nfDialogData.handler.close; - if (isDefinedAndNotNull(handler) && typeof handler === 'function') { - // invoke the handler - handler.call(dialog); - } - } - - // remove the modal glass pane overlay - $('body').find("[data-nf-dialog-parent='" + dialog.attr('id') + "']").remove(); - - if (dialog.is(':visible')) { - // hide the dialog - dialog.hide(); - } - }); - } - }; - - $.fn.modal = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else { - return methods.init.apply(this, arguments); - } - }; -})(jQuery); \ No newline at end of file diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.css deleted file mode 100644 index a4f1cc17d3..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.css +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - CodeMirror styles -*/ - -.nf-editor .CodeMirror { - height: 100px; - border: 1px solid #aaa; - font-family: monospace; - background-color: #fff; - cursor: default; - line-height: normal; - min-width: 210px; -} - -.nf-editor .CodeMirror.blank { - background: #b2b8c1; - color: #dbdee2; - border: 1px solid #b2b8c1; -} - -.nf-editor .CodeMirror-scroll { - overflow-x: auto; - overflow-y: auto; -} - -.nf-editor .ui-resizable-se { - width: 16px; - height: 16px; - background-image: url(../../../images/iconResize.png); - z-index: 6; -} - -/* - Override some defaults... -*/ - -.CodeMirror-hints { - font-size: 13px !important; - z-index: 100001 !important; -} - -.cm-s-default { - font-size: 13px; - font-family: monospace; -} - -.cm-s-default .CodeMirror-matchingbracket { - color: #000 !important; - background-color: #aaa; - opacity: 0.5; - filter: alpha(opacity=50); -} - -/* - Override some defaults for this instance... -*/ - -.nf-editor .CodeMirror-vscrollbar { - bottom: 18px !important; -} - -.nf-editor .CodeMirror-hscrollbar { - right: 18px !important; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js deleted file mode 100644 index edb949fc36..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* global define, module, require, exports */ - -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define(['jquery', - 'CodeMirror', - 'nf'], - function ($, CodeMirror, nf) { - factory($, CodeMirror, nf); - }); - } else if (typeof exports === 'object' && typeof module === 'object') { - factory(require('jquery'), - require('CodeMirror'), - require('nf')); - } else { - factory(root.$, - root.CodeMirror, - root.nf); - } -}(this, function ($, CodeMirror, nf) { - - var isUndefined = function (obj) { - return typeof obj === 'undefined'; - }; - - var isNull = function (obj) { - return obj === null; - }; - - var isDefinedAndNotNull = function (obj) { - return !isUndefined(obj) && !isNull(obj); - }; - - var isBlank = function (str) { - return isUndefined(str) || isNull(str) || str === ''; - }; - - var isFunction = function (funct) { - return typeof funct === 'function'; - }; - - var methods = { - - /** - * Create a new nf editor. The options are specified in the following - * format: - * - * { - * languageMode: nf.nfel, - * resizable: true, - * sensitive: false, - * readOnly: false, - * content: '${attribute}', - * width: 200, - * height: 200, - * minWidth: 150, - * minHeight: 150 - * } - * - * @param {object} options The options for this editor. - */ - init: function (options) { - return this.each(function () { - if (isUndefined(options) || isNull(options)) { - return false; - } - - var languageMode = options.languageMode; - if (isUndefined(languageMode) || isNull(languageMode)) { - return false; - } - - // should support resizing - var resizable = options.resizable === true; - - // is the property sensitive - var sensitive = options.sensitive === true; - - var content = isDefinedAndNotNull(options.content) ? options.content : ''; - var field = $('').text(content).appendTo($(this)); - - // define a mode for NiFi expression language - if (isFunction(languageMode.color)) { - CodeMirror.commands.autocomplete = function (cm) { - if (isFunction(languageMode.suggest)) { - CodeMirror.showHint(cm, languageMode.suggest); - } - }; - - CodeMirror.defineMode(languageMode.getLanguageId(), languageMode.color); - - // is the editor read only - var readOnly = options.readOnly === true; - - var editor = CodeMirror.fromTextArea(field.get(0), { - mode: languageMode.getLanguageId(), - lineNumbers: true, - matchBrackets: true, - readOnly: readOnly, - extraKeys: { - 'Ctrl-Space': 'autocomplete', - 'Esc': function (cm) { - if (isFunction(options.escape)) { - options.escape(); - } - }, - 'Enter': function (cm) { - if (isFunction(options.enter)) { - options.enter(); - } - } - } - }); - - // set the size - var width = null; - if (isDefinedAndNotNull(options.width)) { - width = options.width; - } - var height = null; - if (isDefinedAndNotNull(options.height)) { - height = options.height; - } - editor.setSize(width, height); - - // store the editor instance for later - $(this).data('editorInstance', editor); - - // get a reference to the codemirror - var codeMirror = $(this).find('.CodeMirror'); - - // reference the code portion - var code = codeMirror.find('.CodeMirror-code'); - - // make this resizable if specified - if (resizable) { - codeMirror.append('
        ').resizable({ - handles: { - 'se': '.ui-resizable-se' - }, - resize: function () { - editor.setSize($(this).width(), $(this).height()); - editor.refresh(); - } - }); - } - - // handle keydown to signify the content has changed - editor.on('change', function (cm, event) { - codeMirror.addClass('modified'); - }); - - // handle keyHandled to stop event propagation/default as necessary - editor.on('keyHandled', function (cm, name, evt) { - if (name === 'Esc') { - // stop propagation of the escape event - evt.stopImmediatePropagation(); - evt.preventDefault(); - } - }); - - // handle sensitive values differently - if (sensitive) { - code.addClass('sensitive'); - - var handleSensitive = function (cm, event) { - if (code.hasClass('sensitive')) { - code.removeClass('sensitive'); - editor.setValue(''); - } - }; - - // remove the sensitive style if necessary - editor.on('mousedown', handleSensitive); - editor.on('keydown', handleSensitive); - } - - // set the min width/height - if (isDefinedAndNotNull(options.minWidth)) { - codeMirror.resizable('option', 'minWidth', options.minWidth); - } - if (isDefinedAndNotNull(options.minHeight)) { - codeMirror.resizable('option', 'minHeight', options.minHeight); - } - } - }); - }, - - /** - * Refreshes the editor. - */ - refresh: function () { - return this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - editor.refresh(); - } - }); - }, - - /** - * Sets the size of the editor. - * - * @param {integer} width - * @param {integer} height - */ - setSize: function (width, height) { - return this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - editor.setSize(width, height); - } - }); - }, - - /** - * Sets whether the editor is read only. - * - * @param {boolean|string} readOnly - */ - setReadOnly: function (readOnly) { - return this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - editor.setOption('readOnly', readOnly); - - if (readOnly === false) { - $(this).find('.CodeMirror').removeClass('blank'); - } else { - $(this).find('.CodeMirror').addClass('blank'); - } - } - }); - }, - - /** - * Gets the value of the editor in the first matching selector. - */ - getValue: function () { - var value; - - this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - value = editor.getValue(); - } - - return false; - }); - - return value; - }, - - /** - * Sets the value of the editor. - * - * @param {string} value - */ - setValue: function (value) { - return this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - editor.setValue(value); - - // remove the modified marking since the value was reset - $(this).find('.CodeMirror').removeClass('modified'); - } - }); - }, - - /** - * Sets the focus. - */ - focus: function () { - return this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - editor.focus(); - } - }); - }, - - /** - * Sets the focus. - */ - selectAll: function () { - return this.each(function () { - var editor = $(this).data('editorInstance'); - - // ensure the editor was initialized - if (isDefinedAndNotNull(editor)) { - editor.execCommand('selectAll'); - } - }); - }, - - /** - * Gets whether the value of the editor in the first matching selector has been modified. - */ - isModified: function () { - var modified; - - this.each(function () { - modified = $(this).find('.CodeMirror').hasClass('modified'); - return false; - }); - - return modified; - }, - - /** - * Destroys the editor. - */ - destroy: function () { - return this.removeData('editorInstance').find('.CodeMirror').removeClass('modified'); - } - }; - - $.fn.nfeditor = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else { - return methods.init.apply(this, arguments); - } - }; -})); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfeditor.css b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfeditor.css deleted file mode 100644 index 24093e000a..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfeditor.css +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -ul.CodeMirror-hints { - overflow-y: scroll; -} - -div.el-section { - margin: 5px 0; -} - -div.el-name { - font-weight: bold; - font-family: monospace; - font-size: 16px; - margin-bottom: 10px; -} - -div.el-header { - float: left; - width: 75px; - font-weight: bold; -} - -ul.el-arguments { - margin-top: 5px; - list-style-type: disc; - list-style-position: inside; -} - -span.el-argument-name { - font-family: monospace; -} - -div.nf-tooltip { - max-width: 350px; -} - -div.mode-hint-tip { - z-index: 14000; - width: 455px; - padding: 10px; - position: absolute; - border: 1px solid #ddd; - border-radius: 2px; - background-color: #fff; - box-shadow: 0 3px 12px rgba(0, 0, 0, 0.16); - font-size: 13px; - display: none; -} - -div.mode-hint-tip > :first-child { - margin-bottom: 15px; -} - -div.mode-hint-tip-title-container { - display: flex; - font-weight: bold; - margin-bottom: 5px; -} - -div.mode-hint-tip-title-container > :first-child { - width: 10px; - margin-right: 10px; - color: #898989; -} - -div.mode-hint-tip-title-container > .mode-supported { - color: #151515; -} - -div.mode-hint-tip-title-container > .mode-unsupported { - color: #676767; -} - -div.mode-hint-tip-description-container { - margin-left: 20px; -} - -div.mode-hint-tip-description-container .hint-pattern { - padding: 0 2px; - letter-spacing: 1px; - font-weight: 400; - background-color: rgba(20, 145, 193, 0.12); -} - -div.mode-hint-tip-description-container .hint-keystroke { - font-weight: 300; - font-style: italic; -} - -div.mode-hint-container { - margin-top: 5px; - display: flex; - justify-content: flex-end; - height: 13px; - font-size: 11px; - color: #898989; -} - -div.mode-hint-element { - cursor: default; - display: flex; - justify-content: space-between; - width: 96px; -} - -div.mode-hint { - display: flex; - font-weight: bold; - font-style: italic; -} - -div.mode-hint-value { - margin-left: 5px; - color: #898989; -} diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js deleted file mode 100644 index 1f23b08565..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js +++ /dev/null @@ -1,1086 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* global define, module, require, exports */ - -/* requires qtip plugin to be loaded first*/ - -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define(['jquery', - 'CodeMirror'], - function ($, CodeMirror) { - return (nf.nfel = factory($, CodeMirror)); - }); - } else if (typeof exports === 'object' && typeof module === 'object') { - module.exports = (nf.nfel = - factory(require('jquery'), - require('CodeMirror'))); - } else { - nf.nfel = factory(root.$, - root.CodeMirror); - } -}(this, function ($, CodeMirror) { - 'use strict'; - - /** - * Formats the specified function definition. - * - * @param details - * @returns {jQuery|HTMLElement} - */ - var formatDetails = function (details) { - var detailsContainer = $('
        '); - - // add the detail name - $('
        ').text(details.name).appendTo(detailsContainer); - - // add the detail description - $('
        ').text(details.description).appendTo(detailsContainer); - - // add the function arguments - if (typeof details.args !== 'undefined') { - var argumentsContainer = $('
        ').appendTo(detailsContainer); - $('
        Arguments
        ').appendTo(argumentsContainer); - - if ($.isEmptyObject(details.args)) { - $('None').appendTo(argumentsContainer); - } else { - $('
        ').appendTo(argumentsContainer); - - // add the argument - var argumentContainer = $('
          ').appendTo(argumentsContainer); - $.each(details.args, function (key, value) { - var argName = $('').text(key); - var argDescription = $('').text(value); - $('
        • ').append(argName).append(' - ').append(argDescription).appendTo(argumentContainer); - }); - } - } - - // add the function subject - if (typeof details.subject !== 'undefined') { - var subjectContainer = $('
          ').appendTo(detailsContainer); - $('
          Subject
          ').appendTo(subjectContainer); - $('

          ').text(details.subject).appendTo(subjectContainer); - $('
          ').appendTo(subjectContainer); - } - - // add the function return type - if (typeof details.returnType !== 'undefined') { - var returnTypeContainer = $('
          ').appendTo(detailsContainer); - $('
          Returns
          ').appendTo(returnTypeContainer); - $('

          ').text(details.returnType).appendTo(returnTypeContainer); - $('
          ').appendTo(returnTypeContainer); - } - - return detailsContainer; - }; - - var parameterKeyRegex = /^[a-zA-Z0-9-_. ]+/; - - var parameters = []; - var parameterRegex = new RegExp('^$'); - - var parameterDetails = {}; - var parametersSupported = false; - - var subjectlessFunctions = []; - var functions = []; - - var subjectlessFunctionRegex = new RegExp('^$'); - var functionRegex = new RegExp('^$'); - - var functionDetails = {}; - - $.ajax({ - type: 'GET', - url: '../nifi-docs/html/expression-language-guide.html', - dataType: 'html' - }).done(function(response) { - $(response).find('div.function').each(function() { - var elFunction = $(this); - - var name = elFunction.find('h3').text(); - var description = elFunction.find('span.description').text(); - var returnType = elFunction.find('span.returnType').text(); - - var subject; - var subjectSpan = subject = elFunction.find('span.subject'); - var subjectless = elFunction.find('span.subjectless'); - - // Determine if this function supports running subjectless - if (subjectless.length) { - subjectlessFunctions.push(name); - subject = 'None'; - } - - // Determine if this function supports running with a subject - if (subjectSpan.length) { - functions.push(name); - subject = elFunction.find('span.subject').text(); - } - - // find the arguments - var args = {}; - elFunction.find('span.argName').each(function() { - var argName = $(this); - var argDescription = argName.next('span.argDesc'); - args[argName.text()] = argDescription.text(); - }); - - // record the function details - functionDetails[name] = { - name: name, - description: description, - args: args, - subject: subject, - returnType: returnType - }; - }); - }).always(function() { - // build the regex for all functions discovered - subjectlessFunctionRegex = new RegExp('^((' + subjectlessFunctions.join(')|(') + '))$'); - functionRegex = new RegExp('^((' + functions.join(')|(') + '))$'); - }); - - // valid context states - var SUBJECT = 'subject'; - var FUNCTION = 'function'; - var SUBJECT_OR_FUNCTION = 'subject-or-function'; - var EXPRESSION = 'expression'; - var ARGUMENTS = 'arguments'; - var ARGUMENT = 'argument'; - var PARAMETER = 'parameter'; - var INVALID = 'invalid'; - - /** - * Handles dollars identifies on the stream. - * - * @param {string} startChar The start character - * @param {string} context The context to transition to if we match on the specified start character - * @param {object} stream The character stream - * @param {object} states The states - */ - var handleStart = function (startChar, context, stream, states) { - // determine the number of sequential start chars - var startCharCount = 0; - stream.eatWhile(function (ch) { - if (ch === startChar) { - startCharCount++; - return true; - } - return false; - }); - - // if there is an even number of consecutive start chars this expression is escaped - if (startCharCount % 2 === 0) { - // do not style an escaped expression - return null; - } - - // if there was an odd number of consecutive start chars and there was more than 1 - if (startCharCount > 1) { - // back up one char so we can process the start sequence next iteration - stream.backUp(1); - - // do not style the preceding start chars - return null; - } - - // if the next character isn't the start of an expression - if (stream.peek() === '{') { - // consume the open curly - stream.next(); - - // new expression start - states.push({ - context: context - }); - - // consume any addition whitespace - stream.eatSpace(); - - return 'bracket'; - } - // not a valid start sequence - return null; - }; - - /** - * Handles dollars identifies on the stream. - * - * @param {object} stream The character stream - * @param {object} state The current state - */ - var handleStringLiteral = function (stream, state) { - var current = stream.next(); - var foundTrailing = false; - var foundEscapeChar = false; - - // locate a closing string delimitor - var foundStringLiteral = stream.eatWhile(function (ch) { - // we've just found the trailing delimitor, stop - if (foundTrailing === true) { - return false; - } - - // if this is the trailing delimitor, only consume - // if we did not see the escape character on the - // previous iteration - if (ch === current) { - foundTrailing = foundEscapeChar === false; - } - - // reset the escape character flag - foundEscapeChar = false; - - // if this is the escape character, set the flag - if (ch === '\\') { - foundEscapeChar = true; - } - - // consume this character - return true; - }); - - // if we found the trailing delimitor - if (foundStringLiteral) { - return 'string'; - } - - // there is no trailing delimitor... clear the current context - state.context = INVALID; - stream.skipToEnd(); - return null; - }; - - // the api for the currently selected completion - var currentApi = null; - - // the identifier to cancel showing the tip for the next completion - var showTip = null; - - // the apis of every completion rendered - var apis = []; - - /** - * Listens for select event on the auto complete. - * - * @param {type} completion - * @param {type} element - * @returns {undefined} - */ - var select = function(completion, element) { - hide(); - - currentApi = $(element).qtip('api'); - showTip = setTimeout(function() { - currentApi.show(); - }, 500); - }; - - /** - * Cancels the next tip to show, if applicable. Hides the currently - * visible tip, if applicable. - * - * @returns {undefined} - */ - var hide = function() { - if (showTip !== null) { - clearInterval(showTip); - showTip = null; - } - - if (currentApi !== null) { - currentApi.hide(); - } - }; - - /** - * Listens for close events for the auto complete. - * - * @returns {undefined} - */ - var close = function() { - if (showTip !== null) { - clearInterval(showTip); - showTip = null; - } - - // clear the current api (since its in the apis array) - currentApi = null; - - // destroy the tip from every applicable function - $.each(apis, function(_, api) { - api.destroy(true); - }); - - // reset the apis - apis = []; - }; - - /** - * Renders an auto complete item. - * - * @param {type} element - * @param {type} self - * @param {type} data - * @returns {undefined} - */ - var renderer = function(element, self, data) { - var item = $('
          ').text(data.text); - var li = $(element).qtip({ - content: formatDetails(data.details), - style: { - classes: 'nifi-tooltip nf-tooltip', - tip: false, - width: 350 - }, - show: { - event: false, - effect: false - }, - hide: { - event: false, - effect: false - }, - position: { - at: 'bottom right', - my: 'bottom left', - adjust: { - x: 20 - } - } - }).append(item); - - // record the api for destruction later - apis.push(li.qtip('api')); - }; - - return { - - /** - * Enables parameter referencing. - */ - enableParameters: function () { - parameters = []; - parameterRegex = new RegExp('^$'); - parameterDetails = {}; - - parametersSupported = true; - }, - - /** - * Sets the available parameters. - * - * @param parameterListing - */ - setParameters: function (parameterListing) { - parameterListing.forEach(function (parameter) { - parameters.push(parameter.name); - parameterDetails[parameter.name] = parameter; - }); - - parameterRegex = new RegExp('^((' + parameters.join(')|(') + '))$'); - }, - - /** - * Disables parameter referencing. - */ - disableParameters: function () { - parameters = []; - parameterRegex = new RegExp('^$'); - parameterDetails = {}; - - parametersSupported = false; - }, - - /** - * Returns an object that provides syntax highlighting for NiFi expression language. - */ - color: function () { - // builds the states based off the specified initial value - var buildStates = function (initialStates) { - // each state has a context - var states = initialStates; - - return { - copy: function () { - var copy = []; - for (var i = 0; i < states.length; i++) { - copy.push({ - context: states[i].context - }); - } - return copy; - }, - get: function () { - if (states.length === 0) { - return { - context: null - }; - } else { - return states[states.length - 1]; - } - }, - push: function (state) { - return states.push(state); - }, - pop: function () { - return states.pop(); - } - }; - }; - - return { - startState: function () { - // build states with an empty array - return buildStates([]); - }, - - copyState: function (state) { - // build states with - return buildStates(state.copy()); - }, - - token: function (stream, states) { - // consume any whitespace - if (stream.eatSpace()) { - return null; - } - - // if we've hit the end of the line - if (stream.eol()) { - return null; - } - - // get the current character - var current = stream.peek(); - - // if we've hit some comments... will consume the remainder of the line - if (current === '#') { - // consume the pound - stream.next(); - - var afterPound = stream.peek(); - if (afterPound !== '{') { - stream.skipToEnd(); - return 'comment'; - } else { - // unconsume the pound - stream.backUp(1); - } - } - - // get the current state - var state = states.get(); - - // the current input is invalid - if (state.context === INVALID) { - stream.skipToEnd(); - return null; - } - - // within an expression - if (state.context === EXPRESSION) { - var attributeOrSubjectlessFunctionExpression = /^[^'"#${}()[\],:;\/*\\\s\t\r\n0-9][^'"#${}()[\],:;\/*\\\s\t\r\n]*/; - - // attempt to extract a function name - var attributeOrSubjectlessFunctionName = stream.match(attributeOrSubjectlessFunctionExpression, false); - - // if the result returned a match - if (attributeOrSubjectlessFunctionName !== null && attributeOrSubjectlessFunctionName.length === 1) { - // consume the entire token to better support suggest below - stream.match(attributeOrSubjectlessFunctionExpression); - - // if the result returned a match and is followed by a ( - if (subjectlessFunctionRegex.test(attributeOrSubjectlessFunctionName) && stream.peek() === '(') { - // -------------------- - // subjectless function - // -------------------- - - // context change to function - state.context = ARGUMENTS; - - // style for function - return 'builtin'; - } else { - // --------------------- - // attribute or function - // --------------------- - - // context change to function or subject... not sure yet - state.context = SUBJECT_OR_FUNCTION; - - // this could be an attribute or a partial function name... style as attribute until we know - return 'variable-2'; - } - } else if (current === '\'' || current === '"') { - // -------------- - // string literal - // -------------- - - // handle the string literal - var expressionStringResult = handleStringLiteral(stream, state); - - // considered a quoted variable - if (expressionStringResult !== null) { - // context change to function - state.context = SUBJECT; - } - - return expressionStringResult; - } else if (current === '$') { - // ----------------- - // nested expression - // ----------------- - - var expressionDollarResult = handleStart('$', EXPRESSION, stream, states); - - // if we've found an embedded expression we need to... - if (expressionDollarResult !== null) { - // transition back to subject when this expression completes - state.context = SUBJECT; - } - - return expressionDollarResult; - } else if (current === '#' && parametersSupported) { - // -------------------------- - // nested parameter reference - // -------------------------- - - // handle the nested parameter reference - var parameterReferenceResult = handleStart('#', PARAMETER, stream, states); - - // if we've found an embedded parameter reference we need to... - if (parameterReferenceResult !== null) { - // transition back to subject when this parameter reference completes - state.context = SUBJECT; - } - - return parameterReferenceResult; - } else if (current === '}') { - // ----------------- - // end of expression - // ----------------- - - // consume the close - stream.next(); - - // signifies the end of an expression - if (typeof states.pop() === 'undefined') { - return null; - } else { - // style as expression - return 'bracket'; - } - } else { - // ---------- - // unexpected - // ---------- - - // consume to move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // within a subject - if (state.context === SUBJECT || state.context === SUBJECT_OR_FUNCTION) { - // if the next character indicates the start of a function call - if (current === ':') { - // ------------------------- - // trigger for function name - // ------------------------- - - // consume the colon and update the context - stream.next(); - state.context = FUNCTION; - - // consume any addition whitespace - stream.eatSpace(); - - // don't style - return null; - } else if (current === '}') { - // ----------------- - // end of expression - // ----------------- - - // consume the close - stream.next(); - - // signifies the end of an expression - if (typeof states.pop() === 'undefined') { - return null; - } else { - // style as expression - return 'bracket'; - } - } else { - // ---------- - // unexpected - // ---------- - - // consume to move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // within a function - if (state.context === FUNCTION) { - // attempt to extract a function name - var functionName = stream.match(/^[a-zA-Z]+/, false); - - // if the result returned a match - if (functionName !== null && functionName.length === 1) { - // consume the entire token to ensure the whole function - // name is matched. this is an issue with functions like - // substring and substringAfter since 'substringA' would - // match the former and when we really want to autocomplete - // against the latter. - stream.match(/^[a-zA-Z]+/); - - // see if this matches a known function and is followed by ( - if (functionRegex.test(functionName) && stream.peek() === '(') { - // -------- - // function - // -------- - - // change context to arugments - state.context = ARGUMENTS; - - // style for function - return 'builtin'; - } else { - // ------------------------------ - // maybe function... not sure yet - // ------------------------------ - - // not sure yet... - return null; - } - } else { - // ---------- - // unexpected - // ---------- - - // consume and move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // within arguments - if (state.context === ARGUMENTS) { - if (current === '(') { - // -------------- - // argument start - // -------------- - - // consume the open paranthesis - stream.next(); - - // change context to handle an argument - state.context = ARGUMENT; - - // start of arguments - return null; - } else if (current === ')') { - // -------------- - // argument close - // -------------- - - // consume the close paranthesis - stream.next(); - - // change context to subject for potential chaining - state.context = SUBJECT; - - // end of arguments - return null; - } else if (current === ',') { - // ------------------ - // argument separator - // ------------------ - - // consume the comma - stream.next(); - - // change context back to argument - state.context = ARGUMENT; - - // argument separator - return null; - } else { - // ---------- - // unexpected - // ---------- - - // consume and move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // within a specific argument - if (state.context === ARGUMENT) { - if (current === '\'' || current === '"') { - // -------------- - // string literal - // -------------- - - // handle the string literal - var argumentStringResult = handleStringLiteral(stream, state); - - // successfully processed a string literal... - if (argumentStringResult !== null) { - // change context back to arguments - state.context = ARGUMENTS; - } - - return argumentStringResult; - } else if (stream.match(/^[-\+]?((([0-9]+\.[0-9]*)([eE][+-]?([0-9])+)?)|((\.[0-9]+)([eE][+-]?([0-9])+)?)|(([0-9]+)([eE][+-]?([0-9])+)))/)) { - // ------------- - // Decimal value - // ------------- - // This matches the following ANTLR spec for deciamls - // - // DECIMAL : OP? ('0'..'9')+ '.' ('0'..'9')* EXP? ^([0-9]+\.[0-9]*)([eE][+-]?([0-9])+)? - // | OP? '.' ('0'..'9')+ EXP? - // | OP? ('0'..'9')+ EXP; - // - // fragment OP: ('+'|'-'); - // fragment EXP : ('e'|'E') ('+'|'-')? ('0'..'9')+ ; - - // change context back to arguments - state.context = ARGUMENTS; - - // style for decimal (use same as number) - return 'number'; - } else if (stream.match(/^[-\+]?[0-9]+/)) { - // ------------- - // integer value - // ------------- - - // change context back to arguments - state.context = ARGUMENTS; - - // style for integers - return 'number'; - } else if (stream.match(/^((true)|(false))/)) { - // ------------- - // boolean value - // ------------- - - // change context back to arguments - state.context = ARGUMENTS; - - // style for boolean (use same as number) - return 'number'; - } else if (current === ')') { - // ---------------------------------- - // argument close (zero arg function) - // ---------------------------------- - - // consume the close paranthesis - stream.next(); - - // change context to subject for potential chaining - state.context = SUBJECT; - - // end of arguments - return null; - } else if (current === '$') { - // ----------------- - // nested expression - // ----------------- - - // handle the nested expression - var argumentDollarResult = handleStart('$', EXPRESSION, stream, states); - - // if we've found an embedded expression we need to... - if (argumentDollarResult !== null) { - // transition back to arguments when then expression completes - state.context = ARGUMENTS; - } - - return argumentDollarResult; - } else if (current === '#' && parametersSupported) { - // -------------------------- - // nested parameter reference - // -------------------------- - - // handle the nested parameter reference - var parameterReferenceResult = handleStart('#', PARAMETER, stream, states); - - // if we've found an embedded parameter reference we need to... - if (parameterReferenceResult !== null) { - // transition back to arguments when this parameter reference completes - state.context = ARGUMENTS; - } - - return parameterReferenceResult; - } else { - // ---------- - // unexpected - // ---------- - - // consume and move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // within a parameter reference - if (state.context === PARAMETER) { - // attempt to extract a parameter name - var parameterName = stream.match(parameterKeyRegex, false); - - // if the result returned a match - if (parameterName !== null && parameterName.length === 1) { - // consume the entire token to ensure the whole function - // name is matched. this is an issue with functions like - // substring and substringAfter since 'substringA' would - // match the former and when we really want to autocomplete - // against the latter. - stream.match(parameterKeyRegex); - - // see if this matches a known function and is followed by ( - if (parameterRegex.test(parameterName)) { - // ------------------ - // resolved parameter - // ------------------ - - // style for function - return 'builtin'; - } else { - // -------------------- - // unresolved parameter - // -------------------- - - // style for function - return 'string'; - } - } - - if (current === '}') { - // ----------------- - // end of expression - // ----------------- - - // consume the close - stream.next(); - - // signifies the end of an parameter reference - if (typeof states.pop() === 'undefined') { - return null; - } else { - // style as expression - return 'bracket'; - } - } else { - // ---------- - // unexpected - // ---------- - - // consume and move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // signifies the potential start of an expression - if (current === '$') { - return handleStart('$', EXPRESSION, stream, states); - } - - // signifies the potential start of a parameter reference - if (current === '#' && parametersSupported) { - return handleStart('#', PARAMETER, stream, states); - } - - // signifies the end of an expression - if (current === '}') { - stream.next(); - if (typeof states.pop() === 'undefined') { - return null; - } else { - return 'bracket'; - } - } - - // ---------------------------------------------------------- - // extra characters that are around expression[s] end up here - // ---------------------------------------------------------- - - // consume the character to keep things moving along - stream.next(); - return null; - } - }; - }, - - /** - * Returns the suggestions for the content at the current cursor. - * - * @param {type} editor - */ - suggest: function (editor) { - // Find the token at the cursor - var cursor = editor.getCursor(); - var token = editor.getTokenAt(cursor); - var includeAll = false; - var state = token.state.get(); - - // whether or not the current context is within a function - var isFunction = function (context) { - // attempting to match a function name or already successfully matched a function name - return context === FUNCTION || context === ARGUMENTS; - }; - - // whether or not the current context is within a subject-less funciton - var isSubjectlessFunction = function (context) { - // within an expression when no characters are found or when the string may be an attribute or a function - return context === EXPRESSION || context === SUBJECT_OR_FUNCTION; - }; - - // whether or not the current context is within a parameter reference - var isParameterReference = function (context) { - // attempting to match a function name or already successfully matched a function name - return context === PARAMETER; - }; - - // only support suggestion in certain cases - var context = state.context; - if (!isSubjectlessFunction(context) && !isFunction(context) && !isParameterReference(context)) { - return null; - } - - // lower case for case insensitive comparison - var value = token.string.toLowerCase(); - - // trim to ignore extra whitespace - var trimmed = $.trim(value); - - // identify potential patterns and increment the start location appropriately - if (trimmed === '${' || trimmed === ':' || trimmed === '#{') { - includeAll = true; - token.start += value.length; - } - - var options = functions; - var useFunctionDetails = true; - if (isSubjectlessFunction(context)) { - options = subjectlessFunctions; - } else if (isParameterReference(context)) { - options = parameters; - useFunctionDetails = false; - } - - var getCompletions = function(options) { - var found = []; - - $.each(options, function (i, opt) { - if ($.inArray(opt, found) === -1) { - if (includeAll || opt.toLowerCase().indexOf(value) === 0) { - found.push({ - text: opt, - details: useFunctionDetails ? functionDetails[opt] : parameterDetails[opt], - render: renderer - }); - } - } - }); - - return found; - }; - - // get the suggestions for the current context - var completionList = getCompletions(options); - completionList = completionList.sort(function (a, b) { - var aLower = a.text.toLowerCase(); - var bLower = b.text.toLowerCase(); - return aLower === bLower ? 0 : aLower > bLower ? 1 : -1; - }); - - var completions = { - list: completionList, - from: { - line: cursor.line, - ch: token.start - }, - to: { - line: cursor.line, - ch: token.end - } - }; - - CodeMirror.on(completions, 'select', select); - CodeMirror.on(completions, 'close', close); - - return completions; - }, - - /** - * Returns the language id. - * - * @returns {string} language id - */ - getLanguageId: function () { - return 'nfel'; - }, - - /** - * Returns whether this editor mode supports EL. - * - * @returns {boolean} Whether the editor supports EL - */ - supportsEl: function () { - return true; - }, - - /** - * Returns whether this editor mode supports parameter reference. - * - * @returns {boolean} Whether the editor supports parameter reference - */ - supportsParameterReference: function () { - return parametersSupported; - } - }; -})); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfpr.js b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfpr.js deleted file mode 100644 index bf190eef96..0000000000 --- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfpr.js +++ /dev/null @@ -1,528 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* global define, module, require, exports */ - -/* requires qtip plugin to be loaded first*/ - -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define(['jquery', - 'CodeMirror'], - function ($, CodeMirror) { - return (nf.nfpr = factory($, CodeMirror)); - }); - } else if (typeof exports === 'object' && typeof module === 'object') { - module.exports = (nf.nfpr = - factory(require('jquery'), - require('CodeMirror'))); - } else { - nf.nfpr = factory(root.$, - root.CodeMirror); - } -}(this, function ($, CodeMirror) { - 'use strict'; - - /** - * Formats the specified parameter definition. - * - * @param parameterDefinition - * @returns {jQuery|HTMLElement} - */ - var formatParameter = function (parameterDefinition) { - var parameterContainer = $('
          '); - - // add the function name - $('
          ').text(parameterDefinition.name).appendTo(parameterContainer); - - // add the function description - if (typeof parameterDefinition.description !== 'undefined' && parameterDefinition.description !== null) { - $('
          ').text(parameterDefinition.description).appendTo(parameterContainer); - } - - return parameterContainer; - }; - - var parameterKeyRegex = /^[a-zA-Z0-9-_. ]+/; - - var parameters = []; - var parameterRegex = new RegExp('^$'); - - var parameterDetails = {}; - var parametersSupported = false; - - // valid context states - var PARAMETER = 'parameter'; - var INVALID = 'invalid'; - - /** - * Handles pound identifies on the stream. - * - * @param {object} stream The character stream - * @param {object} states The states - */ - var handlePound = function (stream, states) { - // determine the number of sequential pounds - var poundCount = 0; - stream.eatWhile(function (ch) { - if (ch === '#') { - poundCount++; - return true; - } - return false; - }); - - // if there is an even number of consecutive pounds this expression is escaped - if (poundCount % 2 === 0) { - // do not style an escaped expression - return null; - } - - // if there was an odd number of consecutive pounds and there was more than 1 - if (poundCount > 1) { - // back up one char so we can process the start sequence next iteration - stream.backUp(1); - - // do not style the preceding pounds - return null; - } - - // if the next character isn't the start of an expression - if (stream.peek() === '{') { - // consume the open curly - stream.next(); - - // new expression start - states.push({ - context: PARAMETER - }); - - // consume any addition whitespace - stream.eatSpace(); - - return 'bracket'; - } else { - // not a valid start sequence - return null; - } - }; - - // the api for the currently selected completion - var currentApi = null; - - // the identifier to cancel showing the tip for the next completion - var showTip = null; - - // the apis of every completion rendered - var apis = []; - - /** - * Listens for select event on the auto complete. - * - * @param {type} completion - * @param {type} element - * @returns {undefined} - */ - var select = function(completion, element) { - hide(); - - currentApi = $(element).qtip('api'); - showTip = setTimeout(function() { - currentApi.show(); - }, 500); - }; - - /** - * Cancels the next tip to show, if applicable. Hides the currently - * visible tip, if applicable. - * - * @returns {undefined} - */ - var hide = function() { - if (showTip !== null) { - clearInterval(showTip); - showTip = null; - } - - if (currentApi !== null) { - currentApi.hide(); - } - }; - - /** - * Listens for close events for the auto complete. - * - * @returns {undefined} - */ - var close = function() { - if (showTip !== null) { - clearInterval(showTip); - showTip = null; - } - - // clear the current api (since its in the apis array) - currentApi = null; - - // destroy the tip from every applicable function - $.each(apis, function(_, api) { - api.destroy(true); - }); - - // reset the apis - apis = []; - }; - - /** - * Renders an auto complete item. - * - * @param {type} element - * @param {type} self - * @param {type} data - * @returns {undefined} - */ - var renderer = function(element, self, data) { - var item = $('
          ').text(data.text); - var li = $(element).qtip({ - content: formatParameter(parameterDetails[data.text]), - style: { - classes: 'nifi-tooltip nf-tooltip', - tip: false, - width: 350 - }, - show: { - event: false, - effect: false - }, - hide: { - event: false, - effect: false - }, - position: { - at: 'bottom right', - my: 'bottom left', - adjust: { - x: 20 - } - } - }).append(item); - - // record the api for destruction later - apis.push(li.qtip('api')); - }; - - return { - - /** - * Enables parameter referencing. - */ - enableParameters: function () { - parameters = []; - parameterRegex = new RegExp('^$'); - parameterDetails = {}; - - parametersSupported = true; - }, - - /** - * Sets the available parameters. - * - * @param parameterListing - */ - setParameters: function (parameterListing) { - parameterListing.forEach(function (parameter) { - parameters.push(parameter.name); - parameterDetails[parameter.name] = parameter; - }); - - parameterRegex = new RegExp('^((' + parameters.join(')|(') + '))$'); - }, - - /** - * Disables parameter referencing. - */ - disableParameters: function () { - parameters = []; - parameterRegex = new RegExp('^$'); - parameterDetails = {}; - - parametersSupported = false; - }, - - /** - * Returns an object that provides syntax highlighting for NiFi expression language. - */ - color: function () { - // builds the states based off the specified initial value - var buildStates = function (initialStates) { - // each state has a context - var states = initialStates; - - return { - copy: function () { - var copy = []; - for (var i = 0; i < states.length; i++) { - copy.push({ - context: states[i].context - }); - } - return copy; - }, - get: function () { - if (states.length === 0) { - return { - context: null - }; - } else { - return states[states.length - 1]; - } - }, - push: function (state) { - return states.push(state); - }, - pop: function () { - return states.pop(); - } - }; - }; - - return { - startState: function () { - // build states with an empty array - return buildStates([]); - }, - - copyState: function (state) { - // build states with - return buildStates(state.copy()); - }, - - token: function (stream, states) { - // consume any whitespace - if (stream.eatSpace()) { - return null; - } - - // if we've hit the end of the line - if (stream.eol()) { - return null; - } - - // get the current character - var current = stream.peek(); - - // get the current state - var state = states.get(); - - // the current input is invalid - if (state.context === INVALID) { - stream.skipToEnd(); - return null; - } - - // within a parameter reference - if (state.context === PARAMETER) { - // attempt to extract a parameter name - var parameterName = stream.match(parameterKeyRegex, false); - - // if the result returned a match - if (parameterName !== null && parameterName.length === 1) { - // consume the entire token to ensure the whole function - // name is matched. this is an issue with functions like - // substring and substringAfter since 'substringA' would - // match the former and when we really want to autocomplete - // against the latter. - stream.match(parameterKeyRegex); - - // see if this matches a known function and is followed by ( - if (parameterRegex.test(parameterName)) { - // ------------------ - // resolved parameter - // ------------------ - - // style for function - return 'builtin'; - } else { - // -------------------- - // unresolved parameter - // -------------------- - - // style for function - return 'string'; - } - } - else if (current === '}') { - // ----------------- - // end of expression - // ----------------- - - // consume the close - stream.next(); - - // signifies the end of an parameter reference - if (typeof states.pop() === 'undefined') { - return null; - } else { - // style as expression - return 'bracket'; - } - } else { - // ---------- - // unexpected - // ---------- - - // consume and move along - stream.skipToEnd(); - state.context = INVALID; - - // unexpected... - return null; - } - } - - // signifies the potential start of an expression - if (current === '#' && parametersSupported) { - return handlePound(stream, states); - } - - // signifies the end of an expression - if (current === '}') { - stream.next(); - if (typeof states.pop() === 'undefined') { - return null; - } else { - return 'bracket'; - } - } - - // ---------------------------------------------------------- - // extra characters that are around expression[s] end up here - // ---------------------------------------------------------- - - // consume the character to keep things moving along - stream.next(); - return null; - } - }; - }, - - /** - * Returns the suggestions for the content at the current cursor. - * - * @param {type} editor - */ - suggest: function (editor) { - // Find the token at the cursor - var cursor = editor.getCursor(); - var token = editor.getTokenAt(cursor); - var includeAll = false; - var state = token.state.get(); - - // whether or not the current context is within a function - var isParameterContext = function (context) { - // attempting to match a function name or already successfully matched a function name - return context === PARAMETER; - }; - - // only support suggestion in certain cases - var context = state.context; - if (!isParameterContext(context)) { - return null; - } - - // lower case for case insensitive comparison - var value = token.string.toLowerCase(); - - // trim to ignore extra whitespace - var trimmed = $.trim(value); - - // identify potential patterns and increment the start location appropriately - if (trimmed === '#{') { - includeAll = true; - token.start += value.length; - } - - var getCompletions = function(parameterList) { - var found = []; - - $.each(parameterList, function (i, parameter) { - if ($.inArray(parameter, found) === -1) { - if (includeAll || parameter.toLowerCase().indexOf(value) === 0) { - found.push({ - text: parameter, - render: renderer - }); - } - } - }); - - return found; - }; - - // get the suggestions for the current context - var completionList = getCompletions(parameters); - completionList = completionList.sort(function (a, b) { - var aLower = a.text.toLowerCase(); - var bLower = b.text.toLowerCase(); - return aLower === bLower ? 0 : aLower > bLower ? 1 : -1; - }); - - var completions = { - list: completionList, - from: { - line: cursor.line, - ch: token.start - }, - to: { - line: cursor.line, - ch: token.end - } - }; - - CodeMirror.on(completions, 'select', select); - CodeMirror.on(completions, 'close', close); - - return completions; - }, - - /** - * Returns the language id. - * - * @returns {string} language id - */ - getLanguageId: function () { - return 'nfpr'; - }, - - /** - * Returns whether this editor mode supports EL. - * - * @returns {boolean} Whether the editor supports EL - */ - supportsEl: function () { - return false; - }, - - /** - * Returns whether this editor mode supports parameter reference. - * - * @returns {boolean} Whether the editor supports parameter reference - */ - supportsParameterReference: function () { - return parametersSupported; - } - }; -})); diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/buttonNewProperty.png b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/buttonNewProperty.png deleted file mode 100644 index 2d836ce6bf9236b89305c02025e1bd02c5704d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)w(E zZ*psMAVX6$2C~zj0000MbVXQnLvm$dbZKvHAXI5>WdJZWFEKGMF)+{~w^INB0Jl&~ zR7FX0hfa2iSbmaXhM8=Rpmvw1fS<2|f`W>twv3F7l&`&~r>C*8vB$^9$jHdb%F4{l z%+Aiv&(F`$(9qG*(bLn@)YR0~)z#M4*4Nk9*x1gww2>+9_7?CtIC?(XjI@9*&N@bU5S^78WY z^Yird^!4@i_V)Jp`1twx`TF|$`}_O-{r&&{|6Fo>jsO4v(@8`@R47xGlFbgnAP|HX zdQ|jK6EEufzmg{}J=I|G)EhXv{8ieR_=RML$*@q0KCQW|(et%scDEL%$+yskr70-p z#fS>DVWFESWvz|E=a?FXLDiTR&^if9E5%AH|A;xzg%COx5~B$atSBT#^Z@Xcontrol+space to see a list of available functions.'; - var EL_UNSUPPORTED_TITLE = '
          Expression Language (EL) not supported
          '; - - var PARAM_SUPPORTED_TITLE = '
          Parameters (PARAM) supported
          '; - var PARAM_SUPPORTED_DESCRIPTION = '
          After beginning with the start delimiter #{ use the keystroke ' - + 'control+space to see a list of available parameters.
          '; - var PARAM_UNSUPPORTED_TITLE = '
          Parameters (PARAM) not supported
          '; - - /** - * Determines if the specified value represents a reference to a parameter. - * - * @param value The value to check - * @returns {boolean} Whether the value represents a reference to a parameter - */ - var referencesParameter = function (value) { - if (nfCommon.isDefinedAndNotNull(value)) { - return value.startsWith('#{') && value.endsWith('}'); - } - - return false; - }; - - var containsParameterReference = function (value) { - var paramRefsRegex = /#{[a-zA-Z0-9-_. ]+}/; - return paramRefsRegex.test(value); - }; - - var getSupportTip = function (isEl, isSupported) { - var supportContainer = $('
          '); - - var supportTitleContainer = $('
          ') - .addClass('mode-hint-tip-title-container') - .appendTo(supportContainer); - - if (isSupported) { - $('
          ') - .addClass('fa fa-check') - .appendTo(supportTitleContainer); - $(isEl ? EL_SUPPORTED_TITLE : PARAM_SUPPORTED_TITLE) - .addClass('mode-supported') - .appendTo(supportTitleContainer); - - var supportDescriptionContainer = $('
          ') - .addClass('mode-hint-tip-description-container') - .appendTo(supportContainer); - - $(isEl ? EL_SUPPORTED_DESCRIPTION : PARAM_SUPPORTED_DESCRIPTION) - .appendTo(supportDescriptionContainer); - } else { - $('
          ') - .addClass('fa fa-ban') - .appendTo(supportTitleContainer); - $(isEl ? EL_UNSUPPORTED_TITLE : PARAM_UNSUPPORTED_TITLE) - .addClass('mode-unsupported') - .appendTo(supportTitleContainer); - } - - return supportContainer; - }; - - var getNfEditor = function (getMode) { - return function (args) { - var scope = this; - var initialValue = ''; - var previousValue; - var propertyDescriptor; - var isEmpty; - var wrapper; - var editor; - var tip; - - this.init = function () { - var container = $('body'); - - // get the property descriptor - var gridContainer = $(args.grid.getContainerNode()); - var descriptors = gridContainer.data('descriptors'); - propertyDescriptor = descriptors[args.item.property]; - - var mode = getMode(propertyDescriptor); - - // determine if this is a sensitive property - var sensitive = nfCommon.isSensitiveProperty(propertyDescriptor); - - // record the previous value - previousValue = args.item[args.column.field]; - - // create the wrapper - wrapper = $('
          ') - .addClass('slickgrid-nf-editor') - .css({ - 'z-index': 14000, - 'position': 'absolute', - 'padding': '10px 20px', - 'overflow': 'hidden', - 'border-radius': '2px', - 'box-shadow': 'rgba(0, 0, 0, 0.247059) 0px 2px 5px', - 'background-color': 'rgb(255, 255, 255)', - 'cursor': 'move', - 'transform': 'translate3d(0px, 0px, 0px)' - }).draggable({ - cancel: '.button, .mode-hint-element, .nf-editor, .string-check-container > *', - containment: 'parent' - }).appendTo(container); - - // create the tip - tip = $('
          ') - .addClass('mode-hint-tip') - .appendTo(container); - - var supportsEl = mode.supportsEl(); - var supportsParameterReference = mode.supportsParameterReference(); - tip.append(getSupportTip(true, supportsEl)); - tip.append(getSupportTip(false, supportsParameterReference)); - - // create the mode hint - var modeHintContainer = $('
          ') - .addClass('mode-hint-container') - .appendTo(wrapper); - var modeHintElement = $('
          ') - .addClass('mode-hint-element') - .on('mouseenter', function () { - var wrapperPosition = wrapper.position(); - var tipTop = wrapperPosition.top - tip.outerHeight() + 2; - var tipLeft = wrapperPosition.left + wrapper.outerWidth() - tip.outerWidth() + 5; - tip.css({ - top: tipTop + 'px', - left: tipLeft + 'px' - }); - tip.show(); - }) - .on('mouseleave', function () { - tip.hide(); - }) - .appendTo(modeHintContainer); - - // el hint - var elModeHintContainer = $('
          ') - .addClass('mode-hint') - .appendTo(modeHintElement); - - $('
          EL
          ') - .appendTo(elModeHintContainer); - $('
          ') - .addClass('mode-hint-value fa') - .addClass(supportsEl ? 'fa-check' : 'fa-ban') - .appendTo(elModeHintContainer); - - // parameter hint - var paramModeHitContainer = $('
          ') - .addClass('mode-hint') - .appendTo(modeHintElement); - - $('
          PARAM
          ') - .appendTo(paramModeHitContainer); - $('
          ') - .addClass('mode-hint-value fa') - .addClass(supportsParameterReference ? 'fa-check' : 'fa-ban') - .appendTo(paramModeHitContainer); - - var editorWidth = Math.max(args.position.width, EDITOR_MIN_WIDTH); - - // create the editor - editor = $('
          ') - .addClass('nf-editor') - .appendTo(wrapper) - .nfeditor({ - languageMode: mode, - width: editorWidth, - minWidth: EDITOR_MIN_WIDTH, - minHeight: EDITOR_MIN_HEIGHT, - resizable: true, - sensitive: sensitive, - escape: function () { - scope.cancel(); - }, - enter: function () { - scope.save(); - } - }); - - // create the button panel - var stringCheckPanel = $('
          '); - stringCheckPanel.appendTo(wrapper); - - // build the custom checkbox - isEmpty = $('
          ') - .on('change', function (event, args) { - // if we are setting as an empty string, disable the editor - if (args.isChecked) { - editor.nfeditor('setValue', ''); - editor.nfeditor('setReadOnly', 'nocursor'); - } else { - editor.nfeditor('setValue', initialValue); - editor.nfeditor('setReadOnly', false); - } - }) - .appendTo(stringCheckPanel); - - $(' Set empty string') - .appendTo(stringCheckPanel); - - var ok = $('
          Ok
          ').css({ - 'color': '#fff', - 'background': '#728E9B' - }).hover( - function () { - $(this).css('background', '#004849'); - }, function () { - $(this).css('background', '#728E9B'); - }).on('click', scope.save); - var cancel = $('
          Cancel
          ').css({ - 'color': '#004849', - 'background': '#E3E8EB' - }).hover( - function () { - $(this).css('background', '#C7D2D7'); - }, function () { - $(this).css('background', '#E3E8EB'); - }).on('click', scope.cancel); - $('
          ').css({ - 'position': 'relative', - 'top': '10px', - 'left': '20px', - 'width': '212px', - 'clear': 'both', - 'float': 'right' - }).append(ok).append(cancel).append('
          ').appendTo(wrapper); - - // position and focus - scope.position(args.position); - editor.nfeditor('focus').nfeditor('selectAll'); - }; - - this.save = function () { - args.commitChanges(); - }; - - this.cancel = function () { - editor.nfeditor('setValue', initialValue); - args.cancelChanges(); - }; - - this.hide = function () { - wrapper.hide(); - }; - - this.show = function () { - wrapper.show(); - editor.nfeditor('refresh'); - }; - - this.position = function (position) { - wrapper.css({ - 'top': position.top - 16, - 'left': position.left - 42 - }); - }; - - this.destroy = function () { - editor.nfeditor('destroy'); - wrapper.remove(); - tip.remove(); - }; - - this.focus = function () { - editor.nfeditor('focus'); - }; - - this.loadValue = function (item) { - // determine if this is a sensitive property - var isEmptyChecked = false; - var sensitive = nfCommon.isSensitiveProperty(propertyDescriptor); - - // determine the value to use when populating the text field - if (nfCommon.isDefinedAndNotNull(item[args.column.field])) { - if (sensitive) { - initialValue = nfCommon.config.sensitiveText; - } else { - initialValue = item[args.column.field]; - isEmptyChecked = initialValue === ''; - } - } - - var checkboxStyle; - if (isEmptyChecked) { - checkboxStyle = 'checkbox-checked'; - editor.nfeditor('setReadOnly', 'nocursor'); - } else { - checkboxStyle = 'checkbox-unchecked'; - } - - isEmpty.addClass(checkboxStyle); - editor.nfeditor('setValue', initialValue).nfeditor('selectAll'); - }; - - this.serializeValue = function () { - var value = editor.nfeditor('getValue'); - - // if the field has been cleared, set the value accordingly - if (value === '') { - // if the user has checked the empty string checkbox, use emtpy string - if (isEmpty.hasClass('checkbox-checked')) { - return ''; - } - - // otherwise if the property is required - if (nfCommon.isRequiredProperty(propertyDescriptor)) { - if (nfCommon.isBlank(propertyDescriptor.defaultValue)) { - return previousValue; - } - - return propertyDescriptor.defaultValue; - } - - // if the property is not required, clear the value - return null; - } - - // if the field wasn't modified return the previous value - if (editor.nfeditor('isModified') === false) { - return previousValue; - } - - // if there is text specified, use that value - return value; - }; - - this.applyValue = function (item, state) { - item[args.column.field] = state; - }; - - this.isValueChanged = function () { - return scope.serializeValue() !== previousValue; - }; - - this.validate = function () { - return { - valid: true, - msg: null - }; - }; - - // initialize the custom long nfel editor - this.init(); - }; - }; - - // combo editor - var getComboEditor = function (parametersSupported, loadParameters) { - return function (args) { - var PARAMETER_REFERENCE_OPTION = { - text: 'Reference parameter...', - value: undefined, - optionClass: 'combo-option-special' - }; - var LOADING_PARAMETERS_OPTION = { - text: 'Loading parameters...', - value: null, - optionClass: 'unset', - disabled: true - }; - var CREATE_CONTROLLER_SERVICE_OPTION = { - text: 'Create new service...', - value: 'createControllerService', - optionClass: 'combo-option-special' - }; - - var scope = this; - var allowableValueOptions = []; - var parameterOptions = []; - var initialValue = null; - var wrapper; - var allowableValuesCombo; - var parameterCombo; - var propertyDescriptor; - var parametersLoading = true; - var parametersLoaded; - - this.init = function () { - var container = $('body'); - - // get the property descriptor - var gridContainer = $(args.grid.getContainerNode()); - var descriptors = gridContainer.data('descriptors'); - propertyDescriptor = descriptors[args.item.property]; - - // get the options - var propertyContainer = gridContainer.closest('.property-container'); - var configurationOptions = propertyContainer.data('options'); - - // create the wrapper - wrapper = $('
          ').css({ - 'z-index': 1999, - 'position': 'absolute', - 'padding': '10px 20px', - 'overflow': 'hidden', - 'border-radius': '2px', - 'box-shadow': 'rgba(0, 0, 0, 0.247059) 0px 2px 5px', - 'background-color': 'rgb(255, 255, 255)', - 'cursor': 'move', - 'transform': 'translate3d(0px, 0px, 0px)' - }).draggable({ - cancel: '.button, .combo', - containment: 'parent' - }).appendTo(container); - - // check for allowable values which will drive which editor to use - var allowableValues = nfCommon.getAllowableValues(propertyDescriptor); - - // show the allowable values - if ($.isArray(allowableValues)) { - $.each(allowableValues, function (i, allowableValueEntity) { - var allowableValue = allowableValueEntity.allowableValue; - allowableValueOptions.push({ - text: allowableValue.displayName, - value: allowableValue.value, - disabled: allowableValueEntity.canRead === false && allowableValue.value !== args.item['previousValue'], - description: nfCommon.escapeHtml(allowableValue.description) - }); - }); - } - - if (propertyDescriptor.required === false) { - allowableValueOptions.push({ - text: 'No value', - value: null, - optionClass: 'unset' - }); - } - - // if this does not represent an identify a controller service - if (parametersSupported) { - allowableValueOptions.push(PARAMETER_REFERENCE_OPTION); - } - - // ensure the options there is at least one option - if (allowableValueOptions.length === 0) { - allowableValueOptions.push({ - text: 'No value', - value: null, - optionClass: 'unset', - disabled: true - }); - } - - // if this descriptor identifies a controller service, provide a way to create one - if (nfCommon.isDefinedAndNotNull(propertyDescriptor.identifiesControllerService)) { - allowableValueOptions.push(CREATE_CONTROLLER_SERVICE_OPTION); - } - - // determine the max height - var position = args.position; - var windowHeight = $(window).height(); - var maxHeight = windowHeight - position.bottom - 16; - - // determine the width - var comboWidth = Math.max(position.width - 16, COMBO_MIN_WIDTH); - - // build the combo field - allowableValuesCombo = $('
          ').combo({ - options: allowableValueOptions, - maxHeight: maxHeight, - select: function (option) { - var promptForControllerService = function () { - // cancel the current edit - scope.cancel(); - - // prompt for the new service type - promptForNewControllerService(gridContainer, args.grid, args.item, propertyDescriptor.identifiesControllerService, propertyDescriptor.identifiesControllerServiceBundle, configurationOptions); - }; - - if (parametersSupported) { - if (nfCommon.isDefinedAndNotNull(parameterCombo)) { - if (option === PARAMETER_REFERENCE_OPTION) { - parameterCombo.show(); - } else { - parameterCombo.hide(); - - if (option === CREATE_CONTROLLER_SERVICE_OPTION) { - promptForControllerService(); - } - } - } - } else if (option === CREATE_CONTROLLER_SERVICE_OPTION) { - promptForControllerService() - } - } - }).css({ - 'margin-top': '10px', - 'margin-bottom': '10px', - 'width': comboWidth + 'px' - }).appendTo(wrapper); - - if (parametersSupported) { - // create the parameter combo - parameterCombo = $('
          ') - .combo({ - options: [LOADING_PARAMETERS_OPTION], - maxHeight: maxHeight - }) - .css({ - 'margin-bottom': '10px', - 'width': comboWidth + 'px' - }) - .appendTo(wrapper); - - // load the parameters - parametersLoaded = new $.Deferred(function (deferred) { - loadParameters(propertyDescriptor, function (parameterListing) { - var sortedParams = _.sortBy(parameterListing, 'name'); - sortedParams.forEach(function (parameter) { - parameterOptions.push({ - text: parameter.name, - value: '#{' + parameter.name + '}', - description: nfCommon.escapeHtml(parameter.description) - }); - }); - - // create the parameter combo - parameterCombo.combo('destroy').combo({ - options: parameterOptions, - maxHeight: maxHeight - }); - - deferred.resolve(); - parametersLoading = false; - }); - }).promise(); - } - - // add buttons for handling user input - var cancel = $('
          Cancel
          ').css({ - 'color': '#004849', - 'background': '#E3E8EB' - }).hover( - function () { - $(this).css('background', '#C7D2D7'); - }, function () { - $(this).css('background', '#E3E8EB'); - }).on('click', scope.cancel); - var ok = $('
          Ok
          ').css({ - 'color': '#fff', - 'background': '#728E9B' - }).hover( - function () { - $(this).css('background', '#004849'); - }, function () { - $(this).css('background', '#728E9B'); - }).on('click', scope.save); - - $('
          ').css({ - 'position': 'relative', - 'top': '10px', - 'left': '20px', - 'width': '212px', - 'float': 'right' - }).append(ok).append(cancel).appendTo(wrapper); - - // position and focus - scope.position(position); - }; - - this.save = function () { - args.commitChanges(); - }; - - this.cancel = function () { - args.cancelChanges(); - }; - - this.hide = function () { - wrapper.hide(); - }; - - this.show = function () { - wrapper.show(); - }; - - this.position = function (position) { - wrapper.css({ - 'top': position.top - 24, - 'left': position.left - 20 - }); - }; - - this.destroy = function () { - if (parametersSupported) { - parameterCombo.combo('destroy'); - } - allowableValuesCombo.combo('destroy'); - wrapper.remove(); - allowableValueOptions.length = 0; - parameterOptions.length = 0; - }; - - this.focus = function () { - }; - - this.loadValue = function (item) { - var configuredValue; - if (!nfCommon.isUndefined(item.value)) { - configuredValue = item.value; - } else if (nfCommon.isDefinedAndNotNull(propertyDescriptor.defaultValue)) { - configuredValue = propertyDescriptor.defaultValue; - } - - // if there is a value determine how to populate the editor - if (!nfCommon.isUndefined(configuredValue)) { - initialValue = configuredValue; - - // determine if the initial value is an allowable value - var selectedOption = allowableValueOptions.find(function (option) { - return initialValue === option.value; - }); - - // if the initial value is an allowable value select it, otherwise see if it is a parameter reference - if (!nfCommon.isUndefined(selectedOption)) { - allowableValuesCombo.combo('setSelectedOption', selectedOption); - } else if (parametersSupported && referencesParameter(initialValue)) { - // select the option for reference a parameter - allowableValuesCombo.combo('setSelectedOption', PARAMETER_REFERENCE_OPTION); - - // construct the initial option - var initialOption = { - value: initialValue - }; - - // populate the parameter combo with the parameter reference - if (parametersLoading) { - parametersLoaded.then(function () { - parameterCombo.combo('setSelectedOption', initialOption); - }); - } else { - parameterCombo.combo('setSelectedOption', initialOption); - } - } else { - // select the first option - allowableValuesCombo.combo('setSelectedOption', allowableValueOptions[0]); - } - } else { - // select the first option - allowableValuesCombo.combo('setSelectedOption', allowableValueOptions[0]); - } - }; - - this.serializeValue = function () { - var selectedOption = allowableValuesCombo.combo('getSelectedOption'); - var selectedValue = selectedOption.value; - - // if the value is undefined, it indicates that the value in the editor references a parameter - if (parametersSupported && _.isUndefined(selectedValue)) { - selectedOption = parameterCombo.combo('getSelectedOption'); - - // if there are no parameters, or they are still loading, revert to the initial value otherwise use the selected parameter - if (_.isUndefined(selectedOption) || selectedOption === LOADING_PARAMETERS_OPTION) { - selectedValue = initialValue; - } else { - selectedValue = selectedOption.value; - } - } - - return selectedValue; - }; - - this.applyValue = function (item, state) { - item[args.column.field] = state; - }; - - this.isValueChanged = function () { - var configuredValue = scope.serializeValue(); - return configuredValue !== initialValue; - }; - - this.validate = function () { - return { - valid: true, - msg: null - }; - }; - - // initialize the custom long text editor - this.init(); - }; - }; - - /** - * Shows the property value for the specified row and cell. - * - * @param {type} propertyGrid - * @param {type} descriptors - * @param {type} row - * @param {type} cell - */ - var showPropertyValue = function (propertyGrid, descriptors, row, cell) { - // remove any currently open detail dialogs - nfUniversalCapture.removeAllPropertyDetailDialogs(); - - // get the property in question - var propertyData = propertyGrid.getData(); - var property = propertyData.getItem(row); - - // ensure there is a value - if (nfCommon.isDefinedAndNotNull(property.value)) { - - // get the descriptor to insert the description tooltip - var propertyDescriptor = descriptors[property.property]; - - // ensure we're not dealing with a sensitive property - if (!nfCommon.isSensitiveProperty(propertyDescriptor)) { - - // get details about the location of the cell - var cellNode = $(propertyGrid.getCellNode(row, cell)); - var offset = cellNode.offset(); - - // create the wrapper - var wrapper = $('
          ').css({ - 'z-index': 1999, - 'position': 'absolute', - 'padding': '10px 20px', - 'overflow': 'hidden', - 'border-radius': '2px', - 'box-shadow': 'rgba(0, 0, 0, 0.247059) 0px 2px 5px', - 'background-color': 'rgb(255, 255, 255)', - 'cursor': 'move', - 'transform': 'translate3d(0px, 0px, 0px)', - 'top': offset.top - 24, - 'left': offset.left - 20 - }).appendTo('body'); - - var allowableValues = nfCommon.getAllowableValues(propertyDescriptor); - if ($.isArray(allowableValues)) { - // prevent dragging over the combo - wrapper.draggable({ - cancel: '.button, .combo', - containment: 'parent' - }); - - // create the read only options - var options = []; - $.each(allowableValues, function (i, allowableValueEntity) { - var allowableValue = allowableValueEntity.allowableValue; - options.push({ - text: allowableValue.displayName, - value: allowableValue.value, - description: nfCommon.escapeHtml(allowableValue.description), - disabled: true - }); - }); - - // ensure the options there is at least one option - if (options.length === 0) { - options.push({ - text: 'No value', - value: null, - optionClass: 'unset', - disabled: true - }); - } - - // determine the max height - var windowHeight = $(window).height(); - var maxHeight = windowHeight - (offset.top + cellNode.height()) - 16; - var width = cellNode.width() - 16; - - // build the combo field - $('
          ').css({ - 'width': width, - 'margin-top': '10px', - 'margin-bottom': '10px' - }).combo({ - options: options, - maxHeight: maxHeight, - selectedOption: { - value: property.value - } - }).appendTo(wrapper); - - $('
          Ok
          ').css({ - 'position': 'relative', - 'top': '10px', - 'left': '20px' - }).hover( - function () { - $(this).css('background', '#004849'); - }, function () { - $(this).css('background', '#728E9B'); - }).on('click', function () { - wrapper.hide().remove(); - }).appendTo(wrapper); - } else { - var editor = null; - - // so the nfel editor is appropriate - if (nfCommon.supportsEl(propertyDescriptor)) { - // prevent dragging over the nf editor - wrapper.css({ - 'z-index': 1999, - 'position': 'absolute', - 'padding': '10px 20px', - 'overflow': 'hidden', - 'border-radius': '2px', - 'box-shadow': 'rgba(0, 0, 0, 0.247059) 0px 2px 5px', - 'background-color': 'rgb(255, 255, 255)', - 'cursor': 'move', - 'transform': 'translate3d(0px, 0px, 0px)', - 'top': offset.top - 22, - 'left': offset.left - 43 - }).draggable({ - cancel: 'input, textarea, pre, .button, .nf-editor', - containment: 'parent' - }); - - // create the editor - editor = $('
          ').addClass('nf-editor').appendTo(wrapper).nfeditor({ - languageMode: nf.nfel, - width: cellNode.width(), - content: property.value, - minWidth: 175, - minHeight: 100, - readOnly: true, - resizable: true, - escape: function () { - cleanUp(); - } - }); - } else { - wrapper.css({ - 'z-index': 1999, - 'position': 'absolute', - 'padding': '10px 20px', - 'overflow': 'hidden', - 'border-radius': '2px', - 'box-shadow': 'rgba(0, 0, 0, 0.247059) 0px 2px 5px', - 'background-color': 'rgb(255, 255, 255)', - 'cursor': 'move', - 'transform': 'translate3d(0px, 0px, 0px)', - 'top': offset.top - 26, - 'left': offset.left - 20 - }); - - // create the input field - $('
        • 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 z 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 diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-LightItalic.ttf b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-LightItalic.ttf deleted file mode 100755 index 04cc002302024c4e032d32319f0d40a32b54aada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166492 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 O52#$t24}uzn*1+3HAyD` diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Medium.ttf b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/fonts/Roboto/Roboto-Medium.ttf deleted file mode 100755 index 39c63d7461796094c0b8889ee8fe2706d344a99a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162588 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 cASb?` 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