From 75be43b2cd1e43b0de366fe031842e9b6f9c216d Mon Sep 17 00:00:00 2001
From: Kiril KJiroski <kiril.kjiroski@finki.ukim.mk>
Date: Tue, 26 Jan 2021 17:14:06 +0100
Subject: [PATCH] Revert "thehive integration with keycloak"

This reverts commit d0fc936f6cdc70ae41df10e84956e0d1c2ae97c5
---
 HOWTOS.md                                     |   73 +
 README.md                                     |   39 +-
 buildca.yml                                   |    2 +-
 buildimages.yml                               |    2 +-
 group_vars/all/main.yml                       |  122 +-
 group_vars/all/users.yml                      |   21 +
 inventories/build/group_vars/all.yml          |    4 -
 inventories/build/hosts.yml                   |   12 -
 inventories/cassandra                         |    2 +
 inventories/cortex                            |    2 +
 inventories/deploy/group_vars/haproxy.yml     |   11 -
 inventories/deploy/group_vars/nifi.yml        |   19 -
 inventories/deploy/group_vars/zookeeper.yml   |    7 -
 inventories/deploy/hosts.yml.example          |   21 -
 inventories/elasticsearch                     |    3 +
 inventories/filebeat                          |   16 +
 inventories/haproxy                           |    2 +
 inventories/keycloak                          |    2 +
 inventories/kibana                            |    2 +
 inventories/misp                              |    2 +
 inventories/mysql                             |    2 +
 inventories/nifi                              |    4 +
 inventories/soctools                          |    2 +
 inventories/thehive                           |    2 +
 restart-soctools.yml                          |   52 +
 .../files/cassandra/cassandrasupervisord.conf |   44 +
 roles/build/files/cassandraDockerfile         |   35 -
 .../build/files/cortex/cortexsupervisord.conf |   56 +
 roles/build/files/cortexDockerfile            |   32 -
 roles/build/files/elasticDockerfile           |   21 -
 .../files/haproxy/haproxysupervisord.conf     |   44 +
 roles/build/files/haproxyDockerfile           |   71 -
 .../files/keycloak/keycloaksupervisord.conf   |   44 +
 roles/build/files/keycloakDockerfile          |   41 -
 .../build/files/kibana/kibanasupervisord.conf |   43 +
 roles/build/files/misp/misp_rh-php72-php-fpm  |   21 +
 roles/build/files/{ => misp}/mispstart.sh     |    0
 roles/build/files/misp/mispsupervisord.conf   |   83 +
 roles/build/files/mispDockerfile              |   84 -
 roles/build/files/mispsupervisord.conf        |   25 -
 roles/build/files/mysql/mysqlsupervisord.conf |   45 +
 roles/build/files/mysqlDockerfile             |   13 -
 roles/build/files/mysqlsupervisord.conf       |    7 -
 roles/build/files/nifi/nifisupervisord.conf   |   44 +
 roles/build/files/nifiDockerfile              |   97 -
 roles/build/files/odfees/odfesupervisord.conf |   43 +
 roles/build/files/odfeesDockerfile            |   16 -
 roles/build/files/odfekibanaDockerfile        |   18 -
 roles/build/files/openjdkDockerfile           |   11 -
 .../files/thehive/thehivesupervisord.conf     |   43 +
 roles/build/files/thehiveDockerfile           |   24 -
 roles/build/files/thehive_button/.eslintrc    |    7 -
 .../.kibana-plugin-helpers.json               |    2 -
 roles/build/files/thehive_button/index.js     |   19 -
 roles/build/files/thehive_button/package.json |   35 -
 .../thehive_button/public/create_case.js      |  101 -
 .../build/files/thehive_button/public/env.js  |    4 -
 .../build/files/thehive_button/public/main.js |   54 -
 .../thehive_button/public/options_editor.js   |  176 -
 .../public/options_template.html              |    8 -
 .../thehive_button/public/request_handler.js  |  195 -
 .../files/thehive_button/public/vis.less      |    3 -
 .../thehive_button/public/vis_controller.js   |  555 --
 .../thehive_button/server/routes/newcase.js   |  153 -
 .../thehive_button/thehive_button/.eslintrc   |    7 -
 .../.kibana-plugin-helpers.json               |    2 -
 .../thehive_button/thehive_button/index.js    |   19 -
 .../thehive_button/package.json               |   35 -
 .../thehive_button/public/create_case.js      |  101 -
 .../thehive_button/public/env.js              |    4 -
 .../thehive_button/public/main.js             |   54 -
 .../thehive_button/public/options_editor.js   |  176 -
 .../public/options_template.html              |    8 -
 .../thehive_button/public/request_handler.js  |  195 -
 .../thehive_button/public/vis.less            |    3 -
 .../thehive_button/public/vis_controller.js   |  555 --
 .../thehive_button/server/routes/newcase.js   |  153 -
 .../files/zookeeper/zookeepersupervisord.conf |   43 +
 roles/build/files/zookeeperDockerfile         |   34 -
 roles/build/tasks/cassandra.yml               |   11 -
 roles/build/tasks/centos.yml                  |  205 +-
 roles/build/tasks/cortex.yml                  |   11 -
 roles/build/tasks/haproxy.yml                 |   10 -
 roles/build/tasks/keycloak.yml                |   18 -
 roles/build/tasks/main.yml                    |   52 +-
 roles/build/tasks/misp.yml                    |   20 -
 roles/build/tasks/mysql.yml                   |   15 -
 roles/build/tasks/nifi.yml                    |   11 -
 roles/build/tasks/odfees.yml                  |   18 -
 roles/build/tasks/odfekibana.yml              |   22 -
 roles/build/tasks/openjdk.yml                 |   11 -
 roles/build/tasks/thehive.yml                 |   11 -
 roles/build/tasks/zookeeper.yml               |   11 -
 roles/build/templates/cassandra/Dockerfile.j2 |   21 +-
 .../templates/cassandra/cassandra.repo.j2     |    6 -
 roles/build/templates/cassandra/start.sh.j2   |   10 -
 .../templates/cassandra/supervisord.conf.j2   |   10 -
 roles/build/templates/cortex/Dockerfile.j2    |   10 +-
 roles/build/templates/cortex/application.conf |    2 +-
 .../Dockerfile.j2}                            |    5 +-
 roles/build/templates/haproxy/Dockerfile.j2   |   11 +-
 roles/build/templates/keycloak/Dockerfile.j2  |    9 +-
 .../kibana/Dockerfile.j2}                     |   13 +-
 roles/build/templates/misp/Dockerfile.j2      |    9 +-
 .../build/templates/misp/supervisord.conf.j2  |   25 -
 roles/build/templates/mysql/Dockerfile.j2     |    2 +-
 .../build/templates/mysql/supervisord.conf.j2 |    7 -
 roles/build/templates/nifi/Dockerfile.j2      |    8 +-
 ...ockerfile-odfeelastic.j2 => Dockerfile.j2} |    7 +-
 .../templates/odfekibana/Dockerfile-kibana.j2 |    9 +-
 ...Dockerfile-odfekibana.j2 => Dockerfile.j2} |    3 +-
 roles/build/templates/thehive/Dockerfile.j2   |   10 +-
 roles/build/templates/thehive/start.sh        |   10 -
 .../build/templates/thehive/supervisord.conf  |   10 -
 roles/build/templates/thehive/thehive.repo    |    7 -
 roles/build/templates/zookeeper/Dockerfile.j2 |    8 +-
 roles/ca/files/CA/.rnd                        |  Bin 1024 -> 0 bytes
 roles/ca/files/CA/ca.crt                      |   20 -
 .../01EC4DAD3E5E47CF4E4B98495932B337.pem      |   88 -
 .../1DD9AF5415359961C578D1B98BFA6E9F.pem      |   84 -
 .../560A99C5A03FC4B9FC92FDC62F419BB9.pem      |   88 -
 .../5969918F10EF8D2BAE46B26D6D629D8E.pem      |   88 -
 .../5DC4BC495FA076A813A4C23261640D92.pem      |   88 -
 .../61095C2C8D35EE291C99CEABD42B3CA4.pem      |   88 -
 .../7587FCE4CF3EC68117199076B12CD5D2.pem      |   88 -
 .../7DFC33457573E8F16094A74E6B2F23F1.pem      |   88 -
 .../8B69055F8586CEDD21660B2493412660.pem      |   88 -
 .../97D2D0CF2300C0A966D103CA89A99212.pem      |   88 -
 .../A7217943DDD1145BC6F68CBA362CB35B.pem      |   84 -
 .../D27B43CB9BFB09CFCC86EFD1019A42FC.pem      |   88 -
 .../FE7583DEF2355A2C2BBA09720BD80948.pem      |   88 -
 roles/ca/files/CA/extensions.temp             |   15 -
 roles/ca/files/CA/index.txt                   |   13 -
 roles/ca/files/CA/index.txt.attr              |    1 -
 roles/ca/files/CA/index.txt.attr.old          |    1 -
 roles/ca/files/CA/index.txt.old               |   12 -
 roles/ca/files/CA/issued/Arne Oslebo.crt      |   84 -
 roles/ca/files/CA/issued/Bozidar Proevski.crt |   84 -
 roles/ca/files/CA/issued/dsoclab-cortex.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-haproxy.crt  |   88 -
 roles/ca/files/CA/issued/dsoclab-keycloak.crt |   88 -
 roles/ca/files/CA/issued/dsoclab-kibana.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-misp.crt     |   88 -
 roles/ca/files/CA/issued/dsoclab-nifi-1.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-nifi-2.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-nifi-3.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-odfe-1.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-odfe-2.crt   |   88 -
 roles/ca/files/CA/issued/dsoclab-thehive.crt  |   88 -
 roles/ca/files/CA/openssl-easyrsa.cnf         |  140 -
 roles/ca/files/CA/private/Arne Oslebo.key     |   28 -
 roles/ca/files/CA/private/Arne Oslebo.p12     |  Bin 3325 -> 0 bytes
 .../ca/files/CA/private/Bozidar Proevski.key  |   28 -
 .../ca/files/CA/private/Bozidar Proevski.p12  |  Bin 3325 -> 0 bytes
 roles/ca/files/CA/private/ca.key              |   27 -
 roles/ca/files/CA/private/dsoclab-cortex.key  |   28 -
 roles/ca/files/CA/private/dsoclab-cortex.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-haproxy.key |   28 -
 .../ca/files/CA/private/dsoclab-keycloak.key  |   28 -
 .../ca/files/CA/private/dsoclab-keycloak.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-kibana.key  |   28 -
 roles/ca/files/CA/private/dsoclab-kibana.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-misp.key    |   28 -
 roles/ca/files/CA/private/dsoclab-misp.p12    |  Bin 3389 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-nifi-1.key  |   28 -
 roles/ca/files/CA/private/dsoclab-nifi-1.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-nifi-2.key  |   28 -
 roles/ca/files/CA/private/dsoclab-nifi-2.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-nifi-3.key  |   28 -
 roles/ca/files/CA/private/dsoclab-nifi-3.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-odfe-1.key  |   28 -
 roles/ca/files/CA/private/dsoclab-odfe-1.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-odfe-2.key  |   28 -
 roles/ca/files/CA/private/dsoclab-odfe-2.p12  |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/private/dsoclab-thehive.key |   28 -
 roles/ca/files/CA/private/dsoclab-thehive.p12 |  Bin 3397 -> 0 bytes
 roles/ca/files/CA/reqs/Arne Oslebo.req        |   15 -
 roles/ca/files/CA/reqs/Bozidar Proevski.req   |   15 -
 roles/ca/files/CA/reqs/dsoclab-cortex.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-haproxy.req    |   17 -
 roles/ca/files/CA/reqs/dsoclab-keycloak.req   |   17 -
 roles/ca/files/CA/reqs/dsoclab-kibana.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-misp.req       |   17 -
 roles/ca/files/CA/reqs/dsoclab-nifi-1.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-nifi-2.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-nifi-3.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-odfe-1.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-odfe-2.req     |   17 -
 roles/ca/files/CA/reqs/dsoclab-thehive.req    |   17 -
 roles/ca/files/CA/safessl-easyrsa.cnf         |  140 -
 roles/ca/files/CA/serial                      |    1 -
 roles/ca/files/CA/serial.old                  |    1 -
 roles/ca/files/truststore/SOCTOOLS-CA.crt     |   20 -
 roles/ca/files/truststore/cacerts.jks         |  Bin 893 -> 0 bytes
 roles/ca/tasks/main.yml                       |  199 +-
 roles/cassandra/tasks/main.yml                |   33 +-
 roles/cassandra/tasks/restart.yml             |    6 +
 roles/cassandra/tasks/start.yml               |   27 +
 roles/cassandra/tasks/stop.yml                |    6 +
 roles/cassandra/tasks/update-config.yml       |   15 +
 roles/cortex/files/SOCTOOLS-CA.crt            |   20 -
 roles/cortex/files/cacerts.jks                |  Bin 893 -> 0 bytes
 roles/cortex/files/cortexsecret               |    3 -
 roles/cortex/files/dsoclab-cortex.crt         |   88 -
 roles/cortex/files/dsoclab-cortex.key         |   28 -
 roles/cortex/files/dsoclab-cortex.p12         |  Bin 3397 -> 0 bytes
 roles/cortex/files/logback.xml                |   47 -
 roles/cortex/tasks/main.yml                   |  113 +-
 roles/cortex/tasks/restart.yml                |   18 +
 roles/cortex/tasks/start.yml                  |   59 +
 roles/cortex/tasks/stop.yml                   |   10 +
 roles/cortex/tasks/update-config.yml          |   14 +
 roles/cortex/templates/application.conf.j2    |   90 +-
 roles/docker/tasks/cassandra.yml              |    1 -
 roles/docker/tasks/cortex.yml                 |    1 -
 roles/docker/tasks/haproxy.yml                |    3 +-
 roles/docker/tasks/keycloak.yml               |    1 -
 roles/docker/tasks/misp.yml                   |    3 +-
 roles/docker/tasks/nifi.yml                   |    1 -
 roles/docker/tasks/odfees.yml                 |    1 -
 roles/docker/tasks/odfekibana.yml             |    1 -
 roles/docker/tasks/thehive.yml                |    4 +-
 roles/filebeat/README.md                      |   38 +
 roles/filebeat/defaults/main.yml              |    2 +
 roles/filebeat/files/.gitkeep                 |    0
 roles/filebeat/handlers/main.yml              |    2 +
 roles/filebeat/meta/main.yml                  |   53 +
 roles/filebeat/tasks/main.yml                 |   17 +
 roles/filebeat/tasks/restart.yml              |    8 +
 roles/filebeat/tasks/start.yml                |   23 +
 roles/filebeat/tasks/stop.yml                 |    8 +
 roles/filebeat/tasks/update-config.yml        |    9 +
 roles/filebeat/templates/filebeat.yml.j2      |   35 +
 roles/filebeat/tests/inventory                |    2 +
 roles/filebeat/tests/test.yml                 |    5 +
 roles/filebeat/vars/main.yml                  |    2 +
 roles/haproxy/files/.empty                    |    0
 roles/haproxy/files/dsoclab-haproxy.crt       |   88 -
 roles/haproxy/files/dsoclab-haproxy.key       |   28 -
 roles/haproxy/files/haproxy.cfg               |   17 -
 roles/haproxy/tasks/main.yml                  |   73 +-
 roles/haproxy/tasks/restart.yml               |    6 +
 roles/haproxy/tasks/start.yml                 |   55 +
 roles/haproxy/tasks/stop.yml                  |    6 +
 roles/haproxy/tasks/update-config.yml         |    8 +
 roles/haproxy/templates/haproxy.cfg.j2        |   13 +-
 roles/keycloak/files/SOCTOOLS-CA.crt          |   20 -
 roles/keycloak/files/cacerts.jks              |  Bin 893 -> 0 bytes
 roles/keycloak/files/dsoclab-keycloak.crt     |   88 -
 roles/keycloak/files/dsoclab-keycloak.key     |   28 -
 roles/keycloak/tasks/main.yml                 |  110 +-
 roles/keycloak/tasks/restart.yml              |   13 +
 roles/keycloak/tasks/start.yml                |   96 +
 roles/keycloak/tasks/stop.yml                 |    5 +
 roles/keycloak/tasks/update-config.yml        |   32 +
 .../templates/initkeycloakrealm.sh.j2         |   18 +-
 roles/misp/files/SOCTOOLS-CA.crt              |   20 -
 roles/misp/files/cacerts.jks                  |  Bin 893 -> 0 bytes
 roles/misp/files/dsoclab-misp.crt             |   88 -
 roles/misp/files/dsoclab-misp.key             |   28 -
 roles/misp/tasks/config.yml                   |   93 +
 roles/misp/tasks/main.yml                     |   66 +-
 roles/misp/tasks/restart.yml                  |   16 +
 roles/misp/tasks/start.yml                    |   73 +
 roles/misp/tasks/stop.yml                     |   17 +
 roles/misp/tasks/update-config.yml            |    2 +
 roles/misp/templates/checkdb.sh.j2            |    4 +-
 roles/misp/templates/config.php.j2            |   84 -
 roles/misp/templates/database.php.j2          |    4 +-
 roles/misp/templates/misp.conf.j2             |   28 +-
 roles/misp/templates/mysql_secure.sql.j2      |    4 +-
 roles/mysql/tasks/main.yml                    |   16 +
 roles/mysql/tasks/misp.yml                    |   17 +-
 roles/mysql/tasks/restart.yml                 |    4 +
 roles/mysql/tasks/secure.yml                  |   10 +-
 roles/mysql/tasks/stop.yml                    |    4 +
 roles/mysql/tasks/update-config.yml           |    2 +
 roles/mysql/templates/dotmy.cnf.j2            |    2 +-
 roles/mysql/templates/mysql_secure.sql.j2     |    9 +-
 .../nifi/files/CountriesWithRegionalCodes.csv |  250 +
 roles/nifi/files/SOCTOOLS-CA.crt              |   20 -
 roles/nifi/files/cacerts.jks                  |  Bin 893 -> 0 bytes
 roles/nifi/files/common-cacerts.jks           |  Bin 0 -> 152651 bytes
 roles/nifi/files/dsoclab-nifi-1.p12           |  Bin 3397 -> 0 bytes
 roles/nifi/files/dsoclab-nifi-2.p12           |  Bin 3397 -> 0 bytes
 roles/nifi/files/dsoclab-nifi-3.p12           |  Bin 3397 -> 0 bytes
 roles/nifi/files/haproxy.groklib              |   39 +
 roles/nifi/files/nifisecret                   |    3 -
 roles/nifi/tasks/main.yml                     |  154 +-
 roles/nifi/tasks/restart.yml                  |    6 +
 roles/nifi/tasks/start.yml                    |  204 +
 roles/nifi/tasks/stop.yml                     |    6 +
 roles/nifi/tasks/update-config.yml            |   77 +
 roles/nifi/templates/flow.xml.j2              | 7437 ++++++++++++-----
 roles/nifi/templates/nifi.properties.j2       |   24 +-
 roles/odfees/files/Arne Oslebo.p12            |  Bin 3325 -> 0 bytes
 roles/odfees/files/Bozidar Proevski.p12       |  Bin 3325 -> 0 bytes
 roles/odfees/files/SOCTOOLS-CA.crt            |   20 -
 roles/odfees/files/cacerts.jks                |  Bin 893 -> 0 bytes
 roles/odfees/files/dsoclab-odfe-1.p12         |  Bin 3397 -> 0 bytes
 roles/odfees/files/dsoclab-odfe-2.p12         |  Bin 3397 -> 0 bytes
 roles/odfees/tasks/main.yml                   |  123 +-
 roles/odfees/tasks/restart.yml                |   14 +
 roles/odfees/tasks/start.yml                  |  102 +
 roles/odfees/tasks/stop.yml                   |    6 +
 roles/odfees/tasks/update-config.yml          |   32 +
 .../templates/config/elasticsearch.yml.j2     |   10 +-
 .../templates/config/log4j2.properties.j2     |   24 +-
 .../templates/securityconfig/config.yml.j2    |    2 +-
 roles/odfekibana/files/Arne Oslebo.p12        |  Bin 3325 -> 0 bytes
 roles/odfekibana/files/Bozidar Proevski.p12   |  Bin 3325 -> 0 bytes
 roles/odfekibana/files/SOCTOOLS-CA.crt        |   20 -
 roles/odfekibana/files/cacerts.jks            |  Bin 893 -> 0 bytes
 roles/odfekibana/files/dsoclab-kibana.crt     |   88 -
 roles/odfekibana/files/dsoclab-kibana.key     |   28 -
 roles/odfekibana/files/dsoclab-kibana.p12     |  Bin 3397 -> 0 bytes
 roles/odfekibana/files/kibana_graphs.ndjson   |   73 +-
 roles/odfekibana/files/kibanasecret           |    3 -
 roles/odfekibana/tasks/main.yml               |  189 +-
 roles/odfekibana/tasks/restart.yml            |   32 +
 roles/odfekibana/tasks/start.yml              |  166 +
 roles/odfekibana/tasks/stop.yml               |    5 +
 roles/odfekibana/tasks/update-config.yml      |   34 +
 roles/odfekibana/templates/kibana.yml.j2      |   16 +-
 roles/odfekibana/templates/role.json.j2       |   15 +
 roles/soctools-server/tasks/main.yml          |    2 +-
 roles/thehive/files/SOCTOOLS-CA.crt           |   20 -
 roles/thehive/files/cacerts.jks               |  Bin 893 -> 0 bytes
 roles/thehive/files/dsoclab-thehive.crt       |   88 -
 roles/thehive/files/dsoclab-thehive.key       |   28 -
 roles/thehive/files/logback.xml               |   45 -
 roles/thehive/files/thehivesecret             |    3 -
 roles/thehive/tasks/createusers.yml           |   28 -
 roles/thehive/tasks/main.yml                  |   91 +-
 roles/thehive/tasks/restart.yml               |   13 +
 roles/thehive/tasks/start.yml                 |   26 +
 roles/thehive/tasks/stop.yml                  |    5 +
 roles/thehive/tasks/update-config.yml         |    7 +
 roles/thehive/templates/application.conf.j2   |   58 +-
 roles/thehive/templates/users.json            |    6 -
 roles/thehive/vars/users.yml                  |   16 -
 soctools-inventory                            |   35 -
 soctools.yml                                  |   11 +-
 soctools_server.yml                           |    2 +-
 startsoctools.yml                             |   13 +-
 stopsoctools.yml                              |    2 +-
 update-config-soctools.yml                    |   52 +
 utils/flow2template.py                        |    9 +-
 348 files changed, 8457 insertions(+), 11630 deletions(-)
 create mode 100644 HOWTOS.md
 create mode 100644 group_vars/all/users.yml
 delete mode 100644 inventories/build/group_vars/all.yml
 delete mode 100644 inventories/build/hosts.yml
 create mode 100644 inventories/cassandra
 create mode 100644 inventories/cortex
 delete mode 100644 inventories/deploy/group_vars/haproxy.yml
 delete mode 100644 inventories/deploy/group_vars/nifi.yml
 delete mode 100644 inventories/deploy/group_vars/zookeeper.yml
 delete mode 100644 inventories/deploy/hosts.yml.example
 create mode 100644 inventories/elasticsearch
 create mode 100644 inventories/filebeat
 create mode 100644 inventories/haproxy
 create mode 100644 inventories/keycloak
 create mode 100644 inventories/kibana
 create mode 100644 inventories/misp
 create mode 100644 inventories/mysql
 create mode 100644 inventories/nifi
 create mode 100644 inventories/soctools
 create mode 100644 inventories/thehive
 create mode 100644 restart-soctools.yml
 create mode 100644 roles/build/files/cassandra/cassandrasupervisord.conf
 delete mode 100644 roles/build/files/cassandraDockerfile
 create mode 100644 roles/build/files/cortex/cortexsupervisord.conf
 delete mode 100644 roles/build/files/cortexDockerfile
 delete mode 100644 roles/build/files/elasticDockerfile
 create mode 100644 roles/build/files/haproxy/haproxysupervisord.conf
 delete mode 100644 roles/build/files/haproxyDockerfile
 create mode 100644 roles/build/files/keycloak/keycloaksupervisord.conf
 delete mode 100644 roles/build/files/keycloakDockerfile
 create mode 100644 roles/build/files/kibana/kibanasupervisord.conf
 create mode 100644 roles/build/files/misp/misp_rh-php72-php-fpm
 rename roles/build/files/{ => misp}/mispstart.sh (100%)
 create mode 100644 roles/build/files/misp/mispsupervisord.conf
 delete mode 100644 roles/build/files/mispDockerfile
 delete mode 100644 roles/build/files/mispsupervisord.conf
 create mode 100644 roles/build/files/mysql/mysqlsupervisord.conf
 delete mode 100644 roles/build/files/mysqlDockerfile
 delete mode 100644 roles/build/files/mysqlsupervisord.conf
 create mode 100644 roles/build/files/nifi/nifisupervisord.conf
 delete mode 100644 roles/build/files/nifiDockerfile
 create mode 100644 roles/build/files/odfees/odfesupervisord.conf
 delete mode 100644 roles/build/files/odfeesDockerfile
 delete mode 100644 roles/build/files/odfekibanaDockerfile
 delete mode 100644 roles/build/files/openjdkDockerfile
 create mode 100644 roles/build/files/thehive/thehivesupervisord.conf
 delete mode 100644 roles/build/files/thehiveDockerfile
 delete mode 100644 roles/build/files/thehive_button/.eslintrc
 delete mode 100644 roles/build/files/thehive_button/.kibana-plugin-helpers.json
 delete mode 100644 roles/build/files/thehive_button/index.js
 delete mode 100644 roles/build/files/thehive_button/package.json
 delete mode 100644 roles/build/files/thehive_button/public/create_case.js
 delete mode 100644 roles/build/files/thehive_button/public/env.js
 delete mode 100644 roles/build/files/thehive_button/public/main.js
 delete mode 100644 roles/build/files/thehive_button/public/options_editor.js
 delete mode 100644 roles/build/files/thehive_button/public/options_template.html
 delete mode 100644 roles/build/files/thehive_button/public/request_handler.js
 delete mode 100644 roles/build/files/thehive_button/public/vis.less
 delete mode 100644 roles/build/files/thehive_button/public/vis_controller.js
 delete mode 100644 roles/build/files/thehive_button/server/routes/newcase.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/.eslintrc
 delete mode 100644 roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json
 delete mode 100644 roles/build/files/thehive_button/thehive_button/index.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/package.json
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/create_case.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/env.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/main.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/options_editor.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/options_template.html
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/request_handler.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/vis.less
 delete mode 100644 roles/build/files/thehive_button/thehive_button/public/vis_controller.js
 delete mode 100644 roles/build/files/thehive_button/thehive_button/server/routes/newcase.js
 create mode 100644 roles/build/files/zookeeper/zookeepersupervisord.conf
 delete mode 100644 roles/build/files/zookeeperDockerfile
 delete mode 100644 roles/build/tasks/cassandra.yml
 delete mode 100644 roles/build/tasks/cortex.yml
 delete mode 100644 roles/build/tasks/haproxy.yml
 delete mode 100644 roles/build/tasks/keycloak.yml
 delete mode 100644 roles/build/tasks/misp.yml
 delete mode 100644 roles/build/tasks/mysql.yml
 delete mode 100644 roles/build/tasks/nifi.yml
 delete mode 100644 roles/build/tasks/odfees.yml
 delete mode 100644 roles/build/tasks/odfekibana.yml
 delete mode 100644 roles/build/tasks/openjdk.yml
 delete mode 100644 roles/build/tasks/thehive.yml
 delete mode 100644 roles/build/tasks/zookeeper.yml
 delete mode 100644 roles/build/templates/cassandra/cassandra.repo.j2
 delete mode 100644 roles/build/templates/cassandra/start.sh.j2
 delete mode 100644 roles/build/templates/cassandra/supervisord.conf.j2
 rename roles/build/templates/{odfees/Dockerfile-elastic.j2 => elasticsearch/Dockerfile.j2} (85%)
 rename roles/build/{files/kibanaDockerfile => templates/kibana/Dockerfile.j2} (57%)
 delete mode 100644 roles/build/templates/misp/supervisord.conf.j2
 delete mode 100644 roles/build/templates/mysql/supervisord.conf.j2
 rename roles/build/templates/odfees/{Dockerfile-odfeelastic.j2 => Dockerfile.j2} (74%)
 rename roles/build/templates/odfekibana/{Dockerfile-odfekibana.j2 => Dockerfile.j2} (92%)
 delete mode 100644 roles/build/templates/thehive/start.sh
 delete mode 100644 roles/build/templates/thehive/supervisord.conf
 delete mode 100644 roles/build/templates/thehive/thehive.repo
 delete mode 100644 roles/ca/files/CA/.rnd
 delete mode 100644 roles/ca/files/CA/ca.crt
 delete mode 100644 roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem
 delete mode 100644 roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem
 delete mode 100644 roles/ca/files/CA/extensions.temp
 delete mode 100644 roles/ca/files/CA/index.txt
 delete mode 100644 roles/ca/files/CA/index.txt.attr
 delete mode 100644 roles/ca/files/CA/index.txt.attr.old
 delete mode 100644 roles/ca/files/CA/index.txt.old
 delete mode 100644 roles/ca/files/CA/issued/Arne Oslebo.crt
 delete mode 100644 roles/ca/files/CA/issued/Bozidar Proevski.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-cortex.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-haproxy.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-keycloak.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-kibana.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-misp.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-nifi-1.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-nifi-2.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-nifi-3.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-odfe-1.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-odfe-2.crt
 delete mode 100644 roles/ca/files/CA/issued/dsoclab-thehive.crt
 delete mode 100644 roles/ca/files/CA/openssl-easyrsa.cnf
 delete mode 100644 roles/ca/files/CA/private/Arne Oslebo.key
 delete mode 100644 roles/ca/files/CA/private/Arne Oslebo.p12
 delete mode 100644 roles/ca/files/CA/private/Bozidar Proevski.key
 delete mode 100644 roles/ca/files/CA/private/Bozidar Proevski.p12
 delete mode 100644 roles/ca/files/CA/private/ca.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-cortex.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-cortex.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-haproxy.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-keycloak.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-keycloak.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-kibana.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-kibana.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-misp.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-misp.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-nifi-1.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-nifi-1.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-nifi-2.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-nifi-2.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-nifi-3.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-nifi-3.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-odfe-1.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-odfe-1.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-odfe-2.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-odfe-2.p12
 delete mode 100644 roles/ca/files/CA/private/dsoclab-thehive.key
 delete mode 100644 roles/ca/files/CA/private/dsoclab-thehive.p12
 delete mode 100644 roles/ca/files/CA/reqs/Arne Oslebo.req
 delete mode 100644 roles/ca/files/CA/reqs/Bozidar Proevski.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-cortex.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-haproxy.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-keycloak.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-kibana.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-misp.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-nifi-1.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-nifi-2.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-nifi-3.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-odfe-1.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-odfe-2.req
 delete mode 100644 roles/ca/files/CA/reqs/dsoclab-thehive.req
 delete mode 100644 roles/ca/files/CA/safessl-easyrsa.cnf
 delete mode 100644 roles/ca/files/CA/serial
 delete mode 100644 roles/ca/files/CA/serial.old
 delete mode 100644 roles/ca/files/truststore/SOCTOOLS-CA.crt
 delete mode 100644 roles/ca/files/truststore/cacerts.jks
 create mode 100644 roles/cassandra/tasks/restart.yml
 create mode 100644 roles/cassandra/tasks/start.yml
 create mode 100644 roles/cassandra/tasks/stop.yml
 create mode 100644 roles/cassandra/tasks/update-config.yml
 delete mode 100644 roles/cortex/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/cortex/files/cacerts.jks
 delete mode 100644 roles/cortex/files/cortexsecret
 delete mode 100644 roles/cortex/files/dsoclab-cortex.crt
 delete mode 100644 roles/cortex/files/dsoclab-cortex.key
 delete mode 100644 roles/cortex/files/dsoclab-cortex.p12
 delete mode 100644 roles/cortex/files/logback.xml
 create mode 100644 roles/cortex/tasks/restart.yml
 create mode 100644 roles/cortex/tasks/start.yml
 create mode 100644 roles/cortex/tasks/stop.yml
 create mode 100644 roles/cortex/tasks/update-config.yml
 create mode 100644 roles/filebeat/README.md
 create mode 100644 roles/filebeat/defaults/main.yml
 create mode 100644 roles/filebeat/files/.gitkeep
 create mode 100644 roles/filebeat/handlers/main.yml
 create mode 100644 roles/filebeat/meta/main.yml
 create mode 100644 roles/filebeat/tasks/main.yml
 create mode 100644 roles/filebeat/tasks/restart.yml
 create mode 100644 roles/filebeat/tasks/start.yml
 create mode 100644 roles/filebeat/tasks/stop.yml
 create mode 100644 roles/filebeat/tasks/update-config.yml
 create mode 100644 roles/filebeat/templates/filebeat.yml.j2
 create mode 100644 roles/filebeat/tests/inventory
 create mode 100644 roles/filebeat/tests/test.yml
 create mode 100644 roles/filebeat/vars/main.yml
 create mode 100644 roles/haproxy/files/.empty
 delete mode 100644 roles/haproxy/files/dsoclab-haproxy.crt
 delete mode 100644 roles/haproxy/files/dsoclab-haproxy.key
 delete mode 100644 roles/haproxy/files/haproxy.cfg
 create mode 100644 roles/haproxy/tasks/restart.yml
 create mode 100644 roles/haproxy/tasks/start.yml
 create mode 100644 roles/haproxy/tasks/stop.yml
 create mode 100644 roles/haproxy/tasks/update-config.yml
 delete mode 100644 roles/keycloak/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/keycloak/files/cacerts.jks
 delete mode 100644 roles/keycloak/files/dsoclab-keycloak.crt
 delete mode 100644 roles/keycloak/files/dsoclab-keycloak.key
 create mode 100644 roles/keycloak/tasks/restart.yml
 create mode 100644 roles/keycloak/tasks/start.yml
 create mode 100644 roles/keycloak/tasks/stop.yml
 create mode 100644 roles/keycloak/tasks/update-config.yml
 delete mode 100644 roles/misp/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/misp/files/cacerts.jks
 delete mode 100644 roles/misp/files/dsoclab-misp.crt
 delete mode 100644 roles/misp/files/dsoclab-misp.key
 create mode 100644 roles/misp/tasks/config.yml
 create mode 100644 roles/misp/tasks/restart.yml
 create mode 100644 roles/misp/tasks/start.yml
 create mode 100644 roles/misp/tasks/stop.yml
 create mode 100644 roles/misp/tasks/update-config.yml
 delete mode 100644 roles/misp/templates/config.php.j2
 create mode 100644 roles/mysql/tasks/restart.yml
 create mode 100644 roles/mysql/tasks/stop.yml
 create mode 100644 roles/mysql/tasks/update-config.yml
 create mode 100644 roles/nifi/files/CountriesWithRegionalCodes.csv
 delete mode 100644 roles/nifi/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/nifi/files/cacerts.jks
 create mode 100644 roles/nifi/files/common-cacerts.jks
 delete mode 100644 roles/nifi/files/dsoclab-nifi-1.p12
 delete mode 100644 roles/nifi/files/dsoclab-nifi-2.p12
 delete mode 100644 roles/nifi/files/dsoclab-nifi-3.p12
 create mode 100644 roles/nifi/files/haproxy.groklib
 delete mode 100644 roles/nifi/files/nifisecret
 create mode 100644 roles/nifi/tasks/restart.yml
 create mode 100644 roles/nifi/tasks/start.yml
 create mode 100644 roles/nifi/tasks/stop.yml
 create mode 100644 roles/nifi/tasks/update-config.yml
 delete mode 100644 roles/odfees/files/Arne Oslebo.p12
 delete mode 100644 roles/odfees/files/Bozidar Proevski.p12
 delete mode 100644 roles/odfees/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/odfees/files/cacerts.jks
 delete mode 100644 roles/odfees/files/dsoclab-odfe-1.p12
 delete mode 100644 roles/odfees/files/dsoclab-odfe-2.p12
 create mode 100644 roles/odfees/tasks/restart.yml
 create mode 100644 roles/odfees/tasks/start.yml
 create mode 100644 roles/odfees/tasks/stop.yml
 create mode 100644 roles/odfees/tasks/update-config.yml
 delete mode 100644 roles/odfekibana/files/Arne Oslebo.p12
 delete mode 100644 roles/odfekibana/files/Bozidar Proevski.p12
 delete mode 100644 roles/odfekibana/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/odfekibana/files/cacerts.jks
 delete mode 100644 roles/odfekibana/files/dsoclab-kibana.crt
 delete mode 100644 roles/odfekibana/files/dsoclab-kibana.key
 delete mode 100644 roles/odfekibana/files/dsoclab-kibana.p12
 delete mode 100644 roles/odfekibana/files/kibanasecret
 create mode 100644 roles/odfekibana/tasks/restart.yml
 create mode 100644 roles/odfekibana/tasks/start.yml
 create mode 100644 roles/odfekibana/tasks/stop.yml
 create mode 100644 roles/odfekibana/tasks/update-config.yml
 create mode 100644 roles/odfekibana/templates/role.json.j2
 delete mode 100644 roles/thehive/files/SOCTOOLS-CA.crt
 delete mode 100644 roles/thehive/files/cacerts.jks
 delete mode 100644 roles/thehive/files/dsoclab-thehive.crt
 delete mode 100644 roles/thehive/files/dsoclab-thehive.key
 delete mode 100644 roles/thehive/files/logback.xml
 delete mode 100644 roles/thehive/files/thehivesecret
 delete mode 100644 roles/thehive/tasks/createusers.yml
 create mode 100644 roles/thehive/tasks/restart.yml
 create mode 100644 roles/thehive/tasks/start.yml
 create mode 100644 roles/thehive/tasks/stop.yml
 create mode 100644 roles/thehive/tasks/update-config.yml
 delete mode 100644 roles/thehive/templates/users.json
 delete mode 100644 roles/thehive/vars/users.yml
 delete mode 100644 soctools-inventory
 create mode 100644 update-config-soctools.yml

diff --git a/HOWTOS.md b/HOWTOS.md
new file mode 100644
index 0000000..ae4e2da
--- /dev/null
+++ b/HOWTOS.md
@@ -0,0 +1,73 @@
+Howto's
+=======
+
+Modify main NiFi pipeline
+-------------------------
+
+To make modifications to the main NiFi pipeline and add it to the Ansible playbook, do the following in the soctool directory:
+
+* Make necesarry to the pipeline in the NiFi GUI
+* Copy flow.xml.gz file from one of the NiFi containers:  
+  `docker cp soctools-nifi-1:/opt/nifi/nifi-current/conf/flow.xml.gz .`
+* Convert flowx.xml.gz to new template  
+  `utils/flow2template.py flow.xml.gz roles/nifi/templates/flow.xml.j2`
+
+
+Update configuration files in docker containers using Ansible
+-------------------------------------------------------------
+To update configuration files for all docker containers together, run the following command:
+	ansible-playbook -i inventories soctools.yml -t update-config
+To update configuration files only for specific services, run the following commands:
+	ansible-playbook -i inventories soctools.yml -t update-keycloak-config
+	ansible-playbook -i inventories soctools.yml -t update-thehive-config
+        ansible-playbook -i inventories soctools.yml -t update-cortex-config
+        ansible-playbook -i inventories soctools.yml -t update-cassandra-config
+        ansible-playbook -i inventories soctools.yml -t update-haproxy-config
+        ansible-playbook -i inventories soctools.yml -t update-filebeat-config
+        ansible-playbook -i inventories soctools.yml -t update-nifi-config
+        ansible-playbook -i inventories soctools.yml -t update-odfees-config
+        ansible-playbook -i inventories soctools.yml -t update-odfekibana-config
+
+
+Restart services inside docker containers using Ansible
+-------------------------------------------------------
+To restart services for all docker containers together, run the following command:
+        ansible-playbook -i inventories soctools.yml -t restart
+To restart services only for specific docker containers, run the following commands:
+        ansible-playbook -i inventories soctools.yml -t restart-keycloak
+        ansible-playbook -i inventories soctools.yml -t restart-thehive
+        ansible-playbook -i inventories soctools.yml -t restart-cortex
+        ansible-playbook -i inventories soctools.yml -t restart-cassandra
+        ansible-playbook -i inventories soctools.yml -t restart-haproxy
+        ansible-playbook -i inventories soctools.yml -t restart-filebeat
+        ansible-playbook -i inventories soctools.yml -t restart-misp
+        ansible-playbook -i inventories soctools.yml -t restart-mysql
+        ansible-playbook -i inventories soctools.yml -t restart-nifi
+        ansible-playbook -i inventories soctools.yml -t restart-odfees
+        ansible-playbook -i inventories soctools.yml -t restart-odfekibana
+
+Stop services inside docker containers using Ansible
+----------------------------------------------------
+To stop services for all docker containers together, run the following command:
+        ansible-playbook -i inventories soctools.yml -t stop
+To stop services only for specific docker containers, run the following commands:
+        ansible-playbook -i inventories soctools.yml -t stop-keycloak
+        ansible-playbook -i inventories soctools.yml -t stop-thehive
+        ansible-playbook -i inventories soctools.yml -t stop-cortex
+        ansible-playbook -i inventories soctools.yml -t stop-cassandra
+        ansible-playbook -i inventories soctools.yml -t stop-haproxy
+        ansible-playbook -i inventories soctools.yml -t stop-filebeat
+        ansible-playbook -i inventories soctools.yml -t stop-misp
+        ansible-playbook -i inventories soctools.yml -t stop-mysql
+        ansible-playbook -i inventories soctools.yml -t stop-nifi
+        ansible-playbook -i inventories soctools.yml -t stop-odfees
+        ansible-playbook -i inventories soctools.yml -t stop-odfekibana
+
+Restart services inside docker containers manually
+--------------------------------------------------
+To restart services inside docker containers after changes in configuration files:
+	1. Attache container: docker exec -it container_id_or_name bash (example: docker exec -it soctools-keycloak bash)
+	2. List  services and their statuses: supervisorctl status
+	3. Restart service: supervisorctl restart supervisor_service_name (example: supervisorctl restart keycloak)
+	4. Detach from container: exit
+
diff --git a/README.md b/README.md
index 967fa3f..f44a498 100644
--- a/README.md
+++ b/README.md
@@ -13,36 +13,45 @@ Log in and install ansible:
 `yum -y install ansible git`  
 `ansible-galaxy collection install ansible.posix`
 
-Clone soctools:  
-`git clone https://scm.uninett.no/geant-wp8-t3.1/soctools.git`  
+Clone soctools:
+Temporary solution: Upload your ssh key to gitlab.geant.org
+`git clone git@gitlab.geant.org:gn4-3-wp8-t3.1-soc/soctools.git`
 `cd soctools`
 
 Install soctools:
-Edit group_vars/all/main.yml and change 'dslproxy' so that it point to the FQDN of the server.  
+Edit group_vars/all/main.yml and change 'soctoolsproxy' so that it point to the FQDN of the server.  
 `vi group_vars/all/main.yml`  
-The first entry in the soctools_users variable is the user with full admin privileges in NiFi and Kibana.
+Users are specified in the file:  
+`group_vars/all/users.yml`  
 
 To configure the server running soctools, run the ansible playbook:  
-`ansible-playbook -i soctools-inventory soctools_server.yml`
+`ansible-playbook -i inventories soctools_server.yml`
 
 To build the Docker images needed, run the ansible playbook:  
-`ansible-playbook -i soctools-inventory buildimages.yml`
+`ansible-playbook -i inventories buildimages.yml`
 
 To build the CA needed for host and user certificates, run the ansible playbook:  
-`ansible-playbook -i soctools-inventory buildca.yml`
+`ansible-playbook -i inventories buildca.yml`
 
-User certificates are can be found in the directory roles/ca/files/CA/private. Import into browser for authentication.
+If using soctools CA certificates provided with this installation, you first need to download and import root certificate found in secrets/CA/ca.crt   
+For Windows, CA certificate should be installed in Trusted Root Certification Authorities store. 
+
+User certificates are can be found in the directory secrets/certificates. Import into browser for authentication.
+For Windows, user certificate should be installed in Personal store. Passwords for the certificates can be found in the directory secrets/passwords.   
 
 To start the cluster, run the ansible playbook soctools.yml:  
-`ansible-playbook -i soctools-inventory soctools.yml -t start`
+`ansible-playbook -i inventories soctools.yml -t start`
 
 To stop the cluster, run the ansible playbook soctools.yml:  
-`ansible-playbook -i soctools-inventory soctools.yml -t stop`
-
-The NiFi interface should now be available on port 9443 on the server.  
-The OpenDistro for Elasticsearch interface should now be available on port 5601 on the server. To access preconfigured 
-index patterns you have to switch to Global tenant.  
-The Keycloak IdP interface should now be available on port 12443 on the server.
+`ansible-playbook -i inventories soctools.yml -t stop`
+
+Web interfaces are available on the following ports:
+ * 9443 - NiFi
+ * 5601 - Kibana
+ * 6443 - Misp : Default user/password: admin@admin.test/test
+ * 9000 - The Hive : Default user/password: admin@thehive.local/secret
+ * 9001 - Cortex
+ * 12443 - Keycloak : Default user/password: admin/Pass005
 
 License
 -------
diff --git a/buildca.yml b/buildca.yml
index b718286..37ef902 100644
--- a/buildca.yml
+++ b/buildca.yml
@@ -1,7 +1,7 @@
 ---
 
 - name: Build certification authority
-  hosts: dsldev
+  hosts: soctoolsmain
   roles:
     - ca
 
diff --git a/buildimages.yml b/buildimages.yml
index d30f905..8a93583 100644
--- a/buildimages.yml
+++ b/buildimages.yml
@@ -1,7 +1,7 @@
 ---
 
 - name: Build docker images
-  hosts: dsldev
+  hosts: soctoolsmain
   roles:
     - build
 
diff --git a/group_vars/all/main.yml b/group_vars/all/main.yml
index c6adf5f..0c1c3d2 100644
--- a/group_vars/all/main.yml
+++ b/group_vars/all/main.yml
@@ -1,124 +1,75 @@
 ---
 
-dslproxy: "dsoclab.gn4-3-wp8-soc.sunet.se"
+soctoolsproxy: "<CHANGE_ME:hostname>"
 
-# TheHive Button plugin
-THEHIVE_URL: "https://hive.gn4-3-wp8-soc.sunet.se/"
-# here enter API key for default admin user
-THEHIVE_API_KEY: "bs2Jc3tGJqhVv0AYyX2NYlhMlorPz7mX"
-# ID of the default admin user
-THEHIVE_OWNER: "admin@thehive.local"
-
-# TheHive Create Organisation and Users
-# Login as default admin user and create API key, populate it here
-# thehive_admin_api: "KoHrKbIJm8XMsJxA9nZLs6YemCu76o3u"
-# thehive_writer: "[write]"
-
-#THEHIVE_API_KEY: "1gFdNhmUSxO3BRe1SBB5JYEvkW9UOo6s"
-THEHIVE_USERS:
-  - kiril:
-    username: "kiril"
-    name: "Kiril"
-    surname: "Kiroski"
-    roles: '["read", "write", "admin"]'
-    organization: "uninett.no"
-  - temur:
-    username: "temur"
-    name: "Temur"
-    surname: "Maisuradze"
-    roles: '["read", "write", "admin"]'
-    organization: "uninett.no"
+maxmind_key: ""
 
+docker_build_dir: "{{playbook_dir}}/build"
 
+# TheHive Button plugin
+THEHIVE_URL: "https://hive.gn4-3-wp8-soc.sunet.se/"
+THEHIVE_API_KEY: "5LymseWiurZBrQN8Kqp8O+9KniTL5cE0"
+THEHIVE_OWNER: "admin"
 
 soctools_netname: "soctoolsnet"
 soctools_network: "172.22.0.0/16"
 
-repo: gn43-dsl
+repo: soctools
 version: 7
 suffix: a20201004
 
-haproxy_name: "dsoclab-haproxy"
+haproxy_name: "soctools-haproxy"
 haproxy_version: "2.2"
 haproxy_img: "{{repo}}/haproxy:{{version}}{{suffix}}"
 HAPROXY_PROCESSES: "2"
-HAPROXY_STATS_PASS: "eiph2Eepaizicheelah3tei+bae3ohgh"
+
+FILEBEAT_VERSION: "7.9.3"
+FILEBEAT_OUTPUT_HOST: "{{soctoolsproxy}}"
+FILEBEAT_OUTPUT_PORT: "6000"
+FILEBEAT_CERT: "/opt/filebeat/filebeat.crt"
+FILEBEAT_KEY: "/opt/filebeat/filebeat.key"
 
 temp_root: "/tmp/centosbuild"
 
 openjdk_img: "{{repo}}/openjdk:{{version}}{{suffix}}"
 
-zookeeper_name: "dsoclab-zookeeper"
+zookeeper_name: "soctools-zookeeper"
 zookeeper_img: "{{repo}}/zookeeper:{{version}}{{suffix}}"
 
-misp_name: "dsoclab-misp"
+misp_name: "soctools-misp"
 misp_img: "{{repo}}/misp:{{version}}{{suffix}}"
+misp_url: "https://{{soctoolsproxy}}:6443"
 
 nifi_img: "{{repo}}/nifi:{{version}}{{suffix}}"
 
-mysql_name: "dsoclab-mysql"
+mysql_name: "soctools-mysql"
 mysql_img: "{{repo}}/mysql:{{version}}{{suffix}}"
-mysql_dbrootpass: "Pass006"
 
-cassandra_name: "dsoclab-cassandra"
+cassandra_name: "soctools-cassandra"
 cassandra_img: "{{repo}}/cassandra:{{version}}{{suffix}}"
 
-thehive_name: "dsoclab-thehive"
+thehive_name: "soctools-thehive"
 thehive_img: "{{repo}}/thehive:{{version}}{{suffix}}"
-# GENERATED WITH cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1
-thehive_secret_key: "LcnI9eKLo33711BmCnzf6UM1y05pdmj3dlADL81PxuffWqhobRoiiGFftjNPKpmM"
 
-cortex_name: "dsoclab-cortex"
+cortex_name: "soctools-cortex"
 cortex_img: "{{repo}}/cortex:{{version}}{{suffix}}"
 cortex_elasticsearch_mem: "256m"
-# GENERATED WITH cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1
-cortex_secret_key: "9CZ844IcAp5dHjsgU4iuaEssdopLcS6opzhVP3Ys4t4eRpNlHmwZdtfveLEXpM9D"
-cortex_odfe_pass: "Pass009"
-
-kspass: "Testing003"
-tspass: "Testing003"
 
 sysctlconfig:
-  - { key: "net.core.rmem_max", val: "2097152" }
-  - { key: "net.core.wmem_max", val: "2097152" }
+  - { key: "net.core.rmem_max", val: "4194304" }
+  - { key: "net.core.wmem_max", val: "4194304" }
   - { key: "vm.max_map_count" , val:  "524288" }
 
 nifi_javamem: "1g"
 odfe_javamem: "512m"
 
-nifi_version: 1.11.4
+nifi_version: 1.12.1
 nifi_repo: "https://archive.apache.org/dist"
 
 ca_cn: "SOCTOOLS-CA"
 
-soctools_users:
-  - firstname: "Bozidar"
-    lastname: "Proevski"
-    username: "bozidar.proevski"
-    email: "bozidar.proevski@finki.ukim.mk"
-    DN: "CN=Bozidar Proevski"
-    CN: "Bozidar Proevski"
-    password: "Pass001"
-  - firstname: "Arne"
-    lastname: "Oslebo"
-    username: "arne.oslebo"
-    email: "arne.oslebo@uninett.no"
-    DN: "CN=Arne Oslebo"
-    CN: "Arne Oslebo"
-    password: "Pass002"
-  - firstname: "Kiril"
-    lastname: "Kjiroski"
-    username: "kiril.kjiroski"
-    email: "kiril.kjiroski@finki.ukim.mk"
-    DN: "CN=Kiril Kjiroski"
-    CN: "Kiril Kjiroski"
-    password: "Pass003"
-
 odfees_img: "{{repo}}/odfees:{{version}}{{suffix}}"
 odfekibana_img: "{{repo}}/odfekibana:{{version}}{{suffix}}"
-# GENERATE 32-bit secure value
-odfekibana_cookie: "iroAm0ueIV7w6CS1WcJTwIV6R4d5RIAt"
-odfees_adminpass: "Pass004"
 #elk_version: "oss-7.6.1"
 elk_version: "oss-7.4.2"
 #odfeplugin_version: "1.7.0.0"
@@ -129,16 +80,25 @@ openid_scope: profile
 openid_subjkey: preferred_username
 
 keycloak_img: "{{repo}}/keycloak:{{version}}{{suffix}}"
-keycloak_adminpass: "Pass005"
 
 elastic_username: "admin"
-misp_token: ""
-misp_url: ""
-maxmind_key: ""
 
 misp_dbname: "mispdb"
 misp_dbuser: "misp"
-misp_dbpass: "Pass007"
-# misp_salt generated with: openssl rand -base64 32
-misp_salt:   "wa2fJA2mGIn32IDl+uKrCJ069Mg3khDdGzFNv8DOwM0="
+
+services:
+  - mysql
+  - haproxy
+  - openjdk
+  - zookeeper
+  - nifi
+  - elasticsearch
+  - kibana
+  - odfees
+  - odfekibana
+  - keycloak
+  - misp
+  - cassandra
+  - thehive
+  - cortex
 
diff --git a/group_vars/all/users.yml b/group_vars/all/users.yml
new file mode 100644
index 0000000..bc785e4
--- /dev/null
+++ b/group_vars/all/users.yml
@@ -0,0 +1,21 @@
+---
+
+soctools_users:
+  - firstname: "User1"
+    lastname: "SOC"
+    username: "user1"
+    email: "user1@soctools.test"
+    DN: "CN=User1Soctools"
+    CN: "User1Soctools"
+  - firstname: "User2"
+    lastname: "SOC"
+    username: "user2"
+    email: "user2@soctools.test"
+    DN: "CN=User2Soctools"
+    CN: "User2Soctools"
+
+# Minimum one user is required
+ODFE_ADMIN_USERS:
+  - user1
+
+
diff --git a/inventories/build/group_vars/all.yml b/inventories/build/group_vars/all.yml
deleted file mode 100644
index 7043236..0000000
--- a/inventories/build/group_vars/all.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-docker_image_path: images
-base_image: python:2.7-stretch
diff --git a/inventories/build/hosts.yml b/inventories/build/hosts.yml
deleted file mode 100644
index 4854638..0000000
--- a/inventories/build/hosts.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-all:
-  hosts:
-    nifi-image:
-      ansible_connection: docker
-      ansible_python_interpreter: /usr/bin/python
-    localhost:
-      ansible_python_interpreter: /usr/bin/python
-      ansible_connection: local
-  children:
-    nifi:
-      hosts:
-        localhost:
diff --git a/inventories/cassandra b/inventories/cassandra
new file mode 100644
index 0000000..65a4f34
--- /dev/null
+++ b/inventories/cassandra
@@ -0,0 +1,2 @@
+[cassandra]
+soctools-cassandra ansible_connection=docker
diff --git a/inventories/cortex b/inventories/cortex
new file mode 100644
index 0000000..6a64e81
--- /dev/null
+++ b/inventories/cortex
@@ -0,0 +1,2 @@
+[cortex]
+soctools-cortex ansible_connection=docker
diff --git a/inventories/deploy/group_vars/haproxy.yml b/inventories/deploy/group_vars/haproxy.yml
deleted file mode 100644
index b53d50d..0000000
--- a/inventories/deploy/group_vars/haproxy.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-index: haproxy
-scale: "{{ haproxy_scale | default('1')}}"
-docker:
-  haproxy:
-    image: haproxy:latest
-    volumes:
-      - /usr/local/etc/haproxy/:/usr/local/etc/haproxy:ro
-    ports:
-      - "80:80"
-    source: pull
\ No newline at end of file
diff --git a/inventories/deploy/group_vars/nifi.yml b/inventories/deploy/group_vars/nifi.yml
deleted file mode 100644
index 5b71869..0000000
--- a/inventories/deploy/group_vars/nifi.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-index: nifi
-scale: "{{ nifi_scale | default('1')}}"
-docker:
-  nifi:
-#    image: nifi-soctools #For nifi image built by soctools
-#    source: load
-    image: apache/nifi:latest
-    source: pull
-    command: /opt/nifi/nifi-current/scripts/start.sh
-    env: 
-      NIFI_HOME: "/opt/nifi/nifi-current"
-      NIFI_LOG_DIR: "/opt/nifi/nifi-current/logs"
-      NIFI_PID_DIR: "/opt/nifi/nifi-current/run"
-      NIFI_CLUSTER_IS_NODE: "true"
-      NIFI_ZK_CONNECT_STRING: "zookeeper_1:2181"
-      NIFI_CLUSTER_NODE_PROTOCOL_PORT: "8082"
-      NIFI_ELECTION_MAX_WAIT: "1 min"
-    load_path: "{{ image_location }}/nifi-soctools.tar" 
diff --git a/inventories/deploy/group_vars/zookeeper.yml b/inventories/deploy/group_vars/zookeeper.yml
deleted file mode 100644
index 5604be8..0000000
--- a/inventories/deploy/group_vars/zookeeper.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-index: zookeeper
-scale: "{{ zookeeper_scale | default('1')}}"
-docker:
-  zookeeper:
-    image: zookeeper:latest
-    source: pull
\ No newline at end of file
diff --git a/inventories/deploy/hosts.yml.example b/inventories/deploy/hosts.yml.example
deleted file mode 100644
index 7d85e5b..0000000
--- a/inventories/deploy/hosts.yml.example
+++ /dev/null
@@ -1,21 +0,0 @@
-all:
-  hosts:
-    host1:
-      ansible_ssh_user: debian
-      ansible_python_interpreter: /usr/bin/python
-      become: yes
-  children:
-    soctools_server:
-      hosts:
-        host1:
-    nifi:
-      hosts:
-        host1:
-          nifi_scale: 3
-    haproxy:
-      hosts:
-        host1:
-    zookeeper:
-      hosts:
-        host1:
-          zookeeper_scale: 3
\ No newline at end of file
diff --git a/inventories/elasticsearch b/inventories/elasticsearch
new file mode 100644
index 0000000..73901fb
--- /dev/null
+++ b/inventories/elasticsearch
@@ -0,0 +1,3 @@
+[odfeescontainers]
+soctools-odfe-1 ansible_connection=docker
+soctools-odfe-2 ansible_connection=docker
diff --git a/inventories/filebeat b/inventories/filebeat
new file mode 100644
index 0000000..2add349
--- /dev/null
+++ b/inventories/filebeat
@@ -0,0 +1,16 @@
+[filebeat]
+soctools-nifi-1 ansible_connection=docker FILEBEAT_FILES='["/opt/nifi/nifi-current/logs/nifi-app.log","/opt/nifi/nifi-current/logs/nifi-bootstrap.log","/opt/nifi/nifi-current/logs/nifi-user.log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="nifi" FILEBEAT_LOG_FORMAT="text"
+soctools-nifi-2 ansible_connection=docker FILEBEAT_FILES='["/opt/nifi/nifi-current/logs/nifi-app.log","/opt/nifi/nifi-current/logs/nifi-bootstrap.log","/opt/nifi/nifi-current/logs/nifi-user.log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="nifi" FILEBEAT_LOG_FORMAT="text"
+soctools-nifi-3 ansible_connection=docker FILEBEAT_FILES='["/opt/nifi/nifi-current/logs/nifi-app.log","/opt/nifi/nifi-current/logs/nifi-bootstrap.log","/opt/nifi/nifi-current/logs/nifi-user.log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="nifi" FILEBEAT_LOG_FORMAT="text"
+soctools-misp ansible_connection=docker FILEBEAT_FILES='["/var/opt/rh/rh-php72/log/php-fpm/*.log","/var/opt/rh/rh-redis32/log/redis/redis.log","/var/log/httpd/*log","/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="misp" FILEBEAT_LOG_FORMAT="text"
+soctools-odfe-1 ansible_connection=docker FILEBEAT_FILES='["/usr/share/elasticsearch/logs/soctools-cluster_server.json"]' FILEBEAT_LOG_TYPE="elasticsearch" FILEBEAT_LOG_FORMAT="json"
+soctools-odfe-2 ansible_connection=docker FILEBEAT_FILES='["/usr/share/elasticsearch/logs/soctools-cluster_server.json"]' FILEBEAT_LOG_TYPE="elasticsearch" FILEBEAT_LOG_FORMAT="json"
+soctools-kibana ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/kibana_stdout.log"]' FILEBEAT_LOG_TYPE="kibana" FILEBEAT_LOG_FORMAT="json"
+soctools-keycloak ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="keycloak" FILEBEAT_LOG_FORMAT="json"
+soctools-mysql ansible_connection=docker FILEBEAT_FILES='["/var/opt/rh/rh-mariadb103/log/mariadb/mariadb.log","/var/opt/rh/rh-mariadb103/lib/mysql/server_audit.log"]' FILEBEAT_LOG_TYPE="mysql" FILEBEAT_LOG_FORMAT="text"
+soctools-haproxy ansible_connection=docker FILEBEAT_SYSLOG_PORT=9000 FILEBEAT_LOG_TYPE="haproxy" FILEBEAT_LOG_FORMAT="text"
+soctools-zookeeper ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="zookeeper" FILEBEAT_LOG_FORMAT="text"
+soctools-cortex ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="cortex" FILEBEAT_LOG_FORMAT="text"
+soctools-thehive ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="thehive" FILEBEAT_LOG_FORMAT="text"
+soctools-cassandra ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="cassandra" FILEBEAT_LOG_FORMAT="text"
+
diff --git a/inventories/haproxy b/inventories/haproxy
new file mode 100644
index 0000000..7ded04a
--- /dev/null
+++ b/inventories/haproxy
@@ -0,0 +1,2 @@
+[haproxy]
+soctools-haproxy ansible_connection=docker
\ No newline at end of file
diff --git a/inventories/keycloak b/inventories/keycloak
new file mode 100644
index 0000000..b998e8f
--- /dev/null
+++ b/inventories/keycloak
@@ -0,0 +1,2 @@
+[keycloakcontainers]
+soctools-keycloak ansible_connection=docker
diff --git a/inventories/kibana b/inventories/kibana
new file mode 100644
index 0000000..1f00ac6
--- /dev/null
+++ b/inventories/kibana
@@ -0,0 +1,2 @@
+[odfekibanacontainers]
+soctools-kibana ansible_connection=docker
diff --git a/inventories/misp b/inventories/misp
new file mode 100644
index 0000000..445ec1e
--- /dev/null
+++ b/inventories/misp
@@ -0,0 +1,2 @@
+[mispcontainers]
+soctools-misp ansible_connection=docker
diff --git a/inventories/mysql b/inventories/mysql
new file mode 100644
index 0000000..6d0b306
--- /dev/null
+++ b/inventories/mysql
@@ -0,0 +1,2 @@
+[mysql]
+soctools-mysql ansible_connection=docker
\ No newline at end of file
diff --git a/inventories/nifi b/inventories/nifi
new file mode 100644
index 0000000..d434490
--- /dev/null
+++ b/inventories/nifi
@@ -0,0 +1,4 @@
+[nificontainers]
+soctools-nifi-1 ansible_connection=docker
+soctools-nifi-2 ansible_connection=docker
+soctools-nifi-3 ansible_connection=docker
diff --git a/inventories/soctools b/inventories/soctools
new file mode 100644
index 0000000..46ea675
--- /dev/null
+++ b/inventories/soctools
@@ -0,0 +1,2 @@
+[soctoolsmain]
+localhost ansible_connection=local
diff --git a/inventories/thehive b/inventories/thehive
new file mode 100644
index 0000000..6fd7b99
--- /dev/null
+++ b/inventories/thehive
@@ -0,0 +1,2 @@
+[thehive]
+soctools-thehive ansible_connection=docker
diff --git a/restart-soctools.yml b/restart-soctools.yml
new file mode 100644
index 0000000..5aa1c94
--- /dev/null
+++ b/restart-soctools.yml
@@ -0,0 +1,52 @@
+---
+
+- name: Restart services for haproxy
+  hosts: haproxy
+  roles:
+    - haproxy
+
+- name: Restart services for mysql
+  hosts: mysql
+  roles:
+    - mysql
+
+- name: Restart services for Cassandra
+  hosts: cassandra
+  roles:
+    - cassandra
+
+- name: Restart services for Keycloak
+  hosts: keycloakcontainers
+  roles:
+    - keycloak
+
+- name: Restart services for NiFi
+  hosts: nificontainers
+  roles:
+    - nifi
+
+- name: Restart services for OpenDistro for Elasticsearch
+  hosts: odfeescontainers
+  roles:
+    - odfees
+
+- name: Restart services for OpenDistro Kibana for Elasticsearch
+  hosts: odfekibanacontainers
+  roles:
+    - odfekibana
+
+- name: Restart services for MISP
+  hosts: mispcontainers
+  roles:
+    - misp
+
+- name: Restart services for TheHive
+  hosts: thehive
+  roles:
+    - thehive
+
+- name: Restart services for Cortex
+  hosts: cortex
+  roles:
+    - cortex
+
diff --git a/roles/build/files/cassandra/cassandrasupervisord.conf b/roles/build/files/cassandra/cassandrasupervisord.conf
new file mode 100644
index 0000000..6cef650
--- /dev/null
+++ b/roles/build/files/cassandra/cassandrasupervisord.conf
@@ -0,0 +1,44 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:cassandra]
+directory=/usr/share/cassandra
+user=cassandra
+group=cassandra
+environment = CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="/usr/share/cassandra/cassandra.in.sh"
+command=/bin/bash -c '/usr/sbin/cassandra -f'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/cassandra_stderr.log
+stdout_logfile = /var/log/supervisor/cassandra_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/cassandraDockerfile b/roles/build/files/cassandraDockerfile
deleted file mode 100644
index c1b7388..0000000
--- a/roles/build/files/cassandraDockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-FROM gn43-dsl/openjdk:7a20201004
-
-USER root
-#COPY cassandra.repo /etc/yum.repos.d/cassandra.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
-RUN echo "[cassandra]" > /etc/yum.repos.d/cassandra.repo && \
-    echo "name=Apache Cassandra" >> /etc/yum.repos.d/cassandra.repo && \
-    echo "baseurl=https://downloads.apache.org/cassandra/redhat/311x/" >> /etc/yum.repos.d/cassandra.repo && \
-    echo "gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
-    echo "repo_gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
-    echo "gpgkey=https://downloads.apache.org/cassandra/KEYS" >> /etc/yum.repos.d/cassandra.repo && \
-    echo '#!/bin/bash' > /start.sh && \
-    echo 'export CASSANDRA_HOME=/usr/share/cassandra' >> /start.sh && \
-    echo 'export CASSANDRA_CONF=$CASSANDRA_HOME/conf' >> /start.sh && \
-    echo 'export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh' >> /start.sh && \
-    echo 'log_file=/var/log/cassandra/cassandra.log' >> /start.sh && \
-    echo 'pid_file=/var/run/cassandra/cassandra.pid' >> /start.sh && \
-    echo 'lock_file=/var/lock/subsys/cassandra' >> /start.sh && \
-    echo 'CASSANDRA_PROG=/usr/sbin/cassandra' >> /start.sh && \
-    echo '' >> /start.sh && \
-    echo '$CASSANDRA_PROG -p $pid_file > $log_file 2>&1' >> /start.sh && \
-    yum install -y epel-release && \
-    yum install -y cassandra supervisor && \
-    mkdir /usr/share/cassandra/conf && \
-    cp -a /etc/cassandra/conf/* /usr/share/cassandra/conf && \
-    chown -R cassandra:cassandra /usr/share/cassandra && \
-    chown -R cassandra:cassandra /var/lib/cassandra && \
-    sed -i -e 's,/etc/cassandra,/usr/share/cassandra,g' /usr/share/cassandra/cassandra.in.sh && \
-    chmod a+x /start.sh && \
-    yum -y clean all
-EXPOSE 7000 9042
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER cassandra
-# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/files/cortex/cortexsupervisord.conf b/roles/build/files/cortex/cortexsupervisord.conf
new file mode 100644
index 0000000..99e89e4
--- /dev/null
+++ b/roles/build/files/cortex/cortexsupervisord.conf
@@ -0,0 +1,56 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:elasticsearch]
+directory=/usr/share/elasticsearch
+user=elasticsearch
+group=elasticsearch
+command=/bin/bash -c '/usr/share/elasticsearch/bin/elasticsearch'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/elasticsearch_stderr.log
+stdout_logfile = /var/log/supervisor/elasticsearch_stdout.log
+
+[program:cortex]
+directory=/opt/cortex
+user=cortex
+group=cortex
+command=/bin/bash -c '/opt/cortex/bin/cortex -Dconfig.file=/etc/cortex/application.conf -Dlogger.file=/etc/cortex/logback.xml -J-Xms1g -J-Xmx1g -Dpidfile.path=/dev/null'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/cortex_stderr.log
+stdout_logfile = /var/log/supervisor/cortex_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/cortexDockerfile b/roles/build/files/cortexDockerfile
deleted file mode 100644
index 014cdf0..0000000
--- a/roles/build/files/cortexDockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
-FROM gn43-dsl/openjdk:7a20201004
-
-USER root
-#COPY thehive.repo /etc/yum.repos.d/thehive.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
-RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
-    echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
-    echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
-    echo "name=TheHive-Project RPM repository" >> /etc/yum.repos.d/thehive.repo && \
-    echo "baseurl=http://rpm.thehive-project.org/stable/noarch" >> /etc/yum.repos.d/thehive.repo && \
-    echo "gpgcheck=1" >> /etc/yum.repos.d/thehive.repo && \
-    yum install -y epel-release && \
-    rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
-    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
-    yum install -y cortex supervisor daemonize vim net-tools telnet htop python3-pip.noarch git gcc python3-devel.x86_64 ssdeep-devel.x86_64 python3-wheel.noarch libexif-devel.x86_64 libexif.x86_64 perl-Image-ExifTool.noarch  gcc-c++ whois && \
-    rpm -Uvh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.13.rpm && \
-    chown -R elasticsearch:elasticsearch /etc/elasticsearch && \
-    mkdir -p /home/cortex && \
-    chown -R cortex:cortex /home/cortex && \
-    chown -R cortex:cortex /etc/cortex && \
-    cd /opt && \
-    git clone https://github.com/TheHive-Project/Cortex-Analyzers && \
-    chown -R cortex:cortex /opt/Cortex-Analyzers && \
-    cd /opt/Cortex-Analyzers && \
-    for I in analyzers/*/requirements.txt; do LC_ALL=en_US.UTF-8 pip3 install --no-cache-dir -U -r $I || true; done && \
-    for I in responders/*/requirements.txt; do LC_ALL=en_US.UTF-8 pip3 install --no-cache-dir -U -r $I || true; done && \
-    yum -y clean all
-EXPOSE 9001
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER cortex
-# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/files/elasticDockerfile b/roles/build/files/elasticDockerfile
deleted file mode 100644
index dba4003..0000000
--- a/roles/build/files/elasticDockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM gn43-dsl/openjdk:7a20201004
-
-ENV PATH="/usr/share/elasticsearch/bin:${PATH}"
-
-RUN groupadd -g 1000 elasticsearch && \
-    adduser -u 1000 -g 1000 -d /usr/share/elasticsearch elasticsearch
-
-WORKDIR /usr/share/elasticsearch
-
-RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
-    rpm -Uvh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.4.2-no-jdk-x86_64.rpm && \
-    cp -a /etc/elasticsearch/ /usr/share/elasticsearch/config/ && \
-    chown -R elasticsearch /usr/share/elasticsearch/config && \
-    mkdir -p /usr/share/elasticsearch/data && \
-    chown -R elasticsearch /usr/share/elasticsearch/data && \
-    sed -i -e 's,ES_PATH_CONF=/etc/elasticsearch,ES_PATH_CONF=/usr/share/elasticsearch/config,g' /etc/sysconfig/elasticsearch
-
-EXPOSE 9200 9300
-USER elasticsearch
-ENTRYPOINT ["/bin/bash"]
-
diff --git a/roles/build/files/haproxy/haproxysupervisord.conf b/roles/build/files/haproxy/haproxysupervisord.conf
new file mode 100644
index 0000000..2738cf2
--- /dev/null
+++ b/roles/build/files/haproxy/haproxysupervisord.conf
@@ -0,0 +1,44 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:haproxy]
+directory=/root
+user=root
+group=root
+command=/bin/bash -c '/usr/local/sbin/haproxy -f /usr/local/etc/haproxy/haproxy.cfg'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/haproxy_stderr.log
+stdout_logfile = /var/log/supervisor/haproxy_stdout.log
+
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/haproxyDockerfile b/roles/build/files/haproxyDockerfile
deleted file mode 100644
index f36d8f4..0000000
--- a/roles/build/files/haproxyDockerfile
+++ /dev/null
@@ -1,71 +0,0 @@
-FROM gn43-dsl/centos:7a20201004
-
-ENV HAPROXY_VERSION 2.2.3
-ENV HAPROXY_URL https://www.haproxy.org/download/2.2/src/haproxy-2.2.3.tar.gz
-ENV HAPROXY_SHA256 7209db363d4dbecb21133f37b01048df666aebc14ff543525dbea79be202064e
-ENV OPENSSL_VERSION=1.0.2u
-
-
-# see https://sources.debian.net/src/haproxy/jessie/debian/rules/ for some helpful navigation of the possible "make" arguments
-RUN \
-  yum install -y epel-release && \
-  yum update -y && \
-  `# Install build tools. Note: perl needed to compile openssl...` \
-  yum install -y \
-  inotify-tools \
-  wget \
-  tar \
-  gzip \
-  make \
-  gcc \
-  perl \
-  pcre-devel \
-  zlib-devel \
-  iptables \
-  pcre2-devel \
-  daemonize \
-  pth-devel && \
-  `# Install newest openssl...` \
-  wget -O /tmp/openssl.tgz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz && \
-  tar -zxf /tmp/openssl.tgz -C /tmp && \
-  cd /tmp/openssl-* && \
-  ./config --prefix=/usr \
-  --openssldir=/etc/ssl \
-  --libdir=lib          \
-  no-shared zlib-dynamic && \
-  make -j$(getconf _NPROCESSORS_ONLN) V= && make install_sw && \
-  cd && rm -rf /tmp/openssl* && \
-  `# Install HAProxy...` \ 
-  && wget -O haproxy.tar.gz "$HAPROXY_URL" \
-  && echo "$HAPROXY_SHA256 *haproxy.tar.gz" | sha256sum -c \
-  && mkdir -p /usr/src/haproxy \
-  && tar -xzf haproxy.tar.gz -C /usr/src/haproxy --strip-components=1 \
-  && rm haproxy.tar.gz \
-  \
-  && makeOpts=' \
-    TARGET=linux-glibc \
-    USE_GETADDRINFO=1 \
-    USE_OPENSSL=1 \
-    USE_PCRE2=1 USE_PCRE2_JIT=1 \
-    USE_ZLIB=1 \
-    \
-    EXTRA_OBJS=" \
-# see https://github.com/docker-library/haproxy/issues/94#issuecomment-505673353 for more details about prometheus support
-      contrib/prometheus-exporter/service-prometheus.o \
-    " \
-  ' \
-  && nproc="$(nproc)" \
-  && eval "make -C /usr/src/haproxy -j '$nproc' all $makeOpts" \
-  && eval "make -C /usr/src/haproxy install-bin $makeOpts" \
-  \
-  && mkdir -p /usr/local/etc/haproxy \
-  && cp -R /usr/src/haproxy/examples/errorfiles /usr/local/etc/haproxy/errors \
-  && rm -rf /usr/src/haproxy 
-
-ENTRYPOINT ["/bin/bash"]
-
-# https://www.haproxy.org/download/1.8/doc/management.txt
-# "4. Stopping and restarting HAProxy"
-# "when the SIGTERM signal is sent to the haproxy process, it immediately quits and all established connections are closed"
-# "graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process"
-STOPSIGNAL SIGUSR1
diff --git a/roles/build/files/keycloak/keycloaksupervisord.conf b/roles/build/files/keycloak/keycloaksupervisord.conf
new file mode 100644
index 0000000..63694dc
--- /dev/null
+++ b/roles/build/files/keycloak/keycloaksupervisord.conf
@@ -0,0 +1,44 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:keycloak]
+directory=/opt/jboss/keycloak
+user=jboss
+group=jboss
+#command=/opt/jboss/keycloak/bin/standalone.sh -b 0.0.0.0
+command=/bin/bash -c '/docker-java-home/jre/bin/java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/jboss/keycloak/standalone/log/server.log -Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties -jar /opt/jboss/keycloak/jboss-modules.jar -mp /opt/jboss/keycloak/modules org.jboss.as.standalone -Djboss.home.dir=/opt/jboss/keycloak -Djboss.server.base.dir=/opt/jboss/keycloak/standalone -b 0.0.0.0'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/keycloak_stderr.log
+stdout_logfile = /var/log/supervisor/keycloak_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/keycloakDockerfile b/roles/build/files/keycloakDockerfile
deleted file mode 100644
index ba6e7c1..0000000
--- a/roles/build/files/keycloakDockerfile
+++ /dev/null
@@ -1,41 +0,0 @@
-FROM gn43-dsl/openjdk:7a20201004
-
-ENV KEYCLOAK_VERSION 10.0.1
-ENV JDBC_POSTGRES_VERSION 42.2.5
-ENV JBOSS_HOME /opt/jboss/keycloak
-
-ARG KEYCLOAK_DIST=https://downloads.jboss.org/keycloak/$KEYCLOAK_VERSION/keycloak-$KEYCLOAK_VERSION.tar.gz
-
-USER root
-
-#ADD //root/ansible-soctools-scm-uninett-no/soctools-buildtest-20201022/roles/build/templates/keycloak/keycloak-tools /opt/jboss/tools
-ADD keycloak-tools /opt/jboss/tools
-#ADD ../templates/keycloak/keycloak-tools /opt/jboss/tools
-RUN yum -y install openssl && yum -y clean all && \
-    mkdir -p /opt/jboss/ && cd /opt/jboss/ && \
-    curl -L $KEYCLOAK_DIST | tar zx && \
-    mv /opt/jboss/keycloak-* /opt/jboss/keycloak && \
-    mkdir -p /opt/jboss/keycloak/modules/system/layers/base/org/postgresql/jdbc/main && \
-    cd /opt/jboss/keycloak/modules/system/layers/base/org/postgresql/jdbc/main && \
-    curl -L https://repo1.maven.org/maven2/org/postgresql/postgresql/$JDBC_POSTGRES_VERSION/postgresql-$JDBC_POSTGRES_VERSION.jar > postgres-jdbc.jar && \
-    cp /opt/jboss/tools/databases/postgres/module.xml . && \
-    cd /opt/jboss/keycloak && \
-    bin/jboss-cli.sh --file=/opt/jboss/tools/cli/standalone-configuration.cli && \
-    rm -rf /opt/jboss/keycloak/standalone/configuration/standalone_xml_history && \
-    rm -rf /opt/jboss/keycloak/standalone/tmp/auth && \
-    rm -rf /opt/jboss/keycloak/domain/tmp/auth && \
-    adduser -u 1000 -g 0 -d /opt/jboss jboss && \
-    chown -R jboss:root /opt/jboss && \
-    chmod -R g+rwX /opt/jboss && \
-    mkdir -p /etc/x509/{https,ca} && chown -R jboss:root /etc/x509/{https,ca}
-
-ENV PATH="/opt/jboss/keycloak/bin:${PATH}"
-
-WORKDIR /opt/jboss/keycloak
-
-EXPOSE 8080
-EXPOSE 8443
-
-USER jboss
-ENTRYPOINT ["/bin/bash"]
-
diff --git a/roles/build/files/kibana/kibanasupervisord.conf b/roles/build/files/kibana/kibanasupervisord.conf
new file mode 100644
index 0000000..2cceed0
--- /dev/null
+++ b/roles/build/files/kibana/kibanasupervisord.conf
@@ -0,0 +1,43 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:kibana]
+user=kibana
+group=kibana
+directory=/usr/share/kibana
+command=sh -c "/usr/share/kibana/bin/kibana -c /usr/share/kibana/config/kibana.yml"
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/kibana_stderr.log
+stdout_logfile = /var/log/supervisor/kibana_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/misp/misp_rh-php72-php-fpm b/roles/build/files/misp/misp_rh-php72-php-fpm
new file mode 100644
index 0000000..2d67a51
--- /dev/null
+++ b/roles/build/files/misp/misp_rh-php72-php-fpm
@@ -0,0 +1,21 @@
+/var/opt/rh/rh-php72/log/php-fpm/error.log {
+    missingok
+    notifempty
+    sharedscripts
+    delaycompress
+    postrotate
+        /bin/kill -SIGUSR1 `cat /var/opt/rh/rh-php72/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
+    endscript
+}
+
+/var/opt/rh/rh-php72/log/php-fpm/www-*log {
+    su apache apache
+    create 600 apache apache
+    missingok
+    notifempty
+    sharedscripts
+    delaycompress
+    postrotate
+        /bin/kill -SIGUSR1 `cat /var/opt/rh/rh-php72/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
+    endscript
+}
diff --git a/roles/build/files/mispstart.sh b/roles/build/files/misp/mispstart.sh
similarity index 100%
rename from roles/build/files/mispstart.sh
rename to roles/build/files/misp/mispstart.sh
diff --git a/roles/build/files/misp/mispsupervisord.conf b/roles/build/files/misp/mispsupervisord.conf
new file mode 100644
index 0000000..fce59b7
--- /dev/null
+++ b/roles/build/files/misp/mispsupervisord.conf
@@ -0,0 +1,83 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+user=root
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:cron]
+autostart=true
+autorestart=true
+command=crond -n
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/cron_stderr.log
+stdout_logfile = /var/log/supervisor/cron_stdout.log
+
+[program:php-fpm]
+# EnvironmentFile=/etc/opt/rh/rh-php72/sysconfig/php-fpm
+command=/opt/rh/rh-php72/root/usr/sbin/php-fpm --nodaemonize
+autostart=false
+autorestart=true
+
+[program:redis-server]
+process_name = redis-server
+directory = /var/opt/rh/rh-redis32/lib/redis/
+command=/opt/rh/rh-redis32/root/usr/bin/redis-server /etc/opt/rh/rh-redis32/redis.conf
+user=redis
+autostart=false
+autorestart=true
+
+[program:apache2]
+command=/usr/sbin/httpd -DFOREGROUND
+autostart=false
+autorestart=true
+
+[program:misp-modules]
+command=/bin/bash -c "/usr/local/bin/misp-modules -l '0.0.0.0' -s && sleep infinity"
+user = apache
+autostart=false
+autorestart=unexpected
+startsecs = 0
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/misp-modules_stderr.log
+stdout_logfile = /var/log/supervisor/misp-modules_stdout.log
+
+[program:workers]
+command=/bin/bash -c "cleanup() { /var/www/MISP/app/Console/worker/stop.sh; }; trap 'echo signal received!; kill ${child_pid}; wait ${child_pid}; cleanup' SIGINT SIGTERM; /var/www/MISP/app/Console/worker/start.sh; sleep infinity & child_pid=$!; wait ${child_pid};"
+user=apache
+autostart=false
+autorestart=unexpected
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/workers_stderr.log
+stdout_logfile = /var/log/supervisor/workers_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/mispDockerfile b/roles/build/files/mispDockerfile
deleted file mode 100644
index 26f09fb..0000000
--- a/roles/build/files/mispDockerfile
+++ /dev/null
@@ -1,84 +0,0 @@
-FROM gn43-dsl/centos:7a20201004
-
-USER root
-RUN yum install -y epel-release centos-release-scl scl-utils ; \
-    yum install -y gcc git zip openssl supervisor rh-git218 httpd24 mod_ssl mod_auth_openidc rh-redis32 libxslt-devel zlib-devel libcaca-devel ssdeep-devel rh-php72 rh-php72-php-fpm rh-php72-php-devel rh-php72-php-mysqlnd rh-php72-php-mbstring rh-php72-php-xml rh-php72-php-bcmath rh-php72-php-opcache rh-php72-php-gd mariadb devtoolset-7 make cmake3 cppcheck libcxx-devel gpgme-devel openjpeg-devel gcc gcc-c++ poppler-cpp-devel pkgconfig python-devel redhat-rpm-config rubygem-rouge rubygem-asciidoctor zbar-devel opencv-devel wget screen rh-python36-mod_wsgi postfix curl make cmake python3 python3-devel python3-pip python3-yara python3-wheel python3-redis python3-zmq python3-setuptools redis sudo vim zip sqlite moreutils rng-tools libxml2-devel libxslt-devel zlib-devel libpqxx openjpeg2-devel ssdeep-devel ruby asciidoctor tesseract ImageMagick poppler-cpp-devel python36-virtualenv opencv-devel zbar zbar-devel ; \
-    yum -y clean all ; \
-    sed -i "s/max_execution_time = 30/max_execution_time = 300/" /etc/opt/rh/rh-php72/php.ini ; \
-    sed -i "s/memory_limit = 128M/memory_limit = 2048M/" /etc/opt/rh/rh-php72/php.ini ; \
-    sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 50M/" /etc/opt/rh/rh-php72/php.ini ; \
-    sed -i "s/post_max_size = 8M/post_max_size = 50M/" /etc/opt/rh/rh-php72/php.ini ; \
-    mkdir -p /var/www/MISP ; \
-    chown -R apache:apache /var/www/MISP
-
-USER apache
-WORKDIR /var/www/MISP
-RUN git clone https://github.com/MISP/MISP.git /var/www/MISP ; \
-    git submodule update --init --recursive ; \
-    git submodule foreach --recursive git config core.filemode false ; \
-    git config core.filemode false
-
-USER root
-RUN pip3 install --upgrade pip ; \
-    pip3 install git+https://github.com/CybOXProject/mixbox.git ; \
-    pip3 install git+https://github.com/CybOXProject/python-cybox.git ; \
-    pip3 install git+https://github.com/STIXProject/python-stix.git ; \
-    pip3 install git+https://github.com/MAECProject/python-maec.git ; \
-    pip3 install /var/www/MISP/cti-python-stix2 ; \
-    pip3 install /var/www/MISP/PyMISP ; \
-    pip3 install git+https://github.com/kbandla/pydeep.git ; \
-    pip3 install https://github.com/lief-project/packages/raw/lief-master-latest/pylief-0.9.0.dev.zip ; \
-    pip3 install jsonschema ; \
-    pip3 install reportlab ; \
-    pip3 install python-magic ; \
-    pip3 install pyzmq ; \
-    pip3 install redis
-
-USER apache
-WORKDIR /var/www/MISP
-RUN git submodule init ; \
-    git submodule update
-
-USER root
-WORKDIR /usr/local/src
-RUN git clone https://github.com/MISP/misp-modules.git
-WORKDIR /usr/local/src/misp-modules
-RUN git checkout ; \
-    # sudo pip3 install -I -r REQUIREMENTS ;  \
-    LANG=en_US.UTF-8 pip3 install -I -r REQUIREMENTS; \
-    pip3 install -I . ; \
-    mkdir /var/www/.composer && chown -R apache:apache /var/www/.composer ; \
-    cd /tmp ; \
-    wget https://github.com/ssdeep-project/ssdeep/releases/download/release-2.14.1/ssdeep-2.14.1.tar.gz ; \
-    tar zxvf ssdeep-2.14.1.tar.gz && cd ssdeep-2.14.1 && ./configure && make && make install ; \
-    /usr/bin/scl enable rh-php72 "pecl install ssdeep" ; \
-    echo "extension=ssdeep.so" > /etc/opt/rh/rh-php72/php.d/88-ssdeep.ini ; \
-    cd
-
-USER apache
-WORKDIR /var/www/MISP/app
-RUN wget https://getcomposer.org/download/1.2.1/composer.phar -O composer.phar ; \
-    COMPOSER_CACHE_DIR=/var/www/.composer /usr/bin/scl enable rh-php72 "php composer.phar require kamisama/cake-resque:4.1.2" ; \
-    COMPOSER_CACHE_DIR=/var/www/.composer /usr/bin/scl enable rh-php72 "php composer.phar config vendor-dir Vendor" ; \
-    COMPOSER_CACHE_DIR=/var/www/.composer /usr/bin/scl enable rh-php72 "php composer.phar install" ; \
-    sed -i -e "s/bind 127.0.0.1/bind 0.0.0.0/" /etc/redis.conf ; \
-    cp -fa /var/www/MISP/INSTALL/setup/config.php /var/www/MISP/app/Plugin/CakeResque/Config/config.php ; \
-    cp -a /var/www/MISP/app/Config/bootstrap.default.php /var/www/MISP/app/Config/bootstrap.php ; \
-    cp -a /var/www/MISP/app/Config/database.default.php /var/www/MISP/app/Config/database.php ; \
-    cp -a /var/www/MISP/app/Config/core.default.php /var/www/MISP/app/Config/core.php ; \
-    cp -a /var/www/MISP/app/Config/config.default.php /var/www/MISP/app/Config/config.php
-
-USER root
-COPY mispstart.sh /var/www/MISP/app/Console/worker/start.sh
-RUN chown -R apache:apache /var/www/MISP ; \
-    chmod -R 750 /var/www/MISP ; \
-    chmod -R g+ws /var/www/MISP/app/tmp ; \
-    chmod -R g+ws /var/www/MISP/app/files ; \
-    chmod -R g+ws /var/www/MISP/app/files/scripts/tmp
-
-# 80/443 - MISP web server, 3306 - mysql, 6379 - redis, 6666 - MISP modules, 50000 - MISP ZeroMQ
-EXPOSE 80 443 6443 6379 6666 50000
-
-COPY mispsupervisord.conf /etc/supervisord.conf
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-
diff --git a/roles/build/files/mispsupervisord.conf b/roles/build/files/mispsupervisord.conf
deleted file mode 100644
index fbd4dea..0000000
--- a/roles/build/files/mispsupervisord.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-[supervisord]
-nodaemon=false
-user=root
-
-[program:php-fpm]
-# EnvironmentFile=/etc/opt/rh/rh-php72/sysconfig/php-fpm
-command=/opt/rh/rh-php72/root/usr/sbin/php-fpm --nodaemonize
-
-[program:redis-server]
-process_name = redis-server
-directory = /var/opt/rh/rh-redis32/lib/redis/
-command=/opt/rh/rh-redis32/root/usr/bin/redis-server /etc/opt/rh/rh-redis32/redis.conf
-user=redis
-
-[program:apache2]
-command=/usr/sbin/httpd -DFOREGROUND
-
-[program:misp-modules]
-command=/bin/bash -c "/usr/local/bin/misp-modules -l '0.0.0.0' -s"
-user = apache
-startsecs = 0
-
-[program:workers]
-command=/bin/bash /var/www/MISP/app/Console/worker/start.sh
-user=apache
diff --git a/roles/build/files/mysql/mysqlsupervisord.conf b/roles/build/files/mysql/mysqlsupervisord.conf
new file mode 100644
index 0000000..60d3109
--- /dev/null
+++ b/roles/build/files/mysql/mysqlsupervisord.conf
@@ -0,0 +1,45 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:mysql]
+user=mysql
+directory=/var/lib/mysql
+command=/opt/rh/rh-mariadb103/root/usr/libexec/mysqld-scl-helper enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb103/root/usr --log-error=/var/opt/rh/rh-mariadb103/log/mariadb/mariadb.log
+
+[program:cron]
+autostart=true
+autorestart=true
+command=crond -n
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/cron_stderr.log
+stdout_logfile = /var/log/supervisor/cron_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/mysqlDockerfile b/roles/build/files/mysqlDockerfile
deleted file mode 100644
index 7c547b1..0000000
--- a/roles/build/files/mysqlDockerfile
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM gn43-dsl/centos:7a20201004
-
-USER root
-RUN yum -y update && yum install -y epel-release centos-release-scl scl-utils && \
-    yum install -y rh-mariadb103 python36-PyMySQL MySQL-python supervisor && \
-    /usr/bin/scl enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysql-prepare-db-dir /var/opt/rh/rh-mariadb103/lib/mysql 
-RUN yum clean all
-
-EXPOSE 3306
-COPY mysqlsupervisord.conf /etc/supervisord.conf
-
-ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-
diff --git a/roles/build/files/mysqlsupervisord.conf b/roles/build/files/mysqlsupervisord.conf
deleted file mode 100644
index e44e9fe..0000000
--- a/roles/build/files/mysqlsupervisord.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-[supervisord]
-loglevel=debug
-nodaemon=true
-[program:mysql]
-user=mysql
-directory=/var/lib/mysql
-command=/opt/rh/rh-mariadb103/root/usr/libexec/mysqld-scl-helper enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb103/root/usr
diff --git a/roles/build/files/nifi/nifisupervisord.conf b/roles/build/files/nifi/nifisupervisord.conf
new file mode 100644
index 0000000..dcfa15c
--- /dev/null
+++ b/roles/build/files/nifi/nifisupervisord.conf
@@ -0,0 +1,44 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:nifi]
+directory=/opt/nifi/nifi-current
+user=nifi
+group=nifi
+command=/bin/bash -c '/opt/nifi/nifi-current/bin/nifi.sh run'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/nifi_stderr.log
+stdout_logfile = /var/log/supervisor/nifi_stdout.log
+
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/nifiDockerfile b/roles/build/files/nifiDockerfile
deleted file mode 100644
index c3ef342..0000000
--- a/roles/build/files/nifiDockerfile
+++ /dev/null
@@ -1,97 +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.
-#
-
-FROM gn43-dsl/openjdk:7a20201004 
-#LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
-#LABEL site="https://nifi.apache.org"
-
-ARG UID=1000
-ARG GID=1000
-ARG NIFI_VERSION=1.11.4
-ARG BASE_URL=https://archive.apache.org/dist
-ARG MIRROR_BASE_URL=${MIRROR_BASE_URL:-${BASE_URL}}
-ARG NIFI_BINARY_PATH=${NIFI_BINARY_PATH:-/nifi/${NIFI_VERSION}/nifi-${NIFI_VERSION}-bin.zip}
-ARG NIFI_TOOLKIT_BINARY_PATH=${NIFI_TOOLKIT_BINARY_PATH:-/nifi/${NIFI_VERSION}/nifi-toolkit-${NIFI_VERSION}-bin.zip}
-
-ENV NIFI_BASE_DIR=/opt/nifi
-ENV NIFI_HOME ${NIFI_BASE_DIR}/nifi-current
-ENV NIFI_TOOLKIT_HOME ${NIFI_BASE_DIR}/nifi-toolkit-current
-
-ENV NIFI_PID_DIR=${NIFI_HOME}/run
-ENV NIFI_LOG_DIR=${NIFI_HOME}/logs
-
-# ADD sh/ ${NIFI_BASE_DIR}/scripts/
-
-# Setup NiFi user and create necessary directories
-RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -f1` \
-    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
-    && mkdir -p ${NIFI_BASE_DIR} \
-    && chown -R nifi:nifi ${NIFI_BASE_DIR} \
-    && yum -y install jq xmlstarlet procps-ng
-
-USER nifi
-
-# Download, validate, and expand Apache NiFi Toolkit binary.
-RUN curl -fSL ${MIRROR_BASE_URL}/${NIFI_TOOLKIT_BINARY_PATH} -o ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip \
-    && echo "$(curl ${BASE_URL}/${NIFI_TOOLKIT_BINARY_PATH}.sha256) *${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip" | sha256sum -c - \
-    && unzip ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip -d ${NIFI_BASE_DIR} \
-    && rm ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}-bin.zip \
-    && mv ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION} ${NIFI_TOOLKIT_HOME} \
-    && ln -s ${NIFI_TOOLKIT_HOME} ${NIFI_BASE_DIR}/nifi-toolkit-${NIFI_VERSION}
-
-# Download, validate, and expand Apache NiFi binary.
-RUN curl -fSL ${MIRROR_BASE_URL}/${NIFI_BINARY_PATH} -o ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip \
-    && echo "$(curl ${BASE_URL}/${NIFI_BINARY_PATH}.sha256) *${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip" | sha256sum -c - \
-    && unzip ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip -d ${NIFI_BASE_DIR} \
-    && rm ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip \
-    && mv ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION} ${NIFI_HOME} \
-    && mkdir -p ${NIFI_HOME}/conf \
-    && mkdir -p ${NIFI_HOME}/database_repository \
-    && mkdir -p ${NIFI_HOME}/flowfile_repository \
-    && mkdir -p ${NIFI_HOME}/content_repository \
-    && mkdir -p ${NIFI_HOME}/provenance_repository \
-    && mkdir -p ${NIFI_HOME}/state \
-    && mkdir -p ${NIFI_LOG_DIR} \
-    && ln -s ${NIFI_HOME} ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}
-
-#VOLUME ${NIFI_LOG_DIR} \
-#       ${NIFI_HOME}/conf \
-#       ${NIFI_HOME}/database_repository \
-#       ${NIFI_HOME}/flowfile_repository \
-#       ${NIFI_HOME}/content_repository \
-#       ${NIFI_HOME}/provenance_repository \
-#       ${NIFI_HOME}/state
-
-# Clear nifi-env.sh in favour of configuring all environment variables in the Dockerfile
-RUN echo "#!/bin/sh\n" > $NIFI_HOME/bin/nifi-env.sh
-
-# Web HTTP(s) & Socket Site-to-Site Ports
-EXPOSE 8080 8443 10000 8000
-
-WORKDIR ${NIFI_HOME}
-
-# Apply configuration and start NiFi
-#
-# We need to use the exec form to avoid running our command in a subshell and omitting signals,
-# thus being unable to shut down gracefully:
-# https://docs.docker.com/engine/reference/builder/#entrypoint
-#
-# Also we need to use relative path, because the exec form does not invoke a command shell,
-# thus normal shell processing does not happen:
-# https://docs.docker.com/engine/reference/builder/#exec-form-entrypoint-example
-ENTRYPOINT ["/bin/bash"]
diff --git a/roles/build/files/odfees/odfesupervisord.conf b/roles/build/files/odfees/odfesupervisord.conf
new file mode 100644
index 0000000..975b7cd
--- /dev/null
+++ b/roles/build/files/odfees/odfesupervisord.conf
@@ -0,0 +1,43 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:odfe]
+user=elasticsearch
+group=elasticsearch
+directory=/usr/share/elasticsearch
+command=sh -c "/usr/share/elasticsearch/bin/elasticsearch"
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/elasticsearch_stderr.log
+stdout_logfile = /var/log/supervisor/elasticsearch_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/odfeesDockerfile b/roles/build/files/odfeesDockerfile
deleted file mode 100644
index fedbee1..0000000
--- a/roles/build/files/odfeesDockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM gn43-dsl/elasticsearch:7a20201004
-
-ENV PATH="/usr/share/elasticsearch/bin:${PATH}"
-
-USER root
-WORKDIR /usr/share/elasticsearch
-
-RUN for PLUGIN in \
-    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-security/opendistro_security-1.4.0.0.zip \
-    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-alerting/opendistro_alerting-1.4.0.0.zip \
-    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-sql/opendistro_sql-1.4.0.0.zip; \
-    do bin/elasticsearch-plugin install -b ${PLUGIN}; done && \
-    chown -R elasticsearch plugins/opendistro_security
-
-USER elasticsearch
-
diff --git a/roles/build/files/odfekibanaDockerfile b/roles/build/files/odfekibanaDockerfile
deleted file mode 100644
index 1945e27..0000000
--- a/roles/build/files/odfekibanaDockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM gn43-dsl/kibana:7a20201004
-
-ENV PATH="/usr/share/kibana/bin:${PATH}"
-
-USER root
-WORKDIR /usr/share/kibana
-
-RUN for PLUGIN in \
-    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-security/opendistro_security_kibana_plugin-1.4.0.0.zip \
-    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-alerting/opendistro-alerting-1.4.0.0.zip \
-    https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-index-management/opendistro_index_management_kibana-1.4.0.0.zip; \
-    do bin/kibana-plugin install --allow-root ${PLUGIN}; done
-
-ADD thehive_button /usr/share/kibana/plugins/thehive_button
-RUN chown -R kibana:kibana /usr/share/kibana/plugins/thehive_button
-
-USER kibana
-
diff --git a/roles/build/files/openjdkDockerfile b/roles/build/files/openjdkDockerfile
deleted file mode 100644
index 2d83f47..0000000
--- a/roles/build/files/openjdkDockerfile
+++ /dev/null
@@ -1,11 +0,0 @@
-FROM gn43-dsl/centos:7a20201004
-
-RUN yum update -y; \
-    yum install -y wget unzip curl java-1.8.0-openjdk-headless.x86_64
-
-RUN ln -svT "/usr/lib/jvm/java-1.8.0-openjdk-$(rpm -q --queryformat "%{VERSION}-%{RELEASE}.%{ARCH}\n" java-1.8.0-openjdk-headless)" /docker-java-home
-ENV JAVA_HOME /docker-java-home/jre
-
-RUN yum clean all
-
-CMD ["/bin/bash"]
diff --git a/roles/build/files/thehive/thehivesupervisord.conf b/roles/build/files/thehive/thehivesupervisord.conf
new file mode 100644
index 0000000..8fa1d93
--- /dev/null
+++ b/roles/build/files/thehive/thehivesupervisord.conf
@@ -0,0 +1,43 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:thehive]
+directory=/opt/thehive
+user=thehive
+group=thehive
+command=/bin/bash -c '/opt/thehive/bin/thehive -Dconfig.file=/etc/thehive/application.conf -Dlogger.file=/etc/thehive/logback.xml -J-Xms1g -J-Xmx1g -Dpidfile.path=/dev/null'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/thehive_stderr.log
+stdout_logfile = /var/log/supervisor/thehive_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/thehiveDockerfile b/roles/build/files/thehiveDockerfile
deleted file mode 100644
index ce8ddb8..0000000
--- a/roles/build/files/thehiveDockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-FROM gn43-dsl/openjdk:7a20201004
-
-USER root
-#COPY thehive.repo /etc/yum.repos.d/thehive.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
-RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
-    echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
-    echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
-    echo "name=TheHive-Project RPM repository" >> /etc/yum.repos.d/thehive.repo && \
-    echo "baseurl=http://rpm.thehive-project.org/stable/noarch" >> /etc/yum.repos.d/thehive.repo && \
-    echo "gpgcheck=1" >> /etc/yum.repos.d/thehive.repo && \
-    yum install -y epel-release && \
-    rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
-    yum install -y thehive4 supervisor daemonize vim net-tools telnet htop && \
-    mkdir -p /opt/thp_data/files/thehive && \
-    chown -R thehive:thehive /opt/thp_data/files/thehive && \
-    mkdir -p /home/thehive && \
-    chown -R thehive:thehive /home/thehive /etc/thehive && \
-    yum -y clean all
-EXPOSE 9000
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER thehive
-# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/files/thehive_button/.eslintrc b/roles/build/files/thehive_button/.eslintrc
deleted file mode 100644
index 64eba86..0000000
--- a/roles/build/files/thehive_button/.eslintrc
+++ /dev/null
@@ -1,7 +0,0 @@
----
-extends: "@elastic/kibana"
-
-settings:
-  import/resolver:
-    '@elastic/eslint-import-resolver-kibana':
-      rootPackageName: 'thehive_button'
diff --git a/roles/build/files/thehive_button/.kibana-plugin-helpers.json b/roles/build/files/thehive_button/.kibana-plugin-helpers.json
deleted file mode 100644
index 2c63c08..0000000
--- a/roles/build/files/thehive_button/.kibana-plugin-helpers.json
+++ /dev/null
@@ -1,2 +0,0 @@
-{
-}
diff --git a/roles/build/files/thehive_button/index.js b/roles/build/files/thehive_button/index.js
deleted file mode 100644
index fa69c75..0000000
--- a/roles/build/files/thehive_button/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import newCaseRoute from './server/routes/newcase';
-
-export default function (kibana) {
-  return new kibana.Plugin({
-    require: [], //['elasticsearch'],
-    name: 'thehive_button',
-    uiExports: {
-      visTypes: [
-        'plugins/thehive_button/main',
-      ],
-    },
-
-    init(server, options) { // eslint-disable-line no-unused-vars
-      // Add server routes and initialize the plugin here
-      newCaseRoute(server);
-    }
-  });
-}
-
diff --git a/roles/build/files/thehive_button/package.json b/roles/build/files/thehive_button/package.json
deleted file mode 100644
index e1c070d..0000000
--- a/roles/build/files/thehive_button/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "name": "thehive_button",
-  "version": "1.0.0",
-  "description": "Visualisation plugin which creates a simple button to create a new case in The Hive.",
-  "main": "index.js",
-  "kibana": {
-    "version": "7.4.2"
-  },
-  "scripts": {
-    "lint": "eslint .",
-    "start": "plugin-helpers start",
-    "build": "plugin-helpers build"
-  },
-  "dependencies": {
-    "request": "^2.88.0",
-    "@elastic/eui": "10.4.2",
-    "react": "^16.8.0"
-  },
-  "devDependencies": {
-    "@elastic/eslint-config-kibana": "link:../../packages/eslint-config-kibana",
-    "@elastic/eslint-import-resolver-kibana": "link:../../packages/kbn-eslint-import-resolver-kibana",
-    "@kbn/plugin-helpers": "link:../../packages/kbn-plugin-helpers",
-    "babel-eslint": "^9.0.0",
-    "eslint": "^5.6.0",
-    "eslint-plugin-babel": "^5.2.0",
-    "eslint-plugin-import": "^2.14.0",
-    "eslint-plugin-jest": "^21.26.2",
-    "eslint-plugin-jsx-a11y": "^6.1.2",
-    "eslint-plugin-mocha": "^5.2.0",
-    "eslint-plugin-no-unsanitized": "^3.0.2",
-    "eslint-plugin-prefer-object-spread": "^1.2.1",
-    "eslint-plugin-react": "^7.11.1",
-    "expect.js": "^0.3.1"
-  }
-}
diff --git a/roles/build/files/thehive_button/public/create_case.js b/roles/build/files/thehive_button/public/create_case.js
deleted file mode 100644
index fc8edd6..0000000
--- a/roles/build/files/thehive_button/public/create_case.js
+++ /dev/null
@@ -1,101 +0,0 @@
-// Functions to send data to Kibana endpoints
-
-import chrome from 'ui/chrome';
-
-// Create a new Case in The Hive via its API
-// Return a Promise which resolves to object with ID of the new case ('id' attr) or error message ('error' attr)
-export function createTheHiveCase(base_url, api_key, title, descr, severity, startDate, owner, flag, tlp, tags) {
-  // Prepare data
-  var data = JSON.stringify({
-    "base_url": base_url,
-    "api_key": api_key,
-    "body": {
-      "title": title,
-      "description": descr,
-      "severity": severity, // number: 1=low, 2=medium, 3=high
-      "startDate": startDate,
-      "owner": owner, // user name the case will be assigned to
-      "flag": flag, // bool
-      "tlp": tlp, // number: 0=white, 1=green, 2=amber, 3=red
-      "tags": tags, // array of strings
-    }
-  });
-  console.log("TheHiveButton: Sending request to API endpoint 'new_case':", data);
-  var kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/new_case');
-
-  return new Promise(function (resolve, reject) {
-    // Create AJAX request
-    var xhr = new XMLHttpRequest();
-    
-    // Listener to process reply
-    xhr.onreadystatechange = function () {
-      if (this.readyState != 4) {
-        return; // response not ready yet
-      }
-      if (this.status == 200) {
-        const resp = JSON.parse(this.responseText);
-        console.log("TheHiveButton: Response from backend:", resp);
-        if ("error" in resp) {
-          resolve({"error": resp.error});
-        }
-        else if (resp.status_code != 201) {
-          resolve({"error": "Unexpected reply received from The Hive: [" + resp.status_code + "] " + resp.status_msg});
-        }
-        else {
-          resolve({"id": resp.body.id}); // return ID of the new case
-        }
-      }
-      else {
-        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
-        resolve({"error": "Error " + this.status + ": " + this.statusText});
-      }
-    }
-
-    // Send the AJAX request
-    xhr.open("POST", kibana_endpoint_url);
-    xhr.setRequestHeader("Content-Type", "application/json");
-    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
-    xhr.send(data);
-  });
-}
-
-// Add observables to an existing Case in The Hive
-// (send the list of observables to our backend endpoint, it pushes them to The Hive)
-export function addCaseObservables(base_url, api_key, caseid, observables) {
-  const kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/add_observables');
-  const data = JSON.stringify({
-    "base_url": base_url,
-    "api_key": api_key,
-    "caseid": caseid,
-    "observables": observables,
-  });
-  console.log("TheHiveButton: Sending request to API endpoint 'add_observables':", data);
-  
-  return new Promise(function (resolve, reject) {
-    // Create AJAX request
-    var xhr = new XMLHttpRequest();
-    
-    // Listener to process reply
-    xhr.onreadystatechange = function () {
-      if (this.readyState != 4) {
-        return; // response not ready yet
-      }
-      if (this.status == 200) {
-        const resp = JSON.parse(this.responseText);
-        console.log("TheHiveButton: Response from backend:", resp);
-        resolve(resp);
-      }
-      else {
-        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
-        resolve({"error": "Error " + this.status + ": " + this.statusText});
-      }
-    }
-
-    // Send the AJAX request
-    xhr.open("POST", kibana_endpoint_url);
-    xhr.setRequestHeader("Content-Type", "application/json");
-    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
-    xhr.send(data);
-  });
-}
-
diff --git a/roles/build/files/thehive_button/public/env.js b/roles/build/files/thehive_button/public/env.js
deleted file mode 100644
index 4321b85..0000000
--- a/roles/build/files/thehive_button/public/env.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// Default plugin configuration
-export const THEHIVE_URL = 'https://hive.gn4-3-wp8-soc.sunet.se/';
-export const THEHIVE_API_KEY = '5LymseWiurZBrQN8Kqp8O+9KniTL5cE0';
-export const THEHIVE_OWNER = 'admin'; // default owner account of the created cases
diff --git a/roles/build/files/thehive_button/public/main.js b/roles/build/files/thehive_button/public/main.js
deleted file mode 100644
index ee46d73..0000000
--- a/roles/build/files/thehive_button/public/main.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import { THEHIVE_API_KEY, THEHIVE_URL, THEHIVE_OWNER } from './env';
-import { TheHiveButtonVisComponent } from './vis_controller';
-import { theHiveButtonRequestHandlerProvider } from './request_handler';
-import { optionsEditor } from './options_editor';
-
-import { VisFactoryProvider } from 'ui/vis/vis_factory';
-import { VisTypesRegistryProvider } from 'ui/registry/vis_types';
-import { DefaultEditorSize } from 'ui/vis/editor_size';
-
-
-function TheHiveButtonVisProvider(Private) {
-  const VisFactory = Private(VisFactoryProvider);
-
-  //console.log("default URL:", THEHIVE_URL);
-  //console.log("default API key:", THEHIVE_API_KEY);
-
-  return VisFactory.createReactVisualization({
-    name: 'thehive_button',
-    title: 'The Hive Case',
-    icon: 'alert',
-    description: 'A button to create a new Case in The Hive.',
-    //requiresUpdateStatus: [Status.PARAMS, Status.RESIZE, Status.UI_STATE],
-    visConfig: {
-      component: TheHiveButtonVisComponent,
-      defaults: {
-        // add default parameters
-        url: THEHIVE_URL,
-        apikey: THEHIVE_API_KEY,
-        owner: THEHIVE_OWNER,
-        obsFields: [], // list of objects, e.g. {name: "clientip", type: "ip", cnt: 100}
-      }
-    },
-    //editor: 'default',
-    editorConfig:  {
-      optionTabs: [
-        {
-          name: "options",
-          title: "Options",
-          editor: optionsEditor,
-        }
-      ],
-      defaultSize: DefaultEditorSize.LARGE,
-    },
-//       optionsTemplate: optionsEditor, //optionsTemplate,
-//       //enableAutoApply: true,
-//     },
-    requestHandler: 'theHiveButtonRequestHandler', // own request handler
-    responseHandler: 'none', // pass data as returned by requestHandler
-  });
-}
-
-// register the provider with the visTypes registry
-VisTypesRegistryProvider.register(TheHiveButtonVisProvider);
-
diff --git a/roles/build/files/thehive_button/public/options_editor.js b/roles/build/files/thehive_button/public/options_editor.js
deleted file mode 100644
index 38762bd..0000000
--- a/roles/build/files/thehive_button/public/options_editor.js
+++ /dev/null
@@ -1,176 +0,0 @@
-import React from 'react';
-import {
-  EuiForm,
-  EuiFormRow,
-  EuiTitle,
-  EuiSpacer,
-  EuiFieldText,
-  EuiFieldNumber,
-  EuiSelect,
-  EuiFlexGroup,
-  EuiFlexItem,
-  EuiButton,
-  EuiButtonIcon,
-} from '@elastic/eui';
-
-// Default data types in The Hive
-const DEFAULT_THE_HIVE_TYPES = [
-  '',
-  'autonomous-system',
-  'domain',
-  'file',
-  'filename',
-  'fqdn',
-  'hash',
-  'ip',
-  'mail',
-  'mail_subject',
-  'regexp',
-  'registry',
-  'uri_path',
-  'url',
-  'user-agent',
-  'other',	
-];
-
-// Options for EuiSelect for selection of field's data type in TheHive
-const typesOptions = DEFAULT_THE_HIVE_TYPES.map( dt => ({value: dt, text: dt}) );
-
-export function optionsEditor(props) {
-  //console.log("editor render(), props:", props);
-  const { stateParams, setValue, setValidity, vis } = props;
-  
-  // onClick/onChange handlers
-  const obsAddNew = () => {
-    const newObsFields = [...stateParams.obsFields, {name: "", type: "", cnt: 100}];
-    // For some reason, first click on the button after editor is loaded does
-    // nothing. Calling setValue twice here fixes it.  
-    setValue("obsFields", newObsFields);
-    setValue("obsFields", newObsFields);
-//     setValidity(false); // since new row is empty, form is always invalid
-  };
-  const obsRemove = (ix) => {
-    let newArray = [...stateParams.obsFields];
-    newArray.splice(ix, 1);
-    setValue("obsFields", newArray);
-//     validate();
-  }
-  const obsSetName = (ix, name) => {
-    let newArray = [...stateParams.obsFields];
-    newArray[ix].name = name;
-    setValue("obsFields", newArray);
-//     validate();
-  } 
-  const obsSetType = (ix, type) => {
-    let newArray = [...stateParams.obsFields];
-    newArray[ix].type = type;
-    setValue("obsFields", newArray);
-//     validate();
-  }
-  const obsSetCnt = (ix, cnt) => {
-    let newArray = [...stateParams.obsFields];
-    newArray[ix].cnt = parseInt(cnt);
-    setValue("obsFields", newArray);
-//     validate();
-  }
-//   const validate = () => {
-//     let valid = true;
-//     for (let field of stateParams.obsFields) {
-//       if (field.name == "" || field.type == "" || field.cnt == "") {
-//         valid = false;
-//         break;
-//       }
-//     }
-//     // TODO check for duplicate fields
-//     setValidity(valid);
-//   }
-  
-  // Get list of all fields in index (except those beginning with "_" or "@")
-  // and create "options" parameter for EuiSelect.
-  // Also, fields with "aggregatable=false" are removed, as they can't be used
-  // with "terms" aggregation we need.
-  // See this for details: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/fielddata.html
-  // Empty field is added at the beginning, meaning "no selection yet".
-  const fieldOptions = [{value: "", text: ""}].concat(
-    vis.indexPattern.fields.raw.filter( f => (f.name[0] != "_" && f.name[0] != "@" && f.aggregatable) ).map( f => ({value: f.name, text: `${f.name} (${f.type})`}) )
-  );
-
-  return <EuiForm>
-    <EuiFormRow fullWidth={true} label="Base URL of The Hive">
-      <EuiFieldText
-        fullWidth={true}
-        value={stateParams.url}
-        onChange={e => setValue('url', e.target.value)}
-        isInvalid={stateParams.url == ""}
-      />
-    </EuiFormRow>
-    <EuiFlexGroup>
-      <EuiFlexItem grow={1}>
-        <EuiFormRow label="API key to access The Hive" helpText="API key of a user with write permission.">
-          <EuiFieldText
-            fullWidth={true}
-            value={stateParams.apikey}
-            onChange={e => setValue('apikey', e.target.value)}
-            isInvalid={stateParams.apikey == ""}
-          />
-        </EuiFormRow>
-      </EuiFlexItem>
-      <EuiFlexItem grow={1}>
-        <EuiFormRow label="Assignee" helpText="User to assign created cases to. Must be a valid username from The Hive instance.">
-          <EuiFieldText
-            value={stateParams.owner}
-            onChange={e => setValue('owner', e.target.value)}
-            isInvalid={stateParams.owner == ""}
-          />
-        </EuiFormRow>
-      </EuiFlexItem>
-    </EuiFlexGroup>
-    <EuiTitle size="s"><h3>Fields to get potential observables from ...</h3></EuiTitle>
-    <EuiSpacer size="s" />
-    {stateParams.obsFields.map( (field, ix) => (
-      <EuiFlexGroup key={ix} gutterSize="s">
-        <EuiFlexItem grow={3}>
-          <EuiFormRow label="Field name">
-            <EuiSelect
-              options={fieldOptions}
-              value={field.name}
-              onChange={ e => obsSetName(ix, e.target.value) }
-              isInvalid={field.name == ""}
-            />
-          </EuiFormRow>
-        </EuiFlexItem>
-        <EuiFlexItem grow={2}>
-          <EuiFormRow label="Data type in The Hive">
-            <EuiSelect
-              options={typesOptions}
-              value={field.type}
-              onChange={ e => obsSetType(ix, e.target.value) }
-              isInvalid={field.type == ""}
-            />
-          </EuiFormRow>
-        </EuiFlexItem>
-        <EuiFlexItem grow={1}>
-          <EuiFormRow label="Max items shown">
-            <EuiFieldNumber
-              min={1}
-              max={1000}
-              value={parseInt(field.cnt)}
-              onChange={ e => obsSetCnt(ix, e.target.value) }
-              isInvalid={!(field.cnt > 0)}
-            />
-          </EuiFormRow>
-        </EuiFlexItem>
-        <EuiFlexItem grow={false}>
-          <EuiFormRow hasEmptyLabelSpace>
-            <EuiButtonIcon iconType="trash" iconSize="m" color="danger" aria-label="Remove field" onClick={ e => obsRemove(ix) } />
-          </EuiFormRow>
-        </EuiFlexItem>
-      </EuiFlexGroup>
-    ))}
-    <EuiFlexGroup>
-      <EuiFlexItem grow={false}>
-        <EuiButton iconType="plusInCircleFilled" color="primary" onClick={obsAddNew}>Add new field ...</EuiButton>
-      </EuiFlexItem>
-    </EuiFlexGroup>
-  </EuiForm>
-}
diff --git a/roles/build/files/thehive_button/public/options_template.html b/roles/build/files/thehive_button/public/options_template.html
deleted file mode 100644
index ef99657..0000000
--- a/roles/build/files/thehive_button/public/options_template.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="form-group">
-  <p><label>Base URL of The Hive</label>
-  <input ng-model="editorState.params.url" class=form-control /></p>
-  <p><label>API key</label>
-  <input ng-model="editorState.params.apikey" class=form-control /></p>
-  <p><label>User name to use as the owner of cases created from here</label>
-  <input ng-model="editorState.params.owner" class=form-control /></p>
-</div>
diff --git a/roles/build/files/thehive_button/public/request_handler.js b/roles/build/files/thehive_button/public/request_handler.js
deleted file mode 100644
index bdbb0f4..0000000
--- a/roles/build/files/thehive_button/public/request_handler.js
+++ /dev/null
@@ -1,195 +0,0 @@
-import { CourierRequestHandlerProvider as courierRequestHandlerProvider } from 'ui/vis/request_handlers/courier';
-import { SearchSourceProvider } from 'ui/courier/search_source';
-import { RequestAdapter, DataAdapter } from 'ui/inspector/adapters';
-import { VisRequestHandlersRegistryProvider } from 'ui/registry/vis_request_handlers';
-import { AggConfig } from 'ui/vis/agg_config';
-import { AggConfigs } from 'ui/vis/agg_configs';
-import { getTime } from 'ui/timefilter/get_time';
-import { i18n } from '@kbn/i18n';
-import { has } from 'lodash';
-import { calculateObjectHash } from 'ui/vis/lib/calculate_object_hash';
-import { getRequestInspectorStats, getResponseInspectorStats } from 'ui/courier/utils/courier_inspector_utils';
-import chrome from 'ui/chrome';
-
-// Maximum number of unique values of each field (observables) to fetch
-const MAX_NUMBER_OF_TERMS = 5;
-
-const handleCourierRequest = courierRequestHandlerProvider().handler;
-
-// Register new RaquestHandlerProvider 
-const theHiveButtonRequestHandlerProvider = function () {
-  return {
-    name: 'theHiveButtonRequestHandler',
-    handler: theHiveButtonRequestHandler,
-  }
-}
-VisRequestHandlersRegistryProvider.register(theHiveButtonRequestHandlerProvider);
-
-export {theHiveButtonRequestHandlerProvider, theHiveButtonRequestHandler};
-
-
-// The request handler function itself
-async function theHiveButtonRequestHandler(params) {
-  //console.log("theHiveButtonRequestHandler params:", params);
-  
-  let index = params.index;
-  let partialRows = params.partialRows;
-  let metricsAtAllLevels = params.metricsAtAllLevels;
-  let timeRange = params.timeRange;
-  let query = params.query;
-  let filters = params.filters;
-  let inspectorAdapters = params.inspectorAdapters;
-  let queryFilter = params.queryFilter;
-  let forceFetch = params.forceFetch;
-  // our own confiuration:
-  // list of fields to get potential observables from
-  // (each "field" is object {name: str, type: str, cnt: int})
-  let obsFields = params.visParams.obsFields;
-  
-  // filter out invalid field specifications
-  obsFields = obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
-  
-  if (obsFields.length == 0) {
-    //console.log("theHiveButtonRequestHandler: Empty obsFields, nothing to do")
-    return {} // no fields specified, nothing to do
-  }
-
-  // === Prepare request to ask for unique values of all selected fields ===
-
-  // Construct a query for ElasticSearch
-  // Get "terms" (most common unique values) for each field of obsFields
-  const aggs_dsl = {}
-  for (let field of obsFields) {
-    aggs_dsl[field.name] = {
-      terms: {
-          field: field.name,
-          size: field.cnt,
-          order: {_count: "desc"}
-        }
-    };
-  }
-  //console.log("aggs_dsl:", aggs_dsl);
-  
-  // Create empty AggConfigs
-  // (We could pass specifications of a metric and the buckets here,
-  //  but default processing functions assume multiple buckets are sub-buckets,
-  //  which is not what we want. So we must do a "hack" and manually create  
-  //  query directly in format for ElasticSearch)
-  const aggs = new AggConfigs(params.index, []);
-  
-  // === Some magic to get searchSource object ===
-  // (inspired by https://github.com/fbaligand/kibana-enhanced-table/blob/7.4/public/data_load/enhanced-table-request-handler.js)
-  // (I don't understand it, but it works)
-
-  let $injector = await chrome.dangerouslyGetActiveInjector();
-  let Private = $injector.get('Private');
-  let SearchSource = Private(SearchSourceProvider);
-  let searchSource = new SearchSource();
-  searchSource.setField('index', index);
-  searchSource.setField('size', 0);
-
-  inspectorAdapters.requests = new RequestAdapter();
-  inspectorAdapters.data = new DataAdapter();
-  
-
-  // === Execute query ===
-  // We could call standard "courier" here, but it tries to convert the response
-  // to a table, which fails in our case, so we copied the main code of courier
-  // and modified it here.
-  
-  const abortSignal = false;
-  
-  const timeFilterSearchSource = searchSource.createChild({ callParentStartHandlers: true });
-  const requestSearchSource = timeFilterSearchSource.createChild({ callParentStartHandlers: true });
-
-  aggs.setTimeRange(timeRange);
-
-  // For now we need to mirror the history of the passed search source, since
-  // the request inspector wouldn't work otherwise.
-  Object.defineProperty(requestSearchSource, 'history', {
-    get() {
-      return searchSource.history;
-    },
-    set(history) {
-      return searchSource.history = history;
-    }
-  });
-
-  // This has been modified to override DSL format by ours
-//   requestSearchSource.setField('aggs', function () {
-//     return aggs.toDsl(metricsAtAllLevels);
-//   });
-  requestSearchSource.setField('aggs', aggs_dsl); 
-
-  requestSearchSource.onRequestStart((searchSource, searchRequest) => {
-    return aggs.onSearchRequestStart(searchSource, searchRequest);
-  });
-
-  if (timeRange) {
-    timeFilterSearchSource.setField('filter', () => {
-      return getTime(searchSource.getField('index'), timeRange);
-    });
-  }
-
-  requestSearchSource.setField('filter', filters);
-  requestSearchSource.setField('query', query);
-
-  const reqBody = await requestSearchSource.getSearchRequestBody();
-
-  const queryHash = calculateObjectHash(reqBody);
-  // We only need to reexecute the query, if forceFetch was true or the hash of the request body has changed
-  // since the last request
-  const shouldQuery = forceFetch || (searchSource.lastQuery !== queryHash);
-
-  if (shouldQuery) {
-    inspectorAdapters.requests.reset();
-    const request = inspectorAdapters.requests.start(
-      i18n.translate('common.ui.vis.courier.inspector.dataRequest.title', { defaultMessage: 'Data' }),
-      {
-        description: i18n.translate('common.ui.vis.courier.inspector.dataRequest.description',
-          { defaultMessage: 'This request queries Elasticsearch to fetch the data for the visualization.' }),
-      }
-    );
-    request.stats(getRequestInspectorStats(requestSearchSource));
-
-    try {
-      // Abort any in-progress requests before fetching again
-      if (abortSignal) {
-        abortSignal.addEventListener('abort', () => requestSearchSource.cancelQueued());
-      }
-
-      const response = await requestSearchSource.fetch();
-      //console.log("raw response:", response);
-
-      searchSource.lastQuery = queryHash;
-
-      request
-        .stats(getResponseInspectorStats(searchSource, response))
-        .ok({ json: response });
-
-      searchSource.rawResponse = response;
-    } catch(e) {
-      // Log any error during request to the inspector
-      request.error({ json: e });
-      throw e;
-    } finally {
-      // Add the request body no matter if things went fine or not
-      requestSearchSource.getSearchRequestBody().then(req => {
-        request.json(req);
-      });
-    }
-  }
-
-  // === Copy of courier code ends here, now we parse the response ===
-  
-  const resp = searchSource.rawResponse;
-  // Return as object containing a list of unique values (terms) for each 
-  // requested field
-  let unique_values_lists = {}
-  for (let field of obsFields) {
-    unique_values_lists[field.name] = resp.aggregations[field.name].buckets.map( (x) => x.key );
-  }
-
-  //console.log("Final lists:", unique_values_lists);
-  return unique_values_lists;
-}
diff --git a/roles/build/files/thehive_button/public/vis.less b/roles/build/files/thehive_button/public/vis.less
deleted file mode 100644
index b6f887a..0000000
--- a/roles/build/files/thehive_button/public/vis.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.myvis-container-div {
-  padding: 1em;
-}
diff --git a/roles/build/files/thehive_button/public/vis_controller.js b/roles/build/files/thehive_button/public/vis_controller.js
deleted file mode 100644
index 8b23222..0000000
--- a/roles/build/files/thehive_button/public/vis_controller.js
+++ /dev/null
@@ -1,555 +0,0 @@
-//import { Status } from 'ui/vis/update_status';
-import { toastNotifications } from 'ui/notify';
-import { createTheHiveCase, addCaseObservables } from './create_case';
-//import vis_template from './vis_template.html';
-
-import React, { Component } from 'react';
-import {
-  EuiButton,
-  EuiButtonEmpty,
-  EuiModal,
-  EuiModalBody,
-  EuiModalFooter,
-  EuiModalHeader,
-  EuiModalHeaderTitle,
-  EuiOverlayMask,
-  EuiTitle,
-  EuiFlexGroup,
-  EuiFlexItem,
-  EuiSpacer,
-  EuiForm,
-  EuiFormRow,
-  EuiFieldText,
-  EuiTextArea,
-  EuiSuperSelect,
-  EuiBasicTable,
-  EuiCheckbox,
-  makeId,
-} from '@elastic/eui';
-
-
-// ********** React components **********
-
-// Main React component - the root of visualization
-export class TheHiveButtonVisComponent extends Component {
-  render() {
-    //console.log("TheHiveButtonVisComponent.render(), props:", this.props);
-    return (
-      <div>
-        <NewCaseButton params={this.props.vis.params} observables={this.props.visData} />
-      </div>
-    );
-  }
-
-  componentDidMount() {
-    this.props.renderComplete();
-  }
-
-  componentDidUpdate() {
-    this.props.renderComplete();
-  }
-}
-
-// Button to show the pop-up window (modal)
-// Props:
-//  .params - visualization parameters (from vis.params)
-//  .observables - object with lists of potential observables to add to the Case
-//     for each field in params.obsFields there should be a key in this object
-//     containing list of observables (this is returned by request_handler) 
-class NewCaseButton extends Component {
-
-  constructor(props) {
-    super(props);
-    // Filter out invalid obsField specifications
-    this.obsFields = props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
-    //console.log("Filtered field specs:", this.obsFields);
-    
-    // The complete state is here, so it's kept even when modal is closed
-    this.state = {
-      isModalVisible: false,
-      isWorking: false, // used to show a spinner on submit button
-      ...this.create_initial_state(),
-    }
-    
-    this.resetCnt = 0; // used to change Modal component key on each form reset
-
-    // Each handler function in a class (method) must be "binded" this way
-    this.closeModal = this.closeModal.bind(this);
-    this.showModal = this.showModal.bind(this);
-    this.resetForm = this.resetForm.bind(this);
-
-    this.onTitleChange = this.onTitleChange.bind(this);
-    this.onSeverityChange = this.onSeverityChange.bind(this);
-    this.onTLPChange = this.onTLPChange.bind(this);
-    this.onDescriptionChange = this.onDescriptionChange.bind(this);
-    
-    this.onObsSelectionChange = this.onObsSelectionChange.bind(this);
-    this.onObsDataChange = this.onObsDataChange.bind(this);
-    
-    this.submitCase = this.submitCase.bind(this);
-  }
-
-  create_initial_state() {
-    // create a new instance of initial state definition
-    let initial_state = {
-      // Case parameters
-      title: "",
-      description: "\n\n--\nCreated from Kibana",
-      severity: "2", // medium
-      tlp: "2", // amber
-      tags: [], // TODO (not implemented yet)
-      obsData: {}, // state of observables form fields (obsData->field->index->{descr,tlp,ioc,tags})
-      obsSel: {}, // list of observable selections (obsSel->field->list_of_selected_indices)
-    }
-    // pre-fill state of each observable to defaults
-    const initial_field_data = {descr: "", tlp: 2, ioc: false, tags: []};
-    for (let field of this.obsFields) {
-      const n_obs = this.props.observables[field.name].length;
-      // fill obsData with new copies of initial_field_data
-      initial_state.obsData[field.name] = new Array(n_obs).fill().map((_)=>({...initial_field_data}));
-      // nothing is selected
-      initial_state.obsSel[field.name] = new Array();
-    }
-    return initial_state;
-  }
-
-  componentDidUpdate(prevProps) {
-    // If list of observables was updated or obsFields setting has changed, 
-    // reset the component state and precomputed variables.
-    if (this.props.observables != prevProps.observables) {
-      if (this.props.params.obsFields != prevProps.params.obsFields) {
-        // when obsFields change, observables must change as well, so this "if"
-        // can be inside the first one.
-        // Filter out invalid obsField specifications
-        this.obsFields = this.props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt && f.cnt > 0) );
-        //console.log("Filtered field specs:", this.obsFields);
-      }
-      //console.log("New list of observables, resetting form.");
-      this.resetForm();
-    }
-  }
-
-  resetForm() {
-    this.setState(this.create_initial_state());
-    this.resetCnt += 1; // this changes the key of ModalContent, causing it to be replaced by new DOM elelments (otherwise, not all things are reset properly)
-    this.forceUpdate();
-  }
-
-  closeModal() {
-    this.setState({ isModalVisible: false });
-  }
-
-  showModal() {
-    this.setState({ isModalVisible: true });
-  }
-
-  // Event handlers for change of case parameter
-  onTitleChange(evt) {
-    this.setState({title: evt.target.value});
-  }
-  onSeverityChange(value) {
-    this.setState({severity: value});
-  }
-  onTLPChange(value) {
-    this.setState({tlp: value});
-  }
-  onDescriptionChange(evt) {
-    this.setState({description: evt.target.value});
-  }
-
-  // Event handler for observable (de)selection
-  onObsSelectionChange(fieldName, selectedItems) {
-    // Extract indices from the items and store them into state
-    const selectedIndices = selectedItems.map(item4 => item4.i);
-    this.setState((state, props) => {
-      let newObsSel = {...this.state.obsSel};
-      newObsSel[fieldName] = selectedIndices;
-      return {obsSel: newObsSel};
-    });
-  }
-
-  // Event handler for edit of a form field in observable row
-  // - fieldName: which field (table of observables)
-  // - ix: index of the observable in the field's table
-  // - param: one of: descr,tlp,ioc,tags
-  // - value: new value of the form field
-  onObsDataChange(fieldName, ix, param, value) {
-    this.setState((state, props) => {
-      let newObsData = {...this.state.obsData};
-      newObsData[fieldName][ix][param] = value;
-      return {obsData: newObsData};
-    });
-  }
-
-  // Render function
-  render() {
-    let modal;
-    if (this.state.isModalVisible) {
-      modal = <ModalContent
-        resetCnt={this.resetCnt} // used to change "key" of modalBody, causing all form fields to be re-created (some things are not reset properly by reseting state only)
-        close={this.closeModal}
-        reset={this.resetForm}
-        fields={this.obsFields}
-        observables={this.props.observables}
-        // form state
-        title={this.state.title}
-        description={this.state.description}
-        severity={this.state.severity}
-        tlp={this.state.tlp}
-        tags={this.state.tags}
-        obsData={this.state.obsData}
-        obsSel={this.state.obsSel}
-        spinner={this.state.isWorking}
-        // event handlers
-        onTitleChange={this.onTitleChange}
-        onSeverityChange={this.onSeverityChange}
-        onTLPChange={this.onTLPChange}
-        onDescriptionChange={this.onDescriptionChange}
-        onObsSelectionChange={this.onObsSelectionChange}
-        onObsDataChange={this.onObsDataChange}
-        submitCase={this.submitCase}
-      />;
-    }
-    return (
-      <div>
-        <EuiButton fill iconType="alert" color="danger" onClick={this.showModal}>Create new Case ...</EuiButton>
-        {modal}
-      </div>
-    );
-  }
-
-  // Submit case button handler
-  async submitCase(evt) {
-    const params = this.props.params;
-    
-    // Get case parameters
-    const title = this.state.title;
-    const descr = this.state.description;
-    const severity = parseInt(this.state.severity);
-    const start_date = null;
-    const owner = params.owner;
-    const flag = false;
-    const tlp = parseInt(this.state.tlp);
-    const tags = this.state.tags;
-    
-    if (!title) {
-      toastNotifications.addDanger("Title can't be empty");
-      return;
-    }
-    
-    // Get list of selected observables and their params
-    let observables = [];
-    for (let field of this.obsFields) {
-      let selectionIndices = [...this.state.obsSel[field.name]]; // make a copy
-      selectionIndices.sort();
-      for (let i = 0; i < selectionIndices.length; i++) {
-        const j = selectionIndices[i]; // index of a selected obs. in the list of all observables
-        // fill in observable definition according to model at
-        // https://github.com/TheHive-Project/TheHiveDocs/blob/master/api/artifact.md
-        const obs = {
-          dataType: field.type,
-          data: this.props.observables[field.name][j],
-          message: this.state.obsData[field.name][j].descr,
-          tlp: this.state.obsData[field.name][j].tlp,
-          ioc: this.state.obsData[field.name][j].ioc,
-          tags: this.state.obsData[field.name][j].tags,
-        };
-        observables.push(obs);
-      }
-    }
-    
-    //console.log("Selected observables:", observables);
-    
-    // Check '/' at the end of base URL, add it if needed
-    let base_url = params.url;
-    if (base_url[base_url.length-1] != "/") {
-      base_url += "/";
-    }
-    
-    // Show spinner at submit button
-    this.setState({isWorking: true});
-    
-    // Submit request to create the case, handle response
-    let resp;
-    resp = await createTheHiveCase(base_url, params.apikey, title, descr, severity, start_date, owner, flag, tlp, tags);
-
-    if ('error' in resp) {
-      // Error contacting The Hive
-      console.error("TheHiveButton: ERROR when trying to create new case:", resp.error);
-      toastNotifications.addDanger("ERROR: " + resp.error);
-      this.setState({isWorking: false}); // Hide spinner
-      return;
-    }
-
-    console.log("TheHiveButton: Case created:", resp);
-    const case_id = resp.id;
-    const case_url = base_url + "index.html#/case/" + case_id + "/details";
-    
-    // Show notification
-    let obs_text;
-    if (observables.length > 0) {
-      obs_text = "Adding " + observables.length + " observables in background ...";
-    }
-    else {
-      obs_text = "(no observables added)";
-    }
-    toastNotifications.add({
-      title: "Case created",
-      color: "success",
-      iconType: "checkInCircleFilled",
-      text: (
-        <div>
-          <p><b><a href={case_url} target="_blank">Edit the new Case</a></b></p>
-          <p>{obs_text}</p>
-        </div>
-      ),
-    });
-    
-    // Close the popup window, reset form fields and hide spinner
-    this.closeModal();
-    this.resetForm();
-    this.setState({isWorking: false});
-     
-    // Open a new window with the case in The Hive
-    // (adding observables may take some time, so the case is opened first;
-    //  The Hive web is dynamic so the observables appear as they are added)
-    window.open(case_url, '_blank');
-    
-    if (observables.length == 0)
-      return;
-    
-    // Submit request to add observables
-    console.log("TheHiveButton: adding " + observables.length + " observables ...");
-    resp = await addCaseObservables(base_url, params.apikey, case_id, observables);
-    
-    if ('error' in resp) {
-      console.error("TheHiveButton: ERROR when trying to add observables: " + resp.error);
-      toastNotifications.addDanger("ERROR when trying to add observables: " + resp.error);
-    }
-    else {
-      console.log("TheHiveButton: Done, observables added.");
-      toastNotifications.add("Done, observables added.");
-    }
-  }
-}
-
-
-// The popup window with a form
-// props:
-//  - spinner: when true, disable form and show a spinner over it
-class ModalContent extends Component {
-  constructor(props) {
-    super(props);
-    // No state here, everything is in the parent class (NewCaseButton)
-    
-    // "Select" options
-    this.severityOptions = [
-      {value: "1", inputDisplay: "low"},
-      {value: "2", inputDisplay: "medium"},
-      {value: "3", inputDisplay: "high"},
-    ];
-    this.tlpOptions = [
-      {value: "0", inputDisplay: "white"},
-      {value: "1", inputDisplay: "green"},
-      {value: "2", inputDisplay: "amber"},
-      {value: "3", inputDisplay: "red"},
-    ];
-  }
-  
-  // Main render function
-  render() {
-    // TODO: replace Modal with Flyout?
-
-    // Note: onClick on EuiOverlayMask causes close of modal when clicked outside,
-    // implementation inspired by PR: https://github.com/elastic/eui/pull/3462/files#diff-c8fda532e48f75c94c343247cbc6b2d3R53-R60
-    return (
-      <EuiOverlayMask onClick={(evt) => {if (evt.target.classList.contains("euiOverlayMask")) this.props.close();} }>
-        <EuiModal onClose={this.props.close} maxWidth={false} initialFocus="[name=title]">
-          <EuiModalHeader>
-            <EuiModalHeaderTitle>Create a new case in The Hive</EuiModalHeaderTitle>
-          </EuiModalHeader>
-
-          <EuiModalBody key={this.props.resetCnt}>
-            <EuiForm style={{width: "800px"}}>
-              <EuiFlexGroup>
-                <EuiFlexItem grow={1}>
-                  <EuiFormRow label="Title" fullWidth>
-                    <EuiFieldText name="title" value={this.props.title} onChange={this.props.onTitleChange} required={true} fullWidth />
-                  </EuiFormRow>
-                </EuiFlexItem>
-                <EuiFlexItem grow={false}>
-                  <EuiFormRow label="Severity">
-                    <EuiSuperSelect
-                      options={this.severityOptions}
-                      valueOfSelected={this.props.severity}
-                      onChange={this.props.onSeverityChange}
-                    />
-                  </EuiFormRow>
-                </EuiFlexItem>
-                <EuiFlexItem grow={false}>
-                  <EuiFormRow label="TLP">
-                    <EuiSuperSelect
-                      prepend="TLP"
-                      options={this.tlpOptions}
-                      valueOfSelected={this.props.tlp}
-                      onChange={this.props.onTLPChange}
-                    />
-                  </EuiFormRow>
-                </EuiFlexItem>
-              </EuiFlexGroup>
-              <EuiFormRow label="Description" fullWidth>
-                <EuiTextArea
-                  defaultValue={this.props.description}
-                  onChange={this.props.onDescriptionChange}
-                  rows={4}
-                  fullWidth
-                />
-              </EuiFormRow>
-              
-              {this.props.fields.length > 0 && <EuiTitle size="s"><h3>Add observables from current query ...</h3></EuiTitle>}
-              {this.props.fields.map((field,ix) => (
-                <ObservablesTable
-                  key={field.name + ":" + this.props.resetCnt}
-                  fieldName={field.name}
-                  observables={this.props.observables[field.name]}
-                  obsData={this.props.obsData[field.name]}
-                  obsSel={this.props.obsSel[field.name]}
-                  onObsSelectionChange={this.props.onObsSelectionChange}
-                  onObsDataChange={this.props.onObsDataChange}
-                />
-              ))}
-            </EuiForm>
-          </EuiModalBody>
-
-          <EuiModalFooter>
-            <EuiButtonEmpty onClick={this.props.close}>Close</EuiButtonEmpty>
-            <EuiButtonEmpty onClick={this.props.reset}>Reset</EuiButtonEmpty>
-            <EuiButton onClick={this.props.submitCase} fill isLoading={this.props.spinner}>Create Case</EuiButton>
-          </EuiModalFooter>
-        </EuiModal>
-      </EuiOverlayMask>
-    );
-  }
-}
-
-// Table of potential observables taken from a given field, allowing to select
-// which observables to send to The Hive.
-// Props:
-//  fieldName - name of the field this table is for
-//  observables - list of observable IDs of this field
-//  obsData - array of objects specifying state of form fields in the table (.descr, .tlp, ...)
-//  obsSel - array of indices of selected observables
-class ObservablesTable extends Component {
-
-  constructor(props) {
-    super(props);
-    
-    // Table columns definition
-    this.columns = [
-      {
-        field: "id",
-        name: "Observable",
-      },
-      {
-        field: "descr",
-        name: "Description",
-        description: "Description of the observable in the context of the case",
-        render: (value, item1) => (<EuiFieldText
-          value={item1.descr}
-          onChange={(e) => this.props.onObsDataChange(props.fieldName, item1.i, "descr", e.target.value)}
-          disabled={!item1.selected}
-        />)
-      },
-      /*{
-        field: "tlp",
-        name: "TLP",
-        dataType: "number",
-        // TODO render and process changes
-      },*/
-      {
-        field: "ioc",
-        name: "Is IOC",
-        dataType: "boolean",
-        description: "Indicates if the observable is an IOC",
-        render: (value, item2) => (<EuiCheckbox
-          id={"ioc-checkbox-"+item2.id}
-          checked={item2.ioc}
-          onChange={(e) => this.props.onObsDataChange(props.fieldName, item2.i, "ioc", e.target.checked)}
-          disabled={!item2.selected}
-        />)
-      },
-      /*{
-        field: "tags",
-        name: "Tags",
-        // TODO render and process changes
-      },*/
-    ]
-    
-    // Create a reference to EuiBasicTable, so it's node can be accessed in componentDidMount
-    this.tableRef = React.createRef();
-  }
-
-  render() {
-    // Table data definition (convert props to format suitable for EuiBasicTable)
-    const n_obs = this.props.observables.length;
-    this.table_data = new Array(n_obs);
-    for (let i = 0; i < n_obs; i++) {
-      this.table_data[i] = {
-        id: this.props.observables[i],
-        descr: this.props.obsData[i].descr,
-        tlp: this.props.obsData[i].tlp,
-        ioc: this.props.obsData[i].ioc,
-        tags: this.props.obsData[i].tags,
-        // auxiliary fields, not shown in table:
-        i: i, // row index
-        selected: this.props.obsSel.includes(i),
-      };
-    }
-    
-    return (
-      <>
-        <EuiTitle size="xs"><h4>{this.props.fieldName}</h4></EuiTitle>
-        <EuiBasicTable
-          ref={this.tableRef}
-          columns={this.columns}
-          items={this.table_data}
-          itemId={(item3) => item3.id}
-          selection={ {onSelectionChange: (selectedItems) => this.props.onObsSelectionChange(this.props.fieldName, selectedItems) } }
-          noItemsMessage="No observables found"
-          rowProps={{
-            // Hack to allow selection by clicking anywhere in the table row
-            // (except input elements)
-            onClick: (e) => {
-              if (e.target.tagName != "INPUT") {
-                // simulate click on the first checkbox in the row to (de)select the row
-                e.currentTarget.querySelector("input").click();
-                e.currentTarget.blur(); // without this the focus remains on the row after click (results in different color)
-              }
-            },
-            tabIndex: "-1", // prevents focus on row by keyboard navigation
-          }}
-        />
-        <EuiSpacer size="l" />
-      </>
-    )
-  }
-  
-  componentDidMount() {
-    // There's no way to specify initially selected items in EuiBasicTable by 
-    // props, but we may need to select some (in case a user selects some obs.,
-    // closes the modal and opens it again).
-    // However, the selection is stored as a 'selection' field of table's state,
-    // so here we directly edit the state just after the table is created.
-    
-    // Prepare the 'selection' array - it should contain a list of selected row specifications
-    let selection = [];
-    for (let ix of this.props.obsSel) {
-      selection.push(this.table_data[ix]);
-    }
-    
-    // Get ref to EuiBasicTable element and update its state 
-    const table_node = this.tableRef.current;
-    table_node.setState({selection: selection});
-  }
-}
-
diff --git a/roles/build/files/thehive_button/server/routes/newcase.js b/roles/build/files/thehive_button/server/routes/newcase.js
deleted file mode 100644
index 175dee8..0000000
--- a/roles/build/files/thehive_button/server/routes/newcase.js
+++ /dev/null
@@ -1,153 +0,0 @@
-const request = require('request');
-//const fs = require('fs');
-//const path = require('path');
-
-//const caFile = path.resolve(__dirname, '../../ca.cert.pem'); // TODO resolve where the CA file should be located / configured
-
-export default function (server) {
-  server.route({
-    path: '/api/thehive_button/new_case',
-    method: 'POST',
-    handler: newCaseHandler,
-  });
-  server.route({
-    path: '/api/thehive_button/add_observables',
-    method: 'POST',
-    handler: addObservablesHandler,
-  });
-}
-
-// Handler of ajax requests to create a new Case in The Hive
-function newCaseHandler(req, resp) {
-  // Parse the request to get connection parameters
-  // (everything is configured in forntend and sent as part of the request,
-  //  since I don't know how to configure the backend)
-  var base_url = req.payload['base_url'];
-  var api_key = req.payload['api_key'];
-  var req_body = req.payload['body'];
-
-  // check it's a valid URL with slash at the end
-  if (!base_url) {
-    return {'error': 'Base URL not set'};
-  }
-  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
-  //if (!base_url.match(/https?:\/\/.*\//)) {
-    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
-  }
-  if (!api_key) {
-    return {'error': 'API key not set'};
-  }
-
-  return new Promise( function(resolve, reject) {
-    request({
-        method: 'POST',
-        url: base_url + 'api/case',
-        auth: {'bearer': api_key},
-        json: true,
-        body: req_body,
-        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
-        rejectUnauthorized: false,
-      },
-      // handler of the reply from The Hive - just return as reply
-      function (error, response, body) {
-        // TODO: find out how to set response code, for now we always return sucess and encode original status code in the content
-        if (error) {
-          console.error("ERROR when trying to send request to The Hive:", error);
-          resolve({'error': error.message});
-        }
-        else {
-          if (response.statusCode < 200 || response.statusCode >= 300) {
-            console.error("ERROR Unexpected reply received from The Hive:", response.statusCode, response.statusMessage, "\n", body)
-          }
-          resolve({
-            'status_code': response.statusCode,
-            'status_msg': response.statusMessage,
-            'body': body
-          });
-        }
-      } // handler function
-    ); // request()
-  }); // Promise()
-}
-
-// Note:
-// There are two ways to create multiple Observables (artifacts) via The Hive API:
-// 1. post one request with an array of observables in "data" field
-//    - this allows to create all in one request, but doesn't allow to set 
-//      different parameters (IOC, TLP, etc.) to different observables
-// 2. post each observable in a separate request
-// The second way is used here.
-
-// Handler of ajax requests to add Observables to a Case in The Hive
-function addObservablesHandler(req, resp) {
-  // Parse the request to get connection parameters
-  // (everything is configured in forntend and sent as part of the request,
-  //  since I don't know how to configure the backend)
-  var base_url = req.payload['base_url'];
-  var api_key = req.payload['api_key'];
-
-  // check it's a valid URL with slash at the end
-  if (!base_url) {
-    return {'error': 'Base URL not set'};
-  }
-  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
-  //if (!base_url.match(/https?:\/\/.*\//)) {
-    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
-  }
-  // TODO add "/" to the end automatically
-  if (!api_key) {
-    return {'error': 'API key not set'};
-  }
-
-  const caseid = req.payload['caseid'];
-  const observables = req.payload['observables']; // array of obersvable specifications
-
-  return new Promise( async function(resolve, reject) {
-    // Run one request for each observable
-    // (A way to run multiple async tasks sequentially inspired by:
-    //  https://jrsinclair.com/articles/2019/how-to-run-async-js-in-parallel-or-sequential/ )
-    const starterPromise = Promise.resolve(null);
-    await observables.reduce(
-      (p, obs) => p.then(() => addObservable(base_url, api_key, caseid, obs)),
-      starterPromise
-    ).catch((err_msg) => {
-        console.error(err_msg); // log whole message
-        resolve({'error': err_msg.split("\n", 1)[0]}); // send the first line to frontend
-        return;
-      }
-    );
-    resolve({});
-  });
-}
-  
-function addObservable(base_url, api_key, caseid, obs) {
-  return new Promise( function(resolve, reject) {
-    //console.log("Adding observable:", obs);
-    request({
-        method: 'POST',
-        url: base_url + 'api/case/' + caseid + "/artifact",
-        auth: {'bearer': api_key},
-        json: true,
-        body: obs,
-        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
-        rejectUnauthorized: false,
-      },
-      // handler of the reply from The Hive - just return as reply
-      function (error, response, body) {
-        if (error) {
-          reject("ERROR when trying to send request to The Hive: " + error);
-        }
-        else if (response.statusCode < 200 || response.statusCode >= 300) {
-          reject("ERROR: Unexpected reply received from The Hive: " + response.statusCode + " " + response.statusMessage + "\n" + JSON.stringify(body));
-        }
-        else {
-          // success - continue with the next observable
-          resolve("OK");
-          resolve({})
-        }
-      } // handler function
-    ); // request()
-  }); //Promise()
-}
-
-
diff --git a/roles/build/files/thehive_button/thehive_button/.eslintrc b/roles/build/files/thehive_button/thehive_button/.eslintrc
deleted file mode 100644
index 64eba86..0000000
--- a/roles/build/files/thehive_button/thehive_button/.eslintrc
+++ /dev/null
@@ -1,7 +0,0 @@
----
-extends: "@elastic/kibana"
-
-settings:
-  import/resolver:
-    '@elastic/eslint-import-resolver-kibana':
-      rootPackageName: 'thehive_button'
diff --git a/roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json b/roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json
deleted file mode 100644
index 2c63c08..0000000
--- a/roles/build/files/thehive_button/thehive_button/.kibana-plugin-helpers.json
+++ /dev/null
@@ -1,2 +0,0 @@
-{
-}
diff --git a/roles/build/files/thehive_button/thehive_button/index.js b/roles/build/files/thehive_button/thehive_button/index.js
deleted file mode 100644
index fa69c75..0000000
--- a/roles/build/files/thehive_button/thehive_button/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import newCaseRoute from './server/routes/newcase';
-
-export default function (kibana) {
-  return new kibana.Plugin({
-    require: [], //['elasticsearch'],
-    name: 'thehive_button',
-    uiExports: {
-      visTypes: [
-        'plugins/thehive_button/main',
-      ],
-    },
-
-    init(server, options) { // eslint-disable-line no-unused-vars
-      // Add server routes and initialize the plugin here
-      newCaseRoute(server);
-    }
-  });
-}
-
diff --git a/roles/build/files/thehive_button/thehive_button/package.json b/roles/build/files/thehive_button/thehive_button/package.json
deleted file mode 100644
index e1c070d..0000000
--- a/roles/build/files/thehive_button/thehive_button/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "name": "thehive_button",
-  "version": "1.0.0",
-  "description": "Visualisation plugin which creates a simple button to create a new case in The Hive.",
-  "main": "index.js",
-  "kibana": {
-    "version": "7.4.2"
-  },
-  "scripts": {
-    "lint": "eslint .",
-    "start": "plugin-helpers start",
-    "build": "plugin-helpers build"
-  },
-  "dependencies": {
-    "request": "^2.88.0",
-    "@elastic/eui": "10.4.2",
-    "react": "^16.8.0"
-  },
-  "devDependencies": {
-    "@elastic/eslint-config-kibana": "link:../../packages/eslint-config-kibana",
-    "@elastic/eslint-import-resolver-kibana": "link:../../packages/kbn-eslint-import-resolver-kibana",
-    "@kbn/plugin-helpers": "link:../../packages/kbn-plugin-helpers",
-    "babel-eslint": "^9.0.0",
-    "eslint": "^5.6.0",
-    "eslint-plugin-babel": "^5.2.0",
-    "eslint-plugin-import": "^2.14.0",
-    "eslint-plugin-jest": "^21.26.2",
-    "eslint-plugin-jsx-a11y": "^6.1.2",
-    "eslint-plugin-mocha": "^5.2.0",
-    "eslint-plugin-no-unsanitized": "^3.0.2",
-    "eslint-plugin-prefer-object-spread": "^1.2.1",
-    "eslint-plugin-react": "^7.11.1",
-    "expect.js": "^0.3.1"
-  }
-}
diff --git a/roles/build/files/thehive_button/thehive_button/public/create_case.js b/roles/build/files/thehive_button/thehive_button/public/create_case.js
deleted file mode 100644
index fc8edd6..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/create_case.js
+++ /dev/null
@@ -1,101 +0,0 @@
-// Functions to send data to Kibana endpoints
-
-import chrome from 'ui/chrome';
-
-// Create a new Case in The Hive via its API
-// Return a Promise which resolves to object with ID of the new case ('id' attr) or error message ('error' attr)
-export function createTheHiveCase(base_url, api_key, title, descr, severity, startDate, owner, flag, tlp, tags) {
-  // Prepare data
-  var data = JSON.stringify({
-    "base_url": base_url,
-    "api_key": api_key,
-    "body": {
-      "title": title,
-      "description": descr,
-      "severity": severity, // number: 1=low, 2=medium, 3=high
-      "startDate": startDate,
-      "owner": owner, // user name the case will be assigned to
-      "flag": flag, // bool
-      "tlp": tlp, // number: 0=white, 1=green, 2=amber, 3=red
-      "tags": tags, // array of strings
-    }
-  });
-  console.log("TheHiveButton: Sending request to API endpoint 'new_case':", data);
-  var kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/new_case');
-
-  return new Promise(function (resolve, reject) {
-    // Create AJAX request
-    var xhr = new XMLHttpRequest();
-    
-    // Listener to process reply
-    xhr.onreadystatechange = function () {
-      if (this.readyState != 4) {
-        return; // response not ready yet
-      }
-      if (this.status == 200) {
-        const resp = JSON.parse(this.responseText);
-        console.log("TheHiveButton: Response from backend:", resp);
-        if ("error" in resp) {
-          resolve({"error": resp.error});
-        }
-        else if (resp.status_code != 201) {
-          resolve({"error": "Unexpected reply received from The Hive: [" + resp.status_code + "] " + resp.status_msg});
-        }
-        else {
-          resolve({"id": resp.body.id}); // return ID of the new case
-        }
-      }
-      else {
-        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
-        resolve({"error": "Error " + this.status + ": " + this.statusText});
-      }
-    }
-
-    // Send the AJAX request
-    xhr.open("POST", kibana_endpoint_url);
-    xhr.setRequestHeader("Content-Type", "application/json");
-    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
-    xhr.send(data);
-  });
-}
-
-// Add observables to an existing Case in The Hive
-// (send the list of observables to our backend endpoint, it pushes them to The Hive)
-export function addCaseObservables(base_url, api_key, caseid, observables) {
-  const kibana_endpoint_url = chrome.addBasePath('/api/thehive_button/add_observables');
-  const data = JSON.stringify({
-    "base_url": base_url,
-    "api_key": api_key,
-    "caseid": caseid,
-    "observables": observables,
-  });
-  console.log("TheHiveButton: Sending request to API endpoint 'add_observables':", data);
-  
-  return new Promise(function (resolve, reject) {
-    // Create AJAX request
-    var xhr = new XMLHttpRequest();
-    
-    // Listener to process reply
-    xhr.onreadystatechange = function () {
-      if (this.readyState != 4) {
-        return; // response not ready yet
-      }
-      if (this.status == 200) {
-        const resp = JSON.parse(this.responseText);
-        console.log("TheHiveButton: Response from backend:", resp);
-        resolve(resp);
-      }
-      else {
-        console.log("TheHiveButton: Error " + this.status + ": " + this.statusText);
-        resolve({"error": "Error " + this.status + ": " + this.statusText});
-      }
-    }
-
-    // Send the AJAX request
-    xhr.open("POST", kibana_endpoint_url);
-    xhr.setRequestHeader("Content-Type", "application/json");
-    xhr.setRequestHeader("kbn-xsrf", "thehive_plugin"); // this header must be set, although its content is probably irrelevant
-    xhr.send(data);
-  });
-}
-
diff --git a/roles/build/files/thehive_button/thehive_button/public/env.js b/roles/build/files/thehive_button/thehive_button/public/env.js
deleted file mode 100644
index 4321b85..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/env.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// Default plugin configuration
-export const THEHIVE_URL = 'https://hive.gn4-3-wp8-soc.sunet.se/';
-export const THEHIVE_API_KEY = '5LymseWiurZBrQN8Kqp8O+9KniTL5cE0';
-export const THEHIVE_OWNER = 'admin'; // default owner account of the created cases
diff --git a/roles/build/files/thehive_button/thehive_button/public/main.js b/roles/build/files/thehive_button/thehive_button/public/main.js
deleted file mode 100644
index ee46d73..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/main.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import { THEHIVE_API_KEY, THEHIVE_URL, THEHIVE_OWNER } from './env';
-import { TheHiveButtonVisComponent } from './vis_controller';
-import { theHiveButtonRequestHandlerProvider } from './request_handler';
-import { optionsEditor } from './options_editor';
-
-import { VisFactoryProvider } from 'ui/vis/vis_factory';
-import { VisTypesRegistryProvider } from 'ui/registry/vis_types';
-import { DefaultEditorSize } from 'ui/vis/editor_size';
-
-
-function TheHiveButtonVisProvider(Private) {
-  const VisFactory = Private(VisFactoryProvider);
-
-  //console.log("default URL:", THEHIVE_URL);
-  //console.log("default API key:", THEHIVE_API_KEY);
-
-  return VisFactory.createReactVisualization({
-    name: 'thehive_button',
-    title: 'The Hive Case',
-    icon: 'alert',
-    description: 'A button to create a new Case in The Hive.',
-    //requiresUpdateStatus: [Status.PARAMS, Status.RESIZE, Status.UI_STATE],
-    visConfig: {
-      component: TheHiveButtonVisComponent,
-      defaults: {
-        // add default parameters
-        url: THEHIVE_URL,
-        apikey: THEHIVE_API_KEY,
-        owner: THEHIVE_OWNER,
-        obsFields: [], // list of objects, e.g. {name: "clientip", type: "ip", cnt: 100}
-      }
-    },
-    //editor: 'default',
-    editorConfig:  {
-      optionTabs: [
-        {
-          name: "options",
-          title: "Options",
-          editor: optionsEditor,
-        }
-      ],
-      defaultSize: DefaultEditorSize.LARGE,
-    },
-//       optionsTemplate: optionsEditor, //optionsTemplate,
-//       //enableAutoApply: true,
-//     },
-    requestHandler: 'theHiveButtonRequestHandler', // own request handler
-    responseHandler: 'none', // pass data as returned by requestHandler
-  });
-}
-
-// register the provider with the visTypes registry
-VisTypesRegistryProvider.register(TheHiveButtonVisProvider);
-
diff --git a/roles/build/files/thehive_button/thehive_button/public/options_editor.js b/roles/build/files/thehive_button/thehive_button/public/options_editor.js
deleted file mode 100644
index 38762bd..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/options_editor.js
+++ /dev/null
@@ -1,176 +0,0 @@
-import React from 'react';
-import {
-  EuiForm,
-  EuiFormRow,
-  EuiTitle,
-  EuiSpacer,
-  EuiFieldText,
-  EuiFieldNumber,
-  EuiSelect,
-  EuiFlexGroup,
-  EuiFlexItem,
-  EuiButton,
-  EuiButtonIcon,
-} from '@elastic/eui';
-
-// Default data types in The Hive
-const DEFAULT_THE_HIVE_TYPES = [
-  '',
-  'autonomous-system',
-  'domain',
-  'file',
-  'filename',
-  'fqdn',
-  'hash',
-  'ip',
-  'mail',
-  'mail_subject',
-  'regexp',
-  'registry',
-  'uri_path',
-  'url',
-  'user-agent',
-  'other',	
-];
-
-// Options for EuiSelect for selection of field's data type in TheHive
-const typesOptions = DEFAULT_THE_HIVE_TYPES.map( dt => ({value: dt, text: dt}) );
-
-export function optionsEditor(props) {
-  //console.log("editor render(), props:", props);
-  const { stateParams, setValue, setValidity, vis } = props;
-  
-  // onClick/onChange handlers
-  const obsAddNew = () => {
-    const newObsFields = [...stateParams.obsFields, {name: "", type: "", cnt: 100}];
-    // For some reason, first click on the button after editor is loaded does
-    // nothing. Calling setValue twice here fixes it.  
-    setValue("obsFields", newObsFields);
-    setValue("obsFields", newObsFields);
-//     setValidity(false); // since new row is empty, form is always invalid
-  };
-  const obsRemove = (ix) => {
-    let newArray = [...stateParams.obsFields];
-    newArray.splice(ix, 1);
-    setValue("obsFields", newArray);
-//     validate();
-  }
-  const obsSetName = (ix, name) => {
-    let newArray = [...stateParams.obsFields];
-    newArray[ix].name = name;
-    setValue("obsFields", newArray);
-//     validate();
-  } 
-  const obsSetType = (ix, type) => {
-    let newArray = [...stateParams.obsFields];
-    newArray[ix].type = type;
-    setValue("obsFields", newArray);
-//     validate();
-  }
-  const obsSetCnt = (ix, cnt) => {
-    let newArray = [...stateParams.obsFields];
-    newArray[ix].cnt = parseInt(cnt);
-    setValue("obsFields", newArray);
-//     validate();
-  }
-//   const validate = () => {
-//     let valid = true;
-//     for (let field of stateParams.obsFields) {
-//       if (field.name == "" || field.type == "" || field.cnt == "") {
-//         valid = false;
-//         break;
-//       }
-//     }
-//     // TODO check for duplicate fields
-//     setValidity(valid);
-//   }
-  
-  // Get list of all fields in index (except those beginning with "_" or "@")
-  // and create "options" parameter for EuiSelect.
-  // Also, fields with "aggregatable=false" are removed, as they can't be used
-  // with "terms" aggregation we need.
-  // See this for details: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/fielddata.html
-  // Empty field is added at the beginning, meaning "no selection yet".
-  const fieldOptions = [{value: "", text: ""}].concat(
-    vis.indexPattern.fields.raw.filter( f => (f.name[0] != "_" && f.name[0] != "@" && f.aggregatable) ).map( f => ({value: f.name, text: `${f.name} (${f.type})`}) )
-  );
-
-  return <EuiForm>
-    <EuiFormRow fullWidth={true} label="Base URL of The Hive">
-      <EuiFieldText
-        fullWidth={true}
-        value={stateParams.url}
-        onChange={e => setValue('url', e.target.value)}
-        isInvalid={stateParams.url == ""}
-      />
-    </EuiFormRow>
-    <EuiFlexGroup>
-      <EuiFlexItem grow={1}>
-        <EuiFormRow label="API key to access The Hive" helpText="API key of a user with write permission.">
-          <EuiFieldText
-            fullWidth={true}
-            value={stateParams.apikey}
-            onChange={e => setValue('apikey', e.target.value)}
-            isInvalid={stateParams.apikey == ""}
-          />
-        </EuiFormRow>
-      </EuiFlexItem>
-      <EuiFlexItem grow={1}>
-        <EuiFormRow label="Assignee" helpText="User to assign created cases to. Must be a valid username from The Hive instance.">
-          <EuiFieldText
-            value={stateParams.owner}
-            onChange={e => setValue('owner', e.target.value)}
-            isInvalid={stateParams.owner == ""}
-          />
-        </EuiFormRow>
-      </EuiFlexItem>
-    </EuiFlexGroup>
-    <EuiTitle size="s"><h3>Fields to get potential observables from ...</h3></EuiTitle>
-    <EuiSpacer size="s" />
-    {stateParams.obsFields.map( (field, ix) => (
-      <EuiFlexGroup key={ix} gutterSize="s">
-        <EuiFlexItem grow={3}>
-          <EuiFormRow label="Field name">
-            <EuiSelect
-              options={fieldOptions}
-              value={field.name}
-              onChange={ e => obsSetName(ix, e.target.value) }
-              isInvalid={field.name == ""}
-            />
-          </EuiFormRow>
-        </EuiFlexItem>
-        <EuiFlexItem grow={2}>
-          <EuiFormRow label="Data type in The Hive">
-            <EuiSelect
-              options={typesOptions}
-              value={field.type}
-              onChange={ e => obsSetType(ix, e.target.value) }
-              isInvalid={field.type == ""}
-            />
-          </EuiFormRow>
-        </EuiFlexItem>
-        <EuiFlexItem grow={1}>
-          <EuiFormRow label="Max items shown">
-            <EuiFieldNumber
-              min={1}
-              max={1000}
-              value={parseInt(field.cnt)}
-              onChange={ e => obsSetCnt(ix, e.target.value) }
-              isInvalid={!(field.cnt > 0)}
-            />
-          </EuiFormRow>
-        </EuiFlexItem>
-        <EuiFlexItem grow={false}>
-          <EuiFormRow hasEmptyLabelSpace>
-            <EuiButtonIcon iconType="trash" iconSize="m" color="danger" aria-label="Remove field" onClick={ e => obsRemove(ix) } />
-          </EuiFormRow>
-        </EuiFlexItem>
-      </EuiFlexGroup>
-    ))}
-    <EuiFlexGroup>
-      <EuiFlexItem grow={false}>
-        <EuiButton iconType="plusInCircleFilled" color="primary" onClick={obsAddNew}>Add new field ...</EuiButton>
-      </EuiFlexItem>
-    </EuiFlexGroup>
-  </EuiForm>
-}
diff --git a/roles/build/files/thehive_button/thehive_button/public/options_template.html b/roles/build/files/thehive_button/thehive_button/public/options_template.html
deleted file mode 100644
index ef99657..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/options_template.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="form-group">
-  <p><label>Base URL of The Hive</label>
-  <input ng-model="editorState.params.url" class=form-control /></p>
-  <p><label>API key</label>
-  <input ng-model="editorState.params.apikey" class=form-control /></p>
-  <p><label>User name to use as the owner of cases created from here</label>
-  <input ng-model="editorState.params.owner" class=form-control /></p>
-</div>
diff --git a/roles/build/files/thehive_button/thehive_button/public/request_handler.js b/roles/build/files/thehive_button/thehive_button/public/request_handler.js
deleted file mode 100644
index bdbb0f4..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/request_handler.js
+++ /dev/null
@@ -1,195 +0,0 @@
-import { CourierRequestHandlerProvider as courierRequestHandlerProvider } from 'ui/vis/request_handlers/courier';
-import { SearchSourceProvider } from 'ui/courier/search_source';
-import { RequestAdapter, DataAdapter } from 'ui/inspector/adapters';
-import { VisRequestHandlersRegistryProvider } from 'ui/registry/vis_request_handlers';
-import { AggConfig } from 'ui/vis/agg_config';
-import { AggConfigs } from 'ui/vis/agg_configs';
-import { getTime } from 'ui/timefilter/get_time';
-import { i18n } from '@kbn/i18n';
-import { has } from 'lodash';
-import { calculateObjectHash } from 'ui/vis/lib/calculate_object_hash';
-import { getRequestInspectorStats, getResponseInspectorStats } from 'ui/courier/utils/courier_inspector_utils';
-import chrome from 'ui/chrome';
-
-// Maximum number of unique values of each field (observables) to fetch
-const MAX_NUMBER_OF_TERMS = 5;
-
-const handleCourierRequest = courierRequestHandlerProvider().handler;
-
-// Register new RaquestHandlerProvider 
-const theHiveButtonRequestHandlerProvider = function () {
-  return {
-    name: 'theHiveButtonRequestHandler',
-    handler: theHiveButtonRequestHandler,
-  }
-}
-VisRequestHandlersRegistryProvider.register(theHiveButtonRequestHandlerProvider);
-
-export {theHiveButtonRequestHandlerProvider, theHiveButtonRequestHandler};
-
-
-// The request handler function itself
-async function theHiveButtonRequestHandler(params) {
-  //console.log("theHiveButtonRequestHandler params:", params);
-  
-  let index = params.index;
-  let partialRows = params.partialRows;
-  let metricsAtAllLevels = params.metricsAtAllLevels;
-  let timeRange = params.timeRange;
-  let query = params.query;
-  let filters = params.filters;
-  let inspectorAdapters = params.inspectorAdapters;
-  let queryFilter = params.queryFilter;
-  let forceFetch = params.forceFetch;
-  // our own confiuration:
-  // list of fields to get potential observables from
-  // (each "field" is object {name: str, type: str, cnt: int})
-  let obsFields = params.visParams.obsFields;
-  
-  // filter out invalid field specifications
-  obsFields = obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
-  
-  if (obsFields.length == 0) {
-    //console.log("theHiveButtonRequestHandler: Empty obsFields, nothing to do")
-    return {} // no fields specified, nothing to do
-  }
-
-  // === Prepare request to ask for unique values of all selected fields ===
-
-  // Construct a query for ElasticSearch
-  // Get "terms" (most common unique values) for each field of obsFields
-  const aggs_dsl = {}
-  for (let field of obsFields) {
-    aggs_dsl[field.name] = {
-      terms: {
-          field: field.name,
-          size: field.cnt,
-          order: {_count: "desc"}
-        }
-    };
-  }
-  //console.log("aggs_dsl:", aggs_dsl);
-  
-  // Create empty AggConfigs
-  // (We could pass specifications of a metric and the buckets here,
-  //  but default processing functions assume multiple buckets are sub-buckets,
-  //  which is not what we want. So we must do a "hack" and manually create  
-  //  query directly in format for ElasticSearch)
-  const aggs = new AggConfigs(params.index, []);
-  
-  // === Some magic to get searchSource object ===
-  // (inspired by https://github.com/fbaligand/kibana-enhanced-table/blob/7.4/public/data_load/enhanced-table-request-handler.js)
-  // (I don't understand it, but it works)
-
-  let $injector = await chrome.dangerouslyGetActiveInjector();
-  let Private = $injector.get('Private');
-  let SearchSource = Private(SearchSourceProvider);
-  let searchSource = new SearchSource();
-  searchSource.setField('index', index);
-  searchSource.setField('size', 0);
-
-  inspectorAdapters.requests = new RequestAdapter();
-  inspectorAdapters.data = new DataAdapter();
-  
-
-  // === Execute query ===
-  // We could call standard "courier" here, but it tries to convert the response
-  // to a table, which fails in our case, so we copied the main code of courier
-  // and modified it here.
-  
-  const abortSignal = false;
-  
-  const timeFilterSearchSource = searchSource.createChild({ callParentStartHandlers: true });
-  const requestSearchSource = timeFilterSearchSource.createChild({ callParentStartHandlers: true });
-
-  aggs.setTimeRange(timeRange);
-
-  // For now we need to mirror the history of the passed search source, since
-  // the request inspector wouldn't work otherwise.
-  Object.defineProperty(requestSearchSource, 'history', {
-    get() {
-      return searchSource.history;
-    },
-    set(history) {
-      return searchSource.history = history;
-    }
-  });
-
-  // This has been modified to override DSL format by ours
-//   requestSearchSource.setField('aggs', function () {
-//     return aggs.toDsl(metricsAtAllLevels);
-//   });
-  requestSearchSource.setField('aggs', aggs_dsl); 
-
-  requestSearchSource.onRequestStart((searchSource, searchRequest) => {
-    return aggs.onSearchRequestStart(searchSource, searchRequest);
-  });
-
-  if (timeRange) {
-    timeFilterSearchSource.setField('filter', () => {
-      return getTime(searchSource.getField('index'), timeRange);
-    });
-  }
-
-  requestSearchSource.setField('filter', filters);
-  requestSearchSource.setField('query', query);
-
-  const reqBody = await requestSearchSource.getSearchRequestBody();
-
-  const queryHash = calculateObjectHash(reqBody);
-  // We only need to reexecute the query, if forceFetch was true or the hash of the request body has changed
-  // since the last request
-  const shouldQuery = forceFetch || (searchSource.lastQuery !== queryHash);
-
-  if (shouldQuery) {
-    inspectorAdapters.requests.reset();
-    const request = inspectorAdapters.requests.start(
-      i18n.translate('common.ui.vis.courier.inspector.dataRequest.title', { defaultMessage: 'Data' }),
-      {
-        description: i18n.translate('common.ui.vis.courier.inspector.dataRequest.description',
-          { defaultMessage: 'This request queries Elasticsearch to fetch the data for the visualization.' }),
-      }
-    );
-    request.stats(getRequestInspectorStats(requestSearchSource));
-
-    try {
-      // Abort any in-progress requests before fetching again
-      if (abortSignal) {
-        abortSignal.addEventListener('abort', () => requestSearchSource.cancelQueued());
-      }
-
-      const response = await requestSearchSource.fetch();
-      //console.log("raw response:", response);
-
-      searchSource.lastQuery = queryHash;
-
-      request
-        .stats(getResponseInspectorStats(searchSource, response))
-        .ok({ json: response });
-
-      searchSource.rawResponse = response;
-    } catch(e) {
-      // Log any error during request to the inspector
-      request.error({ json: e });
-      throw e;
-    } finally {
-      // Add the request body no matter if things went fine or not
-      requestSearchSource.getSearchRequestBody().then(req => {
-        request.json(req);
-      });
-    }
-  }
-
-  // === Copy of courier code ends here, now we parse the response ===
-  
-  const resp = searchSource.rawResponse;
-  // Return as object containing a list of unique values (terms) for each 
-  // requested field
-  let unique_values_lists = {}
-  for (let field of obsFields) {
-    unique_values_lists[field.name] = resp.aggregations[field.name].buckets.map( (x) => x.key );
-  }
-
-  //console.log("Final lists:", unique_values_lists);
-  return unique_values_lists;
-}
diff --git a/roles/build/files/thehive_button/thehive_button/public/vis.less b/roles/build/files/thehive_button/thehive_button/public/vis.less
deleted file mode 100644
index b6f887a..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/vis.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.myvis-container-div {
-  padding: 1em;
-}
diff --git a/roles/build/files/thehive_button/thehive_button/public/vis_controller.js b/roles/build/files/thehive_button/thehive_button/public/vis_controller.js
deleted file mode 100644
index 8b23222..0000000
--- a/roles/build/files/thehive_button/thehive_button/public/vis_controller.js
+++ /dev/null
@@ -1,555 +0,0 @@
-//import { Status } from 'ui/vis/update_status';
-import { toastNotifications } from 'ui/notify';
-import { createTheHiveCase, addCaseObservables } from './create_case';
-//import vis_template from './vis_template.html';
-
-import React, { Component } from 'react';
-import {
-  EuiButton,
-  EuiButtonEmpty,
-  EuiModal,
-  EuiModalBody,
-  EuiModalFooter,
-  EuiModalHeader,
-  EuiModalHeaderTitle,
-  EuiOverlayMask,
-  EuiTitle,
-  EuiFlexGroup,
-  EuiFlexItem,
-  EuiSpacer,
-  EuiForm,
-  EuiFormRow,
-  EuiFieldText,
-  EuiTextArea,
-  EuiSuperSelect,
-  EuiBasicTable,
-  EuiCheckbox,
-  makeId,
-} from '@elastic/eui';
-
-
-// ********** React components **********
-
-// Main React component - the root of visualization
-export class TheHiveButtonVisComponent extends Component {
-  render() {
-    //console.log("TheHiveButtonVisComponent.render(), props:", this.props);
-    return (
-      <div>
-        <NewCaseButton params={this.props.vis.params} observables={this.props.visData} />
-      </div>
-    );
-  }
-
-  componentDidMount() {
-    this.props.renderComplete();
-  }
-
-  componentDidUpdate() {
-    this.props.renderComplete();
-  }
-}
-
-// Button to show the pop-up window (modal)
-// Props:
-//  .params - visualization parameters (from vis.params)
-//  .observables - object with lists of potential observables to add to the Case
-//     for each field in params.obsFields there should be a key in this object
-//     containing list of observables (this is returned by request_handler) 
-class NewCaseButton extends Component {
-
-  constructor(props) {
-    super(props);
-    // Filter out invalid obsField specifications
-    this.obsFields = props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt > 0) );
-    //console.log("Filtered field specs:", this.obsFields);
-    
-    // The complete state is here, so it's kept even when modal is closed
-    this.state = {
-      isModalVisible: false,
-      isWorking: false, // used to show a spinner on submit button
-      ...this.create_initial_state(),
-    }
-    
-    this.resetCnt = 0; // used to change Modal component key on each form reset
-
-    // Each handler function in a class (method) must be "binded" this way
-    this.closeModal = this.closeModal.bind(this);
-    this.showModal = this.showModal.bind(this);
-    this.resetForm = this.resetForm.bind(this);
-
-    this.onTitleChange = this.onTitleChange.bind(this);
-    this.onSeverityChange = this.onSeverityChange.bind(this);
-    this.onTLPChange = this.onTLPChange.bind(this);
-    this.onDescriptionChange = this.onDescriptionChange.bind(this);
-    
-    this.onObsSelectionChange = this.onObsSelectionChange.bind(this);
-    this.onObsDataChange = this.onObsDataChange.bind(this);
-    
-    this.submitCase = this.submitCase.bind(this);
-  }
-
-  create_initial_state() {
-    // create a new instance of initial state definition
-    let initial_state = {
-      // Case parameters
-      title: "",
-      description: "\n\n--\nCreated from Kibana",
-      severity: "2", // medium
-      tlp: "2", // amber
-      tags: [], // TODO (not implemented yet)
-      obsData: {}, // state of observables form fields (obsData->field->index->{descr,tlp,ioc,tags})
-      obsSel: {}, // list of observable selections (obsSel->field->list_of_selected_indices)
-    }
-    // pre-fill state of each observable to defaults
-    const initial_field_data = {descr: "", tlp: 2, ioc: false, tags: []};
-    for (let field of this.obsFields) {
-      const n_obs = this.props.observables[field.name].length;
-      // fill obsData with new copies of initial_field_data
-      initial_state.obsData[field.name] = new Array(n_obs).fill().map((_)=>({...initial_field_data}));
-      // nothing is selected
-      initial_state.obsSel[field.name] = new Array();
-    }
-    return initial_state;
-  }
-
-  componentDidUpdate(prevProps) {
-    // If list of observables was updated or obsFields setting has changed, 
-    // reset the component state and precomputed variables.
-    if (this.props.observables != prevProps.observables) {
-      if (this.props.params.obsFields != prevProps.params.obsFields) {
-        // when obsFields change, observables must change as well, so this "if"
-        // can be inside the first one.
-        // Filter out invalid obsField specifications
-        this.obsFields = this.props.params.obsFields.filter( f => (f.name != "" && f.type != "" && f.cnt && f.cnt > 0) );
-        //console.log("Filtered field specs:", this.obsFields);
-      }
-      //console.log("New list of observables, resetting form.");
-      this.resetForm();
-    }
-  }
-
-  resetForm() {
-    this.setState(this.create_initial_state());
-    this.resetCnt += 1; // this changes the key of ModalContent, causing it to be replaced by new DOM elelments (otherwise, not all things are reset properly)
-    this.forceUpdate();
-  }
-
-  closeModal() {
-    this.setState({ isModalVisible: false });
-  }
-
-  showModal() {
-    this.setState({ isModalVisible: true });
-  }
-
-  // Event handlers for change of case parameter
-  onTitleChange(evt) {
-    this.setState({title: evt.target.value});
-  }
-  onSeverityChange(value) {
-    this.setState({severity: value});
-  }
-  onTLPChange(value) {
-    this.setState({tlp: value});
-  }
-  onDescriptionChange(evt) {
-    this.setState({description: evt.target.value});
-  }
-
-  // Event handler for observable (de)selection
-  onObsSelectionChange(fieldName, selectedItems) {
-    // Extract indices from the items and store them into state
-    const selectedIndices = selectedItems.map(item4 => item4.i);
-    this.setState((state, props) => {
-      let newObsSel = {...this.state.obsSel};
-      newObsSel[fieldName] = selectedIndices;
-      return {obsSel: newObsSel};
-    });
-  }
-
-  // Event handler for edit of a form field in observable row
-  // - fieldName: which field (table of observables)
-  // - ix: index of the observable in the field's table
-  // - param: one of: descr,tlp,ioc,tags
-  // - value: new value of the form field
-  onObsDataChange(fieldName, ix, param, value) {
-    this.setState((state, props) => {
-      let newObsData = {...this.state.obsData};
-      newObsData[fieldName][ix][param] = value;
-      return {obsData: newObsData};
-    });
-  }
-
-  // Render function
-  render() {
-    let modal;
-    if (this.state.isModalVisible) {
-      modal = <ModalContent
-        resetCnt={this.resetCnt} // used to change "key" of modalBody, causing all form fields to be re-created (some things are not reset properly by reseting state only)
-        close={this.closeModal}
-        reset={this.resetForm}
-        fields={this.obsFields}
-        observables={this.props.observables}
-        // form state
-        title={this.state.title}
-        description={this.state.description}
-        severity={this.state.severity}
-        tlp={this.state.tlp}
-        tags={this.state.tags}
-        obsData={this.state.obsData}
-        obsSel={this.state.obsSel}
-        spinner={this.state.isWorking}
-        // event handlers
-        onTitleChange={this.onTitleChange}
-        onSeverityChange={this.onSeverityChange}
-        onTLPChange={this.onTLPChange}
-        onDescriptionChange={this.onDescriptionChange}
-        onObsSelectionChange={this.onObsSelectionChange}
-        onObsDataChange={this.onObsDataChange}
-        submitCase={this.submitCase}
-      />;
-    }
-    return (
-      <div>
-        <EuiButton fill iconType="alert" color="danger" onClick={this.showModal}>Create new Case ...</EuiButton>
-        {modal}
-      </div>
-    );
-  }
-
-  // Submit case button handler
-  async submitCase(evt) {
-    const params = this.props.params;
-    
-    // Get case parameters
-    const title = this.state.title;
-    const descr = this.state.description;
-    const severity = parseInt(this.state.severity);
-    const start_date = null;
-    const owner = params.owner;
-    const flag = false;
-    const tlp = parseInt(this.state.tlp);
-    const tags = this.state.tags;
-    
-    if (!title) {
-      toastNotifications.addDanger("Title can't be empty");
-      return;
-    }
-    
-    // Get list of selected observables and their params
-    let observables = [];
-    for (let field of this.obsFields) {
-      let selectionIndices = [...this.state.obsSel[field.name]]; // make a copy
-      selectionIndices.sort();
-      for (let i = 0; i < selectionIndices.length; i++) {
-        const j = selectionIndices[i]; // index of a selected obs. in the list of all observables
-        // fill in observable definition according to model at
-        // https://github.com/TheHive-Project/TheHiveDocs/blob/master/api/artifact.md
-        const obs = {
-          dataType: field.type,
-          data: this.props.observables[field.name][j],
-          message: this.state.obsData[field.name][j].descr,
-          tlp: this.state.obsData[field.name][j].tlp,
-          ioc: this.state.obsData[field.name][j].ioc,
-          tags: this.state.obsData[field.name][j].tags,
-        };
-        observables.push(obs);
-      }
-    }
-    
-    //console.log("Selected observables:", observables);
-    
-    // Check '/' at the end of base URL, add it if needed
-    let base_url = params.url;
-    if (base_url[base_url.length-1] != "/") {
-      base_url += "/";
-    }
-    
-    // Show spinner at submit button
-    this.setState({isWorking: true});
-    
-    // Submit request to create the case, handle response
-    let resp;
-    resp = await createTheHiveCase(base_url, params.apikey, title, descr, severity, start_date, owner, flag, tlp, tags);
-
-    if ('error' in resp) {
-      // Error contacting The Hive
-      console.error("TheHiveButton: ERROR when trying to create new case:", resp.error);
-      toastNotifications.addDanger("ERROR: " + resp.error);
-      this.setState({isWorking: false}); // Hide spinner
-      return;
-    }
-
-    console.log("TheHiveButton: Case created:", resp);
-    const case_id = resp.id;
-    const case_url = base_url + "index.html#/case/" + case_id + "/details";
-    
-    // Show notification
-    let obs_text;
-    if (observables.length > 0) {
-      obs_text = "Adding " + observables.length + " observables in background ...";
-    }
-    else {
-      obs_text = "(no observables added)";
-    }
-    toastNotifications.add({
-      title: "Case created",
-      color: "success",
-      iconType: "checkInCircleFilled",
-      text: (
-        <div>
-          <p><b><a href={case_url} target="_blank">Edit the new Case</a></b></p>
-          <p>{obs_text}</p>
-        </div>
-      ),
-    });
-    
-    // Close the popup window, reset form fields and hide spinner
-    this.closeModal();
-    this.resetForm();
-    this.setState({isWorking: false});
-     
-    // Open a new window with the case in The Hive
-    // (adding observables may take some time, so the case is opened first;
-    //  The Hive web is dynamic so the observables appear as they are added)
-    window.open(case_url, '_blank');
-    
-    if (observables.length == 0)
-      return;
-    
-    // Submit request to add observables
-    console.log("TheHiveButton: adding " + observables.length + " observables ...");
-    resp = await addCaseObservables(base_url, params.apikey, case_id, observables);
-    
-    if ('error' in resp) {
-      console.error("TheHiveButton: ERROR when trying to add observables: " + resp.error);
-      toastNotifications.addDanger("ERROR when trying to add observables: " + resp.error);
-    }
-    else {
-      console.log("TheHiveButton: Done, observables added.");
-      toastNotifications.add("Done, observables added.");
-    }
-  }
-}
-
-
-// The popup window with a form
-// props:
-//  - spinner: when true, disable form and show a spinner over it
-class ModalContent extends Component {
-  constructor(props) {
-    super(props);
-    // No state here, everything is in the parent class (NewCaseButton)
-    
-    // "Select" options
-    this.severityOptions = [
-      {value: "1", inputDisplay: "low"},
-      {value: "2", inputDisplay: "medium"},
-      {value: "3", inputDisplay: "high"},
-    ];
-    this.tlpOptions = [
-      {value: "0", inputDisplay: "white"},
-      {value: "1", inputDisplay: "green"},
-      {value: "2", inputDisplay: "amber"},
-      {value: "3", inputDisplay: "red"},
-    ];
-  }
-  
-  // Main render function
-  render() {
-    // TODO: replace Modal with Flyout?
-
-    // Note: onClick on EuiOverlayMask causes close of modal when clicked outside,
-    // implementation inspired by PR: https://github.com/elastic/eui/pull/3462/files#diff-c8fda532e48f75c94c343247cbc6b2d3R53-R60
-    return (
-      <EuiOverlayMask onClick={(evt) => {if (evt.target.classList.contains("euiOverlayMask")) this.props.close();} }>
-        <EuiModal onClose={this.props.close} maxWidth={false} initialFocus="[name=title]">
-          <EuiModalHeader>
-            <EuiModalHeaderTitle>Create a new case in The Hive</EuiModalHeaderTitle>
-          </EuiModalHeader>
-
-          <EuiModalBody key={this.props.resetCnt}>
-            <EuiForm style={{width: "800px"}}>
-              <EuiFlexGroup>
-                <EuiFlexItem grow={1}>
-                  <EuiFormRow label="Title" fullWidth>
-                    <EuiFieldText name="title" value={this.props.title} onChange={this.props.onTitleChange} required={true} fullWidth />
-                  </EuiFormRow>
-                </EuiFlexItem>
-                <EuiFlexItem grow={false}>
-                  <EuiFormRow label="Severity">
-                    <EuiSuperSelect
-                      options={this.severityOptions}
-                      valueOfSelected={this.props.severity}
-                      onChange={this.props.onSeverityChange}
-                    />
-                  </EuiFormRow>
-                </EuiFlexItem>
-                <EuiFlexItem grow={false}>
-                  <EuiFormRow label="TLP">
-                    <EuiSuperSelect
-                      prepend="TLP"
-                      options={this.tlpOptions}
-                      valueOfSelected={this.props.tlp}
-                      onChange={this.props.onTLPChange}
-                    />
-                  </EuiFormRow>
-                </EuiFlexItem>
-              </EuiFlexGroup>
-              <EuiFormRow label="Description" fullWidth>
-                <EuiTextArea
-                  defaultValue={this.props.description}
-                  onChange={this.props.onDescriptionChange}
-                  rows={4}
-                  fullWidth
-                />
-              </EuiFormRow>
-              
-              {this.props.fields.length > 0 && <EuiTitle size="s"><h3>Add observables from current query ...</h3></EuiTitle>}
-              {this.props.fields.map((field,ix) => (
-                <ObservablesTable
-                  key={field.name + ":" + this.props.resetCnt}
-                  fieldName={field.name}
-                  observables={this.props.observables[field.name]}
-                  obsData={this.props.obsData[field.name]}
-                  obsSel={this.props.obsSel[field.name]}
-                  onObsSelectionChange={this.props.onObsSelectionChange}
-                  onObsDataChange={this.props.onObsDataChange}
-                />
-              ))}
-            </EuiForm>
-          </EuiModalBody>
-
-          <EuiModalFooter>
-            <EuiButtonEmpty onClick={this.props.close}>Close</EuiButtonEmpty>
-            <EuiButtonEmpty onClick={this.props.reset}>Reset</EuiButtonEmpty>
-            <EuiButton onClick={this.props.submitCase} fill isLoading={this.props.spinner}>Create Case</EuiButton>
-          </EuiModalFooter>
-        </EuiModal>
-      </EuiOverlayMask>
-    );
-  }
-}
-
-// Table of potential observables taken from a given field, allowing to select
-// which observables to send to The Hive.
-// Props:
-//  fieldName - name of the field this table is for
-//  observables - list of observable IDs of this field
-//  obsData - array of objects specifying state of form fields in the table (.descr, .tlp, ...)
-//  obsSel - array of indices of selected observables
-class ObservablesTable extends Component {
-
-  constructor(props) {
-    super(props);
-    
-    // Table columns definition
-    this.columns = [
-      {
-        field: "id",
-        name: "Observable",
-      },
-      {
-        field: "descr",
-        name: "Description",
-        description: "Description of the observable in the context of the case",
-        render: (value, item1) => (<EuiFieldText
-          value={item1.descr}
-          onChange={(e) => this.props.onObsDataChange(props.fieldName, item1.i, "descr", e.target.value)}
-          disabled={!item1.selected}
-        />)
-      },
-      /*{
-        field: "tlp",
-        name: "TLP",
-        dataType: "number",
-        // TODO render and process changes
-      },*/
-      {
-        field: "ioc",
-        name: "Is IOC",
-        dataType: "boolean",
-        description: "Indicates if the observable is an IOC",
-        render: (value, item2) => (<EuiCheckbox
-          id={"ioc-checkbox-"+item2.id}
-          checked={item2.ioc}
-          onChange={(e) => this.props.onObsDataChange(props.fieldName, item2.i, "ioc", e.target.checked)}
-          disabled={!item2.selected}
-        />)
-      },
-      /*{
-        field: "tags",
-        name: "Tags",
-        // TODO render and process changes
-      },*/
-    ]
-    
-    // Create a reference to EuiBasicTable, so it's node can be accessed in componentDidMount
-    this.tableRef = React.createRef();
-  }
-
-  render() {
-    // Table data definition (convert props to format suitable for EuiBasicTable)
-    const n_obs = this.props.observables.length;
-    this.table_data = new Array(n_obs);
-    for (let i = 0; i < n_obs; i++) {
-      this.table_data[i] = {
-        id: this.props.observables[i],
-        descr: this.props.obsData[i].descr,
-        tlp: this.props.obsData[i].tlp,
-        ioc: this.props.obsData[i].ioc,
-        tags: this.props.obsData[i].tags,
-        // auxiliary fields, not shown in table:
-        i: i, // row index
-        selected: this.props.obsSel.includes(i),
-      };
-    }
-    
-    return (
-      <>
-        <EuiTitle size="xs"><h4>{this.props.fieldName}</h4></EuiTitle>
-        <EuiBasicTable
-          ref={this.tableRef}
-          columns={this.columns}
-          items={this.table_data}
-          itemId={(item3) => item3.id}
-          selection={ {onSelectionChange: (selectedItems) => this.props.onObsSelectionChange(this.props.fieldName, selectedItems) } }
-          noItemsMessage="No observables found"
-          rowProps={{
-            // Hack to allow selection by clicking anywhere in the table row
-            // (except input elements)
-            onClick: (e) => {
-              if (e.target.tagName != "INPUT") {
-                // simulate click on the first checkbox in the row to (de)select the row
-                e.currentTarget.querySelector("input").click();
-                e.currentTarget.blur(); // without this the focus remains on the row after click (results in different color)
-              }
-            },
-            tabIndex: "-1", // prevents focus on row by keyboard navigation
-          }}
-        />
-        <EuiSpacer size="l" />
-      </>
-    )
-  }
-  
-  componentDidMount() {
-    // There's no way to specify initially selected items in EuiBasicTable by 
-    // props, but we may need to select some (in case a user selects some obs.,
-    // closes the modal and opens it again).
-    // However, the selection is stored as a 'selection' field of table's state,
-    // so here we directly edit the state just after the table is created.
-    
-    // Prepare the 'selection' array - it should contain a list of selected row specifications
-    let selection = [];
-    for (let ix of this.props.obsSel) {
-      selection.push(this.table_data[ix]);
-    }
-    
-    // Get ref to EuiBasicTable element and update its state 
-    const table_node = this.tableRef.current;
-    table_node.setState({selection: selection});
-  }
-}
-
diff --git a/roles/build/files/thehive_button/thehive_button/server/routes/newcase.js b/roles/build/files/thehive_button/thehive_button/server/routes/newcase.js
deleted file mode 100644
index 175dee8..0000000
--- a/roles/build/files/thehive_button/thehive_button/server/routes/newcase.js
+++ /dev/null
@@ -1,153 +0,0 @@
-const request = require('request');
-//const fs = require('fs');
-//const path = require('path');
-
-//const caFile = path.resolve(__dirname, '../../ca.cert.pem'); // TODO resolve where the CA file should be located / configured
-
-export default function (server) {
-  server.route({
-    path: '/api/thehive_button/new_case',
-    method: 'POST',
-    handler: newCaseHandler,
-  });
-  server.route({
-    path: '/api/thehive_button/add_observables',
-    method: 'POST',
-    handler: addObservablesHandler,
-  });
-}
-
-// Handler of ajax requests to create a new Case in The Hive
-function newCaseHandler(req, resp) {
-  // Parse the request to get connection parameters
-  // (everything is configured in forntend and sent as part of the request,
-  //  since I don't know how to configure the backend)
-  var base_url = req.payload['base_url'];
-  var api_key = req.payload['api_key'];
-  var req_body = req.payload['body'];
-
-  // check it's a valid URL with slash at the end
-  if (!base_url) {
-    return {'error': 'Base URL not set'};
-  }
-  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
-  //if (!base_url.match(/https?:\/\/.*\//)) {
-    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
-  }
-  if (!api_key) {
-    return {'error': 'API key not set'};
-  }
-
-  return new Promise( function(resolve, reject) {
-    request({
-        method: 'POST',
-        url: base_url + 'api/case',
-        auth: {'bearer': api_key},
-        json: true,
-        body: req_body,
-        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
-        rejectUnauthorized: false,
-      },
-      // handler of the reply from The Hive - just return as reply
-      function (error, response, body) {
-        // TODO: find out how to set response code, for now we always return sucess and encode original status code in the content
-        if (error) {
-          console.error("ERROR when trying to send request to The Hive:", error);
-          resolve({'error': error.message});
-        }
-        else {
-          if (response.statusCode < 200 || response.statusCode >= 300) {
-            console.error("ERROR Unexpected reply received from The Hive:", response.statusCode, response.statusMessage, "\n", body)
-          }
-          resolve({
-            'status_code': response.statusCode,
-            'status_msg': response.statusMessage,
-            'body': body
-          });
-        }
-      } // handler function
-    ); // request()
-  }); // Promise()
-}
-
-// Note:
-// There are two ways to create multiple Observables (artifacts) via The Hive API:
-// 1. post one request with an array of observables in "data" field
-//    - this allows to create all in one request, but doesn't allow to set 
-//      different parameters (IOC, TLP, etc.) to different observables
-// 2. post each observable in a separate request
-// The second way is used here.
-
-// Handler of ajax requests to add Observables to a Case in The Hive
-function addObservablesHandler(req, resp) {
-  // Parse the request to get connection parameters
-  // (everything is configured in forntend and sent as part of the request,
-  //  since I don't know how to configure the backend)
-  var base_url = req.payload['base_url'];
-  var api_key = req.payload['api_key'];
-
-  // check it's a valid URL with slash at the end
-  if (!base_url) {
-    return {'error': 'Base URL not set'};
-  }
-  if (!base_url.match(/https?:\/\/(([a-z\d.-]+)|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*\//i)) {
-  //if (!base_url.match(/https?:\/\/.*\//)) {
-    return {'error': 'Invalid base URL (it must begin with "http[s]" and end with "/")'};
-  }
-  // TODO add "/" to the end automatically
-  if (!api_key) {
-    return {'error': 'API key not set'};
-  }
-
-  const caseid = req.payload['caseid'];
-  const observables = req.payload['observables']; // array of obersvable specifications
-
-  return new Promise( async function(resolve, reject) {
-    // Run one request for each observable
-    // (A way to run multiple async tasks sequentially inspired by:
-    //  https://jrsinclair.com/articles/2019/how-to-run-async-js-in-parallel-or-sequential/ )
-    const starterPromise = Promise.resolve(null);
-    await observables.reduce(
-      (p, obs) => p.then(() => addObservable(base_url, api_key, caseid, obs)),
-      starterPromise
-    ).catch((err_msg) => {
-        console.error(err_msg); // log whole message
-        resolve({'error': err_msg.split("\n", 1)[0]}); // send the first line to frontend
-        return;
-      }
-    );
-    resolve({});
-  });
-}
-  
-function addObservable(base_url, api_key, caseid, obs) {
-  return new Promise( function(resolve, reject) {
-    //console.log("Adding observable:", obs);
-    request({
-        method: 'POST',
-        url: base_url + 'api/case/' + caseid + "/artifact",
-        auth: {'bearer': api_key},
-        json: true,
-        body: obs,
-        //ca: fs.readFileSync(caFile), // TODO resolve the issue with custom CA, where to get its cert?
-        rejectUnauthorized: false,
-      },
-      // handler of the reply from The Hive - just return as reply
-      function (error, response, body) {
-        if (error) {
-          reject("ERROR when trying to send request to The Hive: " + error);
-        }
-        else if (response.statusCode < 200 || response.statusCode >= 300) {
-          reject("ERROR: Unexpected reply received from The Hive: " + response.statusCode + " " + response.statusMessage + "\n" + JSON.stringify(body));
-        }
-        else {
-          // success - continue with the next observable
-          resolve("OK");
-          resolve({})
-        }
-      } // handler function
-    ); // request()
-  }); //Promise()
-}
-
-
diff --git a/roles/build/files/zookeeper/zookeepersupervisord.conf b/roles/build/files/zookeeper/zookeepersupervisord.conf
new file mode 100644
index 0000000..3089c9b
--- /dev/null
+++ b/roles/build/files/zookeeper/zookeepersupervisord.conf
@@ -0,0 +1,43 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:zookeeper]
+directory=/opt/zookeeper
+user=root
+group=root
+command=/bin/bash -c '/opt/zookeeper/bin/zkServer.sh start-foreground'
+autostart=true
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/zookeeper_stderr.log
+stdout_logfile = /var/log/supervisor/zookeeper_stdout.log
+
+[program:filebeat]
+directory=/opt/filebeat
+user=root
+group=root
+command=/bin/bash -c '/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/filebeat_stderr.log
+stdout_logfile = /var/log/supervisor/filebeat_stdout.log
diff --git a/roles/build/files/zookeeperDockerfile b/roles/build/files/zookeeperDockerfile
deleted file mode 100644
index 33ea38a..0000000
--- a/roles/build/files/zookeeperDockerfile
+++ /dev/null
@@ -1,34 +0,0 @@
-FROM gn43-dsl/openjdk:7a20201004
-#LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
-#LABEL site="https://nifi.apache.org"
-
-#ARG UID=1000
-#ARG GID=1000
-ARG ZOOKEEPER_VERSION=3.5.5
-ARG BASE_URL=https://archive.apache.org/dist
-ARG MIRROR_BASE_URL=${MIRROR_BASE_URL:-${BASE_URL}}
-ARG ZOOKEEPER_BINARY_PATH=${ZOOKEEPER_BINARY_PATH:-/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz}
-
-ENV ZOOKEEPER_BASE_DIR=/opt
-
-#ENV ZOOKEEPER_PID_DIR=${ZOOKEEPER_HOME}/run
-#ENV ZOOKEEPER_LOG_DIR=${ZOOKEEPER_HOME}/logs
-
-#  USER nifi
-
-# Download, validate, and expand Apache NiFi binary.
-RUN curl -fSL ${MIRROR_BASE_URL}/${ZOOKEEPER_BINARY_PATH} -o ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz \
-#    && echo "$(curl ${BASE_URL}/${ZOOKEEPER_BINARY_PATH}.sha512) *${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz" | sha256sum -c - \
-    && tar -xzf ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz -C ${ZOOKEEPER_BASE_DIR} \
-    && mv ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin ${ZOOKEEPER_BASE_DIR}/zookeeper \
-    && rm ${ZOOKEEPER_BASE_DIR}/apache-zookeeper-${ZOOKEEPER_VERSION}-bin.tar.gz \
-    && cp ${ZOOKEEPER_BASE_DIR}/zookeeper/conf/zoo_sample.cfg ${ZOOKEEPER_BASE_DIR}/zookeeper/conf/zoo.cfg
-
-# Web HTTP(s) & Socket Site-to-Site Ports
-EXPOSE 2181 2888 3888
-
-WORKDIR ${ZOOKEEPER_BASE_DIR}/zookeeper
-
-ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
-CMD ["start-foreground"]
-
diff --git a/roles/build/tasks/cassandra.yml b/roles/build/tasks/cassandra.yml
deleted file mode 100644
index 1c0a2c6..0000000
--- a/roles/build/tasks/cassandra.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-
-- name: Configure the cassandra Dockerfile
-  template:
-    src: cassandra/Dockerfile.j2
-    dest: "{{role_path}}/files/cassandraDockerfile"
-
-- name: Build cassandra image
-  command: docker build -t {{repo}}/cassandra:{{version}}{{suffix}} -f {{role_path}}/files/cassandraDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/tasks/centos.yml b/roles/build/tasks/centos.yml
index c7be287..62a8fb1 100644
--- a/roles/build/tasks/centos.yml
+++ b/roles/build/tasks/centos.yml
@@ -5,96 +5,115 @@
     name: "{{repo}}/centos:{{version}}{{suffix}}"
   register: centosimg
 
-#- name: Skip if image exists
-#  meta: end_play
-#  when: centosimg.images | length != 0
-
-#  tags:
-#    - start
-
-#- name: Assert CentOS image
-#  assert:
-#    that: centosimg.images | length == 0
-#    fail_msg: "CentOS image already exists"
-
-- name: Build CentOS image
-  when: centosimg.images | length == 0
-  block:
-  - name: Create etc tree in build directory
-    file:
-      path: '{{ temp_root}}/{{ item.path }}'
-      state: directory
-      mode: '{{ item.mode }}'
-    with_filetree: templates/etcroot/
-    when: item.state == 'directory'
-  
-  - name: Populate etc tree in build directory
-    template:
-      src: '{{ item.src }}'
-      dest: '{{ temp_root}}/{{ item.path }}'
-      force: yes
-    with_filetree: templates/etcroot
-    when: item.state == 'file'
-  
-  - name: Create dev tree in build directory
-    command: mknod -m {{ item.mode }} {{ item.dev }} {{ item.type }} {{ item.major }} {{ item.minor }}
-    args:
-      creates: "{{ item.dev }}"
-    with_items:
-      - { mode: 600, dev: "{{temp_root}}/dev/console", type: c, major: 5, minor: 1 }
-      - { mode: 600, dev: "{{temp_root}}/dev/initctl", type: p, major: '', minor: '' }
-      - { mode: 666, dev: "{{temp_root}}/dev/full",    type: c, major: 1, minor: 7 }
-      - { mode: 666, dev: "{{temp_root}}/dev/null",    type: c, major: 1, minor: 3 }
-      - { mode: 666, dev: "{{temp_root}}/dev/ptmx",    type: c, major: 5, minor: 2 }
-      - { mode: 666, dev: "{{temp_root}}/dev/random",  type: c, major: 1, minor: 8 }
-      - { mode: 666, dev: "{{temp_root}}/dev/tty",     type: c, major: 5, minor: 0 }
-      - { mode: 666, dev: "{{temp_root}}/dev/tty0",    type: c, major: 4, minor: 0 }
-      - { mode: 666, dev: "{{temp_root}}/dev/urandom", type: c, major: 1, minor: 9 }
-      - { mode: 666, dev: "{{temp_root}}/dev/zero",    type: c, major: 1, minor: 5 }
-  
-  - name: Install centos-release in build directory
-    yum:
-      installroot: "{{ temp_root}}"
-      name: centos-release
-      state: present 
-   
-  - name: Install Core CentOS in build directory
-    yum:
-      installroot: "{{ temp_root}}"
-      name:
-        - "@Core"
-        - yum-plugin-ovl.noarch
-        - epel-release
-      state: present
-  
-  - name: Clean yum cache
-    command: 'yum --installroot="{{ temp_root}}" -y clean all'
-  
-  - name: Remove unneeded directories
-    file:
-      path: "{{temp_root}}/{{item}}"
-      state: absent
-    with_items:
-      - usr/share/cracklib
-      - var/cache/yum
-      - sbin/sln
-      - etc/ld.so.cache
-      - var/cache/ldconfig
-      - usr/share/backgrounds
-  
-  - name: Create needed directories
-    file:
-      path: "{{temp_root}}/{{item}}"
-      state: directory
-    with_items:
-      - var/cache/yum
-      - var/cache/ldconfig
-  
-  - name: Import image in docker
-    shell: tar --numeric-owner -c -C {{temp_root }} . | docker import - {{repo}}/centos:{{version}}{{suffix}}
-  
-  - name: Remove temp directory
-    file:
-      path: "{{temp_root}}"
-      state: absent
-  
+- name: Assert CentOS image
+  assert:
+    that: centosimg.images | length == 0
+    fail_msg: "CentOS image already exists"
+
+- name: Create etc tree in build directory
+  file:
+    path: '{{ temp_root}}/{{ item.path }}'
+    state: directory
+    mode: '{{ item.mode }}'
+  with_filetree: templates/etcroot/
+  when: item.state == 'directory'
+
+- name: Populate etc tree in build directory
+  template:
+    src: '{{ item.src }}'
+    dest: '{{ temp_root}}/{{ item.path }}'
+    force: yes
+  with_filetree: templates/etcroot
+  when: item.state == 'file'
+
+- name: Create dev tree in build directory
+  command: mknod -m {{ item.mode }} {{ item.dev }} {{ item.type }} {{ item.major }} {{ item.minor }}
+  args:
+    creates: "{{ item.dev }}"
+  with_items:
+    - { mode: 600, dev: "{{temp_root}}/dev/console", type: c, major: 5, minor: 1 }
+    - { mode: 600, dev: "{{temp_root}}/dev/initctl", type: p, major: '', minor: '' }
+    - { mode: 666, dev: "{{temp_root}}/dev/full",    type: c, major: 1, minor: 7 }
+    - { mode: 666, dev: "{{temp_root}}/dev/null",    type: c, major: 1, minor: 3 }
+    - { mode: 666, dev: "{{temp_root}}/dev/ptmx",    type: c, major: 5, minor: 2 }
+    - { mode: 666, dev: "{{temp_root}}/dev/random",  type: c, major: 1, minor: 8 }
+    - { mode: 666, dev: "{{temp_root}}/dev/tty",     type: c, major: 5, minor: 0 }
+    - { mode: 666, dev: "{{temp_root}}/dev/tty0",    type: c, major: 4, minor: 0 }
+    - { mode: 666, dev: "{{temp_root}}/dev/urandom", type: c, major: 1, minor: 9 }
+    - { mode: 666, dev: "{{temp_root}}/dev/zero",    type: c, major: 1, minor: 5 }
+
+- name: Install centos-release in build directory
+  yum:
+    installroot: "{{ temp_root}}"
+    name: centos-release
+    state: present 
+ 
+- name: Install Core CentOS in build directory
+  yum:
+    installroot: "{{ temp_root}}"
+    name:
+      - "@Core"
+      - yum-plugin-ovl.noarch
+      - epel-release
+    state: present
+
+- name: Install extra packages
+  yum:
+    installroot: "{{ temp_root }}"
+    name:
+      - daemonize
+    state: present
+
+- name: Clean yum cache
+  command: 'yum --installroot="{{ temp_root}}" -y clean all'
+
+- name: Remove unneeded directories
+  file:
+    path: "{{temp_root}}/{{item}}"
+    state: absent
+  with_items:
+    - usr/share/cracklib
+    - var/cache/yum
+    - sbin/sln
+    - etc/ld.so.cache
+    - var/cache/ldconfig
+    - usr/share/backgrounds
+
+- name: Create needed directories
+  file:
+    path: "{{temp_root}}/{{item}}"
+    state: directory
+  with_items:
+    - var/cache/yum
+    - var/cache/ldconfig
+
+- name: Download filebeat
+  get_url:
+    url: "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-{{ FILEBEAT_VERSION }}-linux-x86_64.tar.gz"
+    dest: "{{ temp_root}}/opt/filebeat.tar.gz"
+    mode: '0640'
+
+- name: Unarchive filebeat
+  unarchive:
+    src: "{{ temp_root}}/opt/filebeat.tar.gz"
+    dest: "{{ temp_root}}/opt/"
+    remote_src: yes
+
+- name: Delete filebeat archive
+  file:
+    path: "{{ item }}"
+    state: absent
+  with_items:
+    - "{{ temp_root}}/opt/filebeat.tar.gz"
+
+- name: move filebeat directory to /opt/filebeat
+  command: "mv {{ temp_root}}/opt/filebeat-{{ FILEBEAT_VERSION }}-linux-x86_64 {{ temp_root}}/opt/filebeat"
+
+- name: Import image in docker
+  shell: tar --numeric-owner -c -C {{temp_root }} . | docker import - {{repo}}/centos:{{version}}{{suffix}}
+
+- name: Remove temp directory
+  file:
+    path: "{{temp_root}}"
+    state: absent
+
diff --git a/roles/build/tasks/cortex.yml b/roles/build/tasks/cortex.yml
deleted file mode 100644
index 9a5adbe..0000000
--- a/roles/build/tasks/cortex.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-
-- name: Configure the Cortex Dockerfile
-  template:
-    src: cortex/Dockerfile.j2
-    dest: "{{role_path}}/files/cortexDockerfile"
-
-- name: Build the Cortex image
-  command: docker build -t {{repo}}/cortex:{{version}}{{suffix}} -f {{role_path}}/files/cortexDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/tasks/haproxy.yml b/roles/build/tasks/haproxy.yml
deleted file mode 100644
index 9cb45f8..0000000
--- a/roles/build/tasks/haproxy.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-
-- name: Configure the haproxy Dockerfile
-  template:
-    src: haproxy/Dockerfile.j2
-    dest: "{{role_path}}/files/haproxyDockerfile"
-
-- name: Build haproxy image
-  command: docker build -t {{repo}}/haproxy:{{version}}{{suffix}} -f {{role_path}}/files/haproxyDockerfile {{role_path}}/files
-
diff --git a/roles/build/tasks/keycloak.yml b/roles/build/tasks/keycloak.yml
deleted file mode 100644
index f7a7c2b..0000000
--- a/roles/build/tasks/keycloak.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-
-- name: Configure the keycloak Dockerfile
-  template:
-    src: keycloak/Dockerfile.j2
-    dest: "{{role_path}}/files/keycloakDockerfile"
-
-- name: Copy tools to build path
-  command: "cp -av {{role_path}}/templates/keycloak/keycloak-tools/ {{role_path}}/files/keycloak-tools/"
-
-- name: Build keycloak image
-  command: docker build -t {{repo}}/keycloak:{{version}}{{suffix}} -f {{role_path}}/files/keycloakDockerfile {{role_path}}/files
-
-- name: Remove tools from build path
-  file:
-    path: "{{role_path}}/files/keycloak-tools/"
-    state: absent
-
diff --git a/roles/build/tasks/main.yml b/roles/build/tasks/main.yml
index 223766f..eee4ba0 100644
--- a/roles/build/tasks/main.yml
+++ b/roles/build/tasks/main.yml
@@ -2,19 +2,45 @@
 
 - assert:
     that:
-      - "'CHANGE_ME' not in dslproxy"
+      - "'CHANGE_ME' not in soctoolsproxy"
     fail_msg: "Review *all* settings in group_vars/all/main.yml"
 
 - include: centos.yml
-- include: mysql.yml
-- include: haproxy.yml
-- include: openjdk.yml
-- include: zookeeper.yml
-- include: nifi.yml
-- include: odfees.yml
-- include: odfekibana.yml
-- include: keycloak.yml
-- include: misp.yml
-- include: cassandra.yml
-- include: thehive.yml
-- include: cortex.yml
+
+- name: Create main build dir
+  file:
+    path: "{{docker_build_dir}}"
+    state: directory
+
+- name: Create build dir
+  file:
+    path: "{{docker_build_dir}}/{{item}}"
+    state: directory
+  with_items: "{{services}}"
+
+- name: Configure the Dockerfile
+  template:
+    src: "{{item}}/Dockerfile.j2"
+    dest: "{{docker_build_dir}}/{{item}}/Dockerfile"
+  with_items: "{{services}}"
+
+- name: Copy thehive_button to build path
+  copy:
+    src: "{{role_path}}/templates/odfekibana/thehive_button"
+    dest: "{{docker_build_dir}}/odfekibana/"
+
+- name: Copy keycloak-tools to build path
+  copy:
+    src: "{{role_path}}/templates/keycloak/keycloak-tools"
+    dest: "{{docker_build_dir}}/keycloak/"
+
+- name: Copy build files
+  copy:
+    src: "files/{{item}}/"
+    dest: "{{docker_build_dir}}/{{item}}/"
+  with_items: "{{services}}"
+  ignore_errors: yes
+
+- name: Build image
+  command: docker build -t {{repo}}/{{item}}:{{version}}{{suffix}} -f {{docker_build_dir}}/{{item}}/Dockerfile {{docker_build_dir}}/{{item}}
+  with_items: "{{services}}"
diff --git a/roles/build/tasks/misp.yml b/roles/build/tasks/misp.yml
deleted file mode 100644
index d52c39c..0000000
--- a/roles/build/tasks/misp.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-
-- name: Configure the misp Dockerfile
-  template:
-    src: misp/Dockerfile.j2
-    dest: "{{role_path}}/files/mispDockerfile"
-
-- name: Configure the misp supervisor
-  template:
-    src: misp/supervisord.conf.j2
-    dest: "{{role_path}}/files/mispsupervisord.conf"
-
-- name: Configure the misp worker startscript
-  template:
-    src: misp/start.sh.j2
-    dest: "{{role_path}}/files/mispstart.sh"
-
-- name: Build misp image
-  command: docker build -t {{repo}}/misp:{{version}}{{suffix}} -f {{role_path}}/files/mispDockerfile {{role_path}}/files
-
diff --git a/roles/build/tasks/mysql.yml b/roles/build/tasks/mysql.yml
deleted file mode 100644
index a028190..0000000
--- a/roles/build/tasks/mysql.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-
-- name: Configure the mysql Dockerfile
-  template:
-    src: mysql/Dockerfile.j2
-    dest: "{{role_path}}/files/mysqlDockerfile"
-
-- name: Configure the mysql supervisor
-  template:
-    src: mysql/supervisord.conf.j2
-    dest: "{{role_path}}/files/mysqlsupervisord.conf"
-
-- name: Build mysql image
-  command: docker build -t {{repo}}/mysql:{{version}}{{suffix}} -f {{role_path}}/files/mysqlDockerfile {{role_path}}/files
-
diff --git a/roles/build/tasks/nifi.yml b/roles/build/tasks/nifi.yml
deleted file mode 100644
index 423978d..0000000
--- a/roles/build/tasks/nifi.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-
-- name: Configure the nifi Dockerfile
-  template:
-    src: nifi/Dockerfile.j2
-    dest: "{{role_path}}/files/nifiDockerfile"
-
-- name: Build nifi image
-  command: docker build -t {{repo}}/nifi:{{version}}{{suffix}} -f {{role_path}}/files/nifiDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/tasks/odfees.yml b/roles/build/tasks/odfees.yml
deleted file mode 100644
index 5741223..0000000
--- a/roles/build/tasks/odfees.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-
-- name: Configure elasticsearch Dockerfile
-  template:
-    src: odfees/Dockerfile-elastic.j2
-    dest: "{{role_path}}/files/elasticDockerfile"
-
-- name: Build elasticsearch image
-  command: docker build -t {{repo}}/elasticsearch:{{version}}{{suffix}} -f {{role_path}}/files/elasticDockerfile {{role_path}}/files
-
-- name: Configure odfe elasticsearch Dockerfile
-  template:
-    src: odfees/Dockerfile-odfeelastic.j2
-    dest: "{{role_path}}/files/odfeesDockerfile"
-
-- name: Build odfe elasticsearch image
-  command: docker build -t {{repo}}/odfees:{{version}}{{suffix}} -f {{role_path}}/files/odfeesDockerfile {{role_path}}/files
-
diff --git a/roles/build/tasks/odfekibana.yml b/roles/build/tasks/odfekibana.yml
deleted file mode 100644
index 8e1980a..0000000
--- a/roles/build/tasks/odfekibana.yml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-
-- name: Configure kibana Dockerfile
-  template:
-    src: odfekibana/Dockerfile-kibana.j2
-    dest: "{{role_path}}/files/kibanaDockerfile"
-
-- name: Copy tools to build path
-  command: "cp -av {{role_path}}/templates/odfekibana/thehive_button/ {{role_path}}/files/thehive_button/"
-
-- name: Build kibana image
-  command: docker build -t {{repo}}/kibana:{{version}}{{suffix}} -f {{role_path}}/files/kibanaDockerfile {{role_path}}/files
-
-- name: Configure odfe kibana Dockerfile
-  template:
-    src: odfekibana/Dockerfile-odfekibana.j2
-    dest: "{{role_path}}/files/odfekibanaDockerfile"
-
-- name: Build odfe kibana image
-  command: docker build -t {{repo}}/odfekibana:{{version}}{{suffix}} -f {{role_path}}/files/odfekibanaDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/tasks/openjdk.yml b/roles/build/tasks/openjdk.yml
deleted file mode 100644
index 8754ac7..0000000
--- a/roles/build/tasks/openjdk.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-
-- name: Configure the openjdk Dockerfile
-  template:
-    src: openjdk/Dockerfile.j2
-    dest: "{{role_path}}/files/openjdkDockerfile"
-
-- name: Build openjdk image
-  command: docker build -t {{repo}}/openjdk:{{version}}{{suffix}} -f {{role_path}}/files/openjdkDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/tasks/thehive.yml b/roles/build/tasks/thehive.yml
deleted file mode 100644
index 35fe08e..0000000
--- a/roles/build/tasks/thehive.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-
-- name: Configure theHive Dockerfile
-  template:
-    src: thehive/Dockerfile.j2
-    dest: "{{role_path}}/files/thehiveDockerfile"
-
-- name: Build theHive image
-  command: docker build -t {{repo}}/thehive:{{version}}{{suffix}} -f {{role_path}}/files/thehiveDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/tasks/zookeeper.yml b/roles/build/tasks/zookeeper.yml
deleted file mode 100644
index a61a6b3..0000000
--- a/roles/build/tasks/zookeeper.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-
-- name: Configure the zookeeper Dockerfile
-  template:
-    src: zookeeper/Dockerfile.j2
-    dest: "{{role_path}}/files/zookeeperDockerfile"
-
-- name: Build zookeeper image
-  command: docker build -t {{repo}}/zookeeper:{{version}}{{suffix}} -f {{role_path}}/files/zookeeperDockerfile {{role_path}}/files
-
-
diff --git a/roles/build/templates/cassandra/Dockerfile.j2 b/roles/build/templates/cassandra/Dockerfile.j2
index 94b0ca0..f5d2a60 100644
--- a/roles/build/templates/cassandra/Dockerfile.j2
+++ b/roles/build/templates/cassandra/Dockerfile.j2
@@ -1,35 +1,20 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
-#COPY cassandra.repo /etc/yum.repos.d/cassandra.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
 RUN echo "[cassandra]" > /etc/yum.repos.d/cassandra.repo && \
     echo "name=Apache Cassandra" >> /etc/yum.repos.d/cassandra.repo && \
     echo "baseurl=https://downloads.apache.org/cassandra/redhat/311x/" >> /etc/yum.repos.d/cassandra.repo && \
     echo "gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
     echo "repo_gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
     echo "gpgkey=https://downloads.apache.org/cassandra/KEYS" >> /etc/yum.repos.d/cassandra.repo && \
-    echo '#!/bin/bash' > /start.sh && \
-    echo 'export CASSANDRA_HOME=/usr/share/cassandra' >> /start.sh && \
-    echo 'export CASSANDRA_CONF=$CASSANDRA_HOME/conf' >> /start.sh && \
-    echo 'export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh' >> /start.sh && \
-    echo 'log_file=/var/log/cassandra/cassandra.log' >> /start.sh && \
-    echo 'pid_file=/var/run/cassandra/cassandra.pid' >> /start.sh && \
-    echo 'lock_file=/var/lock/subsys/cassandra' >> /start.sh && \
-    echo 'CASSANDRA_PROG=/usr/sbin/cassandra' >> /start.sh && \
-    echo '' >> /start.sh && \
-    echo '$CASSANDRA_PROG -p $pid_file > $log_file 2>&1' >> /start.sh && \
     yum install -y epel-release && \
-    yum install -y cassandra supervisor && \
+    yum install -y cassandra supervisor rsync && \
     mkdir /usr/share/cassandra/conf && \
     cp -a /etc/cassandra/conf/* /usr/share/cassandra/conf && \
     chown -R cassandra:cassandra /usr/share/cassandra && \
     chown -R cassandra:cassandra /var/lib/cassandra && \
     sed -i -e 's,/etc/cassandra,/usr/share/cassandra,g' /usr/share/cassandra/cassandra.in.sh && \
-    chmod a+x /start.sh && \
     yum -y clean all
+COPY cassandrasupervisord.conf /etc/supervisord.conf
 EXPOSE 7000 9042
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER cassandra
-# ENTRYPOINT ["/start.sh"]
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/cassandra/cassandra.repo.j2 b/roles/build/templates/cassandra/cassandra.repo.j2
deleted file mode 100644
index 8fdb78c..0000000
--- a/roles/build/templates/cassandra/cassandra.repo.j2
+++ /dev/null
@@ -1,6 +0,0 @@
-[cassandra]
-name=Apache Cassandra
-baseurl=https://downloads.apache.org/cassandra/redhat/311x/
-gpgcheck=1
-repo_gpgcheck=1
-gpgkey=https://downloads.apache.org/cassandra/KEYS
diff --git a/roles/build/templates/cassandra/start.sh.j2 b/roles/build/templates/cassandra/start.sh.j2
deleted file mode 100644
index fa91e92..0000000
--- a/roles/build/templates/cassandra/start.sh.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-export CASSANDRA_HOME=/usr/share/cassandra
-export CASSANDRA_CONF=$CASSANDRA_HOME/conf
-export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh
-log_file=/var/log/cassandra/cassandra.log
-pid_file=/var/run/cassandra/cassandra.pid
-lock_file=/var/lock/subsys/cassandra
-CASSANDRA_PROG=/usr/sbin/cassandra
-
-$CASSANDRA_PROG -p $pid_file > $log_file 2>&1
diff --git a/roles/build/templates/cassandra/supervisord.conf.j2 b/roles/build/templates/cassandra/supervisord.conf.j2
deleted file mode 100644
index d1f405e..0000000
--- a/roles/build/templates/cassandra/supervisord.conf.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-[supervisord]
-loglevel=debug
-nodaemon=true
-[program:cassandra]
-user=cassandra
-directory=/usr/share/cassandra
-stdout_logfile=/var/log/cassandra/cassandra.log
-redirect_stderr=true
-environment=CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="$CASSANDRA_HOME/cassandra.in.sh"
-command=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
diff --git a/roles/build/templates/cortex/Dockerfile.j2 b/roles/build/templates/cortex/Dockerfile.j2
index d56dbf0..ceeb6a5 100644
--- a/roles/build/templates/cortex/Dockerfile.j2
+++ b/roles/build/templates/cortex/Dockerfile.j2
@@ -1,9 +1,6 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
-#COPY thehive.repo /etc/yum.repos.d/thehive.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
 RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
     echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
@@ -13,7 +10,7 @@ RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     yum install -y epel-release && \
     rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
     rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
-    yum install -y cortex supervisor daemonize vim net-tools telnet htop python3-pip.noarch git gcc python3-devel.x86_64 ssdeep-devel.x86_64 python3-wheel.noarch libexif-devel.x86_64 libexif.x86_64 perl-Image-ExifTool.noarch  gcc-c++ whois && \
+    yum install -y cortex supervisor rsync daemonize vim net-tools telnet htop python3-pip.noarch git gcc python3-devel.x86_64 ssdeep-devel.x86_64 python3-wheel.noarch libexif-devel.x86_64 libexif.x86_64 perl-Image-ExifTool.noarch  gcc-c++ whois && \
     rpm -Uvh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.13.rpm && \
     chown -R elasticsearch:elasticsearch /etc/elasticsearch && \
     mkdir -p /home/cortex && \
@@ -27,6 +24,5 @@ RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     for I in responders/*/requirements.txt; do LC_ALL=en_US.UTF-8 pip3 install --no-cache-dir -U -r $I || true; done && \
     yum -y clean all
 EXPOSE 9001
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER cortex
-# ENTRYPOINT ["/start.sh"]
+COPY cortexsupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/cortex/application.conf b/roles/build/templates/cortex/application.conf
index 0e28b4d..afe42a6 100644
--- a/roles/build/templates/cortex/application.conf
+++ b/roles/build/templates/cortex/application.conf
@@ -17,7 +17,7 @@ search {
   index = cortex3
   # ElasticSearch instance address.
   # For cluster, join address:port with ',': "http://ip1:9200,ip2:9200,ip3:9200"
-  uri = "http://dsoclab-elastic:9200"
+  uri = "http://soctools-elastic:9200"
 
   ## Advanced configuration
   # Scroll keepalive.
diff --git a/roles/build/templates/odfees/Dockerfile-elastic.j2 b/roles/build/templates/elasticsearch/Dockerfile.j2
similarity index 85%
rename from roles/build/templates/odfees/Dockerfile-elastic.j2
rename to roles/build/templates/elasticsearch/Dockerfile.j2
index dd2ad12..6f273d6 100644
--- a/roles/build/templates/odfees/Dockerfile-elastic.j2
+++ b/roles/build/templates/elasticsearch/Dockerfile.j2
@@ -15,7 +15,8 @@ RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
     chown -R elasticsearch /usr/share/elasticsearch/data && \
     sed -i -e 's,ES_PATH_CONF=/etc/elasticsearch,ES_PATH_CONF=/usr/share/elasticsearch/config,g' /etc/sysconfig/elasticsearch
 
+RUN echo 'elasticsearch ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
+
 EXPOSE 9200 9300
-USER elasticsearch
-ENTRYPOINT ["/bin/bash"]
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
 
diff --git a/roles/build/templates/haproxy/Dockerfile.j2 b/roles/build/templates/haproxy/Dockerfile.j2
index d9f84c4..6c34d74 100644
--- a/roles/build/templates/haproxy/Dockerfile.j2
+++ b/roles/build/templates/haproxy/Dockerfile.j2
@@ -24,6 +24,8 @@ RUN \
   iptables \
   pcre2-devel \
   daemonize \
+  supervisor \
+  rsync \
   pth-devel && \
   `# Install newest openssl...` \
   wget -O /tmp/openssl.tgz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz && \
@@ -62,10 +64,5 @@ RUN \
   && cp -R /usr/src/haproxy/examples/errorfiles /usr/local/etc/haproxy/errors \
   && rm -rf /usr/src/haproxy 
 
-ENTRYPOINT ["/bin/bash"]
-
-# https://www.haproxy.org/download/1.8/doc/management.txt
-# "4. Stopping and restarting HAProxy"
-# "when the SIGTERM signal is sent to the haproxy process, it immediately quits and all established connections are closed"
-# "graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process"
-STOPSIGNAL SIGUSR1
+COPY haproxysupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/keycloak/Dockerfile.j2 b/roles/build/templates/keycloak/Dockerfile.j2
index d8c3b6b..561a646 100644
--- a/roles/build/templates/keycloak/Dockerfile.j2
+++ b/roles/build/templates/keycloak/Dockerfile.j2
@@ -11,7 +11,7 @@ USER root
 #ADD /{{role_path}}/templates/keycloak/keycloak-tools /opt/jboss/tools
 ADD keycloak-tools /opt/jboss/tools
 #ADD ../templates/keycloak/keycloak-tools /opt/jboss/tools
-RUN yum -y install openssl && yum -y clean all && \
+RUN yum -y install openssl supervisor rsync && yum -y clean all && \
     mkdir -p /opt/jboss/ && cd /opt/jboss/ && \
     curl -L $KEYCLOAK_DIST | tar zx && \
     mv /opt/jboss/keycloak-* /opt/jboss/keycloak && \
@@ -27,6 +27,7 @@ RUN yum -y install openssl && yum -y clean all && \
     adduser -u 1000 -g 0 -d /opt/jboss jboss && \
     chown -R jboss:root /opt/jboss && \
     chmod -R g+rwX /opt/jboss && \
+    chmod a+x /opt/jboss/tools/x509.sh && \ 
     mkdir -p /etc/x509/{https,ca} && chown -R jboss:root /etc/x509/{https,ca}
 
 ENV PATH="/opt/jboss/keycloak/bin:${PATH}"
@@ -36,6 +37,8 @@ WORKDIR /opt/jboss/keycloak
 EXPOSE 8080
 EXPOSE 8443
 
-USER jboss
-ENTRYPOINT ["/bin/bash"]
+RUN echo 'jboss ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
+
+COPY keycloaksupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
 
diff --git a/roles/build/files/kibanaDockerfile b/roles/build/templates/kibana/Dockerfile.j2
similarity index 57%
rename from roles/build/files/kibanaDockerfile
rename to roles/build/templates/kibana/Dockerfile.j2
index 0f137e0..ef2a476 100644
--- a/roles/build/files/kibanaDockerfile
+++ b/roles/build/templates/kibana/Dockerfile.j2
@@ -1,4 +1,7 @@
-FROM gn43-dsl/centos:7a20201004
+FROM {{repo}}/centos:{{version}}{{suffix}}
+
+RUN yum install -y supervisor
+RUN yum clean all
 
 ENV PATH="/usr/share/kibana/bin:${PATH}"
 
@@ -8,11 +11,13 @@ RUN groupadd -g 1000 kibana && \
 WORKDIR /usr/share/kibana
 
 RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
-    rpm -Uvh https://artifacts.elastic.co/downloads/kibana/kibana-oss-7.4.2-x86_64.rpm && \
+    rpm -Uvh https://artifacts.elastic.co/downloads/kibana/kibana-{{elk_version}}-x86_64.rpm && \
     cp -a /etc/kibana/ /usr/share/kibana/config/ && \
     chown -R kibana /usr/share/kibana/config/
 
+RUN echo 'kibana ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
+
 EXPOSE 5601
-USER kibana
-ENTRYPOINT ["/bin/bash"]
+COPY kibanasupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
 
diff --git a/roles/build/templates/misp/Dockerfile.j2 b/roles/build/templates/misp/Dockerfile.j2
index b99d2a8..85c9648 100644
--- a/roles/build/templates/misp/Dockerfile.j2
+++ b/roles/build/templates/misp/Dockerfile.j2
@@ -2,7 +2,7 @@ FROM {{repo}}/centos:{{version}}{{suffix}}
 
 USER root
 RUN yum install -y epel-release centos-release-scl scl-utils ; \
-    yum install -y gcc git zip openssl supervisor rh-git218 httpd24 mod_ssl mod_auth_openidc rh-redis32 libxslt-devel zlib-devel libcaca-devel ssdeep-devel rh-php72 rh-php72-php-fpm rh-php72-php-devel rh-php72-php-mysqlnd rh-php72-php-mbstring rh-php72-php-xml rh-php72-php-bcmath rh-php72-php-opcache rh-php72-php-gd mariadb devtoolset-7 make cmake3 cppcheck libcxx-devel gpgme-devel openjpeg-devel gcc gcc-c++ poppler-cpp-devel pkgconfig python-devel redhat-rpm-config rubygem-rouge rubygem-asciidoctor zbar-devel opencv-devel wget screen rh-python36-mod_wsgi postfix curl make cmake python3 python3-devel python3-pip python3-yara python3-wheel python3-redis python3-zmq python3-setuptools redis sudo vim zip sqlite moreutils rng-tools libxml2-devel libxslt-devel zlib-devel libpqxx openjpeg2-devel ssdeep-devel ruby asciidoctor tesseract ImageMagick poppler-cpp-devel python36-virtualenv opencv-devel zbar zbar-devel ; \
+    yum install -y gcc git zip openssl supervisor rsync rh-git218 httpd24 mod_ssl mod_auth_openidc rh-redis32 libxslt-devel zlib-devel libcaca-devel ssdeep-devel rh-php72 rh-php72-php-fpm rh-php72-php-devel rh-php72-php-mysqlnd rh-php72-php-mbstring rh-php72-php-xml rh-php72-php-bcmath rh-php72-php-opcache rh-php72-php-gd mariadb devtoolset-7 make cmake3 cppcheck libcxx-devel gpgme-devel openjpeg-devel gcc gcc-c++ poppler-cpp-devel pkgconfig python-devel redhat-rpm-config rubygem-rouge rubygem-asciidoctor zbar-devel opencv-devel wget screen rh-python36-mod_wsgi postfix curl make cmake python3 python3-devel python3-pip python3-yara python3-wheel python3-redis python3-zmq python3-setuptools redis sudo vim zip sqlite moreutils rng-tools libxml2-devel libxslt-devel zlib-devel libpqxx openjpeg2-devel ssdeep-devel ruby asciidoctor tesseract ImageMagick poppler-cpp-devel python36-virtualenv opencv-devel zbar zbar-devel ; \
     yum -y clean all ; \
     sed -i "s/max_execution_time = 30/max_execution_time = 300/" /etc/opt/rh/rh-php72/php.ini ; \
     sed -i "s/memory_limit = 128M/memory_limit = 2048M/" /etc/opt/rh/rh-php72/php.ini ; \
@@ -76,9 +76,12 @@ RUN chown -R apache:apache /var/www/MISP ; \
     chmod -R g+ws /var/www/MISP/app/files ; \
     chmod -R g+ws /var/www/MISP/app/files/scripts/tmp
 
+COPY misp_rh-php72-php-fpm /etc/logrotate.d/rh-php72-php-fpm
+
 # 80/443 - MISP web server, 3306 - mysql, 6379 - redis, 6666 - MISP modules, 50000 - MISP ZeroMQ
 EXPOSE 80 443 6443 6379 6666 50000
 
-COPY mispsupervisord.conf /etc/supervisord.conf
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+ENV PATH "$PATH:/opt/rh/rh-php72/root/bin/"
 
+COPY mispsupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/misp/supervisord.conf.j2 b/roles/build/templates/misp/supervisord.conf.j2
deleted file mode 100644
index fbd4dea..0000000
--- a/roles/build/templates/misp/supervisord.conf.j2
+++ /dev/null
@@ -1,25 +0,0 @@
-[supervisord]
-nodaemon=false
-user=root
-
-[program:php-fpm]
-# EnvironmentFile=/etc/opt/rh/rh-php72/sysconfig/php-fpm
-command=/opt/rh/rh-php72/root/usr/sbin/php-fpm --nodaemonize
-
-[program:redis-server]
-process_name = redis-server
-directory = /var/opt/rh/rh-redis32/lib/redis/
-command=/opt/rh/rh-redis32/root/usr/bin/redis-server /etc/opt/rh/rh-redis32/redis.conf
-user=redis
-
-[program:apache2]
-command=/usr/sbin/httpd -DFOREGROUND
-
-[program:misp-modules]
-command=/bin/bash -c "/usr/local/bin/misp-modules -l '0.0.0.0' -s"
-user = apache
-startsecs = 0
-
-[program:workers]
-command=/bin/bash /var/www/MISP/app/Console/worker/start.sh
-user=apache
diff --git a/roles/build/templates/mysql/Dockerfile.j2 b/roles/build/templates/mysql/Dockerfile.j2
index c7b7d23..393eb3f 100644
--- a/roles/build/templates/mysql/Dockerfile.j2
+++ b/roles/build/templates/mysql/Dockerfile.j2
@@ -2,7 +2,7 @@ FROM {{repo}}/centos:{{version}}{{suffix}}
 
 USER root
 RUN yum -y update && yum install -y epel-release centos-release-scl scl-utils && \
-    yum install -y rh-mariadb103 python36-PyMySQL MySQL-python supervisor && \
+    yum install -y rh-mariadb103 python36-PyMySQL MySQL-python supervisor rsync && \
     /usr/bin/scl enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysql-prepare-db-dir /var/opt/rh/rh-mariadb103/lib/mysql 
 RUN yum clean all
 
diff --git a/roles/build/templates/mysql/supervisord.conf.j2 b/roles/build/templates/mysql/supervisord.conf.j2
deleted file mode 100644
index e44e9fe..0000000
--- a/roles/build/templates/mysql/supervisord.conf.j2
+++ /dev/null
@@ -1,7 +0,0 @@
-[supervisord]
-loglevel=debug
-nodaemon=true
-[program:mysql]
-user=mysql
-directory=/var/lib/mysql
-command=/opt/rh/rh-mariadb103/root/usr/libexec/mysqld-scl-helper enable rh-mariadb103 -- /opt/rh/rh-mariadb103/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mariadb103/root/usr
diff --git a/roles/build/templates/nifi/Dockerfile.j2 b/roles/build/templates/nifi/Dockerfile.j2
index d3408b1..63c5174 100644
--- a/roles/build/templates/nifi/Dockerfile.j2
+++ b/roles/build/templates/nifi/Dockerfile.j2
@@ -44,6 +44,8 @@ RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -
     && chown -R nifi:nifi ${NIFI_BASE_DIR} \
     && yum -y install jq xmlstarlet procps-ng
 
+RUN echo 'nifi ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
+
 USER nifi
 
 # Download, validate, and expand Apache NiFi Toolkit binary.
@@ -94,4 +96,8 @@ WORKDIR ${NIFI_HOME}
 # Also we need to use relative path, because the exec form does not invoke a command shell,
 # thus normal shell processing does not happen:
 # https://docs.docker.com/engine/reference/builder/#exec-form-entrypoint-example
-ENTRYPOINT ["/bin/bash"]
+USER root
+RUN yum install -y supervisor rsync
+RUN yum clean all
+COPY nifisupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/odfees/Dockerfile-odfeelastic.j2 b/roles/build/templates/odfees/Dockerfile.j2
similarity index 74%
rename from roles/build/templates/odfees/Dockerfile-odfeelastic.j2
rename to roles/build/templates/odfees/Dockerfile.j2
index 0803d0b..a4834a5 100644
--- a/roles/build/templates/odfees/Dockerfile-odfeelastic.j2
+++ b/roles/build/templates/odfees/Dockerfile.j2
@@ -12,5 +12,8 @@ RUN for PLUGIN in \
     do bin/elasticsearch-plugin install -b ${PLUGIN}; done && \
     chown -R elasticsearch plugins/opendistro_security
 
-USER elasticsearch
-
+RUN echo 'elasticsearch ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
+RUN yum install -y supervisor rsync
+RUN yum clean all
+COPY odfesupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/odfekibana/Dockerfile-kibana.j2 b/roles/build/templates/odfekibana/Dockerfile-kibana.j2
index c443597..05a1c40 100644
--- a/roles/build/templates/odfekibana/Dockerfile-kibana.j2
+++ b/roles/build/templates/odfekibana/Dockerfile-kibana.j2
@@ -1,5 +1,8 @@
 FROM {{repo}}/centos:{{version}}{{suffix}}
 
+RUN yum install -y supervisor rsync
+RUN yum clean all
+
 ENV PATH="/usr/share/kibana/bin:${PATH}"
 
 RUN groupadd -g 1000 kibana && \
@@ -12,7 +15,9 @@ RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
     cp -a /etc/kibana/ /usr/share/kibana/config/ && \
     chown -R kibana /usr/share/kibana/config/
 
+RUN echo 'kibana ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
+
 EXPOSE 5601
-USER kibana
-ENTRYPOINT ["/bin/bash"]
+COPY kibanasupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
 
diff --git a/roles/build/templates/odfekibana/Dockerfile-odfekibana.j2 b/roles/build/templates/odfekibana/Dockerfile.j2
similarity index 92%
rename from roles/build/templates/odfekibana/Dockerfile-odfekibana.j2
rename to roles/build/templates/odfekibana/Dockerfile.j2
index ee69568..61f3254 100644
--- a/roles/build/templates/odfekibana/Dockerfile-odfekibana.j2
+++ b/roles/build/templates/odfekibana/Dockerfile.j2
@@ -14,5 +14,4 @@ RUN for PLUGIN in \
 ADD thehive_button /usr/share/kibana/plugins/thehive_button
 RUN chown -R kibana:kibana /usr/share/kibana/plugins/thehive_button
 
-USER kibana
-
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/thehive/Dockerfile.j2 b/roles/build/templates/thehive/Dockerfile.j2
index 773c7c2..870e3ac 100644
--- a/roles/build/templates/thehive/Dockerfile.j2
+++ b/roles/build/templates/thehive/Dockerfile.j2
@@ -1,9 +1,6 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
-#COPY thehive.repo /etc/yum.repos.d/thehive.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
 RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     echo "enabled=1" >> /etc/yum.repos.d/thehive.repo && \
     echo "priority=1" >> /etc/yum.repos.d/thehive.repo && \
@@ -12,13 +9,12 @@ RUN echo "[thehive-project]" > /etc/yum.repos.d/thehive.repo && \
     echo "gpgcheck=1" >> /etc/yum.repos.d/thehive.repo && \
     yum install -y epel-release && \
     rpm --import https://raw.githubusercontent.com/TheHive-Project/TheHive/master/PGP-PUBLIC-KEY && \
-    yum install -y thehive4 supervisor daemonize vim net-tools telnet htop && \
+    yum install -y thehive4 supervisor daemonize vim net-tools telnet htop rsync && \
     mkdir -p /opt/thp_data/files/thehive && \
     chown -R thehive:thehive /opt/thp_data/files/thehive && \
     mkdir -p /home/thehive && \
     chown -R thehive:thehive /home/thehive /etc/thehive && \
     yum -y clean all
 EXPOSE 9000
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER thehive
-# ENTRYPOINT ["/start.sh"]
+COPY thehivesupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/build/templates/thehive/start.sh b/roles/build/templates/thehive/start.sh
deleted file mode 100644
index fa91e92..0000000
--- a/roles/build/templates/thehive/start.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-export CASSANDRA_HOME=/usr/share/cassandra
-export CASSANDRA_CONF=$CASSANDRA_HOME/conf
-export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh
-log_file=/var/log/cassandra/cassandra.log
-pid_file=/var/run/cassandra/cassandra.pid
-lock_file=/var/lock/subsys/cassandra
-CASSANDRA_PROG=/usr/sbin/cassandra
-
-$CASSANDRA_PROG -p $pid_file > $log_file 2>&1
diff --git a/roles/build/templates/thehive/supervisord.conf b/roles/build/templates/thehive/supervisord.conf
deleted file mode 100644
index d1f405e..0000000
--- a/roles/build/templates/thehive/supervisord.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-[supervisord]
-loglevel=debug
-nodaemon=true
-[program:cassandra]
-user=cassandra
-directory=/usr/share/cassandra
-stdout_logfile=/var/log/cassandra/cassandra.log
-redirect_stderr=true
-environment=CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="$CASSANDRA_HOME/cassandra.in.sh"
-command=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
diff --git a/roles/build/templates/thehive/thehive.repo b/roles/build/templates/thehive/thehive.repo
deleted file mode 100644
index ff38064..0000000
--- a/roles/build/templates/thehive/thehive.repo
+++ /dev/null
@@ -1,7 +0,0 @@
-[thehive-project]
-enabled=1
-priority=1
-name=TheHive-Project RPM repository
-baseurl=http://rpm.thehive-project.org/stable/noarch
-gpgcheck=1
-
diff --git a/roles/build/templates/zookeeper/Dockerfile.j2 b/roles/build/templates/zookeeper/Dockerfile.j2
index 209069c..19ae977 100644
--- a/roles/build/templates/zookeeper/Dockerfile.j2
+++ b/roles/build/templates/zookeeper/Dockerfile.j2
@@ -29,6 +29,8 @@ EXPOSE 2181 2888 3888
 
 WORKDIR ${ZOOKEEPER_BASE_DIR}/zookeeper
 
-ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
-CMD ["start-foreground"]
-
+#ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
+#CMD ["start-foreground"]
+RUN yum install supervisor rsync -y
+COPY zookeepersupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/ca/files/CA/.rnd b/roles/ca/files/CA/.rnd
deleted file mode 100644
index b7292db0335ef4cf2d62de2a5e033524b2ad01a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1024
zcmZ3+zv+--X62(;88!#2d)rJ{1j}aT6d%m~I^*V#^~!Uq&0K5dWjS=k?_d0R@5Dse
zvqvtPw>_QsHYi~0xAx3Qi}UNA75RiV&b=3rc(u@}iQnWw%_Ze^*H~||D=7Q^uYNp1
z_E^#U{D+bCYaTt@!5m+*bk;iUJ3H2O^yJ->4UxHZWY*6u<+Hej4MitR-qSI8h14H8
zG42a_GLhR#E^j=p;&&o4cBaLyty%5LOnGPCT3t#`xxSw5^nS0n2ECe)`pw-ZqIY~K
zYGysRNjiGs_l*^-b#sqiyY$3oV-)Z9DG7@XZdke?#Vs=Jl)lEJyH#wuR#yZn#9}tQ
zW~y(kWGVb}(rxZ!WAR+J%_%`1D`c`}SSf34OV(`R`aI#Rfz-QcM!m;a{uM0anBUP5
zVq=>VlgYE}!MV&dQ!cMPj1oUg7Bjxyd}RK&_hx@)y7g{cv;Ty}{E6p%cU+xR%;NCe
z;vQpB9ydqx!m!2GQC2NMEPCM|bxtg|otd5xczl-TOjhrQhcY7$MVyyvU=^<sx72yO
zmP1{+ZRN76=UwyV*DrQ?$GP5Pd(%R{uvIa3j}EH4$gJR~WHh@P^~vDou0kQ>{YPvn
zUrFA7yoWpQz^k@@@4^FC%<7!?)^)KAzxruUmRq4;uJ$MED%SAi*u^SX&b}#-y`sy&
z<MYKN_vxF%w;C;qdUto{#}8i=TVLl-UVHQ8m$sxSn~zl)W##O9Csel8I{k=q_}Tlb
z)0uW(GdaznpD0`TU`^DCPcfGqV)M;T-kEgU<YcEP<7K1sDYh)n8Z};q=y+D=C)G0C
znKNgJ)9YIA-*4CDHec4tkH~2ZH>hm4d>DVv&L+Kz&Ell&#A|^|9>(=PN|QVi6Em6n
zcJ}K(F=i@{e-+#8=-{h#zcx*vaJ}ED<DrTAv-e1@>)IFa>yBl`FVS>+>CHx`<Cf?K
zBs~y3QowBepmJ64-ngi;s(H;zw@q*_y0(4pi?IH=%NRBbUU1!|^O^N#?0fEtiLVkZ
zK3N=A@xAqbL4?Y~MqORW{l3*liqy`$<E}6^v43lH(Pa*|eHDjkQGrBCp~bEr+D!BJ
zGcB!Q*B4hP+J1y<>#b5_SC6Ti54J7cqjk6?-LLNL?0H*H-sd>Ie9`~KS^~%F5?<97
z+3#+A)>ZI$Tke%fM%_P-xjf%_as9a@)f)#xzvxL{dcbGB+xvBvlJ0?h&TCxsdY`}K
z^E$kqsq#sgv&!<enYXvzZc?7w%qMi0`LfB2b9d%1_u|W9%$)np-Qa@f2W_i>GqbB^
z2{d!%)l_Jl?l{4p8RE{(r2g*9Qbm_#kF;jU{|{VqflVkY@W<pue?#OVGamU{#ulAA
u`P6w6lY8>)%&E(d<On^;J{{A}Z<=@6TtV#8M%SN54n}UiaDeUQG7|tcZuh+a

diff --git a/roles/ca/files/CA/ca.crt b/roles/ca/files/CA/ca.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/ca/files/CA/ca.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem b/roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem
deleted file mode 100644
index ad6921c..0000000
--- a/roles/ca/files/CA/certs_by_serial/01EC4DAD3E5E47CF4E4B98495932B337.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            01:ec:4d:ad:3e:5e:47:cf:4e:4b:98:49:59:32:b3:37
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:25 2020 GMT
-            Not After : Oct 15 10:47:25 2023 GMT
-        Subject: CN=dsoclab-nifi-1
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c3:af:ef:b7:a1:95:47:5f:55:ea:7e:e8:d6:fd:
-                    d5:e3:19:68:2e:72:1f:90:62:a8:79:76:d8:d2:f6:
-                    51:df:71:80:37:5a:ec:7d:fb:6d:78:6e:37:fe:e5:
-                    1b:c8:d5:73:e4:c9:a5:cb:e8:4a:48:26:c6:e0:a6:
-                    5e:14:2c:90:b1:81:b2:69:31:e2:44:85:97:f5:60:
-                    12:88:06:9d:8d:cf:4a:a2:77:b3:d9:ff:f3:41:40:
-                    4c:21:e1:73:8d:98:82:2f:37:27:0c:24:d8:67:bd:
-                    c7:05:50:40:c5:a9:d0:e4:3f:bb:0c:72:29:7c:be:
-                    06:01:96:03:b8:a0:42:c4:6f:6f:da:aa:17:34:5f:
-                    5e:f3:73:0e:77:b5:7a:9a:59:e3:3c:d1:39:50:17:
-                    2f:53:18:05:82:34:29:1b:19:56:2e:c2:db:24:79:
-                    51:0f:a8:d9:66:3c:72:1e:a0:f7:03:d6:e9:e5:c6:
-                    b9:be:94:e4:84:bd:cd:93:26:eb:3b:17:bb:cd:e5:
-                    58:25:f2:28:35:a4:b1:70:df:32:54:85:f6:3c:20:
-                    9f:88:8b:5d:83:a2:c4:1e:31:d9:a1:76:1d:2e:3c:
-                    f8:78:64:a4:dd:3a:b2:56:65:bf:a8:2a:a8:ed:62:
-                    c9:62:2c:72:bd:9d:7e:6b:1f:80:ea:bc:33:60:47:
-                    d3:0f
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                87:9A:8D:12:3A:69:8D:89:98:F6:95:D0:F2:ED:C3:DC:ED:A0:22:12
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-nifi-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         8d:23:38:a7:aa:d0:58:03:f2:98:19:da:62:c6:55:cb:d5:c5:
-         05:dd:55:c5:f9:41:46:ec:75:06:be:0a:0b:7b:0f:ac:10:dd:
-         86:bf:4f:6e:05:c1:7b:c1:1d:1c:ce:c7:f0:a9:0c:6e:79:fe:
-         c2:49:18:d5:5d:4a:ae:c8:d8:ab:ec:45:95:94:c1:8b:30:da:
-         52:1a:42:3c:41:77:65:9e:8a:63:f5:52:c2:71:b7:e2:56:43:
-         bd:89:3a:fa:14:bd:d7:7a:b2:60:43:82:c0:df:4a:e0:a7:02:
-         fd:d7:f6:56:9a:0f:ad:f4:ee:00:06:fb:75:b9:96:63:c8:b3:
-         75:1f:c6:9d:3b:9d:1a:29:cd:09:f0:80:31:5c:4e:97:62:91:
-         73:84:aa:11:cc:4b:00:15:a1:92:62:2a:6b:d4:d6:4c:ed:a5:
-         89:fe:12:c9:d1:0b:48:b8:97:26:e4:5b:ab:da:fe:2d:54:ca:
-         55:23:8b:22:7f:a1:12:4a:21:3e:9e:bb:48:d6:82:b6:a2:cc:
-         83:15:5d:5f:c7:52:a1:01:01:70:60:3f:64:b4:1d:85:4f:56:
-         b7:67:77:b8:ea:59:7a:85:ce:e3:4a:e1:d6:2f:e0:b2:60:44:
-         3a:08:3a:b5:0e:fc:88:ad:e5:a1:f1:a8:79:37:c4:52:02:f0:
-         5b:05:94:0e
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQAexNrT5eR89OS5hJWTKzNzANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjVaFw0yMzEwMTUx
-MDQ3MjVaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0xMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAw6/vt6GVR19V6n7o1v3V4xloLnIfkGKoeXbY0vZR
-33GAN1rsfftteG43/uUbyNVz5Mmly+hKSCbG4KZeFCyQsYGyaTHiRIWX9WASiAad
-jc9Konez2f/zQUBMIeFzjZiCLzcnDCTYZ73HBVBAxanQ5D+7DHIpfL4GAZYDuKBC
-xG9v2qoXNF9e83MOd7V6mlnjPNE5UBcvUxgFgjQpGxlWLsLbJHlRD6jZZjxyHqD3
-A9bp5ca5vpTkhL3NkybrOxe7zeVYJfIoNaSxcN8yVIX2PCCfiItdg6LEHjHZoXYd
-Ljz4eGSk3TqyVmW/qCqo7WLJYixyvZ1+ax+A6rwzYEfTDwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFIeajRI6aY2JmPaV0PLtw9ztoCISMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTGCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAjSM4p6rQ
-WAPymBnaYsZVy9XFBd1VxflBRux1Br4KC3sPrBDdhr9PbgXBe8EdHM7H8KkMbnn+
-wkkY1V1KrsjYq+xFlZTBizDaUhpCPEF3ZZ6KY/VSwnG34lZDvYk6+hS913qyYEOC
-wN9K4KcC/df2VpoPrfTuAAb7dbmWY8izdR/GnTudGinNCfCAMVxOl2KRc4SqEcxL
-ABWhkmIqa9TWTO2lif4SydELSLiXJuRbq9r+LVTKVSOLIn+hEkohPp67SNaCtqLM
-gxVdX8dSoQEBcGA/ZLQdhU9Wt2d3uOpZeoXO40rh1i/gsmBEOgg6tQ78iK3lofGo
-eTfEUgLwWwWUDg==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem b/roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem
deleted file mode 100644
index af57c1e..0000000
--- a/roles/ca/files/CA/certs_by_serial/1DD9AF5415359961C578D1B98BFA6E9F.pem
+++ /dev/null
@@ -1,84 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            1d:d9:af:54:15:35:99:61:c5:78:d1:b9:8b:fa:6e:9f
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:52 2020 GMT
-            Not After : Oct 15 10:47:52 2023 GMT
-        Subject: CN=Bozidar Proevski
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:9a:de:00:fd:f1:e9:b9:29:d9:58:d0:47:21:cf:
-                    4b:67:17:f7:a9:02:93:17:cf:57:5b:6f:db:26:90:
-                    30:09:0b:d9:c5:66:5e:f6:22:66:ab:48:06:aa:6c:
-                    88:b3:fd:93:45:a4:60:c9:5f:2b:6c:af:db:68:5e:
-                    27:e6:85:71:27:b7:20:52:61:df:14:1b:da:06:39:
-                    b2:21:20:4b:22:48:b7:4b:76:44:02:b1:89:5f:0e:
-                    59:22:cb:b9:c9:1e:8d:a0:ac:28:5d:e5:ae:c8:ea:
-                    cc:05:20:a2:60:11:12:8d:6d:88:0a:73:e8:7c:68:
-                    9c:48:2c:c9:a8:c6:9d:c3:3c:c1:e7:f4:07:f7:5b:
-                    6e:42:3d:3d:0f:85:6f:e2:b9:88:a9:d0:02:84:b8:
-                    19:6a:ae:13:a1:97:50:98:16:c8:0c:1b:bd:02:c8:
-                    5f:a3:2f:73:7e:25:f8:8c:e7:92:43:c7:6a:75:bc:
-                    85:ea:1c:47:28:ce:2c:9b:3a:8f:a8:07:e9:8c:8a:
-                    75:3e:c1:97:32:ce:e3:c5:ca:1e:0a:d7:3c:77:0a:
-                    d2:ab:51:c3:e5:dc:37:90:1a:35:bf:a0:4a:aa:bd:
-                    38:ef:9e:6d:f8:81:37:7f:d3:77:23:c6:5b:63:98:
-                    64:07:2f:47:fd:7d:21:2f:57:c2:d8:44:00:c2:29:
-                    22:79
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                A3:9F:29:21:E0:E5:18:E4:CB:4C:2D:7F:84:2F:AF:F2:49:F0:83:3A
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature
-    Signature Algorithm: sha256WithRSAEncryption
-         ad:cb:66:5d:b7:29:e5:19:7b:7c:ae:23:50:58:34:db:c9:79:
-         39:de:57:83:34:03:6d:bc:bf:e2:31:79:9d:2b:a2:7a:e0:c4:
-         c8:19:96:e0:20:f3:05:2a:a6:f4:b8:90:c4:ea:8d:5e:86:e1:
-         13:99:59:0f:da:c8:3d:96:0d:78:04:4f:26:9c:6a:7c:8e:50:
-         5a:30:f1:37:dc:26:99:28:35:f8:25:b9:4b:f8:d2:f0:d3:b5:
-         61:32:c9:9c:43:39:21:43:c1:de:0d:4d:8e:e5:6f:a1:58:e5:
-         01:84:d6:a5:de:88:2a:55:9f:ec:de:be:b1:13:61:33:dd:50:
-         19:89:dd:11:48:5e:c2:14:8d:69:8f:a9:43:73:80:71:8f:54:
-         ba:da:74:b4:26:ec:5b:82:88:84:90:6d:f7:58:3f:78:d3:20:
-         5b:c3:9b:82:85:b7:ef:98:12:4f:ba:e8:38:f3:8c:af:85:91:
-         66:40:fe:a9:b2:fd:d6:76:ad:70:b7:b5:33:88:64:31:97:81:
-         d9:c6:ec:47:9b:af:3f:31:c8:de:0c:cc:88:3d:b7:6f:6f:19:
-         24:f1:ae:ff:de:95:31:3f:38:e5:ed:a1:e1:e4:6b:54:1f:26:
-         b8:53:79:cf:fe:89:ba:bc:35:a1:bc:2f:8a:07:a2:eb:0d:90:
-         72:ad:8a:60
------BEGIN CERTIFICATE-----
-MIIDUzCCAjugAwIBAgIQHdmvVBU1mWHFeNG5i/punzANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3NTJaFw0yMzEwMTUx
-MDQ3NTJaMBsxGTAXBgNVBAMMEEJvemlkYXIgUHJvZXZza2kwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCa3gD98em5KdlY0Echz0tnF/epApMXz1dbb9sm
-kDAJC9nFZl72ImarSAaqbIiz/ZNFpGDJXytsr9toXifmhXEntyBSYd8UG9oGObIh
-IEsiSLdLdkQCsYlfDlkiy7nJHo2grChd5a7I6swFIKJgERKNbYgKc+h8aJxILMmo
-xp3DPMHn9Af3W25CPT0PhW/iuYip0AKEuBlqrhOhl1CYFsgMG70CyF+jL3N+JfiM
-55JDx2p1vIXqHEcoziybOo+oB+mMinU+wZcyzuPFyh4K1zx3CtKrUcPl3DeQGjW/
-oEqqvTjvnm34gTd/03cjxltjmGQHL0f9fSEvV8LYRADCKSJ5AgMBAAGjgZcwgZQw
-CQYDVR0TBAIwADAdBgNVHQ4EFgQUo58pIeDlGOTLTC1/hC+v8knwgzowRgYDVR0j
-BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
-T0xTLUNBggkAinSTJoBbQrcwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQD
-AgeAMA0GCSqGSIb3DQEBCwUAA4IBAQCty2ZdtynlGXt8riNQWDTbyXk53leDNANt
-vL/iMXmdK6J64MTIGZbgIPMFKqb0uJDE6o1ehuETmVkP2sg9lg14BE8mnGp8jlBa
-MPE33CaZKDX4JblL+NLw07VhMsmcQzkhQ8HeDU2O5W+hWOUBhNal3ogqVZ/s3r6x
-E2Ez3VAZid0RSF7CFI1pj6lDc4Bxj1S62nS0JuxbgoiEkG33WD940yBbw5uChbfv
-mBJPuug484yvhZFmQP6psv3Wdq1wt7UziGQxl4HZxuxHm68/McjeDMyIPbdvbxkk
-8a7/3pUxPzjl7aHh5GtUHya4U3nP/om6vDWhvC+KB6LrDZByrYpg
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem b/roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem
deleted file mode 100644
index a648174..0000000
--- a/roles/ca/files/CA/certs_by_serial/560A99C5A03FC4B9FC92FDC62F419BB9.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            56:0a:99:c5:a0:3f:c4:b9:fc:92:fd:c6:2f:41:9b:b9
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:27 2020 GMT
-            Not After : Oct 15 10:47:27 2023 GMT
-        Subject: CN=dsoclab-odfe-2
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c7:a5:e1:3f:e0:a3:22:69:f1:b4:15:5e:b9:3c:
-                    db:d7:44:bb:d9:c7:69:94:5b:c1:7d:a3:34:4d:3e:
-                    88:0a:e2:8f:2e:d3:98:94:ae:b4:1f:49:a3:fd:4b:
-                    27:16:70:ab:03:ab:cd:4c:02:2a:7b:ed:3a:ff:49:
-                    49:2e:3b:88:f6:59:85:26:de:37:b4:47:9e:1c:be:
-                    a3:38:8e:b0:22:6b:ca:c5:12:e5:be:40:9c:57:7a:
-                    4d:02:0c:db:13:c5:9d:d2:85:df:99:57:32:90:37:
-                    54:08:16:46:01:54:da:0c:77:31:63:39:46:27:88:
-                    3f:f4:ad:4e:e6:fd:0a:3e:9d:98:9a:53:98:90:be:
-                    9b:ee:e3:b2:91:c7:7f:3f:a1:b9:62:f8:7a:1e:cc:
-                    b4:23:ed:82:a0:5c:ad:86:7b:50:53:c9:ec:57:04:
-                    44:1c:12:f6:33:3f:68:42:f8:b7:2f:25:91:1c:aa:
-                    b0:df:17:6b:ed:6d:cc:6d:a7:d6:b7:07:6b:61:a5:
-                    16:51:9f:02:07:ad:b2:42:42:ca:0b:b1:2e:c1:6e:
-                    94:2d:3e:5e:88:48:8f:b6:8b:15:b0:48:8e:35:58:
-                    ea:b5:90:9c:fb:5a:fa:f5:c7:27:b7:11:30:7a:cb:
-                    36:7c:4f:ea:52:00:47:40:e9:f0:ca:67:63:32:e0:
-                    33:73
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                E6:41:BE:4B:A2:E1:07:EF:2A:FD:16:A7:B6:68:3D:0F:81:F5:15:80
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-odfe-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         84:64:d0:92:f6:96:07:be:f1:52:f6:49:15:cd:d0:99:ea:ca:
-         7f:06:a8:d2:68:e3:8e:c3:a3:a9:2d:f2:b7:4a:74:75:9f:02:
-         b4:6f:77:14:ec:89:f9:a3:b5:35:c8:f2:ad:50:df:24:05:d3:
-         0a:a8:49:be:19:de:fc:84:a4:61:af:ff:c0:2c:f7:8b:11:87:
-         34:10:e3:dc:9b:d2:b8:66:0a:f7:3f:05:11:37:41:09:9f:3d:
-         f3:a1:97:b7:62:64:db:5a:46:d9:5a:7a:c8:f7:79:e4:f8:61:
-         2e:5c:e8:82:8d:fc:0e:8d:a4:4f:fd:33:f1:76:0e:8d:21:f4:
-         00:5a:e1:a6:96:21:e0:bb:e4:e6:35:8e:b6:61:49:8a:f2:c1:
-         25:96:cf:c0:f6:e0:0a:0b:75:b5:d5:6c:be:ad:0c:a8:4b:33:
-         44:72:cc:ef:5f:db:09:e7:b9:6e:60:80:7d:02:e9:ab:06:81:
-         24:d3:9d:c3:de:f9:a1:f1:f7:77:ee:6d:49:ab:13:72:c6:62:
-         39:b2:80:32:07:20:51:a3:3e:1a:cf:b9:3a:bc:e3:a1:58:33:
-         22:6f:68:a9:e9:33:0b:8d:24:72:ea:e3:75:68:a3:69:11:a8:
-         2d:86:ed:f2:00:74:d6:d4:ab:fc:30:3f:68:6b:b6:d3:61:30:
-         51:84:09:da
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQVgqZxaA/xLn8kv3GL0GbuTANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
-MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWItb2RmZS0yMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAx6XhP+CjImnxtBVeuTzb10S72cdplFvBfaM0TT6I
-CuKPLtOYlK60H0mj/UsnFnCrA6vNTAIqe+06/0lJLjuI9lmFJt43tEeeHL6jOI6w
-ImvKxRLlvkCcV3pNAgzbE8Wd0oXfmVcykDdUCBZGAVTaDHcxYzlGJ4g/9K1O5v0K
-Pp2YmlOYkL6b7uOykcd/P6G5Yvh6Hsy0I+2CoFythntQU8nsVwREHBL2Mz9oQvi3
-LyWRHKqw3xdr7W3MbafWtwdrYaUWUZ8CB62yQkLKC7EuwW6ULT5eiEiPtosVsEiO
-NVjqtZCc+1r69ccntxEwess2fE/qUgBHQOnwymdjMuAzcwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFOZBvkui4QfvKv0Wp7ZoPQ+B9RWAMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1vZGZlLTKCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAhGTQkvaW
-B77xUvZJFc3QmerKfwao0mjjjsOjqS3yt0p0dZ8CtG93FOyJ+aO1NcjyrVDfJAXT
-CqhJvhne/ISkYa//wCz3ixGHNBDj3JvSuGYK9z8FETdBCZ8986GXt2Jk21pG2Vp6
-yPd55PhhLlzogo38Do2kT/0z8XYOjSH0AFrhppYh4Lvk5jWOtmFJivLBJZbPwPbg
-Cgt1tdVsvq0MqEszRHLM71/bCee5bmCAfQLpqwaBJNOdw975ofH3d+5tSasTcsZi
-ObKAMgcgUaM+Gs+5OrzjoVgzIm9oqekzC40kcurjdWijaRGoLYbt8gB01tSr/DA/
-aGu202EwUYQJ2g==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem b/roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem
deleted file mode 100644
index 796e826..0000000
--- a/roles/ca/files/CA/certs_by_serial/5969918F10EF8D2BAE46B26D6D629D8E.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            59:69:91:8f:10:ef:8d:2b:ae:46:b2:6d:6d:62:9d:8e
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:26 2020 GMT
-            Not After : Oct 15 10:47:26 2023 GMT
-        Subject: CN=dsoclab-nifi-3
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:a7:48:a0:d3:ab:1e:8c:49:60:8b:b8:bd:9a:aa:
-                    5c:09:62:01:79:89:c9:e5:5f:30:64:38:ca:f1:95:
-                    2d:48:20:81:ef:60:aa:6f:d1:ef:b4:ac:89:8e:e9:
-                    f5:16:7d:64:07:b0:3b:75:c3:e1:e1:15:71:64:60:
-                    8f:15:8e:16:8b:de:b8:97:79:a7:83:19:77:5b:aa:
-                    36:82:37:b9:51:a7:95:b5:1f:ac:9d:81:c6:ec:fb:
-                    14:3a:84:77:1e:9c:dd:3c:06:30:a1:5e:d0:8f:b0:
-                    c9:5a:13:ad:0e:56:57:bc:1d:3f:be:d7:4c:4b:37:
-                    a2:88:72:4d:1a:62:88:08:a0:57:bb:20:ce:7e:af:
-                    b7:72:f2:ee:86:1a:b1:28:3b:41:f4:d3:ea:14:74:
-                    90:e1:33:41:1a:92:e2:2e:ec:d3:20:60:60:61:d6:
-                    fc:0e:3f:57:43:88:5f:10:29:20:51:40:46:ed:5d:
-                    9f:d1:5a:e7:4b:52:f4:d4:23:60:4a:22:a7:92:6c:
-                    d4:cb:20:01:a6:b9:53:71:7a:71:02:e1:05:72:41:
-                    a5:42:9f:41:47:2c:30:7e:0c:b1:73:cc:f7:63:60:
-                    27:3f:3d:36:93:14:aa:7e:12:ed:1b:f1:cb:4d:e8:
-                    7c:32:20:50:f5:2d:7d:06:0a:93:cf:7a:85:2b:0b:
-                    a6:b1
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                C9:B8:02:23:C4:2E:F5:FE:C9:34:45:77:33:0D:89:CE:D9:A3:30:2A
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-nifi-3, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         32:20:b3:1c:e1:c9:a4:19:75:14:32:1b:cd:c2:83:59:49:07:
-         e3:b8:62:73:ec:4e:69:cb:9b:49:0d:f5:d0:ea:8b:b6:de:3e:
-         76:03:c4:e8:68:0f:01:96:aa:40:b2:1e:99:06:d2:75:f5:31:
-         ec:b7:93:e6:1b:b0:ab:7e:1b:1d:65:46:6d:9f:ac:97:ed:55:
-         53:ca:53:00:5a:ca:c5:83:48:c3:2a:51:db:e7:e7:e1:40:4a:
-         bf:b2:9d:d4:71:d4:54:84:2b:4b:d4:a2:22:73:95:e1:62:51:
-         ce:e3:e2:f6:24:dd:40:08:07:01:6f:ee:27:3e:fc:17:1d:1f:
-         30:da:7f:37:78:7e:b8:af:d8:2c:d9:48:84:92:be:4e:8e:a7:
-         b8:e6:9f:d4:91:5d:44:c9:8b:82:9f:13:eb:d5:2c:00:fa:ef:
-         d6:49:ff:92:0d:83:22:57:45:4a:ac:b6:5e:a2:c6:c1:73:ff:
-         f5:dd:a7:d8:79:9a:a7:96:33:b4:51:17:7f:80:6e:3b:52:a8:
-         61:53:ae:08:1f:02:5a:0c:5b:37:3c:3a:36:ee:74:e2:9e:df:
-         df:01:b5:f6:d0:b8:fa:58:79:53:fd:70:9e:54:c3:6c:68:a7:
-         3f:b0:e4:20:a6:a8:2f:87:5a:8a:08:01:41:de:35:ed:5e:85:
-         ae:dd:e0:3e
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQWWmRjxDvjSuuRrJtbWKdjjANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjZaFw0yMzEwMTUx
-MDQ3MjZaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0zMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAp0ig06sejElgi7i9mqpcCWIBeYnJ5V8wZDjK8ZUt
-SCCB72Cqb9HvtKyJjun1Fn1kB7A7dcPh4RVxZGCPFY4Wi964l3mngxl3W6o2gje5
-UaeVtR+snYHG7PsUOoR3HpzdPAYwoV7Qj7DJWhOtDlZXvB0/vtdMSzeiiHJNGmKI
-CKBXuyDOfq+3cvLuhhqxKDtB9NPqFHSQ4TNBGpLiLuzTIGBgYdb8Dj9XQ4hfECkg
-UUBG7V2f0VrnS1L01CNgSiKnkmzUyyABprlTcXpxAuEFckGlQp9BRywwfgyxc8z3
-Y2AnPz02kxSqfhLtG/HLTeh8MiBQ9S19BgqTz3qFKwumsQIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFMm4AiPELvX+yTRFdzMNic7ZozAqMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTOCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAMiCzHOHJ
-pBl1FDIbzcKDWUkH47hic+xOacubSQ310OqLtt4+dgPE6GgPAZaqQLIemQbSdfUx
-7LeT5huwq34bHWVGbZ+sl+1VU8pTAFrKxYNIwypR2+fn4UBKv7Kd1HHUVIQrS9Si
-InOV4WJRzuPi9iTdQAgHAW/uJz78Fx0fMNp/N3h+uK/YLNlIhJK+To6nuOaf1JFd
-RMmLgp8T69UsAPrv1kn/kg2DIldFSqy2XqLGwXP/9d2n2Hmap5YztFEXf4BuO1Ko
-YVOuCB8CWgxbNzw6Nu504p7f3wG19tC4+lh5U/1wnlTDbGinP7DkIKaoL4daiggB
-Qd417V6Frt3gPg==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem b/roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem
deleted file mode 100644
index a743bd0..0000000
--- a/roles/ca/files/CA/certs_by_serial/5DC4BC495FA076A813A4C23261640D92.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            5d:c4:bc:49:5f:a0:76:a8:13:a4:c2:32:61:64:0d:92
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:29 2020 GMT
-            Not After : Oct 15 10:47:29 2023 GMT
-        Subject: CN=dsoclab-cortex
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:cd:09:6b:14:33:4a:47:75:5b:d3:d9:67:3b:4d:
-                    ad:1f:a7:1f:33:ab:86:b1:aa:3b:09:ab:1a:a6:fb:
-                    a0:60:04:e3:68:33:0e:85:54:d1:70:61:8a:b9:d5:
-                    d6:b5:6c:c2:b3:36:02:94:b7:1d:18:93:5f:88:81:
-                    ff:2a:f4:99:58:6d:d7:96:e2:d2:64:77:b9:74:44:
-                    3c:f0:fb:5b:0f:43:7d:38:5d:fe:b0:db:05:7a:a9:
-                    c5:10:24:75:13:c8:2d:da:69:be:e3:43:33:f0:28:
-                    30:9a:53:f8:f8:d3:10:32:35:ec:1d:87:ab:1e:2c:
-                    b5:00:7c:9f:8f:61:e0:5d:56:15:8c:46:45:09:78:
-                    02:78:10:c0:af:2f:25:6c:c2:5b:ed:5f:c1:33:0b:
-                    f8:c8:13:dc:df:c3:fc:05:90:ff:06:9e:cb:bc:1d:
-                    2b:c2:57:f2:bd:aa:22:b3:4b:f5:ca:b2:b8:00:18:
-                    f1:14:10:b8:5e:69:9f:ed:fc:04:83:d9:2e:b7:9a:
-                    8a:45:1c:54:71:8f:61:02:6a:8a:84:2f:67:df:92:
-                    3a:0c:5f:e5:b6:e7:6c:27:69:1f:5b:06:d6:7f:e6:
-                    df:ab:2f:31:a5:cd:63:32:60:c0:07:50:6c:0d:39:
-                    cb:68:ae:3c:b2:da:0f:20:06:77:2c:28:ab:3a:30:
-                    92:1b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                9A:0E:E1:26:13:A7:12:5F:A4:F1:41:C0:09:FC:AD:EB:4E:66:C2:50
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-cortex, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         27:2e:a1:0c:8d:fb:b1:36:ff:4e:ac:00:91:75:81:4b:20:79:
-         3f:da:1c:e1:80:b9:8c:6b:60:47:a5:8c:bf:1f:34:98:61:95:
-         00:bb:79:d4:9e:c8:fb:dc:fb:6a:48:b2:69:d1:1a:04:cc:52:
-         ca:0b:48:01:3e:94:1e:68:0b:e3:4d:fa:12:c4:aa:ff:b6:5b:
-         0c:3c:80:21:fe:50:87:8a:14:3a:7d:e7:a3:5e:b6:dc:22:ba:
-         cc:97:69:00:a8:78:08:dd:66:d1:cb:ca:28:41:b9:cc:8a:6b:
-         7c:40:b7:5e:1d:a1:88:5a:b3:fd:18:77:e9:c4:48:fd:38:8f:
-         06:6e:78:0e:f1:1a:1b:b2:6c:0a:df:38:11:e3:5a:3d:2a:5b:
-         de:41:63:14:ab:25:8e:a6:9f:a8:b7:32:9e:dc:23:45:f3:6b:
-         6d:86:b7:17:b3:53:df:55:bd:cb:41:a1:b7:73:ae:21:1b:68:
-         b3:b1:0a:e5:e6:0c:2a:77:76:23:f3:87:ee:5f:0e:6d:cd:3b:
-         94:9a:6f:f2:fd:4f:2d:72:a3:21:94:55:c0:4a:6c:2b:13:e3:
-         82:13:a5:1f:82:6b:ae:6e:e2:ec:eb:7a:25:6a:f2:9e:45:d7:
-         0a:7d:75:be:9d:f7:94:6f:ce:a5:27:d6:9b:dc:d2:12:54:64:
-         09:c4:f6:a9
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQXcS8SV+gdqgTpMIyYWQNkjANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
-MDQ3MjlaMBkxFzAVBgNVBAMMDmRzb2NsYWItY29ydGV4MIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAzQlrFDNKR3Vb09lnO02tH6cfM6uGsao7Casapvug
-YATjaDMOhVTRcGGKudXWtWzCszYClLcdGJNfiIH/KvSZWG3XluLSZHe5dEQ88Ptb
-D0N9OF3+sNsFeqnFECR1E8gt2mm+40Mz8CgwmlP4+NMQMjXsHYerHiy1AHyfj2Hg
-XVYVjEZFCXgCeBDAry8lbMJb7V/BMwv4yBPc38P8BZD/Bp7LvB0rwlfyvaois0v1
-yrK4ABjxFBC4Xmmf7fwEg9kut5qKRRxUcY9hAmqKhC9n35I6DF/ltudsJ2kfWwbW
-f+bfqy8xpc1jMmDAB1BsDTnLaK48stoPIAZ3LCirOjCSGwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFJoO4SYTpxJfpPFBwAn8retOZsJQMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1jb3J0ZXiCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAJy6hDI37
-sTb/TqwAkXWBSyB5P9oc4YC5jGtgR6WMvx80mGGVALt51J7I+9z7akiyadEaBMxS
-ygtIAT6UHmgL4036EsSq/7ZbDDyAIf5Qh4oUOn3no1623CK6zJdpAKh4CN1m0cvK
-KEG5zIprfEC3Xh2hiFqz/Rh36cRI/TiPBm54DvEaG7JsCt84EeNaPSpb3kFjFKsl
-jqafqLcyntwjRfNrbYa3F7NT31W9y0Ght3OuIRtos7EK5eYMKnd2I/OH7l8Obc07
-lJpv8v1PLXKjIZRVwEpsKxPjghOlH4Jrrm7i7Ot6JWrynkXXCn11vp33lG/OpSfW
-m9zSElRkCcT2qQ==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem b/roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem
deleted file mode 100644
index 0d474c2..0000000
--- a/roles/ca/files/CA/certs_by_serial/61095C2C8D35EE291C99CEABD42B3CA4.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            61:09:5c:2c:8d:35:ee:29:1c:99:ce:ab:d4:2b:3c:a4
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:29 2020 GMT
-            Not After : Oct 15 10:47:29 2023 GMT
-        Subject: CN=dsoclab-thehive
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ba:c5:4d:20:a4:60:b7:61:21:ed:16:a1:6f:72:
-                    c4:de:a1:00:c0:ef:fc:5d:a1:89:34:07:15:d2:b4:
-                    3a:14:b8:95:75:8e:81:71:49:46:1d:c8:81:cb:f1:
-                    ec:c7:5a:12:f6:89:60:e4:c8:98:1a:61:c8:2d:12:
-                    8f:73:ee:f8:9d:88:b5:7f:30:70:97:29:b4:ab:43:
-                    2d:dc:db:a7:10:47:c7:b5:26:9b:11:85:fb:d3:27:
-                    8f:3a:55:bc:ea:78:17:b8:89:10:a3:a4:10:60:39:
-                    c3:7f:42:25:a9:fe:84:7f:38:5e:f4:3d:c3:98:3d:
-                    56:b9:ba:81:06:55:8d:65:12:f0:4e:23:88:1d:98:
-                    0c:2f:6e:4f:67:fd:4e:67:39:91:b9:01:52:12:aa:
-                    9e:bb:7a:c8:ea:8f:4a:2d:18:f8:69:9a:3a:a0:c8:
-                    6e:e3:de:c6:db:be:4c:59:e0:cf:bc:34:4f:2c:b0:
-                    ef:3e:82:5a:df:68:be:b8:fb:cc:5f:6a:f2:3e:66:
-                    d4:c6:c5:f6:0b:67:e9:64:85:15:87:60:6f:dc:b4:
-                    5b:13:6f:b0:9b:f8:f3:da:c1:91:9e:81:5f:16:ca:
-                    9e:14:01:c1:1c:ce:2a:d3:c8:3c:0f:be:b1:37:aa:
-                    c9:08:68:2b:de:f9:44:6c:1e:90:a4:12:bc:f5:3c:
-                    46:bd
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                5B:08:8E:F2:1B:8F:12:03:BA:31:02:9C:CE:CC:BC:9F:FC:19:D1:E1
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-thehive, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         7f:b2:fa:33:d6:e3:6c:57:8a:4a:9a:ef:8b:81:2b:df:f3:d6:
-         fb:8c:bc:02:cf:71:54:a0:f2:0d:ae:3b:30:cf:5c:69:d7:d0:
-         aa:cc:16:80:4d:9d:c8:1f:a7:98:9d:26:dc:ae:8e:24:2b:bc:
-         c1:11:a6:8d:4f:ca:13:1f:7f:8f:4c:ef:dd:46:df:d6:97:0a:
-         88:51:4e:f7:46:aa:3d:e3:70:e9:19:e8:9f:7e:22:fa:b6:38:
-         30:00:0a:94:38:09:bf:b8:64:6c:c1:b7:05:6d:4f:f3:27:0c:
-         df:04:ef:a1:4e:e8:2d:4c:06:d0:c0:4f:4f:da:d0:6d:b8:f2:
-         b3:79:18:63:bd:62:83:53:55:38:94:d9:64:ca:e7:4d:71:ce:
-         d1:05:6d:b1:6c:fb:1a:4c:b6:ef:70:2b:3d:9b:1d:66:d8:d9:
-         9f:f0:e5:48:29:50:e8:1b:1a:fb:b4:d2:5e:38:ec:05:45:c2:
-         e7:de:9a:9d:aa:34:67:c5:66:18:e3:86:8b:0c:1a:c4:21:20:
-         7e:b7:ad:e2:0b:d0:0d:d4:76:e6:53:ca:77:bc:ce:d0:9b:7b:
-         7c:fd:42:94:da:63:d8:a7:52:d2:45:f2:d5:55:ef:37:f1:a5:
-         0e:ba:29:c9:b4:ce:99:45:04:21:2b:86:27:bb:c1:f2:86:9a:
-         7c:51:5c:3b
------BEGIN CERTIFICATE-----
-MIIDmDCCAoCgAwIBAgIQYQlcLI017ikcmc6r1Cs8pDANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
-MDQ3MjlaMBoxGDAWBgNVBAMMD2Rzb2NsYWItdGhlaGl2ZTCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALrFTSCkYLdhIe0WoW9yxN6hAMDv/F2hiTQHFdK0
-OhS4lXWOgXFJRh3Igcvx7MdaEvaJYOTImBphyC0Sj3Pu+J2ItX8wcJcptKtDLdzb
-pxBHx7UmmxGF+9MnjzpVvOp4F7iJEKOkEGA5w39CJan+hH84XvQ9w5g9Vrm6gQZV
-jWUS8E4jiB2YDC9uT2f9Tmc5kbkBUhKqnrt6yOqPSi0Y+GmaOqDIbuPextu+TFng
-z7w0Tyyw7z6CWt9ovrj7zF9q8j5m1MbF9gtn6WSFFYdgb9y0WxNvsJv489rBkZ6B
-XxbKnhQBwRzOKtPIPA++sTeqyQhoK975RGwekKQSvPU8Rr0CAwEAAaOB3TCB2jAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBRbCI7yG48SA7oxApzOzLyf/BnR4TBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDoGA1UdEQQzMDGCD2Rzb2NsYWItdGhlaGl2ZYIeZHNvY2xh
-Yi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQB/svoz
-1uNsV4pKmu+LgSvf89b7jLwCz3FUoPINrjswz1xp19CqzBaATZ3IH6eYnSbcro4k
-K7zBEaaNT8oTH3+PTO/dRt/WlwqIUU73Rqo943DpGeiffiL6tjgwAAqUOAm/uGRs
-wbcFbU/zJwzfBO+hTugtTAbQwE9P2tBtuPKzeRhjvWKDU1U4lNlkyudNcc7RBW2x
-bPsaTLbvcCs9mx1m2Nmf8OVIKVDoGxr7tNJeOOwFRcLn3pqdqjRnxWYY44aLDBrE
-ISB+t63iC9AN1HbmU8p3vM7Qm3t8/UKU2mPYp1LSRfLVVe838aUOuinJtM6ZRQQh
-K4Ynu8Hyhpp8UVw7
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem b/roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem
deleted file mode 100644
index f830104..0000000
--- a/roles/ca/files/CA/certs_by_serial/7587FCE4CF3EC68117199076B12CD5D2.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            75:87:fc:e4:cf:3e:c6:81:17:19:90:76:b1:2c:d5:d2
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:28 2020 GMT
-            Not After : Oct 15 10:47:28 2023 GMT
-        Subject: CN=dsoclab-misp
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:cf:b1:1b:e7:a2:ae:70:81:71:a5:57:46:14:2e:
-                    47:64:89:4e:bd:7d:f0:82:2d:03:19:d6:87:44:b3:
-                    42:bf:72:78:03:cc:91:98:5b:36:42:14:55:e2:82:
-                    16:12:58:60:54:44:8f:15:f6:1b:1f:76:36:22:2e:
-                    e8:ac:d3:3c:0a:df:46:c7:f1:04:bc:3a:bf:fe:4b:
-                    8f:2a:53:83:e3:50:82:06:09:fc:2a:fa:fe:94:a0:
-                    7b:7f:c2:3e:0b:3e:dc:72:b8:94:10:0a:0b:90:fd:
-                    45:76:29:85:52:bf:0f:20:43:78:fe:3b:d3:49:20:
-                    8f:9a:a5:0c:89:bb:0e:97:f2:67:b0:2d:f0:17:53:
-                    25:a6:9b:4b:64:0e:72:8a:bf:c9:e3:8e:41:bb:ed:
-                    f3:33:6a:55:5f:8d:52:84:fa:a3:67:1a:7b:71:fb:
-                    90:f1:5f:61:df:44:ea:0b:77:88:f2:e5:c1:83:71:
-                    58:c7:58:8a:9b:39:45:59:4e:e0:db:16:b6:96:72:
-                    90:8c:ee:c2:13:75:ea:15:c6:6b:e2:dc:3a:de:c8:
-                    07:de:18:84:2d:96:b6:c4:4c:e1:4a:4d:13:6f:6c:
-                    9a:1d:e5:f9:6f:cc:7e:1b:4a:3a:75:1a:b9:37:b0:
-                    6d:a0:1b:69:35:f1:b6:e6:c2:a5:d3:56:d3:57:c7:
-                    0e:8b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                65:C5:56:88:65:AF:77:F1:53:B2:71:5E:16:10:D1:0B:30:FF:28:BE
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-misp, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         5a:57:76:90:fd:a5:0d:ea:b0:22:c9:02:2e:18:91:81:04:d1:
-         f4:64:58:58:19:27:03:9b:5a:dc:de:6c:0e:fb:b7:76:eb:b1:
-         97:36:e2:c7:76:ef:7d:d8:00:c3:20:c0:3d:a7:cf:61:f8:16:
-         4c:96:4c:7c:c8:89:21:d6:d4:eb:3a:c1:3d:98:34:74:6e:39:
-         81:20:6f:9b:4b:8d:b9:35:60:c5:76:19:30:30:06:0f:89:b1:
-         1a:f6:c4:88:52:28:98:41:52:f1:9a:77:82:79:ae:c9:71:ba:
-         d9:e5:e9:b7:ba:08:32:59:eb:5e:7d:11:e0:a8:27:20:91:46:
-         05:56:1e:e6:0b:4d:49:17:52:7f:4b:c4:a3:e0:cd:30:bd:4e:
-         6a:70:2a:f5:77:4d:d1:d6:64:13:8d:4b:1a:d3:0b:0f:8a:49:
-         1e:bf:b4:c0:4f:43:dc:92:e3:c0:f2:2f:4a:c8:30:45:fc:5a:
-         d2:de:92:b2:a1:48:b8:da:ff:f4:0b:04:5d:5d:a7:30:d8:4b:
-         ca:cf:0c:01:6a:50:45:5f:d4:a8:cf:dd:fa:f7:68:0c:4c:45:
-         47:be:3a:c2:39:bb:04:ff:62:a0:bc:91:a0:f2:2b:67:09:89:
-         5a:ff:e6:53:c1:89:18:12:a1:0f:5a:d7:e1:12:8b:88:88:89:
-         ca:b0:30:27
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIQdYf85M8+xoEXGZB2sSzV0jANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjhaFw0yMzEwMTUx
-MDQ3MjhaMBcxFTATBgNVBAMMDGRzb2NsYWItbWlzcDCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAM+xG+eirnCBcaVXRhQuR2SJTr198IItAxnWh0SzQr9y
-eAPMkZhbNkIUVeKCFhJYYFREjxX2Gx92NiIu6KzTPArfRsfxBLw6v/5LjypTg+NQ
-ggYJ/Cr6/pSge3/CPgs+3HK4lBAKC5D9RXYphVK/DyBDeP4700kgj5qlDIm7Dpfy
-Z7At8BdTJaabS2QOcoq/yeOOQbvt8zNqVV+NUoT6o2cae3H7kPFfYd9E6gt3iPLl
-wYNxWMdYips5RVlO4NsWtpZykIzuwhN16hXGa+LcOt7IB94YhC2WtsRM4UpNE29s
-mh3l+W/MfhtKOnUauTewbaAbaTXxtubCpdNW01fHDosCAwEAAaOB2jCB1zAJBgNV
-HRMEAjAAMB0GA1UdDgQWBBRlxVaIZa938VOycV4WENELMP8ovjBGBgNVHSMEPzA9
-gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
-Q0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCwYD
-VR0PBAQDAgWgMDcGA1UdEQQwMC6CDGRzb2NsYWItbWlzcIIeZHNvY2xhYi5nbjQt
-My13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQBaV3aQ/aUN6rAi
-yQIuGJGBBNH0ZFhYGScDm1rc3mwO+7d267GXNuLHdu992ADDIMA9p89h+BZMlkx8
-yIkh1tTrOsE9mDR0bjmBIG+bS425NWDFdhkwMAYPibEa9sSIUiiYQVLxmneCea7J
-cbrZ5em3uggyWetefRHgqCcgkUYFVh7mC01JF1J/S8Sj4M0wvU5qcCr1d03R1mQT
-jUsa0wsPikkev7TAT0PckuPA8i9KyDBF/FrS3pKyoUi42v/0CwRdXacw2EvKzwwB
-alBFX9Soz93692gMTEVHvjrCObsE/2KgvJGg8itnCYla/+ZTwYkYEqEPWtfhEouI
-iInKsDAn
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem b/roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem
deleted file mode 100644
index f47839f..0000000
--- a/roles/ca/files/CA/certs_by_serial/7DFC33457573E8F16094A74E6B2F23F1.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            7d:fc:33:45:75:73:e8:f1:60:94:a7:4e:6b:2f:23:f1
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:27 2020 GMT
-            Not After : Oct 15 10:47:27 2023 GMT
-        Subject: CN=dsoclab-kibana
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ce:4f:c9:0f:84:4d:4e:7b:dc:11:90:c9:49:a8:
-                    f3:60:44:a8:25:1b:59:83:64:0b:d1:e0:bc:59:50:
-                    22:a5:f5:88:7a:c8:40:65:e4:22:3d:77:d2:8f:9e:
-                    30:17:80:5e:20:85:bc:70:67:61:cb:d8:e2:9f:9a:
-                    7c:7b:a6:e8:4e:79:7b:cd:86:6e:26:52:37:45:b6:
-                    ab:b7:6f:40:8f:7a:55:8b:d1:91:cc:21:6f:55:37:
-                    50:3b:72:1f:2d:3b:bf:75:47:91:88:6a:1c:ea:39:
-                    dd:8b:25:31:55:0e:bc:52:6f:bf:0b:96:ef:e3:12:
-                    5c:da:63:22:54:e5:b3:95:8b:02:9e:57:3e:7b:4f:
-                    a0:f5:6f:07:a8:5b:45:7c:cb:34:83:77:34:a5:b1:
-                    ff:05:12:88:8f:cc:c4:05:5d:e9:e7:7d:2b:12:fa:
-                    bb:4d:25:f4:f7:04:e7:95:06:95:ea:a9:c4:75:4e:
-                    f7:03:67:2d:9c:9a:f4:01:f6:2a:8d:6c:6d:d0:59:
-                    a9:ce:1f:12:b1:76:39:c8:07:d4:20:73:1e:f3:9c:
-                    b9:67:83:3b:a8:7c:6e:fb:86:ea:3f:6a:8e:98:4c:
-                    39:a9:d1:4d:be:9f:0a:43:49:1b:fd:09:67:b6:62:
-                    71:fd:87:9a:63:25:00:aa:c7:a1:4d:23:12:e3:56:
-                    0f:6f
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                50:F3:7D:4F:B2:8C:A5:09:FD:64:CB:C1:97:F1:F8:49:C8:6B:30:4D
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-kibana, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         ae:be:82:6f:6d:e6:c4:cb:c3:2a:d9:d6:ee:11:52:a6:de:89:
-         9e:31:a3:e2:86:07:e9:d1:fe:95:c9:a2:38:90:df:05:ff:e5:
-         99:27:e8:d8:55:00:8a:85:b3:15:a5:e5:5b:ce:4e:4f:01:3b:
-         74:a4:b2:09:fc:6e:95:92:94:2f:76:0d:c7:97:1b:78:c1:08:
-         1e:3a:0e:fa:a6:ab:db:1e:22:26:86:39:f4:bb:89:a1:a1:d1:
-         55:f6:c3:ff:9b:a5:eb:1b:6a:84:8a:1d:3c:5f:7c:03:0d:08:
-         42:6f:d7:14:86:61:38:66:65:f7:c2:86:68:db:81:e9:41:0f:
-         82:cf:bb:be:fd:d7:94:48:cc:f8:cf:4a:40:ce:33:c4:75:51:
-         00:7e:c7:93:f6:3b:92:c1:5e:8a:ce:5f:2c:c2:f4:fe:ec:77:
-         9e:ea:30:d9:53:ee:f9:b9:fd:50:f5:6b:92:1c:57:d2:e0:f3:
-         05:d8:79:a9:63:16:13:09:cf:5f:39:dc:ec:43:e4:65:45:43:
-         65:e4:7c:39:a3:a2:81:47:ab:8f:57:a9:89:9d:56:4b:77:b1:
-         04:c8:9c:54:d2:5c:28:f5:d3:66:ae:9a:9c:a5:91:c7:eb:20:
-         69:fb:58:99:c7:5e:be:ec:4a:7a:62:09:fe:3b:30:f2:4a:d7:
-         1d:f9:0b:c3
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQffwzRXVz6PFglKdOay8j8TANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
-MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWIta2liYW5hMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAzk/JD4RNTnvcEZDJSajzYESoJRtZg2QL0eC8WVAi
-pfWIeshAZeQiPXfSj54wF4BeIIW8cGdhy9jin5p8e6boTnl7zYZuJlI3Rbart29A
-j3pVi9GRzCFvVTdQO3IfLTu/dUeRiGoc6jndiyUxVQ68Um+/C5bv4xJc2mMiVOWz
-lYsCnlc+e0+g9W8HqFtFfMs0g3c0pbH/BRKIj8zEBV3p530rEvq7TSX09wTnlQaV
-6qnEdU73A2ctnJr0AfYqjWxt0Fmpzh8SsXY5yAfUIHMe85y5Z4M7qHxu+4bqP2qO
-mEw5qdFNvp8KQ0kb/QlntmJx/YeaYyUAqsehTSMS41YPbwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFFDzfU+yjKUJ/WTLwZfx+EnIazBNMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1raWJhbmGCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEArr6Cb23m
-xMvDKtnW7hFSpt6JnjGj4oYH6dH+lcmiOJDfBf/lmSfo2FUAioWzFaXlW85OTwE7
-dKSyCfxulZKUL3YNx5cbeMEIHjoO+qar2x4iJoY59LuJoaHRVfbD/5ul6xtqhIod
-PF98Aw0IQm/XFIZhOGZl98KGaNuB6UEPgs+7vv3XlEjM+M9KQM4zxHVRAH7Hk/Y7
-ksFeis5fLML0/ux3nuow2VPu+bn9UPVrkhxX0uDzBdh5qWMWEwnPXznc7EPkZUVD
-ZeR8OaOigUerj1epiZ1WS3exBMicVNJcKPXTZq6anKWRx+sgaftYmcdevuxKemIJ
-/jsw8krXHfkLww==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem b/roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem
deleted file mode 100644
index 56a67ac..0000000
--- a/roles/ca/files/CA/certs_by_serial/8B69055F8586CEDD21660B2493412660.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            8b:69:05:5f:85:86:ce:dd:21:66:0b:24:93:41:26:60
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:25 2020 GMT
-            Not After : Oct 15 10:47:25 2023 GMT
-        Subject: CN=dsoclab-nifi-2
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ac:b7:4b:e2:d5:87:7f:8e:15:9b:cf:c0:17:eb:
-                    db:8c:e3:1b:83:c0:69:b9:06:91:a0:9b:c6:35:dc:
-                    2f:e8:8c:72:28:50:02:82:c5:b1:eb:da:d9:e3:9d:
-                    95:d2:d9:dd:e1:08:35:6d:83:73:95:98:ba:19:fd:
-                    3e:04:67:9a:09:37:45:79:d3:1d:0b:ec:0a:43:cb:
-                    b8:24:cc:68:5c:ce:2e:ae:db:48:d8:6e:5a:f3:31:
-                    be:87:28:86:76:8e:8f:8d:68:95:1f:72:6c:65:4a:
-                    fc:9e:b8:7d:e2:83:e2:3d:b0:30:5d:c1:73:06:ae:
-                    9b:f7:9a:54:b8:02:6b:82:90:11:08:3f:d6:5f:59:
-                    5c:df:aa:25:59:c0:67:7a:fc:e1:f0:c9:4a:8b:e0:
-                    31:b6:53:13:c2:bf:8c:4f:3a:e6:ed:11:30:a6:41:
-                    26:ad:56:8f:03:0b:ad:87:6c:b2:73:c4:2e:41:3e:
-                    99:1a:b6:29:6d:e0:dc:af:8f:45:6e:d5:69:17:0d:
-                    f1:58:a6:7e:8c:80:32:72:24:21:d2:e9:b4:44:23:
-                    f6:10:8f:9f:64:7f:ef:e6:ab:f1:43:94:d0:8a:97:
-                    0e:e4:91:bd:86:b9:1f:42:f4:96:39:85:05:26:ed:
-                    90:01:91:11:a3:1f:04:5b:46:ff:1b:a9:74:77:db:
-                    18:03
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                1F:5E:EF:0E:58:69:FD:21:93:48:19:98:81:48:13:2E:FC:31:61:0C
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-nifi-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         21:2d:9b:f7:0c:74:cd:d4:30:b1:42:5b:32:98:d8:ef:9f:a9:
-         9b:1b:f0:54:67:c3:20:5b:f1:87:4d:ff:e4:a5:db:af:eb:34:
-         8a:b3:fa:d6:14:4a:3c:31:11:8f:09:b0:af:25:39:5a:5e:89:
-         32:cf:c7:48:68:f3:14:72:a0:35:15:ec:76:c7:bb:a7:5b:0c:
-         d5:7e:5b:8c:d8:40:a2:5e:fa:f8:f2:cf:dd:56:65:7e:94:ef:
-         b4:99:25:ba:9f:78:94:7d:54:0c:83:b9:cf:b8:b4:9d:78:6d:
-         62:e3:6c:98:1f:40:b9:35:3c:51:b5:9f:82:7b:1e:77:db:25:
-         f2:71:df:3d:e9:56:93:86:fe:61:48:4f:db:76:5b:5f:b1:96:
-         f9:46:72:5e:01:80:87:b5:be:b4:00:3b:37:7f:5e:44:d4:7e:
-         c5:87:ed:40:6b:9e:f4:ca:1b:b0:4b:84:97:1f:07:0f:7c:8b:
-         d2:7b:b1:3d:a7:f8:ae:39:07:34:50:41:70:1f:07:ba:a6:a2:
-         0d:ca:e5:7b:d4:77:2c:95:4d:16:0c:34:e0:a5:59:7f:43:c7:
-         a0:dd:a0:f0:ed:75:5a:0f:61:76:52:34:ef:7c:a7:21:e4:de:
-         3a:24:cd:39:b6:77:3a:c8:f3:1f:09:2b:80:9a:f0:5d:7f:5e:
-         73:9d:73:eb
------BEGIN CERTIFICATE-----
-MIIDlzCCAn+gAwIBAgIRAItpBV+Fhs7dIWYLJJNBJmAwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI1WhcNMjMxMDE1
-MTA0NzI1WjAZMRcwFQYDVQQDDA5kc29jbGFiLW5pZmktMjCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBAKy3S+LVh3+OFZvPwBfr24zjG4PAabkGkaCbxjXc
-L+iMcihQAoLFseva2eOdldLZ3eEINW2Dc5WYuhn9PgRnmgk3RXnTHQvsCkPLuCTM
-aFzOLq7bSNhuWvMxvocohnaOj41olR9ybGVK/J64feKD4j2wMF3Bcwaum/eaVLgC
-a4KQEQg/1l9ZXN+qJVnAZ3r84fDJSovgMbZTE8K/jE865u0RMKZBJq1WjwMLrYds
-snPELkE+mRq2KW3g3K+PRW7VaRcN8VimfoyAMnIkIdLptEQj9hCPn2R/7+ar8UOU
-0IqXDuSRvYa5H0L0ljmFBSbtkAGREaMfBFtG/xupdHfbGAMCAwEAAaOB3DCB2TAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBQfXu8OWGn9IZNIGZiBSBMu/DFhDDBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0ygh5kc29jbGFi
-LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBACEtm/cM
-dM3UMLFCWzKY2O+fqZsb8FRnwyBb8YdN/+Sl26/rNIqz+tYUSjwxEY8JsK8lOVpe
-iTLPx0ho8xRyoDUV7HbHu6dbDNV+W4zYQKJe+vjyz91WZX6U77SZJbqfeJR9VAyD
-uc+4tJ14bWLjbJgfQLk1PFG1n4J7HnfbJfJx3z3pVpOG/mFIT9t2W1+xlvlGcl4B
-gIe1vrQAOzd/XkTUfsWH7UBrnvTKG7BLhJcfBw98i9J7sT2n+K45BzRQQXAfB7qm
-og3K5XvUdyyVTRYMNOClWX9Dx6DdoPDtdVoPYXZSNO98pyHk3jokzTm2dzrI8x8J
-K4Ca8F1/XnOdc+s=
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem b/roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem
deleted file mode 100644
index 71baad0..0000000
--- a/roles/ca/files/CA/certs_by_serial/97D2D0CF2300C0A966D103CA89A99212.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            97:d2:d0:cf:23:00:c0:a9:66:d1:03:ca:89:a9:92:12
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:26 2020 GMT
-            Not After : Oct 15 10:47:26 2023 GMT
-        Subject: CN=dsoclab-odfe-1
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:e5:46:f6:71:ce:a2:3f:61:5e:9b:f3:c6:61:88:
-                    87:99:0a:ac:b8:e8:9d:3c:5f:8c:60:2b:41:5b:36:
-                    fb:39:0a:6f:a1:16:02:31:ac:0d:bd:0e:ff:95:59:
-                    d8:f1:21:6b:bd:96:d6:7b:79:01:d1:65:1c:ca:09:
-                    22:50:30:01:ea:ed:b4:29:bf:b4:70:25:db:b3:1d:
-                    e9:73:ed:63:93:02:4c:90:22:04:6d:31:74:31:ae:
-                    85:3c:12:8d:b3:f6:92:2f:de:75:75:8f:ca:a5:f2:
-                    a2:12:94:fb:e8:73:30:37:f1:7c:b5:4e:59:ab:71:
-                    73:26:80:9a:46:8d:49:94:b0:09:e5:27:10:34:9d:
-                    c0:53:3b:fa:77:2e:06:c0:73:8e:0f:9a:1e:8c:27:
-                    32:0c:eb:f2:d2:0c:a7:52:48:c6:ee:12:21:15:e3:
-                    45:30:89:81:63:7f:bf:0a:5b:d1:05:c8:1c:fc:5f:
-                    bb:b8:82:2a:92:3b:3a:ae:19:9d:e9:a7:62:7c:0a:
-                    f2:c2:2a:e6:a8:d4:9b:0a:a8:a2:5a:ec:e5:a3:1a:
-                    73:e0:83:3d:d2:e8:74:a9:0b:b0:e4:b0:fd:fe:ad:
-                    1e:57:e8:0d:20:7c:aa:1f:31:69:b5:0d:8c:3f:1c:
-                    8d:dc:d3:71:5b:f1:04:6a:ae:b9:2d:a8:be:28:11:
-                    f5:4b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                DB:92:49:8B:D9:27:41:85:16:AE:C9:CA:F6:8D:11:53:8B:EE:B0:5E
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-odfe-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         0f:83:fb:ba:2a:0d:aa:14:3f:3f:0b:00:be:f9:37:f4:7f:29:
-         1e:21:4e:18:07:e0:ae:e1:84:f7:cf:a1:21:a5:36:ba:77:6c:
-         0c:00:11:d5:7d:d8:31:b3:f5:cc:fd:6b:27:8f:99:5f:99:4c:
-         57:88:d0:1a:e7:66:6b:8a:fd:d1:01:e3:88:37:91:8c:7b:e9:
-         e2:22:dd:80:62:64:9e:22:e7:25:b5:b9:89:45:e4:24:f5:19:
-         c0:5d:10:50:57:80:66:23:0c:b1:8e:bd:b3:f1:fa:95:7e:6f:
-         04:d1:da:c2:e8:a1:b2:55:55:66:3a:bc:5b:71:50:8c:a8:56:
-         86:f4:a9:9c:c7:4b:d6:91:73:8e:a9:93:ef:e0:85:5e:5c:53:
-         ae:b3:a7:a4:31:80:f3:b3:e4:03:ad:da:96:f0:14:7b:25:e4:
-         ff:68:9b:8f:28:cd:fc:94:05:5f:38:80:84:d6:f5:d4:b7:bd:
-         43:79:bd:fb:f2:ce:30:73:01:e8:ee:ad:45:4a:ea:88:3f:d1:
-         a2:ef:22:f5:49:cc:d4:27:22:3c:bc:1f:50:81:58:5a:65:9d:
-         d6:14:3b:3f:b2:8f:90:35:2b:e7:1a:9b:58:db:96:06:9b:cf:
-         44:0b:f5:9f:aa:57:28:3c:ab:70:fa:bc:93:90:d9:94:d7:fe:
-         6f:fe:39:2a
------BEGIN CERTIFICATE-----
-MIIDlzCCAn+gAwIBAgIRAJfS0M8jAMCpZtEDyompkhIwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI2WhcNMjMxMDE1
-MTA0NzI2WjAZMRcwFQYDVQQDDA5kc29jbGFiLW9kZmUtMTCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBAOVG9nHOoj9hXpvzxmGIh5kKrLjonTxfjGArQVs2
-+zkKb6EWAjGsDb0O/5VZ2PEha72W1nt5AdFlHMoJIlAwAerttCm/tHAl27Md6XPt
-Y5MCTJAiBG0xdDGuhTwSjbP2ki/edXWPyqXyohKU++hzMDfxfLVOWatxcyaAmkaN
-SZSwCeUnEDSdwFM7+ncuBsBzjg+aHownMgzr8tIMp1JIxu4SIRXjRTCJgWN/vwpb
-0QXIHPxfu7iCKpI7Oq4ZnemnYnwK8sIq5qjUmwqoolrs5aMac+CDPdLodKkLsOSw
-/f6tHlfoDSB8qh8xabUNjD8cjdzTcVvxBGquuS2ovigR9UsCAwEAAaOB3DCB2TAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBTbkkmL2SdBhRauycr2jRFTi+6wXjBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0xgh5kc29jbGFi
-LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAA+D+7oq
-DaoUPz8LAL75N/R/KR4hThgH4K7hhPfPoSGlNrp3bAwAEdV92DGz9cz9ayePmV+Z
-TFeI0BrnZmuK/dEB44g3kYx76eIi3YBiZJ4i5yW1uYlF5CT1GcBdEFBXgGYjDLGO
-vbPx+pV+bwTR2sLoobJVVWY6vFtxUIyoVob0qZzHS9aRc46pk+/ghV5cU66zp6Qx
-gPOz5AOt2pbwFHsl5P9om48ozfyUBV84gITW9dS3vUN5vfvyzjBzAejurUVK6og/
-0aLvIvVJzNQnIjy8H1CBWFplndYUOz+yj5A1K+cam1jblgabz0QL9Z+qVyg8q3D6
-vJOQ2ZTX/m/+OSo=
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem b/roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem
deleted file mode 100644
index 4baf981..0000000
--- a/roles/ca/files/CA/certs_by_serial/A7217943DDD1145BC6F68CBA362CB35B.pem
+++ /dev/null
@@ -1,84 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            a7:21:79:43:dd:d1:14:5b:c6:f6:8c:ba:36:2c:b3:5b
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:52 2020 GMT
-            Not After : Oct 15 10:47:52 2023 GMT
-        Subject: CN=Arne Oslebo
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ce:4c:02:19:21:6e:1c:f2:ed:93:d8:fd:bc:1a:
-                    a4:c2:11:3b:e1:55:73:e5:26:92:d3:d9:e8:a6:dd:
-                    7d:a2:1d:be:6a:7c:64:06:39:60:33:38:7d:6a:ca:
-                    89:9d:e5:11:58:21:69:f3:3a:88:5e:ea:e5:2e:e1:
-                    9d:bb:00:1f:59:19:69:4f:6b:32:3d:2f:1a:da:95:
-                    3d:99:95:53:9f:b2:ea:db:13:48:63:2d:4a:dc:0c:
-                    4b:a6:1c:4c:62:e2:d0:11:25:67:cb:80:52:02:e8:
-                    f8:3b:3c:eb:cb:f4:71:03:5a:be:d9:a0:49:fe:d1:
-                    72:fe:4f:be:e1:ac:a1:ed:a5:15:06:f4:4e:c9:06:
-                    ab:9b:92:c2:3e:b9:58:0c:f4:15:0e:04:c0:91:1b:
-                    85:73:9d:b6:97:a1:6c:70:0a:1a:a0:ce:4c:8d:ac:
-                    29:e4:c5:17:00:26:03:44:32:a8:7b:83:52:49:43:
-                    60:11:53:c8:1e:b8:eb:9f:1f:e3:13:54:81:77:c4:
-                    47:4a:2e:20:8d:48:8c:91:2e:e0:d4:e5:37:0b:5c:
-                    bb:5f:40:37:92:e9:60:3b:a0:f9:98:7f:6d:b3:20:
-                    92:3c:da:8c:f0:79:81:f2:ea:77:ba:b4:7b:06:54:
-                    75:89:77:7e:ad:08:3a:ae:1e:dc:1c:11:63:08:43:
-                    14:97
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                BA:57:27:B7:A6:72:56:05:70:2F:E2:6E:47:CA:0F:2F:C4:26:44:86
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature
-    Signature Algorithm: sha256WithRSAEncryption
-         53:30:05:cf:78:2f:0b:25:a1:64:0a:94:06:11:9b:a8:07:d3:
-         5d:4f:0c:80:78:9c:cb:8e:07:d8:21:29:68:d0:ea:43:55:3f:
-         14:18:dc:40:cc:a4:84:da:11:24:07:71:35:63:49:3e:bc:10:
-         3a:93:cd:b8:61:22:e1:43:a8:d4:c5:2b:13:e4:27:62:00:f1:
-         c8:31:d0:27:05:27:6b:0e:77:df:1b:f0:e5:6e:d9:0b:8a:9a:
-         0b:5f:97:20:2c:dd:e1:37:64:94:1a:9e:f7:a7:63:37:88:71:
-         0e:57:a2:da:10:1f:2c:a3:a9:e1:40:01:48:58:74:2e:b3:11:
-         8f:d1:21:30:49:b9:53:29:c5:92:85:85:6b:51:20:05:b4:c5:
-         af:b9:b2:9b:a3:50:1d:59:ac:fa:bf:33:57:61:f4:f1:c3:ee:
-         a2:9a:99:b2:04:de:8b:fc:d2:3c:58:38:ab:9d:d2:6d:f2:e3:
-         0c:69:a5:76:78:df:ae:c9:67:0a:97:55:3d:f0:8f:5a:5e:de:
-         e6:56:1b:4e:66:c9:34:77:97:54:d4:66:e2:24:3c:f0:43:01:
-         24:05:0c:32:a0:65:38:09:53:6c:0e:38:ea:7c:b1:d6:51:11:
-         60:8f:28:9f:ab:13:d0:75:f3:93:13:f2:1e:a4:bd:18:ae:b0:
-         0f:f6:29:d4
------BEGIN CERTIFICATE-----
-MIIDTzCCAjegAwIBAgIRAKcheUPd0RRbxvaMujYss1swDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzUyWhcNMjMxMDE1
-MTA0NzUyWjAWMRQwEgYDVQQDDAtBcm5lIE9zbGVibzCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAM5MAhkhbhzy7ZPY/bwapMIRO+FVc+UmktPZ6KbdfaId
-vmp8ZAY5YDM4fWrKiZ3lEVghafM6iF7q5S7hnbsAH1kZaU9rMj0vGtqVPZmVU5+y
-6tsTSGMtStwMS6YcTGLi0BElZ8uAUgLo+Ds868v0cQNavtmgSf7Rcv5PvuGsoe2l
-FQb0TskGq5uSwj65WAz0FQ4EwJEbhXOdtpehbHAKGqDOTI2sKeTFFwAmA0QyqHuD
-UklDYBFTyB64658f4xNUgXfER0ouII1IjJEu4NTlNwtcu19AN5LpYDug+Zh/bbMg
-kjzajPB5gfLqd7q0ewZUdYl3fq0IOq4e3BwRYwhDFJcCAwEAAaOBlzCBlDAJBgNV
-HRMEAjAAMB0GA1UdDgQWBBS6Vye3pnJWBXAv4m5Hyg8vxCZEhjBGBgNVHSMEPzA9
-gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
-Q0GCCQCKdJMmgFtCtzATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4Aw
-DQYJKoZIhvcNAQELBQADggEBAFMwBc94LwsloWQKlAYRm6gH011PDIB4nMuOB9gh
-KWjQ6kNVPxQY3EDMpITaESQHcTVjST68EDqTzbhhIuFDqNTFKxPkJ2IA8cgx0CcF
-J2sOd98b8OVu2QuKmgtflyAs3eE3ZJQanvenYzeIcQ5XotoQHyyjqeFAAUhYdC6z
-EY/RITBJuVMpxZKFhWtRIAW0xa+5spujUB1ZrPq/M1dh9PHD7qKambIE3ov80jxY
-OKud0m3y4wxppXZ4367JZwqXVT3wj1pe3uZWG05myTR3l1TUZuIkPPBDASQFDDKg
-ZTgJU2wOOOp8sdZREWCPKJ+rE9B185MT8h6kvRiusA/2KdQ=
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem b/roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem
deleted file mode 100644
index 5be39cb..0000000
--- a/roles/ca/files/CA/certs_by_serial/D27B43CB9BFB09CFCC86EFD1019A42FC.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            d2:7b:43:cb:9b:fb:09:cf:cc:86:ef:d1:01:9a:42:fc
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:30 2020 GMT
-            Not After : Oct 15 10:47:30 2023 GMT
-        Subject: CN=dsoclab-haproxy
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c9:c7:22:33:0b:0b:0f:a0:8c:c4:a9:81:37:bd:
-                    51:2f:47:32:fa:1b:88:45:b1:bb:11:43:3d:de:b3:
-                    70:67:d7:8b:39:5a:8f:13:fb:2f:78:08:b1:b1:32:
-                    c6:d1:0e:e4:d3:2e:3a:db:84:db:d2:65:6b:26:24:
-                    6c:d7:16:e5:a5:90:8e:02:46:13:02:0a:96:66:46:
-                    87:b7:b0:ee:56:4c:3c:d8:ae:4c:7d:ef:5b:aa:6e:
-                    01:8e:89:fe:4c:b9:de:6c:ba:e4:3f:8d:f8:d7:3a:
-                    ed:b2:29:9a:5b:ac:5a:86:66:05:f3:19:2f:59:8d:
-                    7c:8b:6a:97:1e:43:8a:36:80:b2:e9:e1:84:f6:94:
-                    bc:13:11:31:b8:d2:5a:72:ed:68:c3:b1:37:e4:5b:
-                    91:82:62:aa:13:f2:b6:e0:3a:aa:85:66:70:0a:a9:
-                    ad:5c:a7:52:ff:dc:f9:99:5e:e5:15:d5:0c:fe:cd:
-                    27:cb:98:9e:5a:69:ca:71:74:31:e6:26:df:ec:d2:
-                    42:43:b9:f3:04:8e:2c:7a:28:a6:f9:8e:ba:64:3c:
-                    69:0e:ac:f5:dc:d5:f3:2a:50:47:50:d4:8c:f5:ee:
-                    31:08:73:69:1f:ae:42:1d:52:84:5d:47:68:dd:a3:
-                    1f:07:57:ec:3e:9e:0d:23:78:16:41:bc:68:f2:4f:
-                    e9:19
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                49:DC:74:02:17:71:C3:D0:A0:64:31:9E:60:2B:B4:38:43:62:DE:98
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-haproxy, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         04:a0:71:31:d2:11:93:09:96:c8:1b:2a:31:b8:b9:34:07:ac:
-         89:cb:b0:6c:b0:f0:17:5f:18:3c:a6:96:ca:b3:fa:c7:af:40:
-         17:e1:7e:e4:dc:ee:fe:5c:dc:86:40:b7:2f:9d:c0:9e:fd:16:
-         6b:85:ab:c2:a8:63:1f:fe:03:2b:89:6a:80:c9:2e:ae:cc:3d:
-         19:75:32:0e:56:57:16:27:02:51:49:1d:b3:78:aa:57:d3:00:
-         9b:93:fe:6d:a3:37:ad:26:35:57:e1:5f:90:bf:ef:30:bc:68:
-         f3:bf:7c:59:69:4f:61:30:2d:48:66:a6:44:2a:51:63:6e:4f:
-         a7:8f:96:7e:91:b2:b2:46:bc:97:1b:01:df:c0:24:5c:b2:aa:
-         8d:20:3a:25:5d:8a:1c:84:53:0d:d4:f6:d5:81:5d:30:de:c4:
-         d7:fa:42:9c:79:68:92:56:b7:76:69:c6:c9:ad:07:47:a6:d2:
-         46:d4:a5:0c:10:a9:03:21:4d:56:40:e5:28:e3:fa:70:1b:23:
-         32:68:07:3d:d6:8a:3a:fb:6d:3b:a6:20:16:1b:09:f3:47:f0:
-         2a:4f:dc:97:86:56:37:96:42:1b:89:b8:76:1a:ab:7a:25:4e:
-         e8:62:d9:a0:3b:ec:62:72:64:64:ca:87:9c:be:0a:08:09:52:
-         ab:03:89:2b
------BEGIN CERTIFICATE-----
-MIIDmTCCAoGgAwIBAgIRANJ7Q8ub+wnPzIbv0QGaQvwwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzMwWhcNMjMxMDE1
-MTA0NzMwWjAaMRgwFgYDVQQDDA9kc29jbGFiLWhhcHJveHkwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDJxyIzCwsPoIzEqYE3vVEvRzL6G4hFsbsRQz3e
-s3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsmJGzXFuWlkI4CRhMCCpZmRoe3
-sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2yKZpbrFqGZgXzGS9ZjXyLapce
-Q4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT8rbgOqqFZnAKqa1cp1L/3PmZ
-XuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6KKb5jrpkPGkOrPXc1fMqUEdQ
-1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZBvGjyT+kZAgMBAAGjgd0wgdow
-CQYDVR0TBAIwADAdBgNVHQ4EFgQUSdx0Ahdxw9CgZDGeYCu0OENi3pgwRgYDVR0j
-BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
-T0xTLUNBggkAinSTJoBbQrcwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
-MAsGA1UdDwQEAwIFoDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRzb2Ns
-YWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEABKBx
-MdIRkwmWyBsqMbi5NAesicuwbLDwF18YPKaWyrP6x69AF+F+5Nzu/lzchkC3L53A
-nv0Wa4WrwqhjH/4DK4lqgMkursw9GXUyDlZXFicCUUkds3iqV9MAm5P+baM3rSY1
-V+FfkL/vMLxo8798WWlPYTAtSGamRCpRY25Pp4+WfpGyska8lxsB38AkXLKqjSA6
-JV2KHIRTDdT21YFdMN7E1/pCnHlokla3dmnGya0HR6bSRtSlDBCpAyFNVkDlKOP6
-cBsjMmgHPdaKOvttO6YgFhsJ80fwKk/cl4ZWN5ZCG4m4dhqreiVO6GLZoDvsYnJk
-ZMqHnL4KCAlSqwOJKw==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem b/roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem
deleted file mode 100644
index 92b6893..0000000
--- a/roles/ca/files/CA/certs_by_serial/FE7583DEF2355A2C2BBA09720BD80948.pem
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            fe:75:83:de:f2:35:5a:2c:2b:ba:09:72:0b:d8:09:48
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:28 2020 GMT
-            Not After : Oct 15 10:47:28 2023 GMT
-        Subject: CN=dsoclab-keycloak
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ea:a9:ea:6b:2f:6c:9c:9f:6d:9c:89:4e:01:ba:
-                    c6:c0:32:df:59:26:2b:95:f4:c2:3d:c8:7e:22:ce:
-                    b6:78:03:e8:22:28:81:9c:9a:a6:a7:ba:fd:05:66:
-                    a3:50:81:85:71:c1:d9:ea:bc:21:e1:5d:0a:87:7b:
-                    be:55:b0:7d:01:57:de:4c:fe:3a:c5:c9:54:77:2e:
-                    15:fc:12:07:f8:ef:9f:7b:f7:09:01:70:75:53:3b:
-                    dc:b1:0c:65:4d:49:c4:fb:1d:42:20:6f:81:45:42:
-                    d3:db:1d:4c:57:1b:1d:3b:81:39:ee:b2:cf:95:4b:
-                    29:d0:a8:39:98:d6:93:36:99:bf:c5:43:26:8d:4d:
-                    db:6d:24:3b:fc:16:76:a1:fd:6f:c6:19:11:c7:12:
-                    0d:80:16:4c:88:da:2c:09:78:3d:1b:7c:6c:ec:db:
-                    9e:01:50:5f:a3:56:7f:d4:3b:a4:26:d2:6d:42:7b:
-                    88:4e:8d:64:ed:1e:1a:0e:05:58:65:58:47:83:60:
-                    9e:b4:ed:15:ce:72:4f:a0:b5:22:dd:9f:a4:da:88:
-                    86:fe:cb:84:6e:72:3d:00:42:da:8b:85:2a:f2:ef:
-                    d7:ee:bb:85:42:ba:b9:fb:d9:9d:d2:2c:58:0f:7c:
-                    02:23:b7:46:d0:69:06:37:40:9d:58:74:89:ca:b7:
-                    12:e5
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                FD:C5:77:F8:79:AD:0A:7E:6A:A0:2E:3B:58:6A:9F:43:51:55:0B:DF
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-keycloak, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         9a:c0:35:a3:68:ec:ec:cc:c3:65:5a:bf:03:d0:ee:8d:a0:41:
-         db:6d:89:3e:97:d4:90:7d:63:8e:73:37:43:ae:9a:e2:d0:2b:
-         a7:5e:b2:88:9b:4d:8f:b6:81:bf:f6:46:a0:87:ca:77:ec:5c:
-         af:cd:6b:d8:e8:60:5a:aa:86:be:64:d5:ad:e9:1e:41:7b:6a:
-         df:01:1d:16:86:94:57:82:51:91:be:6b:d6:ae:f0:b9:8c:3d:
-         11:99:c4:93:eb:f7:fa:9e:a3:e3:f8:97:19:cf:63:55:6a:6e:
-         4f:e9:a2:64:a7:35:0d:7e:68:23:89:e1:c6:06:4b:34:67:38:
-         40:d1:81:b3:73:95:3a:3b:67:d2:5a:e4:8e:49:34:b1:ab:6f:
-         b6:60:87:ac:55:5d:f5:59:c0:d5:d3:d8:de:3b:76:c9:41:28:
-         b4:d7:23:ec:a2:3f:1d:3f:74:2e:f0:45:40:35:38:d1:06:50:
-         b2:93:45:df:de:33:5e:0b:89:86:d8:c9:14:61:1c:d2:94:21:
-         1f:bf:df:32:f0:2f:91:52:b0:08:b7:b9:c2:b7:55:2b:ca:05:
-         e4:eb:91:e1:63:45:5d:1a:6f:e8:76:07:89:e8:42:3e:ec:7b:
-         51:0e:a0:d5:8e:c3:3d:26:e3:45:b0:5b:61:d1:98:3b:c3:d4:
-         37:9f:c1:7c
------BEGIN CERTIFICATE-----
-MIIDmzCCAoOgAwIBAgIRAP51g97yNVosK7oJcgvYCUgwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI4WhcNMjMxMDE1
-MTA0NzI4WjAbMRkwFwYDVQQDDBBkc29jbGFiLWtleWNsb2FrMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6qnqay9snJ9tnIlOAbrGwDLfWSYrlfTCPch+
-Is62eAPoIiiBnJqmp7r9BWajUIGFccHZ6rwh4V0Kh3u+VbB9AVfeTP46xclUdy4V
-/BIH+O+fe/cJAXB1UzvcsQxlTUnE+x1CIG+BRULT2x1MVxsdO4E57rLPlUsp0Kg5
-mNaTNpm/xUMmjU3bbSQ7/BZ2of1vxhkRxxINgBZMiNosCXg9G3xs7NueAVBfo1Z/
-1DukJtJtQnuITo1k7R4aDgVYZVhHg2CetO0VznJPoLUi3Z+k2oiG/suEbnI9AELa
-i4Uq8u/X7ruFQrq5+9md0ixYD3wCI7dG0GkGN0CdWHSJyrcS5QIDAQABo4HeMIHb
-MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP3Fd/h5rQp+aqAuO1hqn0NRVQvfMEYGA1Ud
-IwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NU
-T09MUy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
-AjALBgNVHQ8EBAMCBaAwOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4IeZHNv
-Y2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQCa
-wDWjaOzszMNlWr8D0O6NoEHbbYk+l9SQfWOOczdDrpri0CunXrKIm02PtoG/9kag
-h8p37FyvzWvY6GBaqoa+ZNWt6R5Be2rfAR0WhpRXglGRvmvWrvC5jD0RmcST6/f6
-nqPj+JcZz2NVam5P6aJkpzUNfmgjieHGBks0ZzhA0YGzc5U6O2fSWuSOSTSxq2+2
-YIesVV31WcDV09jeO3bJQSi01yPsoj8dP3Qu8EVANTjRBlCyk0Xf3jNeC4mG2MkU
-YRzSlCEfv98y8C+RUrAIt7nCt1UrygXk65HhY0VdGm/odgeJ6EI+7HtRDqDVjsM9
-JuNFsFth0Zg7w9Q3n8F8
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/extensions.temp b/roles/ca/files/CA/extensions.temp
deleted file mode 100644
index 5680ec9..0000000
--- a/roles/ca/files/CA/extensions.temp
+++ /dev/null
@@ -1,15 +0,0 @@
-# X509 extensions added to every signed cert
-
-# This file is included for every cert signed, and by default does nothing.
-# It could be used to add values every cert should have, such as a CDP as
-# demonstrated in the following example:
-
-#crlDistributionPoints = URI:http://example.net/pki/my_ca.crl
-# X509 extensions for a client
-
-basicConstraints = CA:FALSE
-subjectKeyIdentifier = hash
-authorityKeyIdentifier = keyid,issuer:always
-extendedKeyUsage = clientAuth
-keyUsage = digitalSignature
-
diff --git a/roles/ca/files/CA/index.txt b/roles/ca/files/CA/index.txt
deleted file mode 100644
index 221d42d..0000000
--- a/roles/ca/files/CA/index.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-V	231015104725Z		01EC4DAD3E5E47CF4E4B98495932B337	unknown	/CN=dsoclab-nifi-1
-V	231015104725Z		8B69055F8586CEDD21660B2493412660	unknown	/CN=dsoclab-nifi-2
-V	231015104726Z		5969918F10EF8D2BAE46B26D6D629D8E	unknown	/CN=dsoclab-nifi-3
-V	231015104726Z		97D2D0CF2300C0A966D103CA89A99212	unknown	/CN=dsoclab-odfe-1
-V	231015104727Z		560A99C5A03FC4B9FC92FDC62F419BB9	unknown	/CN=dsoclab-odfe-2
-V	231015104727Z		7DFC33457573E8F16094A74E6B2F23F1	unknown	/CN=dsoclab-kibana
-V	231015104728Z		FE7583DEF2355A2C2BBA09720BD80948	unknown	/CN=dsoclab-keycloak
-V	231015104728Z		7587FCE4CF3EC68117199076B12CD5D2	unknown	/CN=dsoclab-misp
-V	231015104729Z		61095C2C8D35EE291C99CEABD42B3CA4	unknown	/CN=dsoclab-thehive
-V	231015104729Z		5DC4BC495FA076A813A4C23261640D92	unknown	/CN=dsoclab-cortex
-V	231015104730Z		D27B43CB9BFB09CFCC86EFD1019A42FC	unknown	/CN=dsoclab-haproxy
-V	231015104752Z		1DD9AF5415359961C578D1B98BFA6E9F	unknown	/CN=Bozidar Proevski
-V	231015104752Z		A7217943DDD1145BC6F68CBA362CB35B	unknown	/CN=Arne Oslebo
diff --git a/roles/ca/files/CA/index.txt.attr b/roles/ca/files/CA/index.txt.attr
deleted file mode 100644
index 3a7e39e..0000000
--- a/roles/ca/files/CA/index.txt.attr
+++ /dev/null
@@ -1 +0,0 @@
-unique_subject = no
diff --git a/roles/ca/files/CA/index.txt.attr.old b/roles/ca/files/CA/index.txt.attr.old
deleted file mode 100644
index 3a7e39e..0000000
--- a/roles/ca/files/CA/index.txt.attr.old
+++ /dev/null
@@ -1 +0,0 @@
-unique_subject = no
diff --git a/roles/ca/files/CA/index.txt.old b/roles/ca/files/CA/index.txt.old
deleted file mode 100644
index 022f254..0000000
--- a/roles/ca/files/CA/index.txt.old
+++ /dev/null
@@ -1,12 +0,0 @@
-V	231015104725Z		01EC4DAD3E5E47CF4E4B98495932B337	unknown	/CN=dsoclab-nifi-1
-V	231015104725Z		8B69055F8586CEDD21660B2493412660	unknown	/CN=dsoclab-nifi-2
-V	231015104726Z		5969918F10EF8D2BAE46B26D6D629D8E	unknown	/CN=dsoclab-nifi-3
-V	231015104726Z		97D2D0CF2300C0A966D103CA89A99212	unknown	/CN=dsoclab-odfe-1
-V	231015104727Z		560A99C5A03FC4B9FC92FDC62F419BB9	unknown	/CN=dsoclab-odfe-2
-V	231015104727Z		7DFC33457573E8F16094A74E6B2F23F1	unknown	/CN=dsoclab-kibana
-V	231015104728Z		FE7583DEF2355A2C2BBA09720BD80948	unknown	/CN=dsoclab-keycloak
-V	231015104728Z		7587FCE4CF3EC68117199076B12CD5D2	unknown	/CN=dsoclab-misp
-V	231015104729Z		61095C2C8D35EE291C99CEABD42B3CA4	unknown	/CN=dsoclab-thehive
-V	231015104729Z		5DC4BC495FA076A813A4C23261640D92	unknown	/CN=dsoclab-cortex
-V	231015104730Z		D27B43CB9BFB09CFCC86EFD1019A42FC	unknown	/CN=dsoclab-haproxy
-V	231015104752Z		1DD9AF5415359961C578D1B98BFA6E9F	unknown	/CN=Bozidar Proevski
diff --git a/roles/ca/files/CA/issued/Arne Oslebo.crt b/roles/ca/files/CA/issued/Arne Oslebo.crt
deleted file mode 100644
index 4baf981..0000000
--- a/roles/ca/files/CA/issued/Arne Oslebo.crt	
+++ /dev/null
@@ -1,84 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            a7:21:79:43:dd:d1:14:5b:c6:f6:8c:ba:36:2c:b3:5b
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:52 2020 GMT
-            Not After : Oct 15 10:47:52 2023 GMT
-        Subject: CN=Arne Oslebo
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ce:4c:02:19:21:6e:1c:f2:ed:93:d8:fd:bc:1a:
-                    a4:c2:11:3b:e1:55:73:e5:26:92:d3:d9:e8:a6:dd:
-                    7d:a2:1d:be:6a:7c:64:06:39:60:33:38:7d:6a:ca:
-                    89:9d:e5:11:58:21:69:f3:3a:88:5e:ea:e5:2e:e1:
-                    9d:bb:00:1f:59:19:69:4f:6b:32:3d:2f:1a:da:95:
-                    3d:99:95:53:9f:b2:ea:db:13:48:63:2d:4a:dc:0c:
-                    4b:a6:1c:4c:62:e2:d0:11:25:67:cb:80:52:02:e8:
-                    f8:3b:3c:eb:cb:f4:71:03:5a:be:d9:a0:49:fe:d1:
-                    72:fe:4f:be:e1:ac:a1:ed:a5:15:06:f4:4e:c9:06:
-                    ab:9b:92:c2:3e:b9:58:0c:f4:15:0e:04:c0:91:1b:
-                    85:73:9d:b6:97:a1:6c:70:0a:1a:a0:ce:4c:8d:ac:
-                    29:e4:c5:17:00:26:03:44:32:a8:7b:83:52:49:43:
-                    60:11:53:c8:1e:b8:eb:9f:1f:e3:13:54:81:77:c4:
-                    47:4a:2e:20:8d:48:8c:91:2e:e0:d4:e5:37:0b:5c:
-                    bb:5f:40:37:92:e9:60:3b:a0:f9:98:7f:6d:b3:20:
-                    92:3c:da:8c:f0:79:81:f2:ea:77:ba:b4:7b:06:54:
-                    75:89:77:7e:ad:08:3a:ae:1e:dc:1c:11:63:08:43:
-                    14:97
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                BA:57:27:B7:A6:72:56:05:70:2F:E2:6E:47:CA:0F:2F:C4:26:44:86
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature
-    Signature Algorithm: sha256WithRSAEncryption
-         53:30:05:cf:78:2f:0b:25:a1:64:0a:94:06:11:9b:a8:07:d3:
-         5d:4f:0c:80:78:9c:cb:8e:07:d8:21:29:68:d0:ea:43:55:3f:
-         14:18:dc:40:cc:a4:84:da:11:24:07:71:35:63:49:3e:bc:10:
-         3a:93:cd:b8:61:22:e1:43:a8:d4:c5:2b:13:e4:27:62:00:f1:
-         c8:31:d0:27:05:27:6b:0e:77:df:1b:f0:e5:6e:d9:0b:8a:9a:
-         0b:5f:97:20:2c:dd:e1:37:64:94:1a:9e:f7:a7:63:37:88:71:
-         0e:57:a2:da:10:1f:2c:a3:a9:e1:40:01:48:58:74:2e:b3:11:
-         8f:d1:21:30:49:b9:53:29:c5:92:85:85:6b:51:20:05:b4:c5:
-         af:b9:b2:9b:a3:50:1d:59:ac:fa:bf:33:57:61:f4:f1:c3:ee:
-         a2:9a:99:b2:04:de:8b:fc:d2:3c:58:38:ab:9d:d2:6d:f2:e3:
-         0c:69:a5:76:78:df:ae:c9:67:0a:97:55:3d:f0:8f:5a:5e:de:
-         e6:56:1b:4e:66:c9:34:77:97:54:d4:66:e2:24:3c:f0:43:01:
-         24:05:0c:32:a0:65:38:09:53:6c:0e:38:ea:7c:b1:d6:51:11:
-         60:8f:28:9f:ab:13:d0:75:f3:93:13:f2:1e:a4:bd:18:ae:b0:
-         0f:f6:29:d4
------BEGIN CERTIFICATE-----
-MIIDTzCCAjegAwIBAgIRAKcheUPd0RRbxvaMujYss1swDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzUyWhcNMjMxMDE1
-MTA0NzUyWjAWMRQwEgYDVQQDDAtBcm5lIE9zbGVibzCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAM5MAhkhbhzy7ZPY/bwapMIRO+FVc+UmktPZ6KbdfaId
-vmp8ZAY5YDM4fWrKiZ3lEVghafM6iF7q5S7hnbsAH1kZaU9rMj0vGtqVPZmVU5+y
-6tsTSGMtStwMS6YcTGLi0BElZ8uAUgLo+Ds868v0cQNavtmgSf7Rcv5PvuGsoe2l
-FQb0TskGq5uSwj65WAz0FQ4EwJEbhXOdtpehbHAKGqDOTI2sKeTFFwAmA0QyqHuD
-UklDYBFTyB64658f4xNUgXfER0ouII1IjJEu4NTlNwtcu19AN5LpYDug+Zh/bbMg
-kjzajPB5gfLqd7q0ewZUdYl3fq0IOq4e3BwRYwhDFJcCAwEAAaOBlzCBlDAJBgNV
-HRMEAjAAMB0GA1UdDgQWBBS6Vye3pnJWBXAv4m5Hyg8vxCZEhjBGBgNVHSMEPzA9
-gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
-Q0GCCQCKdJMmgFtCtzATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4Aw
-DQYJKoZIhvcNAQELBQADggEBAFMwBc94LwsloWQKlAYRm6gH011PDIB4nMuOB9gh
-KWjQ6kNVPxQY3EDMpITaESQHcTVjST68EDqTzbhhIuFDqNTFKxPkJ2IA8cgx0CcF
-J2sOd98b8OVu2QuKmgtflyAs3eE3ZJQanvenYzeIcQ5XotoQHyyjqeFAAUhYdC6z
-EY/RITBJuVMpxZKFhWtRIAW0xa+5spujUB1ZrPq/M1dh9PHD7qKambIE3ov80jxY
-OKud0m3y4wxppXZ4367JZwqXVT3wj1pe3uZWG05myTR3l1TUZuIkPPBDASQFDDKg
-ZTgJU2wOOOp8sdZREWCPKJ+rE9B185MT8h6kvRiusA/2KdQ=
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/Bozidar Proevski.crt b/roles/ca/files/CA/issued/Bozidar Proevski.crt
deleted file mode 100644
index af57c1e..0000000
--- a/roles/ca/files/CA/issued/Bozidar Proevski.crt	
+++ /dev/null
@@ -1,84 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            1d:d9:af:54:15:35:99:61:c5:78:d1:b9:8b:fa:6e:9f
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:52 2020 GMT
-            Not After : Oct 15 10:47:52 2023 GMT
-        Subject: CN=Bozidar Proevski
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:9a:de:00:fd:f1:e9:b9:29:d9:58:d0:47:21:cf:
-                    4b:67:17:f7:a9:02:93:17:cf:57:5b:6f:db:26:90:
-                    30:09:0b:d9:c5:66:5e:f6:22:66:ab:48:06:aa:6c:
-                    88:b3:fd:93:45:a4:60:c9:5f:2b:6c:af:db:68:5e:
-                    27:e6:85:71:27:b7:20:52:61:df:14:1b:da:06:39:
-                    b2:21:20:4b:22:48:b7:4b:76:44:02:b1:89:5f:0e:
-                    59:22:cb:b9:c9:1e:8d:a0:ac:28:5d:e5:ae:c8:ea:
-                    cc:05:20:a2:60:11:12:8d:6d:88:0a:73:e8:7c:68:
-                    9c:48:2c:c9:a8:c6:9d:c3:3c:c1:e7:f4:07:f7:5b:
-                    6e:42:3d:3d:0f:85:6f:e2:b9:88:a9:d0:02:84:b8:
-                    19:6a:ae:13:a1:97:50:98:16:c8:0c:1b:bd:02:c8:
-                    5f:a3:2f:73:7e:25:f8:8c:e7:92:43:c7:6a:75:bc:
-                    85:ea:1c:47:28:ce:2c:9b:3a:8f:a8:07:e9:8c:8a:
-                    75:3e:c1:97:32:ce:e3:c5:ca:1e:0a:d7:3c:77:0a:
-                    d2:ab:51:c3:e5:dc:37:90:1a:35:bf:a0:4a:aa:bd:
-                    38:ef:9e:6d:f8:81:37:7f:d3:77:23:c6:5b:63:98:
-                    64:07:2f:47:fd:7d:21:2f:57:c2:d8:44:00:c2:29:
-                    22:79
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                A3:9F:29:21:E0:E5:18:E4:CB:4C:2D:7F:84:2F:AF:F2:49:F0:83:3A
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature
-    Signature Algorithm: sha256WithRSAEncryption
-         ad:cb:66:5d:b7:29:e5:19:7b:7c:ae:23:50:58:34:db:c9:79:
-         39:de:57:83:34:03:6d:bc:bf:e2:31:79:9d:2b:a2:7a:e0:c4:
-         c8:19:96:e0:20:f3:05:2a:a6:f4:b8:90:c4:ea:8d:5e:86:e1:
-         13:99:59:0f:da:c8:3d:96:0d:78:04:4f:26:9c:6a:7c:8e:50:
-         5a:30:f1:37:dc:26:99:28:35:f8:25:b9:4b:f8:d2:f0:d3:b5:
-         61:32:c9:9c:43:39:21:43:c1:de:0d:4d:8e:e5:6f:a1:58:e5:
-         01:84:d6:a5:de:88:2a:55:9f:ec:de:be:b1:13:61:33:dd:50:
-         19:89:dd:11:48:5e:c2:14:8d:69:8f:a9:43:73:80:71:8f:54:
-         ba:da:74:b4:26:ec:5b:82:88:84:90:6d:f7:58:3f:78:d3:20:
-         5b:c3:9b:82:85:b7:ef:98:12:4f:ba:e8:38:f3:8c:af:85:91:
-         66:40:fe:a9:b2:fd:d6:76:ad:70:b7:b5:33:88:64:31:97:81:
-         d9:c6:ec:47:9b:af:3f:31:c8:de:0c:cc:88:3d:b7:6f:6f:19:
-         24:f1:ae:ff:de:95:31:3f:38:e5:ed:a1:e1:e4:6b:54:1f:26:
-         b8:53:79:cf:fe:89:ba:bc:35:a1:bc:2f:8a:07:a2:eb:0d:90:
-         72:ad:8a:60
------BEGIN CERTIFICATE-----
-MIIDUzCCAjugAwIBAgIQHdmvVBU1mWHFeNG5i/punzANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3NTJaFw0yMzEwMTUx
-MDQ3NTJaMBsxGTAXBgNVBAMMEEJvemlkYXIgUHJvZXZza2kwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCa3gD98em5KdlY0Echz0tnF/epApMXz1dbb9sm
-kDAJC9nFZl72ImarSAaqbIiz/ZNFpGDJXytsr9toXifmhXEntyBSYd8UG9oGObIh
-IEsiSLdLdkQCsYlfDlkiy7nJHo2grChd5a7I6swFIKJgERKNbYgKc+h8aJxILMmo
-xp3DPMHn9Af3W25CPT0PhW/iuYip0AKEuBlqrhOhl1CYFsgMG70CyF+jL3N+JfiM
-55JDx2p1vIXqHEcoziybOo+oB+mMinU+wZcyzuPFyh4K1zx3CtKrUcPl3DeQGjW/
-oEqqvTjvnm34gTd/03cjxltjmGQHL0f9fSEvV8LYRADCKSJ5AgMBAAGjgZcwgZQw
-CQYDVR0TBAIwADAdBgNVHQ4EFgQUo58pIeDlGOTLTC1/hC+v8knwgzowRgYDVR0j
-BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
-T0xTLUNBggkAinSTJoBbQrcwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQD
-AgeAMA0GCSqGSIb3DQEBCwUAA4IBAQCty2ZdtynlGXt8riNQWDTbyXk53leDNANt
-vL/iMXmdK6J64MTIGZbgIPMFKqb0uJDE6o1ehuETmVkP2sg9lg14BE8mnGp8jlBa
-MPE33CaZKDX4JblL+NLw07VhMsmcQzkhQ8HeDU2O5W+hWOUBhNal3ogqVZ/s3r6x
-E2Ez3VAZid0RSF7CFI1pj6lDc4Bxj1S62nS0JuxbgoiEkG33WD940yBbw5uChbfv
-mBJPuug484yvhZFmQP6psv3Wdq1wt7UziGQxl4HZxuxHm68/McjeDMyIPbdvbxkk
-8a7/3pUxPzjl7aHh5GtUHya4U3nP/om6vDWhvC+KB6LrDZByrYpg
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-cortex.crt b/roles/ca/files/CA/issued/dsoclab-cortex.crt
deleted file mode 100644
index a743bd0..0000000
--- a/roles/ca/files/CA/issued/dsoclab-cortex.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            5d:c4:bc:49:5f:a0:76:a8:13:a4:c2:32:61:64:0d:92
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:29 2020 GMT
-            Not After : Oct 15 10:47:29 2023 GMT
-        Subject: CN=dsoclab-cortex
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:cd:09:6b:14:33:4a:47:75:5b:d3:d9:67:3b:4d:
-                    ad:1f:a7:1f:33:ab:86:b1:aa:3b:09:ab:1a:a6:fb:
-                    a0:60:04:e3:68:33:0e:85:54:d1:70:61:8a:b9:d5:
-                    d6:b5:6c:c2:b3:36:02:94:b7:1d:18:93:5f:88:81:
-                    ff:2a:f4:99:58:6d:d7:96:e2:d2:64:77:b9:74:44:
-                    3c:f0:fb:5b:0f:43:7d:38:5d:fe:b0:db:05:7a:a9:
-                    c5:10:24:75:13:c8:2d:da:69:be:e3:43:33:f0:28:
-                    30:9a:53:f8:f8:d3:10:32:35:ec:1d:87:ab:1e:2c:
-                    b5:00:7c:9f:8f:61:e0:5d:56:15:8c:46:45:09:78:
-                    02:78:10:c0:af:2f:25:6c:c2:5b:ed:5f:c1:33:0b:
-                    f8:c8:13:dc:df:c3:fc:05:90:ff:06:9e:cb:bc:1d:
-                    2b:c2:57:f2:bd:aa:22:b3:4b:f5:ca:b2:b8:00:18:
-                    f1:14:10:b8:5e:69:9f:ed:fc:04:83:d9:2e:b7:9a:
-                    8a:45:1c:54:71:8f:61:02:6a:8a:84:2f:67:df:92:
-                    3a:0c:5f:e5:b6:e7:6c:27:69:1f:5b:06:d6:7f:e6:
-                    df:ab:2f:31:a5:cd:63:32:60:c0:07:50:6c:0d:39:
-                    cb:68:ae:3c:b2:da:0f:20:06:77:2c:28:ab:3a:30:
-                    92:1b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                9A:0E:E1:26:13:A7:12:5F:A4:F1:41:C0:09:FC:AD:EB:4E:66:C2:50
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-cortex, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         27:2e:a1:0c:8d:fb:b1:36:ff:4e:ac:00:91:75:81:4b:20:79:
-         3f:da:1c:e1:80:b9:8c:6b:60:47:a5:8c:bf:1f:34:98:61:95:
-         00:bb:79:d4:9e:c8:fb:dc:fb:6a:48:b2:69:d1:1a:04:cc:52:
-         ca:0b:48:01:3e:94:1e:68:0b:e3:4d:fa:12:c4:aa:ff:b6:5b:
-         0c:3c:80:21:fe:50:87:8a:14:3a:7d:e7:a3:5e:b6:dc:22:ba:
-         cc:97:69:00:a8:78:08:dd:66:d1:cb:ca:28:41:b9:cc:8a:6b:
-         7c:40:b7:5e:1d:a1:88:5a:b3:fd:18:77:e9:c4:48:fd:38:8f:
-         06:6e:78:0e:f1:1a:1b:b2:6c:0a:df:38:11:e3:5a:3d:2a:5b:
-         de:41:63:14:ab:25:8e:a6:9f:a8:b7:32:9e:dc:23:45:f3:6b:
-         6d:86:b7:17:b3:53:df:55:bd:cb:41:a1:b7:73:ae:21:1b:68:
-         b3:b1:0a:e5:e6:0c:2a:77:76:23:f3:87:ee:5f:0e:6d:cd:3b:
-         94:9a:6f:f2:fd:4f:2d:72:a3:21:94:55:c0:4a:6c:2b:13:e3:
-         82:13:a5:1f:82:6b:ae:6e:e2:ec:eb:7a:25:6a:f2:9e:45:d7:
-         0a:7d:75:be:9d:f7:94:6f:ce:a5:27:d6:9b:dc:d2:12:54:64:
-         09:c4:f6:a9
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQXcS8SV+gdqgTpMIyYWQNkjANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
-MDQ3MjlaMBkxFzAVBgNVBAMMDmRzb2NsYWItY29ydGV4MIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAzQlrFDNKR3Vb09lnO02tH6cfM6uGsao7Casapvug
-YATjaDMOhVTRcGGKudXWtWzCszYClLcdGJNfiIH/KvSZWG3XluLSZHe5dEQ88Ptb
-D0N9OF3+sNsFeqnFECR1E8gt2mm+40Mz8CgwmlP4+NMQMjXsHYerHiy1AHyfj2Hg
-XVYVjEZFCXgCeBDAry8lbMJb7V/BMwv4yBPc38P8BZD/Bp7LvB0rwlfyvaois0v1
-yrK4ABjxFBC4Xmmf7fwEg9kut5qKRRxUcY9hAmqKhC9n35I6DF/ltudsJ2kfWwbW
-f+bfqy8xpc1jMmDAB1BsDTnLaK48stoPIAZ3LCirOjCSGwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFJoO4SYTpxJfpPFBwAn8retOZsJQMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1jb3J0ZXiCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAJy6hDI37
-sTb/TqwAkXWBSyB5P9oc4YC5jGtgR6WMvx80mGGVALt51J7I+9z7akiyadEaBMxS
-ygtIAT6UHmgL4036EsSq/7ZbDDyAIf5Qh4oUOn3no1623CK6zJdpAKh4CN1m0cvK
-KEG5zIprfEC3Xh2hiFqz/Rh36cRI/TiPBm54DvEaG7JsCt84EeNaPSpb3kFjFKsl
-jqafqLcyntwjRfNrbYa3F7NT31W9y0Ght3OuIRtos7EK5eYMKnd2I/OH7l8Obc07
-lJpv8v1PLXKjIZRVwEpsKxPjghOlH4Jrrm7i7Ot6JWrynkXXCn11vp33lG/OpSfW
-m9zSElRkCcT2qQ==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-haproxy.crt b/roles/ca/files/CA/issued/dsoclab-haproxy.crt
deleted file mode 100644
index 5be39cb..0000000
--- a/roles/ca/files/CA/issued/dsoclab-haproxy.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            d2:7b:43:cb:9b:fb:09:cf:cc:86:ef:d1:01:9a:42:fc
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:30 2020 GMT
-            Not After : Oct 15 10:47:30 2023 GMT
-        Subject: CN=dsoclab-haproxy
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c9:c7:22:33:0b:0b:0f:a0:8c:c4:a9:81:37:bd:
-                    51:2f:47:32:fa:1b:88:45:b1:bb:11:43:3d:de:b3:
-                    70:67:d7:8b:39:5a:8f:13:fb:2f:78:08:b1:b1:32:
-                    c6:d1:0e:e4:d3:2e:3a:db:84:db:d2:65:6b:26:24:
-                    6c:d7:16:e5:a5:90:8e:02:46:13:02:0a:96:66:46:
-                    87:b7:b0:ee:56:4c:3c:d8:ae:4c:7d:ef:5b:aa:6e:
-                    01:8e:89:fe:4c:b9:de:6c:ba:e4:3f:8d:f8:d7:3a:
-                    ed:b2:29:9a:5b:ac:5a:86:66:05:f3:19:2f:59:8d:
-                    7c:8b:6a:97:1e:43:8a:36:80:b2:e9:e1:84:f6:94:
-                    bc:13:11:31:b8:d2:5a:72:ed:68:c3:b1:37:e4:5b:
-                    91:82:62:aa:13:f2:b6:e0:3a:aa:85:66:70:0a:a9:
-                    ad:5c:a7:52:ff:dc:f9:99:5e:e5:15:d5:0c:fe:cd:
-                    27:cb:98:9e:5a:69:ca:71:74:31:e6:26:df:ec:d2:
-                    42:43:b9:f3:04:8e:2c:7a:28:a6:f9:8e:ba:64:3c:
-                    69:0e:ac:f5:dc:d5:f3:2a:50:47:50:d4:8c:f5:ee:
-                    31:08:73:69:1f:ae:42:1d:52:84:5d:47:68:dd:a3:
-                    1f:07:57:ec:3e:9e:0d:23:78:16:41:bc:68:f2:4f:
-                    e9:19
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                49:DC:74:02:17:71:C3:D0:A0:64:31:9E:60:2B:B4:38:43:62:DE:98
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-haproxy, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         04:a0:71:31:d2:11:93:09:96:c8:1b:2a:31:b8:b9:34:07:ac:
-         89:cb:b0:6c:b0:f0:17:5f:18:3c:a6:96:ca:b3:fa:c7:af:40:
-         17:e1:7e:e4:dc:ee:fe:5c:dc:86:40:b7:2f:9d:c0:9e:fd:16:
-         6b:85:ab:c2:a8:63:1f:fe:03:2b:89:6a:80:c9:2e:ae:cc:3d:
-         19:75:32:0e:56:57:16:27:02:51:49:1d:b3:78:aa:57:d3:00:
-         9b:93:fe:6d:a3:37:ad:26:35:57:e1:5f:90:bf:ef:30:bc:68:
-         f3:bf:7c:59:69:4f:61:30:2d:48:66:a6:44:2a:51:63:6e:4f:
-         a7:8f:96:7e:91:b2:b2:46:bc:97:1b:01:df:c0:24:5c:b2:aa:
-         8d:20:3a:25:5d:8a:1c:84:53:0d:d4:f6:d5:81:5d:30:de:c4:
-         d7:fa:42:9c:79:68:92:56:b7:76:69:c6:c9:ad:07:47:a6:d2:
-         46:d4:a5:0c:10:a9:03:21:4d:56:40:e5:28:e3:fa:70:1b:23:
-         32:68:07:3d:d6:8a:3a:fb:6d:3b:a6:20:16:1b:09:f3:47:f0:
-         2a:4f:dc:97:86:56:37:96:42:1b:89:b8:76:1a:ab:7a:25:4e:
-         e8:62:d9:a0:3b:ec:62:72:64:64:ca:87:9c:be:0a:08:09:52:
-         ab:03:89:2b
------BEGIN CERTIFICATE-----
-MIIDmTCCAoGgAwIBAgIRANJ7Q8ub+wnPzIbv0QGaQvwwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzMwWhcNMjMxMDE1
-MTA0NzMwWjAaMRgwFgYDVQQDDA9kc29jbGFiLWhhcHJveHkwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDJxyIzCwsPoIzEqYE3vVEvRzL6G4hFsbsRQz3e
-s3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsmJGzXFuWlkI4CRhMCCpZmRoe3
-sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2yKZpbrFqGZgXzGS9ZjXyLapce
-Q4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT8rbgOqqFZnAKqa1cp1L/3PmZ
-XuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6KKb5jrpkPGkOrPXc1fMqUEdQ
-1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZBvGjyT+kZAgMBAAGjgd0wgdow
-CQYDVR0TBAIwADAdBgNVHQ4EFgQUSdx0Ahdxw9CgZDGeYCu0OENi3pgwRgYDVR0j
-BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
-T0xTLUNBggkAinSTJoBbQrcwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
-MAsGA1UdDwQEAwIFoDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRzb2Ns
-YWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEABKBx
-MdIRkwmWyBsqMbi5NAesicuwbLDwF18YPKaWyrP6x69AF+F+5Nzu/lzchkC3L53A
-nv0Wa4WrwqhjH/4DK4lqgMkursw9GXUyDlZXFicCUUkds3iqV9MAm5P+baM3rSY1
-V+FfkL/vMLxo8798WWlPYTAtSGamRCpRY25Pp4+WfpGyska8lxsB38AkXLKqjSA6
-JV2KHIRTDdT21YFdMN7E1/pCnHlokla3dmnGya0HR6bSRtSlDBCpAyFNVkDlKOP6
-cBsjMmgHPdaKOvttO6YgFhsJ80fwKk/cl4ZWN5ZCG4m4dhqreiVO6GLZoDvsYnJk
-ZMqHnL4KCAlSqwOJKw==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-keycloak.crt b/roles/ca/files/CA/issued/dsoclab-keycloak.crt
deleted file mode 100644
index 92b6893..0000000
--- a/roles/ca/files/CA/issued/dsoclab-keycloak.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            fe:75:83:de:f2:35:5a:2c:2b:ba:09:72:0b:d8:09:48
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:28 2020 GMT
-            Not After : Oct 15 10:47:28 2023 GMT
-        Subject: CN=dsoclab-keycloak
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ea:a9:ea:6b:2f:6c:9c:9f:6d:9c:89:4e:01:ba:
-                    c6:c0:32:df:59:26:2b:95:f4:c2:3d:c8:7e:22:ce:
-                    b6:78:03:e8:22:28:81:9c:9a:a6:a7:ba:fd:05:66:
-                    a3:50:81:85:71:c1:d9:ea:bc:21:e1:5d:0a:87:7b:
-                    be:55:b0:7d:01:57:de:4c:fe:3a:c5:c9:54:77:2e:
-                    15:fc:12:07:f8:ef:9f:7b:f7:09:01:70:75:53:3b:
-                    dc:b1:0c:65:4d:49:c4:fb:1d:42:20:6f:81:45:42:
-                    d3:db:1d:4c:57:1b:1d:3b:81:39:ee:b2:cf:95:4b:
-                    29:d0:a8:39:98:d6:93:36:99:bf:c5:43:26:8d:4d:
-                    db:6d:24:3b:fc:16:76:a1:fd:6f:c6:19:11:c7:12:
-                    0d:80:16:4c:88:da:2c:09:78:3d:1b:7c:6c:ec:db:
-                    9e:01:50:5f:a3:56:7f:d4:3b:a4:26:d2:6d:42:7b:
-                    88:4e:8d:64:ed:1e:1a:0e:05:58:65:58:47:83:60:
-                    9e:b4:ed:15:ce:72:4f:a0:b5:22:dd:9f:a4:da:88:
-                    86:fe:cb:84:6e:72:3d:00:42:da:8b:85:2a:f2:ef:
-                    d7:ee:bb:85:42:ba:b9:fb:d9:9d:d2:2c:58:0f:7c:
-                    02:23:b7:46:d0:69:06:37:40:9d:58:74:89:ca:b7:
-                    12:e5
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                FD:C5:77:F8:79:AD:0A:7E:6A:A0:2E:3B:58:6A:9F:43:51:55:0B:DF
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-keycloak, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         9a:c0:35:a3:68:ec:ec:cc:c3:65:5a:bf:03:d0:ee:8d:a0:41:
-         db:6d:89:3e:97:d4:90:7d:63:8e:73:37:43:ae:9a:e2:d0:2b:
-         a7:5e:b2:88:9b:4d:8f:b6:81:bf:f6:46:a0:87:ca:77:ec:5c:
-         af:cd:6b:d8:e8:60:5a:aa:86:be:64:d5:ad:e9:1e:41:7b:6a:
-         df:01:1d:16:86:94:57:82:51:91:be:6b:d6:ae:f0:b9:8c:3d:
-         11:99:c4:93:eb:f7:fa:9e:a3:e3:f8:97:19:cf:63:55:6a:6e:
-         4f:e9:a2:64:a7:35:0d:7e:68:23:89:e1:c6:06:4b:34:67:38:
-         40:d1:81:b3:73:95:3a:3b:67:d2:5a:e4:8e:49:34:b1:ab:6f:
-         b6:60:87:ac:55:5d:f5:59:c0:d5:d3:d8:de:3b:76:c9:41:28:
-         b4:d7:23:ec:a2:3f:1d:3f:74:2e:f0:45:40:35:38:d1:06:50:
-         b2:93:45:df:de:33:5e:0b:89:86:d8:c9:14:61:1c:d2:94:21:
-         1f:bf:df:32:f0:2f:91:52:b0:08:b7:b9:c2:b7:55:2b:ca:05:
-         e4:eb:91:e1:63:45:5d:1a:6f:e8:76:07:89:e8:42:3e:ec:7b:
-         51:0e:a0:d5:8e:c3:3d:26:e3:45:b0:5b:61:d1:98:3b:c3:d4:
-         37:9f:c1:7c
------BEGIN CERTIFICATE-----
-MIIDmzCCAoOgAwIBAgIRAP51g97yNVosK7oJcgvYCUgwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI4WhcNMjMxMDE1
-MTA0NzI4WjAbMRkwFwYDVQQDDBBkc29jbGFiLWtleWNsb2FrMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6qnqay9snJ9tnIlOAbrGwDLfWSYrlfTCPch+
-Is62eAPoIiiBnJqmp7r9BWajUIGFccHZ6rwh4V0Kh3u+VbB9AVfeTP46xclUdy4V
-/BIH+O+fe/cJAXB1UzvcsQxlTUnE+x1CIG+BRULT2x1MVxsdO4E57rLPlUsp0Kg5
-mNaTNpm/xUMmjU3bbSQ7/BZ2of1vxhkRxxINgBZMiNosCXg9G3xs7NueAVBfo1Z/
-1DukJtJtQnuITo1k7R4aDgVYZVhHg2CetO0VznJPoLUi3Z+k2oiG/suEbnI9AELa
-i4Uq8u/X7ruFQrq5+9md0ixYD3wCI7dG0GkGN0CdWHSJyrcS5QIDAQABo4HeMIHb
-MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP3Fd/h5rQp+aqAuO1hqn0NRVQvfMEYGA1Ud
-IwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NU
-T09MUy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
-AjALBgNVHQ8EBAMCBaAwOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4IeZHNv
-Y2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQCa
-wDWjaOzszMNlWr8D0O6NoEHbbYk+l9SQfWOOczdDrpri0CunXrKIm02PtoG/9kag
-h8p37FyvzWvY6GBaqoa+ZNWt6R5Be2rfAR0WhpRXglGRvmvWrvC5jD0RmcST6/f6
-nqPj+JcZz2NVam5P6aJkpzUNfmgjieHGBks0ZzhA0YGzc5U6O2fSWuSOSTSxq2+2
-YIesVV31WcDV09jeO3bJQSi01yPsoj8dP3Qu8EVANTjRBlCyk0Xf3jNeC4mG2MkU
-YRzSlCEfv98y8C+RUrAIt7nCt1UrygXk65HhY0VdGm/odgeJ6EI+7HtRDqDVjsM9
-JuNFsFth0Zg7w9Q3n8F8
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-kibana.crt b/roles/ca/files/CA/issued/dsoclab-kibana.crt
deleted file mode 100644
index f47839f..0000000
--- a/roles/ca/files/CA/issued/dsoclab-kibana.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            7d:fc:33:45:75:73:e8:f1:60:94:a7:4e:6b:2f:23:f1
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:27 2020 GMT
-            Not After : Oct 15 10:47:27 2023 GMT
-        Subject: CN=dsoclab-kibana
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ce:4f:c9:0f:84:4d:4e:7b:dc:11:90:c9:49:a8:
-                    f3:60:44:a8:25:1b:59:83:64:0b:d1:e0:bc:59:50:
-                    22:a5:f5:88:7a:c8:40:65:e4:22:3d:77:d2:8f:9e:
-                    30:17:80:5e:20:85:bc:70:67:61:cb:d8:e2:9f:9a:
-                    7c:7b:a6:e8:4e:79:7b:cd:86:6e:26:52:37:45:b6:
-                    ab:b7:6f:40:8f:7a:55:8b:d1:91:cc:21:6f:55:37:
-                    50:3b:72:1f:2d:3b:bf:75:47:91:88:6a:1c:ea:39:
-                    dd:8b:25:31:55:0e:bc:52:6f:bf:0b:96:ef:e3:12:
-                    5c:da:63:22:54:e5:b3:95:8b:02:9e:57:3e:7b:4f:
-                    a0:f5:6f:07:a8:5b:45:7c:cb:34:83:77:34:a5:b1:
-                    ff:05:12:88:8f:cc:c4:05:5d:e9:e7:7d:2b:12:fa:
-                    bb:4d:25:f4:f7:04:e7:95:06:95:ea:a9:c4:75:4e:
-                    f7:03:67:2d:9c:9a:f4:01:f6:2a:8d:6c:6d:d0:59:
-                    a9:ce:1f:12:b1:76:39:c8:07:d4:20:73:1e:f3:9c:
-                    b9:67:83:3b:a8:7c:6e:fb:86:ea:3f:6a:8e:98:4c:
-                    39:a9:d1:4d:be:9f:0a:43:49:1b:fd:09:67:b6:62:
-                    71:fd:87:9a:63:25:00:aa:c7:a1:4d:23:12:e3:56:
-                    0f:6f
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                50:F3:7D:4F:B2:8C:A5:09:FD:64:CB:C1:97:F1:F8:49:C8:6B:30:4D
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-kibana, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         ae:be:82:6f:6d:e6:c4:cb:c3:2a:d9:d6:ee:11:52:a6:de:89:
-         9e:31:a3:e2:86:07:e9:d1:fe:95:c9:a2:38:90:df:05:ff:e5:
-         99:27:e8:d8:55:00:8a:85:b3:15:a5:e5:5b:ce:4e:4f:01:3b:
-         74:a4:b2:09:fc:6e:95:92:94:2f:76:0d:c7:97:1b:78:c1:08:
-         1e:3a:0e:fa:a6:ab:db:1e:22:26:86:39:f4:bb:89:a1:a1:d1:
-         55:f6:c3:ff:9b:a5:eb:1b:6a:84:8a:1d:3c:5f:7c:03:0d:08:
-         42:6f:d7:14:86:61:38:66:65:f7:c2:86:68:db:81:e9:41:0f:
-         82:cf:bb:be:fd:d7:94:48:cc:f8:cf:4a:40:ce:33:c4:75:51:
-         00:7e:c7:93:f6:3b:92:c1:5e:8a:ce:5f:2c:c2:f4:fe:ec:77:
-         9e:ea:30:d9:53:ee:f9:b9:fd:50:f5:6b:92:1c:57:d2:e0:f3:
-         05:d8:79:a9:63:16:13:09:cf:5f:39:dc:ec:43:e4:65:45:43:
-         65:e4:7c:39:a3:a2:81:47:ab:8f:57:a9:89:9d:56:4b:77:b1:
-         04:c8:9c:54:d2:5c:28:f5:d3:66:ae:9a:9c:a5:91:c7:eb:20:
-         69:fb:58:99:c7:5e:be:ec:4a:7a:62:09:fe:3b:30:f2:4a:d7:
-         1d:f9:0b:c3
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQffwzRXVz6PFglKdOay8j8TANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
-MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWIta2liYW5hMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAzk/JD4RNTnvcEZDJSajzYESoJRtZg2QL0eC8WVAi
-pfWIeshAZeQiPXfSj54wF4BeIIW8cGdhy9jin5p8e6boTnl7zYZuJlI3Rbart29A
-j3pVi9GRzCFvVTdQO3IfLTu/dUeRiGoc6jndiyUxVQ68Um+/C5bv4xJc2mMiVOWz
-lYsCnlc+e0+g9W8HqFtFfMs0g3c0pbH/BRKIj8zEBV3p530rEvq7TSX09wTnlQaV
-6qnEdU73A2ctnJr0AfYqjWxt0Fmpzh8SsXY5yAfUIHMe85y5Z4M7qHxu+4bqP2qO
-mEw5qdFNvp8KQ0kb/QlntmJx/YeaYyUAqsehTSMS41YPbwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFFDzfU+yjKUJ/WTLwZfx+EnIazBNMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1raWJhbmGCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEArr6Cb23m
-xMvDKtnW7hFSpt6JnjGj4oYH6dH+lcmiOJDfBf/lmSfo2FUAioWzFaXlW85OTwE7
-dKSyCfxulZKUL3YNx5cbeMEIHjoO+qar2x4iJoY59LuJoaHRVfbD/5ul6xtqhIod
-PF98Aw0IQm/XFIZhOGZl98KGaNuB6UEPgs+7vv3XlEjM+M9KQM4zxHVRAH7Hk/Y7
-ksFeis5fLML0/ux3nuow2VPu+bn9UPVrkhxX0uDzBdh5qWMWEwnPXznc7EPkZUVD
-ZeR8OaOigUerj1epiZ1WS3exBMicVNJcKPXTZq6anKWRx+sgaftYmcdevuxKemIJ
-/jsw8krXHfkLww==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-misp.crt b/roles/ca/files/CA/issued/dsoclab-misp.crt
deleted file mode 100644
index f830104..0000000
--- a/roles/ca/files/CA/issued/dsoclab-misp.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            75:87:fc:e4:cf:3e:c6:81:17:19:90:76:b1:2c:d5:d2
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:28 2020 GMT
-            Not After : Oct 15 10:47:28 2023 GMT
-        Subject: CN=dsoclab-misp
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:cf:b1:1b:e7:a2:ae:70:81:71:a5:57:46:14:2e:
-                    47:64:89:4e:bd:7d:f0:82:2d:03:19:d6:87:44:b3:
-                    42:bf:72:78:03:cc:91:98:5b:36:42:14:55:e2:82:
-                    16:12:58:60:54:44:8f:15:f6:1b:1f:76:36:22:2e:
-                    e8:ac:d3:3c:0a:df:46:c7:f1:04:bc:3a:bf:fe:4b:
-                    8f:2a:53:83:e3:50:82:06:09:fc:2a:fa:fe:94:a0:
-                    7b:7f:c2:3e:0b:3e:dc:72:b8:94:10:0a:0b:90:fd:
-                    45:76:29:85:52:bf:0f:20:43:78:fe:3b:d3:49:20:
-                    8f:9a:a5:0c:89:bb:0e:97:f2:67:b0:2d:f0:17:53:
-                    25:a6:9b:4b:64:0e:72:8a:bf:c9:e3:8e:41:bb:ed:
-                    f3:33:6a:55:5f:8d:52:84:fa:a3:67:1a:7b:71:fb:
-                    90:f1:5f:61:df:44:ea:0b:77:88:f2:e5:c1:83:71:
-                    58:c7:58:8a:9b:39:45:59:4e:e0:db:16:b6:96:72:
-                    90:8c:ee:c2:13:75:ea:15:c6:6b:e2:dc:3a:de:c8:
-                    07:de:18:84:2d:96:b6:c4:4c:e1:4a:4d:13:6f:6c:
-                    9a:1d:e5:f9:6f:cc:7e:1b:4a:3a:75:1a:b9:37:b0:
-                    6d:a0:1b:69:35:f1:b6:e6:c2:a5:d3:56:d3:57:c7:
-                    0e:8b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                65:C5:56:88:65:AF:77:F1:53:B2:71:5E:16:10:D1:0B:30:FF:28:BE
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-misp, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         5a:57:76:90:fd:a5:0d:ea:b0:22:c9:02:2e:18:91:81:04:d1:
-         f4:64:58:58:19:27:03:9b:5a:dc:de:6c:0e:fb:b7:76:eb:b1:
-         97:36:e2:c7:76:ef:7d:d8:00:c3:20:c0:3d:a7:cf:61:f8:16:
-         4c:96:4c:7c:c8:89:21:d6:d4:eb:3a:c1:3d:98:34:74:6e:39:
-         81:20:6f:9b:4b:8d:b9:35:60:c5:76:19:30:30:06:0f:89:b1:
-         1a:f6:c4:88:52:28:98:41:52:f1:9a:77:82:79:ae:c9:71:ba:
-         d9:e5:e9:b7:ba:08:32:59:eb:5e:7d:11:e0:a8:27:20:91:46:
-         05:56:1e:e6:0b:4d:49:17:52:7f:4b:c4:a3:e0:cd:30:bd:4e:
-         6a:70:2a:f5:77:4d:d1:d6:64:13:8d:4b:1a:d3:0b:0f:8a:49:
-         1e:bf:b4:c0:4f:43:dc:92:e3:c0:f2:2f:4a:c8:30:45:fc:5a:
-         d2:de:92:b2:a1:48:b8:da:ff:f4:0b:04:5d:5d:a7:30:d8:4b:
-         ca:cf:0c:01:6a:50:45:5f:d4:a8:cf:dd:fa:f7:68:0c:4c:45:
-         47:be:3a:c2:39:bb:04:ff:62:a0:bc:91:a0:f2:2b:67:09:89:
-         5a:ff:e6:53:c1:89:18:12:a1:0f:5a:d7:e1:12:8b:88:88:89:
-         ca:b0:30:27
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIQdYf85M8+xoEXGZB2sSzV0jANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjhaFw0yMzEwMTUx
-MDQ3MjhaMBcxFTATBgNVBAMMDGRzb2NsYWItbWlzcDCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAM+xG+eirnCBcaVXRhQuR2SJTr198IItAxnWh0SzQr9y
-eAPMkZhbNkIUVeKCFhJYYFREjxX2Gx92NiIu6KzTPArfRsfxBLw6v/5LjypTg+NQ
-ggYJ/Cr6/pSge3/CPgs+3HK4lBAKC5D9RXYphVK/DyBDeP4700kgj5qlDIm7Dpfy
-Z7At8BdTJaabS2QOcoq/yeOOQbvt8zNqVV+NUoT6o2cae3H7kPFfYd9E6gt3iPLl
-wYNxWMdYips5RVlO4NsWtpZykIzuwhN16hXGa+LcOt7IB94YhC2WtsRM4UpNE29s
-mh3l+W/MfhtKOnUauTewbaAbaTXxtubCpdNW01fHDosCAwEAAaOB2jCB1zAJBgNV
-HRMEAjAAMB0GA1UdDgQWBBRlxVaIZa938VOycV4WENELMP8ovjBGBgNVHSMEPzA9
-gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
-Q0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCwYD
-VR0PBAQDAgWgMDcGA1UdEQQwMC6CDGRzb2NsYWItbWlzcIIeZHNvY2xhYi5nbjQt
-My13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQBaV3aQ/aUN6rAi
-yQIuGJGBBNH0ZFhYGScDm1rc3mwO+7d267GXNuLHdu992ADDIMA9p89h+BZMlkx8
-yIkh1tTrOsE9mDR0bjmBIG+bS425NWDFdhkwMAYPibEa9sSIUiiYQVLxmneCea7J
-cbrZ5em3uggyWetefRHgqCcgkUYFVh7mC01JF1J/S8Sj4M0wvU5qcCr1d03R1mQT
-jUsa0wsPikkev7TAT0PckuPA8i9KyDBF/FrS3pKyoUi42v/0CwRdXacw2EvKzwwB
-alBFX9Soz93692gMTEVHvjrCObsE/2KgvJGg8itnCYla/+ZTwYkYEqEPWtfhEouI
-iInKsDAn
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-nifi-1.crt b/roles/ca/files/CA/issued/dsoclab-nifi-1.crt
deleted file mode 100644
index ad6921c..0000000
--- a/roles/ca/files/CA/issued/dsoclab-nifi-1.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            01:ec:4d:ad:3e:5e:47:cf:4e:4b:98:49:59:32:b3:37
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:25 2020 GMT
-            Not After : Oct 15 10:47:25 2023 GMT
-        Subject: CN=dsoclab-nifi-1
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c3:af:ef:b7:a1:95:47:5f:55:ea:7e:e8:d6:fd:
-                    d5:e3:19:68:2e:72:1f:90:62:a8:79:76:d8:d2:f6:
-                    51:df:71:80:37:5a:ec:7d:fb:6d:78:6e:37:fe:e5:
-                    1b:c8:d5:73:e4:c9:a5:cb:e8:4a:48:26:c6:e0:a6:
-                    5e:14:2c:90:b1:81:b2:69:31:e2:44:85:97:f5:60:
-                    12:88:06:9d:8d:cf:4a:a2:77:b3:d9:ff:f3:41:40:
-                    4c:21:e1:73:8d:98:82:2f:37:27:0c:24:d8:67:bd:
-                    c7:05:50:40:c5:a9:d0:e4:3f:bb:0c:72:29:7c:be:
-                    06:01:96:03:b8:a0:42:c4:6f:6f:da:aa:17:34:5f:
-                    5e:f3:73:0e:77:b5:7a:9a:59:e3:3c:d1:39:50:17:
-                    2f:53:18:05:82:34:29:1b:19:56:2e:c2:db:24:79:
-                    51:0f:a8:d9:66:3c:72:1e:a0:f7:03:d6:e9:e5:c6:
-                    b9:be:94:e4:84:bd:cd:93:26:eb:3b:17:bb:cd:e5:
-                    58:25:f2:28:35:a4:b1:70:df:32:54:85:f6:3c:20:
-                    9f:88:8b:5d:83:a2:c4:1e:31:d9:a1:76:1d:2e:3c:
-                    f8:78:64:a4:dd:3a:b2:56:65:bf:a8:2a:a8:ed:62:
-                    c9:62:2c:72:bd:9d:7e:6b:1f:80:ea:bc:33:60:47:
-                    d3:0f
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                87:9A:8D:12:3A:69:8D:89:98:F6:95:D0:F2:ED:C3:DC:ED:A0:22:12
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-nifi-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         8d:23:38:a7:aa:d0:58:03:f2:98:19:da:62:c6:55:cb:d5:c5:
-         05:dd:55:c5:f9:41:46:ec:75:06:be:0a:0b:7b:0f:ac:10:dd:
-         86:bf:4f:6e:05:c1:7b:c1:1d:1c:ce:c7:f0:a9:0c:6e:79:fe:
-         c2:49:18:d5:5d:4a:ae:c8:d8:ab:ec:45:95:94:c1:8b:30:da:
-         52:1a:42:3c:41:77:65:9e:8a:63:f5:52:c2:71:b7:e2:56:43:
-         bd:89:3a:fa:14:bd:d7:7a:b2:60:43:82:c0:df:4a:e0:a7:02:
-         fd:d7:f6:56:9a:0f:ad:f4:ee:00:06:fb:75:b9:96:63:c8:b3:
-         75:1f:c6:9d:3b:9d:1a:29:cd:09:f0:80:31:5c:4e:97:62:91:
-         73:84:aa:11:cc:4b:00:15:a1:92:62:2a:6b:d4:d6:4c:ed:a5:
-         89:fe:12:c9:d1:0b:48:b8:97:26:e4:5b:ab:da:fe:2d:54:ca:
-         55:23:8b:22:7f:a1:12:4a:21:3e:9e:bb:48:d6:82:b6:a2:cc:
-         83:15:5d:5f:c7:52:a1:01:01:70:60:3f:64:b4:1d:85:4f:56:
-         b7:67:77:b8:ea:59:7a:85:ce:e3:4a:e1:d6:2f:e0:b2:60:44:
-         3a:08:3a:b5:0e:fc:88:ad:e5:a1:f1:a8:79:37:c4:52:02:f0:
-         5b:05:94:0e
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQAexNrT5eR89OS5hJWTKzNzANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjVaFw0yMzEwMTUx
-MDQ3MjVaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0xMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAw6/vt6GVR19V6n7o1v3V4xloLnIfkGKoeXbY0vZR
-33GAN1rsfftteG43/uUbyNVz5Mmly+hKSCbG4KZeFCyQsYGyaTHiRIWX9WASiAad
-jc9Konez2f/zQUBMIeFzjZiCLzcnDCTYZ73HBVBAxanQ5D+7DHIpfL4GAZYDuKBC
-xG9v2qoXNF9e83MOd7V6mlnjPNE5UBcvUxgFgjQpGxlWLsLbJHlRD6jZZjxyHqD3
-A9bp5ca5vpTkhL3NkybrOxe7zeVYJfIoNaSxcN8yVIX2PCCfiItdg6LEHjHZoXYd
-Ljz4eGSk3TqyVmW/qCqo7WLJYixyvZ1+ax+A6rwzYEfTDwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFIeajRI6aY2JmPaV0PLtw9ztoCISMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTGCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAjSM4p6rQ
-WAPymBnaYsZVy9XFBd1VxflBRux1Br4KC3sPrBDdhr9PbgXBe8EdHM7H8KkMbnn+
-wkkY1V1KrsjYq+xFlZTBizDaUhpCPEF3ZZ6KY/VSwnG34lZDvYk6+hS913qyYEOC
-wN9K4KcC/df2VpoPrfTuAAb7dbmWY8izdR/GnTudGinNCfCAMVxOl2KRc4SqEcxL
-ABWhkmIqa9TWTO2lif4SydELSLiXJuRbq9r+LVTKVSOLIn+hEkohPp67SNaCtqLM
-gxVdX8dSoQEBcGA/ZLQdhU9Wt2d3uOpZeoXO40rh1i/gsmBEOgg6tQ78iK3lofGo
-eTfEUgLwWwWUDg==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-nifi-2.crt b/roles/ca/files/CA/issued/dsoclab-nifi-2.crt
deleted file mode 100644
index 56a67ac..0000000
--- a/roles/ca/files/CA/issued/dsoclab-nifi-2.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            8b:69:05:5f:85:86:ce:dd:21:66:0b:24:93:41:26:60
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:25 2020 GMT
-            Not After : Oct 15 10:47:25 2023 GMT
-        Subject: CN=dsoclab-nifi-2
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ac:b7:4b:e2:d5:87:7f:8e:15:9b:cf:c0:17:eb:
-                    db:8c:e3:1b:83:c0:69:b9:06:91:a0:9b:c6:35:dc:
-                    2f:e8:8c:72:28:50:02:82:c5:b1:eb:da:d9:e3:9d:
-                    95:d2:d9:dd:e1:08:35:6d:83:73:95:98:ba:19:fd:
-                    3e:04:67:9a:09:37:45:79:d3:1d:0b:ec:0a:43:cb:
-                    b8:24:cc:68:5c:ce:2e:ae:db:48:d8:6e:5a:f3:31:
-                    be:87:28:86:76:8e:8f:8d:68:95:1f:72:6c:65:4a:
-                    fc:9e:b8:7d:e2:83:e2:3d:b0:30:5d:c1:73:06:ae:
-                    9b:f7:9a:54:b8:02:6b:82:90:11:08:3f:d6:5f:59:
-                    5c:df:aa:25:59:c0:67:7a:fc:e1:f0:c9:4a:8b:e0:
-                    31:b6:53:13:c2:bf:8c:4f:3a:e6:ed:11:30:a6:41:
-                    26:ad:56:8f:03:0b:ad:87:6c:b2:73:c4:2e:41:3e:
-                    99:1a:b6:29:6d:e0:dc:af:8f:45:6e:d5:69:17:0d:
-                    f1:58:a6:7e:8c:80:32:72:24:21:d2:e9:b4:44:23:
-                    f6:10:8f:9f:64:7f:ef:e6:ab:f1:43:94:d0:8a:97:
-                    0e:e4:91:bd:86:b9:1f:42:f4:96:39:85:05:26:ed:
-                    90:01:91:11:a3:1f:04:5b:46:ff:1b:a9:74:77:db:
-                    18:03
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                1F:5E:EF:0E:58:69:FD:21:93:48:19:98:81:48:13:2E:FC:31:61:0C
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-nifi-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         21:2d:9b:f7:0c:74:cd:d4:30:b1:42:5b:32:98:d8:ef:9f:a9:
-         9b:1b:f0:54:67:c3:20:5b:f1:87:4d:ff:e4:a5:db:af:eb:34:
-         8a:b3:fa:d6:14:4a:3c:31:11:8f:09:b0:af:25:39:5a:5e:89:
-         32:cf:c7:48:68:f3:14:72:a0:35:15:ec:76:c7:bb:a7:5b:0c:
-         d5:7e:5b:8c:d8:40:a2:5e:fa:f8:f2:cf:dd:56:65:7e:94:ef:
-         b4:99:25:ba:9f:78:94:7d:54:0c:83:b9:cf:b8:b4:9d:78:6d:
-         62:e3:6c:98:1f:40:b9:35:3c:51:b5:9f:82:7b:1e:77:db:25:
-         f2:71:df:3d:e9:56:93:86:fe:61:48:4f:db:76:5b:5f:b1:96:
-         f9:46:72:5e:01:80:87:b5:be:b4:00:3b:37:7f:5e:44:d4:7e:
-         c5:87:ed:40:6b:9e:f4:ca:1b:b0:4b:84:97:1f:07:0f:7c:8b:
-         d2:7b:b1:3d:a7:f8:ae:39:07:34:50:41:70:1f:07:ba:a6:a2:
-         0d:ca:e5:7b:d4:77:2c:95:4d:16:0c:34:e0:a5:59:7f:43:c7:
-         a0:dd:a0:f0:ed:75:5a:0f:61:76:52:34:ef:7c:a7:21:e4:de:
-         3a:24:cd:39:b6:77:3a:c8:f3:1f:09:2b:80:9a:f0:5d:7f:5e:
-         73:9d:73:eb
------BEGIN CERTIFICATE-----
-MIIDlzCCAn+gAwIBAgIRAItpBV+Fhs7dIWYLJJNBJmAwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI1WhcNMjMxMDE1
-MTA0NzI1WjAZMRcwFQYDVQQDDA5kc29jbGFiLW5pZmktMjCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBAKy3S+LVh3+OFZvPwBfr24zjG4PAabkGkaCbxjXc
-L+iMcihQAoLFseva2eOdldLZ3eEINW2Dc5WYuhn9PgRnmgk3RXnTHQvsCkPLuCTM
-aFzOLq7bSNhuWvMxvocohnaOj41olR9ybGVK/J64feKD4j2wMF3Bcwaum/eaVLgC
-a4KQEQg/1l9ZXN+qJVnAZ3r84fDJSovgMbZTE8K/jE865u0RMKZBJq1WjwMLrYds
-snPELkE+mRq2KW3g3K+PRW7VaRcN8VimfoyAMnIkIdLptEQj9hCPn2R/7+ar8UOU
-0IqXDuSRvYa5H0L0ljmFBSbtkAGREaMfBFtG/xupdHfbGAMCAwEAAaOB3DCB2TAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBQfXu8OWGn9IZNIGZiBSBMu/DFhDDBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0ygh5kc29jbGFi
-LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBACEtm/cM
-dM3UMLFCWzKY2O+fqZsb8FRnwyBb8YdN/+Sl26/rNIqz+tYUSjwxEY8JsK8lOVpe
-iTLPx0ho8xRyoDUV7HbHu6dbDNV+W4zYQKJe+vjyz91WZX6U77SZJbqfeJR9VAyD
-uc+4tJ14bWLjbJgfQLk1PFG1n4J7HnfbJfJx3z3pVpOG/mFIT9t2W1+xlvlGcl4B
-gIe1vrQAOzd/XkTUfsWH7UBrnvTKG7BLhJcfBw98i9J7sT2n+K45BzRQQXAfB7qm
-og3K5XvUdyyVTRYMNOClWX9Dx6DdoPDtdVoPYXZSNO98pyHk3jokzTm2dzrI8x8J
-K4Ca8F1/XnOdc+s=
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-nifi-3.crt b/roles/ca/files/CA/issued/dsoclab-nifi-3.crt
deleted file mode 100644
index 796e826..0000000
--- a/roles/ca/files/CA/issued/dsoclab-nifi-3.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            59:69:91:8f:10:ef:8d:2b:ae:46:b2:6d:6d:62:9d:8e
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:26 2020 GMT
-            Not After : Oct 15 10:47:26 2023 GMT
-        Subject: CN=dsoclab-nifi-3
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:a7:48:a0:d3:ab:1e:8c:49:60:8b:b8:bd:9a:aa:
-                    5c:09:62:01:79:89:c9:e5:5f:30:64:38:ca:f1:95:
-                    2d:48:20:81:ef:60:aa:6f:d1:ef:b4:ac:89:8e:e9:
-                    f5:16:7d:64:07:b0:3b:75:c3:e1:e1:15:71:64:60:
-                    8f:15:8e:16:8b:de:b8:97:79:a7:83:19:77:5b:aa:
-                    36:82:37:b9:51:a7:95:b5:1f:ac:9d:81:c6:ec:fb:
-                    14:3a:84:77:1e:9c:dd:3c:06:30:a1:5e:d0:8f:b0:
-                    c9:5a:13:ad:0e:56:57:bc:1d:3f:be:d7:4c:4b:37:
-                    a2:88:72:4d:1a:62:88:08:a0:57:bb:20:ce:7e:af:
-                    b7:72:f2:ee:86:1a:b1:28:3b:41:f4:d3:ea:14:74:
-                    90:e1:33:41:1a:92:e2:2e:ec:d3:20:60:60:61:d6:
-                    fc:0e:3f:57:43:88:5f:10:29:20:51:40:46:ed:5d:
-                    9f:d1:5a:e7:4b:52:f4:d4:23:60:4a:22:a7:92:6c:
-                    d4:cb:20:01:a6:b9:53:71:7a:71:02:e1:05:72:41:
-                    a5:42:9f:41:47:2c:30:7e:0c:b1:73:cc:f7:63:60:
-                    27:3f:3d:36:93:14:aa:7e:12:ed:1b:f1:cb:4d:e8:
-                    7c:32:20:50:f5:2d:7d:06:0a:93:cf:7a:85:2b:0b:
-                    a6:b1
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                C9:B8:02:23:C4:2E:F5:FE:C9:34:45:77:33:0D:89:CE:D9:A3:30:2A
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-nifi-3, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         32:20:b3:1c:e1:c9:a4:19:75:14:32:1b:cd:c2:83:59:49:07:
-         e3:b8:62:73:ec:4e:69:cb:9b:49:0d:f5:d0:ea:8b:b6:de:3e:
-         76:03:c4:e8:68:0f:01:96:aa:40:b2:1e:99:06:d2:75:f5:31:
-         ec:b7:93:e6:1b:b0:ab:7e:1b:1d:65:46:6d:9f:ac:97:ed:55:
-         53:ca:53:00:5a:ca:c5:83:48:c3:2a:51:db:e7:e7:e1:40:4a:
-         bf:b2:9d:d4:71:d4:54:84:2b:4b:d4:a2:22:73:95:e1:62:51:
-         ce:e3:e2:f6:24:dd:40:08:07:01:6f:ee:27:3e:fc:17:1d:1f:
-         30:da:7f:37:78:7e:b8:af:d8:2c:d9:48:84:92:be:4e:8e:a7:
-         b8:e6:9f:d4:91:5d:44:c9:8b:82:9f:13:eb:d5:2c:00:fa:ef:
-         d6:49:ff:92:0d:83:22:57:45:4a:ac:b6:5e:a2:c6:c1:73:ff:
-         f5:dd:a7:d8:79:9a:a7:96:33:b4:51:17:7f:80:6e:3b:52:a8:
-         61:53:ae:08:1f:02:5a:0c:5b:37:3c:3a:36:ee:74:e2:9e:df:
-         df:01:b5:f6:d0:b8:fa:58:79:53:fd:70:9e:54:c3:6c:68:a7:
-         3f:b0:e4:20:a6:a8:2f:87:5a:8a:08:01:41:de:35:ed:5e:85:
-         ae:dd:e0:3e
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQWWmRjxDvjSuuRrJtbWKdjjANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjZaFw0yMzEwMTUx
-MDQ3MjZaMBkxFzAVBgNVBAMMDmRzb2NsYWItbmlmaS0zMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAp0ig06sejElgi7i9mqpcCWIBeYnJ5V8wZDjK8ZUt
-SCCB72Cqb9HvtKyJjun1Fn1kB7A7dcPh4RVxZGCPFY4Wi964l3mngxl3W6o2gje5
-UaeVtR+snYHG7PsUOoR3HpzdPAYwoV7Qj7DJWhOtDlZXvB0/vtdMSzeiiHJNGmKI
-CKBXuyDOfq+3cvLuhhqxKDtB9NPqFHSQ4TNBGpLiLuzTIGBgYdb8Dj9XQ4hfECkg
-UUBG7V2f0VrnS1L01CNgSiKnkmzUyyABprlTcXpxAuEFckGlQp9BRywwfgyxc8z3
-Y2AnPz02kxSqfhLtG/HLTeh8MiBQ9S19BgqTz3qFKwumsQIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFMm4AiPELvX+yTRFdzMNic7ZozAqMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1uaWZpLTOCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAMiCzHOHJ
-pBl1FDIbzcKDWUkH47hic+xOacubSQ310OqLtt4+dgPE6GgPAZaqQLIemQbSdfUx
-7LeT5huwq34bHWVGbZ+sl+1VU8pTAFrKxYNIwypR2+fn4UBKv7Kd1HHUVIQrS9Si
-InOV4WJRzuPi9iTdQAgHAW/uJz78Fx0fMNp/N3h+uK/YLNlIhJK+To6nuOaf1JFd
-RMmLgp8T69UsAPrv1kn/kg2DIldFSqy2XqLGwXP/9d2n2Hmap5YztFEXf4BuO1Ko
-YVOuCB8CWgxbNzw6Nu504p7f3wG19tC4+lh5U/1wnlTDbGinP7DkIKaoL4daiggB
-Qd417V6Frt3gPg==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-odfe-1.crt b/roles/ca/files/CA/issued/dsoclab-odfe-1.crt
deleted file mode 100644
index 71baad0..0000000
--- a/roles/ca/files/CA/issued/dsoclab-odfe-1.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            97:d2:d0:cf:23:00:c0:a9:66:d1:03:ca:89:a9:92:12
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:26 2020 GMT
-            Not After : Oct 15 10:47:26 2023 GMT
-        Subject: CN=dsoclab-odfe-1
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:e5:46:f6:71:ce:a2:3f:61:5e:9b:f3:c6:61:88:
-                    87:99:0a:ac:b8:e8:9d:3c:5f:8c:60:2b:41:5b:36:
-                    fb:39:0a:6f:a1:16:02:31:ac:0d:bd:0e:ff:95:59:
-                    d8:f1:21:6b:bd:96:d6:7b:79:01:d1:65:1c:ca:09:
-                    22:50:30:01:ea:ed:b4:29:bf:b4:70:25:db:b3:1d:
-                    e9:73:ed:63:93:02:4c:90:22:04:6d:31:74:31:ae:
-                    85:3c:12:8d:b3:f6:92:2f:de:75:75:8f:ca:a5:f2:
-                    a2:12:94:fb:e8:73:30:37:f1:7c:b5:4e:59:ab:71:
-                    73:26:80:9a:46:8d:49:94:b0:09:e5:27:10:34:9d:
-                    c0:53:3b:fa:77:2e:06:c0:73:8e:0f:9a:1e:8c:27:
-                    32:0c:eb:f2:d2:0c:a7:52:48:c6:ee:12:21:15:e3:
-                    45:30:89:81:63:7f:bf:0a:5b:d1:05:c8:1c:fc:5f:
-                    bb:b8:82:2a:92:3b:3a:ae:19:9d:e9:a7:62:7c:0a:
-                    f2:c2:2a:e6:a8:d4:9b:0a:a8:a2:5a:ec:e5:a3:1a:
-                    73:e0:83:3d:d2:e8:74:a9:0b:b0:e4:b0:fd:fe:ad:
-                    1e:57:e8:0d:20:7c:aa:1f:31:69:b5:0d:8c:3f:1c:
-                    8d:dc:d3:71:5b:f1:04:6a:ae:b9:2d:a8:be:28:11:
-                    f5:4b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                DB:92:49:8B:D9:27:41:85:16:AE:C9:CA:F6:8D:11:53:8B:EE:B0:5E
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-odfe-1, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         0f:83:fb:ba:2a:0d:aa:14:3f:3f:0b:00:be:f9:37:f4:7f:29:
-         1e:21:4e:18:07:e0:ae:e1:84:f7:cf:a1:21:a5:36:ba:77:6c:
-         0c:00:11:d5:7d:d8:31:b3:f5:cc:fd:6b:27:8f:99:5f:99:4c:
-         57:88:d0:1a:e7:66:6b:8a:fd:d1:01:e3:88:37:91:8c:7b:e9:
-         e2:22:dd:80:62:64:9e:22:e7:25:b5:b9:89:45:e4:24:f5:19:
-         c0:5d:10:50:57:80:66:23:0c:b1:8e:bd:b3:f1:fa:95:7e:6f:
-         04:d1:da:c2:e8:a1:b2:55:55:66:3a:bc:5b:71:50:8c:a8:56:
-         86:f4:a9:9c:c7:4b:d6:91:73:8e:a9:93:ef:e0:85:5e:5c:53:
-         ae:b3:a7:a4:31:80:f3:b3:e4:03:ad:da:96:f0:14:7b:25:e4:
-         ff:68:9b:8f:28:cd:fc:94:05:5f:38:80:84:d6:f5:d4:b7:bd:
-         43:79:bd:fb:f2:ce:30:73:01:e8:ee:ad:45:4a:ea:88:3f:d1:
-         a2:ef:22:f5:49:cc:d4:27:22:3c:bc:1f:50:81:58:5a:65:9d:
-         d6:14:3b:3f:b2:8f:90:35:2b:e7:1a:9b:58:db:96:06:9b:cf:
-         44:0b:f5:9f:aa:57:28:3c:ab:70:fa:bc:93:90:d9:94:d7:fe:
-         6f:fe:39:2a
------BEGIN CERTIFICATE-----
-MIIDlzCCAn+gAwIBAgIRAJfS0M8jAMCpZtEDyompkhIwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI2WhcNMjMxMDE1
-MTA0NzI2WjAZMRcwFQYDVQQDDA5kc29jbGFiLW9kZmUtMTCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBAOVG9nHOoj9hXpvzxmGIh5kKrLjonTxfjGArQVs2
-+zkKb6EWAjGsDb0O/5VZ2PEha72W1nt5AdFlHMoJIlAwAerttCm/tHAl27Md6XPt
-Y5MCTJAiBG0xdDGuhTwSjbP2ki/edXWPyqXyohKU++hzMDfxfLVOWatxcyaAmkaN
-SZSwCeUnEDSdwFM7+ncuBsBzjg+aHownMgzr8tIMp1JIxu4SIRXjRTCJgWN/vwpb
-0QXIHPxfu7iCKpI7Oq4ZnemnYnwK8sIq5qjUmwqoolrs5aMac+CDPdLodKkLsOSw
-/f6tHlfoDSB8qh8xabUNjD8cjdzTcVvxBGquuS2ovigR9UsCAwEAAaOB3DCB2TAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBTbkkmL2SdBhRauycr2jRFTi+6wXjBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0xgh5kc29jbGFi
-LmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAA+D+7oq
-DaoUPz8LAL75N/R/KR4hThgH4K7hhPfPoSGlNrp3bAwAEdV92DGz9cz9ayePmV+Z
-TFeI0BrnZmuK/dEB44g3kYx76eIi3YBiZJ4i5yW1uYlF5CT1GcBdEFBXgGYjDLGO
-vbPx+pV+bwTR2sLoobJVVWY6vFtxUIyoVob0qZzHS9aRc46pk+/ghV5cU66zp6Qx
-gPOz5AOt2pbwFHsl5P9om48ozfyUBV84gITW9dS3vUN5vfvyzjBzAejurUVK6og/
-0aLvIvVJzNQnIjy8H1CBWFplndYUOz+yj5A1K+cam1jblgabz0QL9Z+qVyg8q3D6
-vJOQ2ZTX/m/+OSo=
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-odfe-2.crt b/roles/ca/files/CA/issued/dsoclab-odfe-2.crt
deleted file mode 100644
index a648174..0000000
--- a/roles/ca/files/CA/issued/dsoclab-odfe-2.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            56:0a:99:c5:a0:3f:c4:b9:fc:92:fd:c6:2f:41:9b:b9
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:27 2020 GMT
-            Not After : Oct 15 10:47:27 2023 GMT
-        Subject: CN=dsoclab-odfe-2
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c7:a5:e1:3f:e0:a3:22:69:f1:b4:15:5e:b9:3c:
-                    db:d7:44:bb:d9:c7:69:94:5b:c1:7d:a3:34:4d:3e:
-                    88:0a:e2:8f:2e:d3:98:94:ae:b4:1f:49:a3:fd:4b:
-                    27:16:70:ab:03:ab:cd:4c:02:2a:7b:ed:3a:ff:49:
-                    49:2e:3b:88:f6:59:85:26:de:37:b4:47:9e:1c:be:
-                    a3:38:8e:b0:22:6b:ca:c5:12:e5:be:40:9c:57:7a:
-                    4d:02:0c:db:13:c5:9d:d2:85:df:99:57:32:90:37:
-                    54:08:16:46:01:54:da:0c:77:31:63:39:46:27:88:
-                    3f:f4:ad:4e:e6:fd:0a:3e:9d:98:9a:53:98:90:be:
-                    9b:ee:e3:b2:91:c7:7f:3f:a1:b9:62:f8:7a:1e:cc:
-                    b4:23:ed:82:a0:5c:ad:86:7b:50:53:c9:ec:57:04:
-                    44:1c:12:f6:33:3f:68:42:f8:b7:2f:25:91:1c:aa:
-                    b0:df:17:6b:ed:6d:cc:6d:a7:d6:b7:07:6b:61:a5:
-                    16:51:9f:02:07:ad:b2:42:42:ca:0b:b1:2e:c1:6e:
-                    94:2d:3e:5e:88:48:8f:b6:8b:15:b0:48:8e:35:58:
-                    ea:b5:90:9c:fb:5a:fa:f5:c7:27:b7:11:30:7a:cb:
-                    36:7c:4f:ea:52:00:47:40:e9:f0:ca:67:63:32:e0:
-                    33:73
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                E6:41:BE:4B:A2:E1:07:EF:2A:FD:16:A7:B6:68:3D:0F:81:F5:15:80
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-odfe-2, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         84:64:d0:92:f6:96:07:be:f1:52:f6:49:15:cd:d0:99:ea:ca:
-         7f:06:a8:d2:68:e3:8e:c3:a3:a9:2d:f2:b7:4a:74:75:9f:02:
-         b4:6f:77:14:ec:89:f9:a3:b5:35:c8:f2:ad:50:df:24:05:d3:
-         0a:a8:49:be:19:de:fc:84:a4:61:af:ff:c0:2c:f7:8b:11:87:
-         34:10:e3:dc:9b:d2:b8:66:0a:f7:3f:05:11:37:41:09:9f:3d:
-         f3:a1:97:b7:62:64:db:5a:46:d9:5a:7a:c8:f7:79:e4:f8:61:
-         2e:5c:e8:82:8d:fc:0e:8d:a4:4f:fd:33:f1:76:0e:8d:21:f4:
-         00:5a:e1:a6:96:21:e0:bb:e4:e6:35:8e:b6:61:49:8a:f2:c1:
-         25:96:cf:c0:f6:e0:0a:0b:75:b5:d5:6c:be:ad:0c:a8:4b:33:
-         44:72:cc:ef:5f:db:09:e7:b9:6e:60:80:7d:02:e9:ab:06:81:
-         24:d3:9d:c3:de:f9:a1:f1:f7:77:ee:6d:49:ab:13:72:c6:62:
-         39:b2:80:32:07:20:51:a3:3e:1a:cf:b9:3a:bc:e3:a1:58:33:
-         22:6f:68:a9:e9:33:0b:8d:24:72:ea:e3:75:68:a3:69:11:a8:
-         2d:86:ed:f2:00:74:d6:d4:ab:fc:30:3f:68:6b:b6:d3:61:30:
-         51:84:09:da
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQVgqZxaA/xLn8kv3GL0GbuTANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
-MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWItb2RmZS0yMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAx6XhP+CjImnxtBVeuTzb10S72cdplFvBfaM0TT6I
-CuKPLtOYlK60H0mj/UsnFnCrA6vNTAIqe+06/0lJLjuI9lmFJt43tEeeHL6jOI6w
-ImvKxRLlvkCcV3pNAgzbE8Wd0oXfmVcykDdUCBZGAVTaDHcxYzlGJ4g/9K1O5v0K
-Pp2YmlOYkL6b7uOykcd/P6G5Yvh6Hsy0I+2CoFythntQU8nsVwREHBL2Mz9oQvi3
-LyWRHKqw3xdr7W3MbafWtwdrYaUWUZ8CB62yQkLKC7EuwW6ULT5eiEiPtosVsEiO
-NVjqtZCc+1r69ccntxEwess2fE/qUgBHQOnwymdjMuAzcwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFOZBvkui4QfvKv0Wp7ZoPQ+B9RWAMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1vZGZlLTKCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAhGTQkvaW
-B77xUvZJFc3QmerKfwao0mjjjsOjqS3yt0p0dZ8CtG93FOyJ+aO1NcjyrVDfJAXT
-CqhJvhne/ISkYa//wCz3ixGHNBDj3JvSuGYK9z8FETdBCZ8986GXt2Jk21pG2Vp6
-yPd55PhhLlzogo38Do2kT/0z8XYOjSH0AFrhppYh4Lvk5jWOtmFJivLBJZbPwPbg
-Cgt1tdVsvq0MqEszRHLM71/bCee5bmCAfQLpqwaBJNOdw975ofH3d+5tSasTcsZi
-ObKAMgcgUaM+Gs+5OrzjoVgzIm9oqekzC40kcurjdWijaRGoLYbt8gB01tSr/DA/
-aGu202EwUYQJ2g==
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/issued/dsoclab-thehive.crt b/roles/ca/files/CA/issued/dsoclab-thehive.crt
deleted file mode 100644
index 0d474c2..0000000
--- a/roles/ca/files/CA/issued/dsoclab-thehive.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            61:09:5c:2c:8d:35:ee:29:1c:99:ce:ab:d4:2b:3c:a4
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:29 2020 GMT
-            Not After : Oct 15 10:47:29 2023 GMT
-        Subject: CN=dsoclab-thehive
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ba:c5:4d:20:a4:60:b7:61:21:ed:16:a1:6f:72:
-                    c4:de:a1:00:c0:ef:fc:5d:a1:89:34:07:15:d2:b4:
-                    3a:14:b8:95:75:8e:81:71:49:46:1d:c8:81:cb:f1:
-                    ec:c7:5a:12:f6:89:60:e4:c8:98:1a:61:c8:2d:12:
-                    8f:73:ee:f8:9d:88:b5:7f:30:70:97:29:b4:ab:43:
-                    2d:dc:db:a7:10:47:c7:b5:26:9b:11:85:fb:d3:27:
-                    8f:3a:55:bc:ea:78:17:b8:89:10:a3:a4:10:60:39:
-                    c3:7f:42:25:a9:fe:84:7f:38:5e:f4:3d:c3:98:3d:
-                    56:b9:ba:81:06:55:8d:65:12:f0:4e:23:88:1d:98:
-                    0c:2f:6e:4f:67:fd:4e:67:39:91:b9:01:52:12:aa:
-                    9e:bb:7a:c8:ea:8f:4a:2d:18:f8:69:9a:3a:a0:c8:
-                    6e:e3:de:c6:db:be:4c:59:e0:cf:bc:34:4f:2c:b0:
-                    ef:3e:82:5a:df:68:be:b8:fb:cc:5f:6a:f2:3e:66:
-                    d4:c6:c5:f6:0b:67:e9:64:85:15:87:60:6f:dc:b4:
-                    5b:13:6f:b0:9b:f8:f3:da:c1:91:9e:81:5f:16:ca:
-                    9e:14:01:c1:1c:ce:2a:d3:c8:3c:0f:be:b1:37:aa:
-                    c9:08:68:2b:de:f9:44:6c:1e:90:a4:12:bc:f5:3c:
-                    46:bd
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                5B:08:8E:F2:1B:8F:12:03:BA:31:02:9C:CE:CC:BC:9F:FC:19:D1:E1
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-thehive, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         7f:b2:fa:33:d6:e3:6c:57:8a:4a:9a:ef:8b:81:2b:df:f3:d6:
-         fb:8c:bc:02:cf:71:54:a0:f2:0d:ae:3b:30:cf:5c:69:d7:d0:
-         aa:cc:16:80:4d:9d:c8:1f:a7:98:9d:26:dc:ae:8e:24:2b:bc:
-         c1:11:a6:8d:4f:ca:13:1f:7f:8f:4c:ef:dd:46:df:d6:97:0a:
-         88:51:4e:f7:46:aa:3d:e3:70:e9:19:e8:9f:7e:22:fa:b6:38:
-         30:00:0a:94:38:09:bf:b8:64:6c:c1:b7:05:6d:4f:f3:27:0c:
-         df:04:ef:a1:4e:e8:2d:4c:06:d0:c0:4f:4f:da:d0:6d:b8:f2:
-         b3:79:18:63:bd:62:83:53:55:38:94:d9:64:ca:e7:4d:71:ce:
-         d1:05:6d:b1:6c:fb:1a:4c:b6:ef:70:2b:3d:9b:1d:66:d8:d9:
-         9f:f0:e5:48:29:50:e8:1b:1a:fb:b4:d2:5e:38:ec:05:45:c2:
-         e7:de:9a:9d:aa:34:67:c5:66:18:e3:86:8b:0c:1a:c4:21:20:
-         7e:b7:ad:e2:0b:d0:0d:d4:76:e6:53:ca:77:bc:ce:d0:9b:7b:
-         7c:fd:42:94:da:63:d8:a7:52:d2:45:f2:d5:55:ef:37:f1:a5:
-         0e:ba:29:c9:b4:ce:99:45:04:21:2b:86:27:bb:c1:f2:86:9a:
-         7c:51:5c:3b
------BEGIN CERTIFICATE-----
-MIIDmDCCAoCgAwIBAgIQYQlcLI017ikcmc6r1Cs8pDANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
-MDQ3MjlaMBoxGDAWBgNVBAMMD2Rzb2NsYWItdGhlaGl2ZTCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALrFTSCkYLdhIe0WoW9yxN6hAMDv/F2hiTQHFdK0
-OhS4lXWOgXFJRh3Igcvx7MdaEvaJYOTImBphyC0Sj3Pu+J2ItX8wcJcptKtDLdzb
-pxBHx7UmmxGF+9MnjzpVvOp4F7iJEKOkEGA5w39CJan+hH84XvQ9w5g9Vrm6gQZV
-jWUS8E4jiB2YDC9uT2f9Tmc5kbkBUhKqnrt6yOqPSi0Y+GmaOqDIbuPextu+TFng
-z7w0Tyyw7z6CWt9ovrj7zF9q8j5m1MbF9gtn6WSFFYdgb9y0WxNvsJv489rBkZ6B
-XxbKnhQBwRzOKtPIPA++sTeqyQhoK975RGwekKQSvPU8Rr0CAwEAAaOB3TCB2jAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBRbCI7yG48SA7oxApzOzLyf/BnR4TBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDoGA1UdEQQzMDGCD2Rzb2NsYWItdGhlaGl2ZYIeZHNvY2xh
-Yi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQB/svoz
-1uNsV4pKmu+LgSvf89b7jLwCz3FUoPINrjswz1xp19CqzBaATZ3IH6eYnSbcro4k
-K7zBEaaNT8oTH3+PTO/dRt/WlwqIUU73Rqo943DpGeiffiL6tjgwAAqUOAm/uGRs
-wbcFbU/zJwzfBO+hTugtTAbQwE9P2tBtuPKzeRhjvWKDU1U4lNlkyudNcc7RBW2x
-bPsaTLbvcCs9mx1m2Nmf8OVIKVDoGxr7tNJeOOwFRcLn3pqdqjRnxWYY44aLDBrE
-ISB+t63iC9AN1HbmU8p3vM7Qm3t8/UKU2mPYp1LSRfLVVe838aUOuinJtM6ZRQQh
-K4Ynu8Hyhpp8UVw7
------END CERTIFICATE-----
diff --git a/roles/ca/files/CA/openssl-easyrsa.cnf b/roles/ca/files/CA/openssl-easyrsa.cnf
deleted file mode 100644
index 1139414..0000000
--- a/roles/ca/files/CA/openssl-easyrsa.cnf
+++ /dev/null
@@ -1,140 +0,0 @@
-# For use with Easy-RSA 3.1 and OpenSSL or LibreSSL
-
-RANDFILE		= $ENV::EASYRSA_PKI/.rnd
-
-####################################################################
-[ ca ]
-default_ca	= CA_default		# The default ca section
-
-####################################################################
-[ CA_default ]
-
-dir		= $ENV::EASYRSA_PKI	# Where everything is kept
-certs		= $dir			# Where the issued certs are kept
-crl_dir		= $dir			# Where the issued crl are kept
-database	= $dir/index.txt	# database index file.
-new_certs_dir	= $dir/certs_by_serial	# default place for new certs.
-
-certificate	= $dir/ca.crt	 	# The CA certificate
-serial		= $dir/serial 		# The current serial number
-crl		= $dir/crl.pem 		# The current CRL
-private_key	= $dir/private/ca.key	# The private key
-RANDFILE	= $dir/.rand		# private random number file
-
-x509_extensions	= basic_exts		# The extentions to add to the cert
-
-# This allows a V2 CRL. Ancient browsers don't like it, but anything Easy-RSA
-# is designed for will. In return, we get the Issuer attached to CRLs.
-crl_extensions	= crl_ext
-
-default_days	= $ENV::EASYRSA_CERT_EXPIRE	# how long to certify for
-default_crl_days= $ENV::EASYRSA_CRL_DAYS	# how long before next CRL
-default_md	= $ENV::EASYRSA_DIGEST		# use public key default MD
-preserve	= no			# keep passed DN ordering
-
-# This allows to renew certificates which have not been revoked
-unique_subject	= no
-
-# A few difference way of specifying how similar the request should look
-# For type CA, the listed attributes must be the same, and the optional
-# and supplied fields are just that :-)
-policy		= policy_anything
-
-# For the 'anything' policy, which defines allowed DN fields
-[ policy_anything ]
-countryName		= optional
-stateOrProvinceName	= optional
-localityName		= optional
-organizationName	= optional
-organizationalUnitName	= optional
-commonName		= supplied
-name			= optional
-emailAddress		= optional
-
-####################################################################
-# Easy-RSA request handling
-# We key off $DN_MODE to determine how to format the DN
-[ req ]
-default_bits		= $ENV::EASYRSA_KEY_SIZE
-default_keyfile 	= privkey.pem
-default_md		= $ENV::EASYRSA_DIGEST
-distinguished_name	= $ENV::EASYRSA_DN
-x509_extensions		= easyrsa_ca	# The extentions to add to the self signed cert
-
-# A placeholder to handle the $EXTRA_EXTS feature:
-#%EXTRA_EXTS%	# Do NOT remove or change this line as $EXTRA_EXTS support requires it
-
-####################################################################
-# Easy-RSA DN (Subject) handling
-
-# Easy-RSA DN for cn_only support:
-[ cn_only ]
-commonName		= Common Name (eg: your user, host, or server name)
-commonName_max		= 64
-commonName_default	= $ENV::EASYRSA_REQ_CN
-
-# Easy-RSA DN for org support:
-[ org ]
-countryName			= Country Name (2 letter code)
-countryName_default		= $ENV::EASYRSA_REQ_COUNTRY
-countryName_min			= 2
-countryName_max			= 2
-
-stateOrProvinceName		= State or Province Name (full name)
-stateOrProvinceName_default	= $ENV::EASYRSA_REQ_PROVINCE
-
-localityName			= Locality Name (eg, city)
-localityName_default		= $ENV::EASYRSA_REQ_CITY
-
-0.organizationName		= Organization Name (eg, company)
-0.organizationName_default	= $ENV::EASYRSA_REQ_ORG
-
-organizationalUnitName		= Organizational Unit Name (eg, section)
-organizationalUnitName_default	= $ENV::EASYRSA_REQ_OU
-
-commonName			= Common Name (eg: your user, host, or server name)
-commonName_max			= 64
-commonName_default		= $ENV::EASYRSA_REQ_CN
-
-emailAddress			= Email Address
-emailAddress_default		= $ENV::EASYRSA_REQ_EMAIL
-emailAddress_max		= 64
-
-####################################################################
-# Easy-RSA cert extension handling
-
-# This section is effectively unused as the main script sets extensions
-# dynamically. This core section is left to support the odd usecase where
-# a user calls openssl directly.
-[ basic_exts ]
-basicConstraints	= CA:FALSE
-subjectKeyIdentifier	= hash
-authorityKeyIdentifier	= keyid,issuer:always
-
-# The Easy-RSA CA extensions
-[ easyrsa_ca ]
-
-# PKIX recommendations:
-
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid:always,issuer:always
-
-# This could be marked critical, but it's nice to support reading by any
-# broken clients who attempt to do so.
-basicConstraints = CA:true
-
-# Limit key usage to CA tasks. If you really want to use the generated pair as
-# a self-signed cert, comment this out.
-keyUsage = cRLSign, keyCertSign
-
-# nsCertType omitted by default. Let's try to let the deprecated stuff die.
-# nsCertType = sslCA
-
-# CRL extensions.
-[ crl_ext ]
-
-# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
-
-# issuerAltName=issuer:copy
-authorityKeyIdentifier=keyid:always,issuer:always
-
diff --git a/roles/ca/files/CA/private/Arne Oslebo.key b/roles/ca/files/CA/private/Arne Oslebo.key
deleted file mode 100644
index 677703b..0000000
--- a/roles/ca/files/CA/private/Arne Oslebo.key	
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOTAIZIW4c8u2T
-2P28GqTCETvhVXPlJpLT2eim3X2iHb5qfGQGOWAzOH1qyomd5RFYIWnzOohe6uUu
-4Z27AB9ZGWlPazI9LxralT2ZlVOfsurbE0hjLUrcDEumHExi4tARJWfLgFIC6Pg7
-POvL9HEDWr7ZoEn+0XL+T77hrKHtpRUG9E7JBqubksI+uVgM9BUOBMCRG4VznbaX
-oWxwChqgzkyNrCnkxRcAJgNEMqh7g1JJQ2ARU8geuOufH+MTVIF3xEdKLiCNSIyR
-LuDU5TcLXLtfQDeS6WA7oPmYf22zIJI82ozweYHy6ne6tHsGVHWJd36tCDquHtwc
-EWMIQxSXAgMBAAECggEAe0rx9hMEvEhztOj6vHEwBsxF/WYU3d8v4W1anl/BtiIQ
-q5OsNAwWcoZQboKdvMAqnYFa0QMqfY/laR9uJVTtZ1LIna5zWB3O7tRC/IdCcy97
-LXNYz+1B0EGI9L306SSlNZolbnpCiXqy4LSIOFzfLiIN7gLeNmz3TQZcDoQeQuhT
-SA42/6EW1GFWWlFjqFy/W9X9VY3AHZAuf4M9Sv5YK6L7w8dwv190F/JXZz/7z0ad
-ElDfUh09xqsfvFhqvAzpWkGglhh6Ns9DGfH4bueoHZ0gF3nbdLxfpPp4eyRv/Ox4
-Ozf0E0snyJPG2N93Pluks5BKnC8yYYAvGo6hE2/wAQKBgQD2nrK2XCvh36uQIhGe
-iGIzRFGeeKB4jt4ZAM45PryrzBqtXMnndV8V4WoZkPRl5D8/HmoeMVbA6Bb1zdLy
-SDLs/U0IquMe8K6QR+F+wjWFLebu+aNaPsKnu8fJOVmDmNGReX7q3thTja+rcSDA
-5h5dEi9viM0OsRl2Xf5zLuzUSQKBgQDWJLDem/cV7vyrB3r60EeVSY9pwj0AD7oZ
-Tbcx2DuibP6ojvsDpUDbh3nuIlu69jRO0kl0rdCVnoWu3eaerDtFKd8EUsoQJv9B
-CV+rD4xoNa/1C+1DggIyAcTrAGxTS+Z/qsgVBy1YGLWtdaqg1TZI47F7m+fVtZRZ
-BMgW8lLh3wKBgQCRltRHxZf+Sw28E/C01yypuT45wFpzcVv6BLi5oKi+/soM6Acl
-heuxPhZlq2YsNJeFyo2470WYsirDx1MtxqORtmNgp4lW/Zz//f9H1pzD13pKP8NI
-hl5hqQBjcWC/yFqHd+MOAqpQgQdgvXMpjXAFX7PzMx5i+vfeIdUR6HTVSQKBgQCR
-fVAljjVrU3mbAXQOX9+ij9297tfe6NB5TJHAbbbmfcLu5mWobmgIPp0aq4FDHu8e
-9kQt38GtRYxx6BU9jKqgLPh2SYE7RCN8HlA/Okscqg0oIbhLe1LegtE1EI6IcTLj
-XjaeAshN6EvW0/DfYLyG/RuibaQvUDS/3j3LSUwCZQKBgGbI4n8JyQx0N5N7seLH
-E874B33QrURfoZqm1Pu03jWzzupzIL3Li+osgS/IAeh2tscCifaWX4eop973NGUe
-FfSGoQal+iQStVoEhKG79k5q3Yut8YFNt0Oy6tYrl7rWm5kSdok97u10lylPJKJY
-jryMaRsmZMcFRwby70+VtnoW
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/Arne Oslebo.p12 b/roles/ca/files/CA/private/Arne Oslebo.p12
deleted file mode 100644
index 273c8018b7bed8f691d9e9c24f5fa9d6425a0e79..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3325
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
SvT*onuj~K4uqy#nN&)~L2}KS7

diff --git a/roles/ca/files/CA/private/Bozidar Proevski.key b/roles/ca/files/CA/private/Bozidar Proevski.key
deleted file mode 100644
index 8a141bb..0000000
--- a/roles/ca/files/CA/private/Bozidar Proevski.key	
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCa3gD98em5KdlY
-0Echz0tnF/epApMXz1dbb9smkDAJC9nFZl72ImarSAaqbIiz/ZNFpGDJXytsr9to
-XifmhXEntyBSYd8UG9oGObIhIEsiSLdLdkQCsYlfDlkiy7nJHo2grChd5a7I6swF
-IKJgERKNbYgKc+h8aJxILMmoxp3DPMHn9Af3W25CPT0PhW/iuYip0AKEuBlqrhOh
-l1CYFsgMG70CyF+jL3N+JfiM55JDx2p1vIXqHEcoziybOo+oB+mMinU+wZcyzuPF
-yh4K1zx3CtKrUcPl3DeQGjW/oEqqvTjvnm34gTd/03cjxltjmGQHL0f9fSEvV8LY
-RADCKSJ5AgMBAAECggEABfbe2ujiM3tlH4KF+stdAA9wPlYXDCe0GZVpP0b2UqLe
-NDgJGDmi8p3Hg/DCIwx1C42VHKxJo9nx/UcDCmHBReJLoGCcks2vy+WU8qmnux5J
-0OIxJFlqDPske66U7SX8FmAK/fLGlH5WdSwYlNKTgFbjkmN8ZK4ytqTi71kW4ln5
-VUlXPd9FYlHc29u4qXJeaRLj9PIz/6FxYl0Ub13dXV8hfVEG8JaeosFjOhZqpgLg
-t1oNaPrKBywYvJ1P+PKfX7lsFV6dllpaosP1j0OEjAVZ3USOAyVgMHmKqqvCynlg
-IuKKF169bsJAb02KKtz1RMY3/Tao3VboHIGSNFSM8QKBgQDOALdl8uRaLSFHjJ6x
-UQWks+Hzs8eCC4qJ39Yj7Eqznat3GmZwc6S5/1s414VAOz8lX1S+xKLEiuxRH1kL
-etFRpGGA7XBHGI7EpRiHc4jyuzt/vMDZyA1Hh8iSsr03uDA5okVi6YWM647b/byU
-Xl9aWZzqX72RDerikpRPMvERgwKBgQDAdCar1Y3flctOl4iRatpya3PWCLVDNGTA
-88/m2DEGtwJxRdhfztNsrXIao8WkwPkvW+fnS5c6M8cXDOph3j5E56xsH4w+9vXG
-+eN0/w6ci1ajZtCu6fCttwCVPBu5dzMSWAfNmnYbnnFQvzHLCV5ZbR3Z0dDMLM7o
-2gD3JdynUwKBgD+aBQWa6lnVGTNH/S7tvvpM93QQi4ZhHdLXovvQVngCNBA/vGT3
-r2IlrvprwB5GrIZTWozTlRVtduzM6ucacknsoJX3uPSaZmncNyiKyTt4BzS3CCu1
-EjSFfa2dNcJgQbNpoFablrodeCv/uRttz67LgCD0kkiYrW5qpxOUvM0VAoGBAKbx
-msIgg+tZs3y/clZCjLAIifk2oJZlkqjWVph3HUAn7NR5tBKYBUsWwg5d1oruYro0
-TVyUc+CnHaLfL0oqUXXQSf+Y9j2AWP97sVXCEti0/jjMbWXtxTvLrZPHCn296u2U
-s2AlByM6NC3JTNZFkDSetPBIU4lprSrMQV4i19/FAoGAe7iRaTkcmMZaE1cvZs2j
-Uv2TzZrXtj9MWtjxV7Tu1NrAcMV2WG4FJHxt+2V30beUrWFlg647Wo62ww2ylrze
-kyQoE0/eccfGI6z7qh8D8026xAoh7oeoLubhzFszz/dqOfJPiUv1GyzyD2m2kSvZ
-DlY3mCb9rL+6jbbXcS+7Iuw=
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/Bozidar Proevski.p12 b/roles/ca/files/CA/private/Bozidar Proevski.p12
deleted file mode 100644
index 24010a64063a960d554cd4e895e17b9e2e62362a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3325
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
MzLJB#K7&e00Bh$qdH?_b

diff --git a/roles/ca/files/CA/private/ca.key b/roles/ca/files/CA/private/ca.key
deleted file mode 100644
index 3c45faa..0000000
--- a/roles/ca/files/CA/private/ca.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEogIBAAKCAQEAtRmQxWST0ewGJIRLAfVOqrSvuNHYtyjnk8EaLCe4bz9RUI8J
-yAt+wVJVateShIEUwnF4Cx9AnbcwtUZM/gFAi8ikzhpjQqpr8jHBEnabqCNTVC5L
-9EHmFzI+ENS4dEZXamaRK99lH7FaMATz4YowFJVQB3iS744v7Z1LyPvvZ6NocdN1
-AIY0zDOfQL4mLEU9w1JHIjUpZacFfuwdqYJ6UYM7G1Rj9nIXmmkWBvQwG0Uy6wLV
-cTtFiXP8zRkqb17jsgSt9P6cBjL4TRj3nJBJUqQ32nqbgPGQ3H2ijZNJBAb8yJVK
-6WQZr7QXOQ5qXxAZUpOVCv9F0m5ShOXTqpVnNQIDAQABAoIBAFg1QJd0mq9Hx+In
-caVdh1iMM37Q7z6fNNR53LafDi1ZaNDVKs1+E9ozsRkeMOZLPQJMZEz+humK3bWd
-rUiW8YpkSyl8HtbMzVElPMYycTSfKCo7dpFdO6YWubZW9hTkYhWYKaN15vpd1vDG
-qMc1GKAd7eIFr4Pw/JU+5TfaxkvysCuih6Q6/MZwddM61eCZO6VBYMf0k94RHn0I
-gIY4hCeyJQ3RoIpzZr4XqUAGdLOvTmzPSTlqT4g7RVgsGQT1p6yG3o42kev0l+Y4
-L92dA25xWeHirWkaQLRj46tX4un67SWA8OkxwA1D49i3keIfhRjsa0d3YELmV8tG
-60l6RcECgYEA6alfHn3zGMw7npN4V/iGEwv7Y4xDcDPdlWTCQ8Btc8XanHuVxcTu
-bENrMouddeM6GI6sz7GVg4vXVyPXa0ZCBPIK61ArS8aNlmggqRd86pgQRWkgCVi2
-gXANwrV6NZNXYZ3X+glIljlRoqlNm7rH9hMQ2KwUW02Q9AdclgvpfQUCgYEAxmnM
-leiSy+s0H/0Wo+LdvpC1NaZPTML6N8cmjwH9xe2mcsGI2a8EQdfqMHE6aWTuHErj
-I3juwSDSBbPlQsf0nRku+qMuLTzsVbCVfG9NiYr5YPxdT7LnW/F/Kuxyn3mW1wgD
-WXi4DM0muRPskw6c8f604crFShSpszLTcYE12HECgYA/exlxgkxiR1JHQc9nLwjV
-8eJpaDkGKcEgjlBM8eGKm41KCDVnlpoj5akhAVdVKNemxlRi1N9G7t4hOYaUCXF0
-QIIA7jXlD1t2KnH9Hnl8jrWU9fuTLnve7J+Ab6d1GMObrLN5pb4HuijYpWCFV5ht
-3T4tb4rUR12DPuDDjxbvNQKBgGEzb4B5IYE4xp5tNGwxNgSni76urOakFkTBEYi5
-pwMR+5r4aPyLmwBOsHHu5ni/c070+PVlx0FhvMICcWwX3SQhNDyhOHv8/qK0EWeW
-d1vMc4Mp3uSudl06n9v9XeH2hQju6gUo+LF8x12f/yPD4utCpoZ++cvi94fMfH18
-mU5hAoGADsoT85//n1VPQLysZpW6FjYIp8quuGS94FAdkiQVKa7u6vO/Vy19ZxFI
-7Cub8sg+e80wGakCCEi22AN6RwJyV9R8ec8ct+K/HeNqujKoDZN6ZDQzXo0a/vgj
-BibssPr6+b3DVE+/e2qlfzjwQA+GqcSmP70fmg8tGlKbZwwBJxk=
------END RSA PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-cortex.key b/roles/ca/files/CA/private/dsoclab-cortex.key
deleted file mode 100644
index 827da54..0000000
--- a/roles/ca/files/CA/private/dsoclab-cortex.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNCWsUM0pHdVvT
-2Wc7Ta0fpx8zq4axqjsJqxqm+6BgBONoMw6FVNFwYYq51da1bMKzNgKUtx0Yk1+I
-gf8q9JlYbdeW4tJkd7l0RDzw+1sPQ304Xf6w2wV6qcUQJHUTyC3aab7jQzPwKDCa
-U/j40xAyNewdh6seLLUAfJ+PYeBdVhWMRkUJeAJ4EMCvLyVswlvtX8EzC/jIE9zf
-w/wFkP8Gnsu8HSvCV/K9qiKzS/XKsrgAGPEUELheaZ/t/ASD2S63mopFHFRxj2EC
-aoqEL2ffkjoMX+W252wnaR9bBtZ/5t+rLzGlzWMyYMAHUGwNOctorjyy2g8gBncs
-KKs6MJIbAgMBAAECggEAIdhGJqV4w2bp64Rdd/qQc0Mg8WSE7VrOOABYe+vZQ0BL
-UW3sHbIsiEJxpc9Yi8YSNYba0jWPxfi9skjTGAIcNe6bwbpbRF5G7Jw++wBivZhE
-WUOawRLGSsMvVkTOVp+agg0mh1kWf7QCodbuqBQe/krMWOuGIYr7rcLki8R6Rq2d
-WuW8Kf697ciklh/6cyy1J6axe1LNT906lYvyRock246KbN517wWw7/fu47Mb2fdC
-U6beFxbmbc5vk4lrViE7gSNkY97Vr/uXW9xlyRzvpNJuzZrm00CgNF1MnOnwf3l1
-k8kc63RMkUJGVWcxo5ubzLXpv4CnnmUNPfaSx+CeUQKBgQDuUT8JOu2vfzAC2VOQ
-OfKR4NgMQ8fnK6T67zpLDeNUAGW+hBi62ewD8xxRse0j/rWXgvADBE1GplPXicZI
-Q0o0VgIiL3NFQgCP7rvtPGE9VQXHYgd+ULKCHcPEBwonlbAhiHSwVnBqSFoqWdj+
-SHiBn4AD1ARoD6WSEVi3X6UU/QKBgQDcQATvzbbcr41vQHm9u1O7v0slk306A4yY
-ItXk+GbtLEoLAiLy7n0REKybZAzniuLCDAQ1h1bWLkqRle26XqVfg3YaxGpoJODy
-gPgr2Hi4Y/lcFrwRThUHEu8eaUWVRtY3B9Rgi5VjLVqydgI3/AFWdlzIVkhBeN0w
-MOtKdEg69wKBgG+wD/TJcz8+QkfzhiAfqDkJwPbuhS8n2yfnGdC274UcspI44kYf
-f2bSdsEqu9KUupIJQWaIi5bCuKRY415Wet5QOKvAxSr+JblOzy/9jizqPc0VeiGO
-vDoSrP6ftfibRHJSuy0xNXn58pfKh9GUMTW+hIZGxNHoE1aDXqqB3qIZAoGBAIIc
-A46SDLNDtZ6CDSjrD6T6dW8GONTboeOBuK+hmlQDdN4Z7gFqp1E8c2r8aK8jmZ8e
-MCJbCA5QnFZyplQRc0oAQ/W+EEnjd0tqqrBkGbR7wqQG/iSO5tcd9UoW0DdF+Gfb
-5Tb/XkmPUmPYWKkv4q5sD5V9ewPKXYgJbgW2ubCzAoGACfaFTBM3zZ2rqjJUk8+F
-fGcuDeh/ZFk4MgcN5nbdKHwyXDhBlUY1FzLZlKi5J1lRyTInZUP8KYnXogw757Md
-oa5wPlnw0a6VSHX1ZZUwa0yz1Rrv5M5CA4vyNBENCaHELKLoRWwbAook1gFie6cV
-nrCXNbsWttgWkzqLDWkPT5M=
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-cortex.p12 b/roles/ca/files/CA/private/dsoclab-cortex.p12
deleted file mode 100644
index 252b3e7ef466cf7a4090ab3d5c551bd8dcaf5e5f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-haproxy.key b/roles/ca/files/CA/private/dsoclab-haproxy.key
deleted file mode 100644
index abcca5e..0000000
--- a/roles/ca/files/CA/private/dsoclab-haproxy.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJxyIzCwsPoIzE
-qYE3vVEvRzL6G4hFsbsRQz3es3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsm
-JGzXFuWlkI4CRhMCCpZmRoe3sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2y
-KZpbrFqGZgXzGS9ZjXyLapceQ4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT
-8rbgOqqFZnAKqa1cp1L/3PmZXuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6
-KKb5jrpkPGkOrPXc1fMqUEdQ1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZB
-vGjyT+kZAgMBAAECggEAUcxwiNDJQySK7I7q23XcG5Z5i/rtW5OZin3/7vA/eVlg
-D3gu2KLTs42Su4siHk4zZYkwQx2xH7INpgDOPsQBhQT9DN7rhcBVCFE/Y7BObp2p
-bQ375HHMb2L5Lpeyh9gx21JIhZtAbcBt6/QBp3hPmnxxnQNwtpUtEDe923714PHD
-SfJ1Nd+mgeJ3ShPrk2jhcDdU82/mQrk5eH8M5QJqlTEWCvBgJaKhBf89T2XrX8jf
-oPzeVijOqgLg49QEtAPmI98GlE1OAp3boFx4/QA/s76pgWZhYIm1hcm1AguYhQvJ
-bi96IgdgVQQp/y7L+ix8zsq+YRxwPuCSBl+9BotYoQKBgQDm4neNC87XV4RhGuHG
-w8WpFXFe1uOucPfyfTMmjifh61GZa4aWgBQByBQxBs729MOr9TFrNApTGWPO8Lag
-ANnREyNndaUAUFgtCdY7Gc99deWyIx861aAVU7GGIFVkCo3OK0twbbyzqOj+B+H8
-c/P1tXXMayt/gPVuRDj7sq90VwKBgQDfuh6Clxa2sq0GdKsRkiDXaY8eZxJZchYw
-+0MsYQjX8hPOGn0YWGy14ppE7JEPTEWSRuzCf5cwem/em8AIESgdCUWcGkgcQO5n
-DvZeXrHHpVrTmGE5xEVNYrD/NPY7VizUsyLNvn5yC4hyByWkwLV+AUGpACE3HP2s
-7xTakmmoDwKBgHKEfXuuEafptrVbWgT2cYHOKu85crDBQ5o40zgaZlm+GDkahiT7
-3fCMRseScvE2sh8GfL6Jj11sSH8KEesGwQLclUDpry+aqkGckW+6+5lk8ssKdKD/
-+GjbnD/EpdX7Dh7mhoJ7S49pBjeJvWM0OBr1KDp+JZMWaaWJnSHqnO/9AoGAXvM4
-m6fP5f3y3PiK2cwwz/tm2DpaWUfID0Wz/pO4Ex4UNbacPMbabF8dpf7Ymat/I1Oi
-i/FmkxaDf/COEV5mrdwPhO7Kh+MuyuJYwThjLx4IbCERsliQKQWnpMgvcINkR2k3
-biZYt8IZSHusCD4ZSL7zxOvfLOrK5qgZK6JT4RUCgYEAk94TNC+rYRZOfOIaYA7+
-K1qTQAe8tawTBlKauXptWCzMFtMSEwozuHuxgnyAS/uRUKFMgRk00KrSvnuyGEBX
-5QxqqhBOMvGDs672q/kVZ5C9M06+y5+Zpg0Mf3r+zOBqB5tCASnl2KfOCZkAt8rV
-kyb4KyOsi81/fpVM/WeOL7w=
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-keycloak.key b/roles/ca/files/CA/private/dsoclab-keycloak.key
deleted file mode 100644
index 8c5ebed..0000000
--- a/roles/ca/files/CA/private/dsoclab-keycloak.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDqqeprL2ycn22c
-iU4BusbAMt9ZJiuV9MI9yH4izrZ4A+giKIGcmqanuv0FZqNQgYVxwdnqvCHhXQqH
-e75VsH0BV95M/jrFyVR3LhX8Egf475979wkBcHVTO9yxDGVNScT7HUIgb4FFQtPb
-HUxXGx07gTnuss+VSynQqDmY1pM2mb/FQyaNTdttJDv8Fnah/W/GGRHHEg2AFkyI
-2iwJeD0bfGzs254BUF+jVn/UO6Qm0m1Ce4hOjWTtHhoOBVhlWEeDYJ607RXOck+g
-tSLdn6TaiIb+y4Rucj0AQtqLhSry79fuu4VCurn72Z3SLFgPfAIjt0bQaQY3QJ1Y
-dInKtxLlAgMBAAECggEBAIj6HCLq8NxP15zLLSSnUQK571PLix+iWovT74UD4tEV
-frgJqvat81/vL2iqq+P/ZtSrUjfKD4DMXawOGGFOfvl8v/9zWv0+8zYKSbz1DYBK
-525mGfSkH2gxhjY2xR8jU389ae8jB3NVefLqHDiwVBT67sUdzTwZPtRUjiJgBliU
-soJCsCutHAy7GW68N79F0BQItHhjMt02fYybnFxNvBntD4lodZDn7K9iqBoZPduX
-TBsH1FcwZQyvQuiUlJgjUFM//5zrZUMjErv+3ev5c/WdpY4ycbo6VVBGZouVbyeX
-RAWeDUE1nrsEsLBSnTkXVInFjPS6mBxsIi/+hlf6XCECgYEA+bWYDKPgelSe8ii5
-mK94wcLr6MybO+GrBHT4lIP1UggGsvPtXTifNvgGrYx90gmmL6F9QWHE+4lxyh5L
-yEXCTHXl4QopgZCxWnnKekz0ma0lFlGYGr4KA0Z3Ntp+sCb/hcqVW/n24wVhNnmo
-z3ztlSI/GY3B598R7dO9sR/RoYkCgYEA8JNKbTegmeeaAyBehEPy3eajAiT6759p
-7m6Ml1P6IC3Ff3fllJrNWRi+JDKnJF9SUePOVWLWSgYSJyFLoiWK1CzoyLPdbcW9
-Ap9XNzD/aoDi6DBbKCFhRpBCsmTPnT8eFvA9PhuYY60w2UoM7byH+i2aJ1Do3izl
-tLsHJbcT230CgYEA5S4Sl/9MBlpl6xEPjh/2L7drdyVaj/IFWLjWcNBPtnMhWtrf
-joBqODQZRO09iSlL+kk3wWsvNEEoS33UxcGomy5Vxl3iTET1UXmYKPk6QVUVRc+r
-T1f9rpXc0l5kid2xBSUyQdFAE4obd7jfA1fAYfClgxmEzv//34xHfCoc5ykCgYEA
-01sD00pA3ZXc+AwzHY64y3z6D0M/9s+d+GzFNZoAsM6lqaRDXbhW2oTjX9fkgg8A
-upMiTl/kFeqZfilBUnYbLuc5qEJlMjC8KpakwAdbDk2njAgXvfz9gknxXts0j1jJ
-bauokm0aB9A7j1sAWsj8ya3QtePegnr9YDfEQr1CQ90CgYBfAQaYG9ldXcxTlERG
-jOGu0bh9DtnmwsenwTZQD4mNHpvL0MkmIQxR5FAL8XXbNBq50zCiOapLLrhdqbh0
-ih3WoOdqxLIDQtAJYs3ANhOmEAxvQPxpPKhRHRKPGXxyzgW9zeQ08GpYoR/M7VRF
-TypqufvopzWOpbxpgbfiJQmd8g==
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-keycloak.p12 b/roles/ca/files/CA/private/dsoclab-keycloak.p12
deleted file mode 100644
index 41e7ba3a2fe1ed26a9e29ffe24a723a5812760d3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-kibana.key b/roles/ca/files/CA/private/dsoclab-kibana.key
deleted file mode 100644
index 9eec2e4..0000000
--- a/roles/ca/files/CA/private/dsoclab-kibana.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOT8kPhE1Oe9wR
-kMlJqPNgRKglG1mDZAvR4LxZUCKl9Yh6yEBl5CI9d9KPnjAXgF4ghbxwZ2HL2OKf
-mnx7puhOeXvNhm4mUjdFtqu3b0CPelWL0ZHMIW9VN1A7ch8tO791R5GIahzqOd2L
-JTFVDrxSb78Llu/jElzaYyJU5bOViwKeVz57T6D1bweoW0V8yzSDdzSlsf8FEoiP
-zMQFXennfSsS+rtNJfT3BOeVBpXqqcR1TvcDZy2cmvQB9iqNbG3QWanOHxKxdjnI
-B9Qgcx7znLlngzuofG77huo/ao6YTDmp0U2+nwpDSRv9CWe2YnH9h5pjJQCqx6FN
-IxLjVg9vAgMBAAECggEBAKJC7gdeLs8Da1oFXcqpLoEQfo5wrD5CeWlgL8Ku3BFa
-wzSOOtfoTWW6z8hUyc4yD9XUWRiutqP0uIh+oFlANIVD1rMWf5t0HjSeLv/eaBBw
-Tsfg06KQyVdkYZ3fa9XPoA1FdJitnIA7cpr1bY9QP502djNPSux0jMLWJTJQVqXN
-fXykLoIvB8xIPWbJAJMgF75turJMFT3wGN+qjCzbsZqIHmqp4eaKoH4Mz+Y6SJcA
-uSzCdGKVPxHUVZbtkXn5GZXFx5YQ0wwRHJRWQ6Fn49HtKc5vBc7PN8fG18+s3DA2
-BR7MLgIaHGBKsnJgcOOZQiRCQP/uBBEIxIF0qU3h5UECgYEA6aiUvvBNcShCRaaH
-Wf5GpYTT1ANNv5+3sCTy4KKt3yCxyyn5ENEFL1i8w6/LffGIAsoLnoEcxWV/fhLy
-ZH5FzIYxlR/w2rddUyOXENx/9CWw/IhL91U9525JCJ0B0TBkZ9842ORX7kcI8+0g
-4oaC5bDYTZotAto4ftNIzmfznesCgYEA4gnREIl4nv9v28x5aUS+HhSpsH9kkVrr
-FQ0amCJSHu4U9J39MXS3Fju3rlmZG59J9ymEQ4tr0Hq3S+tsTy4hP5d67/KtoxKr
-3smyKduX6gfOmEy3TjCSc+OMebM7lX0crX2+0JCm355yDC8fxdAGxpmqYvwmVw9Q
-NbIb2mHR/40CgYEAjshlnQhbSnq/hLBupZ+srBivGS+rox2Gsizh/kNq3J6uBuhv
-Osd/0572Ot6CC0Q9SPcOgp2DZ1zOu8v4M1C2dnTKd8Y8+Gp0rQlilvsndZpSvP7M
-7Sc53OKX3puTMLHRqWfO5TskQIdIAUc2gTaRZqragxFj0App25ZhN0BurmECgYEA
-uM8L5vhu7ZitjUk17zKsOo3sW4kc4ZczY4fOOZq+B9niukm+LMRfuUbkHCHXg/UN
-lY6VPGBuqwraeLEoYei2eHbSpgKFozHt4f6Is55+K3Nsn6sBqGUgKK5gOVSon8Wm
-P9byvzW1qlmyp3GUCbjXAWO8IqhEdKPpka1pBnk6KDUCgYAhGqRGJ7NG4+Wz/0/5
-Z/IQeEsLO4lB7EuIADn9udmrYgYqv7sHDzhIUOviJPRgf2ag68LEXXZsC029famu
-/wbhD6pw1yq0QKGDcgH/LzHL9+74TqRlT7drPyOFPqOGPKtc88wL/aXRC90n7dsT
-jFEbunnLOfUUjgxXiJpNU0FtjQ==
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-kibana.p12 b/roles/ca/files/CA/private/dsoclab-kibana.p12
deleted file mode 100644
index f9e8737d615ab77c25857cf3b3c8eb2d77f03104..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
zcmXqL;&o(VWHxBxWoP5mYV&CO&dbQoxS)yW2TK#r7lS6A4+c%_%Mns+3!2zx7&Ng@
zVPa%3Xkzb0$S@knuyH|6;9+Dl;A7zkz3X<M_;O+c6B7qRLlb+#{#WVQ=WboLTA<Bx
z_;#%94`HK*EBdpqgb7EV()ly9`tzHXpTRnB|8KLm3||$dGt=tWqsPD3B+WejGSNKM
zd%sDrX=Z-#S>r=lXR0=QU)HxbD2VZPOH;}1?xTVQx!V-nvi`k2ch@yXT2XIWtylVG
zYsvMl&MudVXP*`9uQNYlp?j1$wB-Ec;FB|c7|&WPlP)WxwP_xQ;th%N>-~jF5^4WT
zi>K?R?w88@b&K!JcKrq0pYlC_d+Pk{@Vb2c{&Qs(@~849C||m_?%ipH{yi@qsz=`Y
z865k=|7_caBO8k5C5J1ShTRKsbAP&ewM+OpV>>g~)5q>u+k3s0Uf}HAzBKhoovq{A
z{}SaqS>k@V$I}lRulCwF&0(>8pp97iD=mMEn~%jmdGs~D>b-LKg>NH!n5l-QLzSm>
zxYhC7LFzlT?v^f}=y*|9yGEMX&V1V0(|T{561wMHN^yRDmpjiXr>gk%zIQjWBChT7
zJ8)BL(w(@Q%iLz4d6KFTrZDUJlPb}|;Lhl6OO$^;IDGiUbzzZzJMYUbxL+K-|5=;m
z8NaBb{cjq)7`OhAXk^=9ec?wwTR_eC&4zwijfpRAy?;Jc+x8o$#F7>1d*5+}n6@%@
zmo<q;vDStQZ;4*B??}FMu=gpp)9<e@*?4Qou4WOp#*f??S6z?0yD44V5W4?(?Nf!C
zS@BKF@3hT5ZSQ@n?XS;qm7dF+y!STxPdc{s-{zc?+ooKfpwxXVY?V>=*Rm}a4oh5P
zPC6m+nZ-@c{BHNdwnb@ak7m2Q_<u)ciPZ9tQk}minM$r%ea#Z8icvZ2)^RY;a{g0!
zvnIui9kUPrwG|KFkXOU>Ym)oxTS_SpJKjnhNLh8R$MM&{$(mw37eZ&UDt-NS^<mDO
zUalqFk-HtIC-PRaob+7CB3gfI@1LkE6(POHeq^X>hMP;R)qU}0zm>t^AO(}7SJLdA
z#1gfZJ~j1Tq-Pq-Ftu~x-G@aDU-=#|9NV8VHLa!C|NVM*-^**Jq;aou2zV407Tn&;
z&ab<nwCT)hyD9g$7Om1TH_}<(#PHHC-}%5j<5j7;i&j0CwCS28qLyxF>d))BRQuPJ
z=_T%SPhX$)U{6Mo{xmKdVJWx0fzK5ceyLZ9ESPcn&Kse<_A2q+Tob$*?|1(@^X|XV
zwY@SzSC72lm})F=z-Fy5AKO&9u%B;4l#fK;dna&V!HHA%TpE-OEZ@oZ_*+ft>0HRw
z6SDogH;Yn`v&hk(I~x>C9T)N*S(Vw$WtjQ-mz^Y2!OK6s*K2yeJpA{gbUk;1xyNj~
zo^Y8GC5EQ?Gpw$iK9w=aM4*N5-rl}#H!3Sk&j?9=U9DyD$n5hK+XH79YCI-OuwTA@
zamk6(KbT|A`W#OGTzt6v07HPOYKhpXis?y>$BxfAB>nS-hG@Y@rtRS@*-7o1b1$Eo
z%`@A1cY~L)e`dJQYVA|@zdDL?|L`lD8^ks62#Q_qEYOah`exy&{Tn*^QdxuLuE{>l
z-WmIB@#aIDJF6}lUt`p2(fv1JQ>1TO@$clS1(q5XPv;u`-DJ_`y)0sN&yxA!kNVi$
z%pBI&tc$yK$H;f?%q^cLew*nKzk2;LHP>A)&bOx7G{67#PhjO$m1_}ou4kEb%jP^`
zytHZV^x3-?cCXp>pYQYe<jIVdOiGiOE{HB_oSgMJS9;a8yUT+fKJBkMeDhn>p2u<y
z=MCSd1-a*`X2*Fil&-W8KGGMEdT!IQsj5NAE(>K7dEFN+d;6t2WajB_x55tgCCu-C
z^IM!{%5Awj0b*~?JD<(mH`5_z%fa$(2lguI&bS+=6VTqd{Lviyth+VmW?Ytbe1B$M
zVzZi2;I=r4TU^q|jvCv{mYqDc$F*o@k>>TAe$W58bU)M#*5a32dVb@xqQfB$>Sy%3
zDrf9ixZnv(^n^=qG%VIjFS&a#<d*Wf?1dT{CLijqKHUC`d6n6c`%khSFs$NSzH;G&
zjt}{pwThA@G?j$TwXB<-K2zw^+v(5DAK7ep?wRcRT;Gnj?VjFM|ISa9ix;ztD~a|!
zT=S-K*V;9zn=)2--h8EdPPWy`-&t>i%f`p74<7ePu2_@e|2!)#bke!|FW0aZi9ZzL
z@#R{t$m2RgFj7-nMDt8cb$@UhYp1kV3^#9NX`Q_9x8|=K*GVL6@a$NVXnEk<1wW2D
z7bWf$m#kXvFE0@)&z@-6y2q%+?9#sY{b^F{^%oYb$e#XN*sJq3%cKpmiFX7Z&hn`K
zb5C*0%OHVe*M9EK2%qq%CpYR)dG$snkq(!~`O*jf%{Y1T&@l$7wKr@h?=1g4*WGgV
zzQ?z%Yh~4r@p?@B8X6^XvRO2eT{tT1)AHwakBt;x=O!@c{qCQ8zr<NR@7g6lEuosf
zorxD#1srK)np^goy-N5^<}AI-tNdPkI+a{~>sxna-j=!lk`2V-Pk${@=sVc=B4OE8
zkK(rv=iD)gdpQ4N(A;WCR->P%TVK7}<*8P-d-blBQB02yg=H%DKb-vP`j%~9&oMc@
z(ePwfzjPurxu{>}$oxlXo4BG2wWAf*uTV%6-`ug9BWP0D!>NDtyefCDK6zNM;z#Ye
zx2AT^22HGvNEPyeCRQVsCRROzCRQzjCRQ~zZdmoq#mKaviRGO^6U!@<TALYEYv=L`
zY+d>!<vys^W@%zM(Nklr_Hcpi+OxHeRa{)Fgi{)yeYWpQEt)wuIrqWgO8aRss|t4I
zr1CCnyxpSy$<yWVCIRykE_=6KcK;sz>}4an?E3`~q5Eqh<}b~N6Lx3(eZKp)=$5A}
zwY$PU9SbgVddu&da{kFCk-Y5^Ez&OE4<ER(<HK5o*L^YlM{E!L3*30Xv3jHCHkH&T
zH9LPVh`zl2@GG9Q#mmfFT|@g$pJFqQ?tQ2K+r47{@>7e})w$2-+^y~>#%OvrRYJ_?
z&q>{PMP3^g8Mj=LYq9$^=gJh-7L@~SYm0CC%URejO|W|1yI(UVM|Gom=t=STTf9uK
zD*lL8O*2Sg5Q@IOB<^O{frQih^}M%qce-tP<H0+jvG4EflbpB3_+twhYJ_!vT(9??
zoXvl{qG_>)^se{z{B6m0-K);nvX)M9-}*oFb>#eg=E=LSuGgE&w5iihie-AEX!T`}
zvWaYu+ApLxvA<)R*3eYS%@bmG_~W(YE4TJ`oit>6eJ6-#x_Z(U+xe02Hr!8+unRNS
zocky|M*NK7uK=Z3xp^IhAs3c(zv11-@owtBf7f?O=WOx5U8$&=X7}fP;^es^+4@Rz
zW*+kRTf8dB-FlyamF0=>9ky1D`}}`0g}weGa8`Ho2CKq=Dc9FbvfFWLnbqMm`=?*-
zKde9fT!TTy{aK>)jmf^o+gdkvUo7f;%K2$i%4NZq_oEy?ar<!{)X_}i;<uG8<<7aX
ziE*F9B&G+G+H7vzDv6$RX?}226E7!=;F)P`UksUbr0!oT5eRloet$fD)rL(io3DTM
zU(x>e-SnfgR$Qq6IHSVbyKhnSk$by2LwGn}<@D7VGfmStwb%b1L+nob2Xj={U7M(%
zS-N{d)6DOT&kuCAT~gNTDox_JT6=TW%Fip~7ajQL7X9>x{h>hdkoiuhg<YPDHw%^T
zWUSn3<Dr-E%2NL9?N?o2xq}sT`zxz$bToLrwJ}&Mdv`L4>Du~DVntJ|-6yU7t=3%M
zF5y4(>a6Jxx7Dd|8JNwxtRWZFxc!>!jwYpTduo<lVtSx`hj&u-&6=lTa=U*TD@b}p
z-?LY05S!Se^?Y8k#ie%T`}0z+tzqDvXBgw=rj%%T?W?Opzr=L8c`cRwAFLyy_A)<E
znr&9vd)#YM>dwVmjl;HFQ<}f%yztU{Hiu@aY!f@A{PV%lbiQX1Is%`cZn6AQRFk=U
z$)BAsUm5o=wpni)+Q_ukK6Co!6D^+BM-sdD?x|?bo0w(9E-+Cb(uYTvFLOU5UwU-C
z-CP-&_jlA*Z`im)Mt+X|+ORdx!k@-m+GM`rcFHWz$$q^rukLS-KKf?KwAZc=gtv3Q
zxb~`)Eon>X8J&Y&a?Q5Z*EZhEp1%Ag)A~9gHg}2d7uH3`n&dy~zhuyCSl5{7es-eF
zqAJ1S=QRqd;?e6{Jq`Wddhg1yx#Lzi)pF+2s+AWDqjgflS8uJ<x3;;L(Y8wKV1-V&
zYQBw7XGF$}zH^PMmuz^>udumr|4e>2sRiLI-A`gRX@p<viZ(6zEA~%Q^VgaM*{<sT
zn~dITi{v*pZBRU`7TLiZ>~LI4{T;&t|35RH`v1+nIQhMNGC$icm#543M%zX!pZs&{
zwC5+YsK2SXdtN>``5{u=_>%Xvbt`@-?ta7cpd&#@IYx=)_bmZM56)!_Wfdn^&A$62
zkJ(VwKp9>-a*7&?v51`WJ*KDBa$wW1ra3m%KWxu05n69#U}&Idz{$p{&Bx3n#mc}U
m(*G#1OKZ{c+x>ps?;lI6@E$Qpo5R8(rlp+|ogU&1DkTBWK2}fw

diff --git a/roles/ca/files/CA/private/dsoclab-misp.key b/roles/ca/files/CA/private/dsoclab-misp.key
deleted file mode 100644
index 9b8a5d6..0000000
--- a/roles/ca/files/CA/private/dsoclab-misp.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPsRvnoq5wgXGl
-V0YULkdkiU69ffCCLQMZ1odEs0K/cngDzJGYWzZCFFXighYSWGBURI8V9hsfdjYi
-Luis0zwK30bH8QS8Or/+S48qU4PjUIIGCfwq+v6UoHt/wj4LPtxyuJQQCguQ/UV2
-KYVSvw8gQ3j+O9NJII+apQyJuw6X8mewLfAXUyWmm0tkDnKKv8njjkG77fMzalVf
-jVKE+qNnGntx+5DxX2HfROoLd4jy5cGDcVjHWIqbOUVZTuDbFraWcpCM7sITdeoV
-xmvi3DreyAfeGIQtlrbETOFKTRNvbJod5flvzH4bSjp1Grk3sG2gG2k18bbmwqXT
-VtNXxw6LAgMBAAECggEBAIb/4VqMVQTOLvfBJc0iU8eWtLbZMMb8ySI3Xs+aEc3t
-cvNNOmolB7ymCTllQ0GDboH32mX1BaZKqV9IzHbiCwoqHZEDKgfLzFZX+OQTSwwr
-nYidXur1IRuswPnHYZrfrl1net5+GQyShF8NGBs0E3nuQaxHaMwEvTNRCzhPfWnn
-u/g3IExtSdE/XSxRnTGRQqSnMAf9OXs9bw/iTSR5cQO2mW/dRLr4aUCQOJ5Hx4mO
-ub172vkNeNwOSUzc9FjtZyQZOtn25WoS7SusK7y9ToDqqR5OcI5M+kxq+fQo8Wvu
-XlIeOvTKTHOBaih6QYEzHo9zq893I/c0xiOmfOr0v7kCgYEA7WQ7g5z+2Lyt35Sq
-XmzyQyAEbx+PMPc7yTQC62YuvpEAaDFDHMphDw1zM2mraLO+2IuBuDz7CTlsf1zl
-xwEJoEZa3odRi2McpqiUVQgJYD+bCUv35J8X93K4/7tLHvXDJQ3BKBNNoLHxjD5P
-SlR5xBCFwZiiXAkquWpZaaWAbg0CgYEA3/jjf723dlWRrVcG/m7VJrhTWq10Jltp
-8y786INKU1IUrwqFt7ph4c9/Jbop40QVkJKzsPojzWreDf3EZYGnBVhOLA5p4MC0
-X1ZTzN86dn1Y3SDCopGnJVP8X2EdDGfsTkfXxOjRCzSPOyZzxzseACw9WWAmullU
-zQs4K6/4YPcCgYB117znb8bepoMVqwILz79PbRRmaV82qnRGRAhy/I2V0ftGvbWY
-FCqsQzv9uKX7WscRTed+It9nS9c9PkteR3iU1HgFYV0seW3emW7Q6yVkXw7CRbDw
-D73g+1U0ta/r1Yoi2boZ/8MYU10aBlBsEJVFrAIKAZAPagmIc2+hTyP6/QKBgQDX
-FHSr3C0NJzkhA7zEovxwFXx+TKmImCqTjKD0S/gZMW6JdYpZmFOc/Jz2RuMoyt4G
-msqSfnPZNPIO744liC8zM8zGBAVq/sN39je9OvUyikbG+0nNwh+H+jIWCfVST44e
-0mEDSCxPHWcaf1+ZiEzUD6fOZ0Zpl5WW3lpPocncmwKBgQDIR7uJctv3UZkEO+oq
-g1Q4jLUYJFUb/3fk1mEmpq+b90e/xQMqZHlu/KHiHcKrukdWj67d/LY4mrw4DebR
-PTgdj9e0O8V9M7BYxDN+zEYrvmmY4A+tg07zm8aqmhCNKpOMsW0MkKFFuRiMkiCh
-bopZVfjdd+d/56vLZW+GSBaCew==
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-misp.p12 b/roles/ca/files/CA/private/dsoclab-misp.p12
deleted file mode 100644
index 34e63cf61702da91592e85b97cc2c41066f4089a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3389
zcmXqL;<aRAWHxBx`On6w)#lOmotKfFaX}N$2bLzDHwH~SFASR4=Od)p7BsO>Flb`$
zVPa%3Xku?g$S@knuyH|6;9+Dl;A7#~W`A?S%O4B!n3y;i8k*Q69HY1z_Oa@3PW_hK
zk~?LZ*^ARp`yUuP8mMekesuhy(1|Hq6N9hie_pxfYDiO#;hz~g`{j)G`?7?eiZE4Z
zjP7^fJ9uOlzmBZ0&;QCtYxk#Y|E%z0*1Uq_`TG?b-*!F;iAb8gWRs2d8s}SlpF$U2
zNywH7(z_$>+uyJ>YV&jH?{^%+jmw1Q?~FMiy5`^^yI}A8th^iMtDH|i$$I3ZwPLWE
z&!Y;B*5y|xEbcrJlI7cJ|ETiZQr#n}pPLu`on^eIK%e#b!{BWPw=V2y<DR!fIJf!r
zq<xK7`wIiCxY&N|HsJL=nSIxI#mU8=_FR2ub+BQ<siQ~EO{fw4vaoD#$Fd!1d)lWw
zD`nhLV83F%(U}i?G5z%o*W?P<2Ieo4sNQt$$)&Y-?!9uHyVgU4XUfyO-ig0o#GiXF
zyL>*A%cX|y`)$mON3!3m>dcy4GcPXw?hAW^q=<cAw;D~-p5)eR?PN9c`<L4X|D8<q
zu@kIG;Y#TYvwk8Qz}%j=OZn=Nl2G59X=mThpD335nIrJR{M(`3Q|u-@EdQx_+n-zW
zJmcgKQD3Trt2+;KR2`f7&|7Ot*A>-TsScg}B1dfU67{a>Je_V*U~YJ1*V~^#e;<4c
z5lwyjYSyADi#|mqab4eYRQW`gz%Fb3t@B<g`mf@iEqmwo>GM{*oHnuFc+LA@v+vPr
zKVA75Lcask`Ab_W*9y7o-!#?UCZZ^G-k-hk&H^*8Yy4Gns?I-Y`*AFK9kce0qtmv2
z;PaerdV6lfEyl#D57umY_Obkv{M6hTyVl&URSEXG{Lf!Hx-Vm|-t1Xx0z9XcG$*pn
zcPP;CwJj3Q4tr5==l^R1Ut;0Ocl+ge1fHC?x>e78$>P|`w+_?4wMoCURkcgHdC%(f
zj++lHIbO~2c0LjLJ7KrG=UX?)kdF&K%-Q;Ka|7GkFF&I?9pxj%Y{fW!e0LQItbE;Y
zKu&+}mW`FhGcC_GF_%2=*_bEs**^N8`L%+cM&4BiU5z@=Ha>sC@$N^p+1^&ke9rX-
zVn0%Um)|x~x!1VnT;=Ncl<<h@(!Q>i7e3~TicWmxWN2U0BXQ~Gi`7XNLQ}ThxRSCn
z_jYs3oan>Pof<{h@9u1T!|f(@|4G`d75{xK+{+7>RsT!6`0o6)@P}7B_kQ?z)tPT+
zZl{9w37?Z*FO{n&)riP&?~JdrGK(#8y}aAZ#@6-hB)_Ec%9!J+drpi0d16+Ut@7j9
z+I#O>i(^)rPkv%pY}x(yw=3@iNtJm0<Uct#Cx#Wj_*GzL_<ib?!;iWD?3G&O@I>2v
z`j3@0ihG~e9>4vSm3<x4SuUnp<!@CMtwALs8}d$ky!(A+di#rco*rBdk<*iV>x}I;
z>(y;vb^U;O-FfHAsHJMRmNNy{+~a3BesEFpwf9GL4#s|W+g)b<Ptt7v6g~e9PldjJ
z`hIigbKXM>U(MM4{>v}(oxYEj)-n9sIOnb0yL|Dp8>Fw9e?Kab#(Qr*@6R85a!<^i
zy=Q&--;NvWv?V{su7BJ=-I{IM)^$ree+W-gys4VZ(5V&c5P#EWeoX8#)to~N<>zlc
zEY=aqztrtnbE9}iVMDW=^c1!z_LoauTqrAgA(A+)VL{HJTgT>YJ*M$aRNt*IqvZ6v
zwBN@WOu3FKub8na@UYt)pUZQm^grA*)rS3@NYbCT*3%pFey;cSUo_icGu!vGpZI#h
zPhYttRIw`j%O2~w@%=6)A&Z1#yA>DRoA7dp$}OWKu?=4)u!Wwfi~DWNdUBPxWxk_c
znW^(<r@OOm>0Z3-XDXm_pj(1<!NKf%XYaoVxN<kU&vLm_#=}w-qn|8~J>&cYZdIJn
zYJI~h>m<1LQi*=hqTQ03JElK8xcAqOTS;oG=j1;Bb>c<3(2heVge`jy#%D;sQfr_8
zK;|32<!W{w#?uQP?)oX%#k_Y%(=;vC(CA$L*!Uvm4~(0>@xH8Hw0Zs)ABOL4)9W_Q
zewQfzA^v-;@4ce^3$jyBi&|A4*V0P}dMwMgS#Ggxf8~z<MxS*Y+~4Rf^*d4{b@t|-
zxn*Ha>1!70Snj-?e0*x-+dY~eH9uukY?wK(>(<Q$rm@)`C#P~(bXYv&U)}d$=O;zI
zsl|4NVQ2O+O?-E_aa}3%)XR=ZRr-$)ecZU}tn-Q3-?cYimS$eubx@FD?)sbZK@NQP
z)^7U#dHKFG=4(2?pEj(^b*|d(xx(OCrrU}7=7jCbJ~4)D-8D<MYw8N!o&Nh&T791G
z_|W5#;{SK5%x|TPRcaN}-$sZW`o%EUGA!({=%R<q8ic)S)bsYti?d3YlCVo|QAWJZ
z2QQAd!MA$;XEcPHNJpC8a9lQR*OR`oZ8L=hw;FqGpVMI?-hN7ap*a^%>gl)_-<LIg
z;J@YRmUTj<;!90XYNEHFQ*E&9`^NAyuhM5|?mypk_~A|2+%%4Ze)l=GXGFi3D`9-U
zw)yJA%DHV_d&7?vwRH$^RmuNgoBe+FEU7!Gz0+J~i7Oubn>c;i<O^$s9&TivtM#v(
z|Gf31^q;y$?#{Xo6l#q;xCPI$72kAO?eUUBc(%%+TV<J|yABth53M`M)5~##^HH6e
zK@+PZQboL=iPeauiB->_iB-#>iB*k_8&)lIF)}S^VtHrK#PZ4jxwd8o)z(wG|GYY}
z_DvY5wq|K!Il;9iq@mn?vqJiL!C32q8y##Oub2|OLMYqkosnZWgJ~x#i`%63?I)%+
zz7IQiRbk%anFV>P@;011WY4~H_Wz^_>EYJbb~QM@ymxG|xSp}w^i2*Q4jz2md`bCq
z;)YBet~G(p$;{pvZO6QS>#8SIa9n<`c+2hmqoqF=`8@e+d9C8HRd=8dbG=pWZ6@Ax
zKi>VAl+{`z$80=tOO$MNMKQnKgQ%BYM>KUWiLcyK&Jf=aV(&8Rmh`h#TWe1)c)=)b
zG5d!4qY0JFMlP#;j>UAC1?e>17p<77!0hrVWmnj&@bLG|&laq9XWv&C@yDom@lWrK
zvA<?-Exz-t;#qzCy|R>kW}}ULJEJ>Xzglmq+;Y!ZX#LL}`4it%%)j<By8qmE!<&VB
zzcbnY=i&WRzIo0|`-hruencvLXDK;;X_a})M~~$jy6c&vdREyAe)23{XMfV&AhYKQ
zPsHuz&iXE=TO4;jbnJ7tQ44SCUNrG;!Lx-o10S%JhsE=2PyLqgAac*2sgLD8Pl}gu
zdJ=xDQ))Gj$~;NGIg*~S5{>WdB7goDyLrXYdWQ$!B1QF=lb=*P5l`=o`n)w(t=Zdt
z^CWqn9nGR&v-i$8slg|4)8G8qbJ2?q4Lee<&6~`)CFaGNCkzqp+z&#hs!8cdy7|5j
zyLPD4C{6s}<o-B@-bDvjzGnTrW$lK8k;U=bi-VZgJByc2nti%ej^*1^BW5;(yecE7
z{u3-JJyRzepM0EmpfT3w5KG1#!MT3LUnZ1t=60Rf)h=sd{#fC@h1z-{?Xxv^<o_0*
zF}U;AKZAYGCVR2Vyew{;F8uT8`u(|dN`&!h!>s0T4|~?v6YgvjyJ2wi^06PkAJsik
znY=S?$C{VACqw7&JoNMWDh7on=9X;9t3Qn9|I*Pg^__iS5|3-{x{Iq#Cp^yLJOB0p
zL+dX^>oYGEW=^?S?a`*TefBq=E31RUjwCBCOup9MDb!aH|7q&NLrk}Oo>g4%VSIh)
zUb0!Aj$hU6xy}*Yy-7Kb9z<LfDKvGsw9vil>q5_+i&L1DcCds$;eYkQYR0;Q9d|ts
zbaS+B+L5Yfm16Zy*dbHzVE)S%FNG-q+iKdG70wte{<iBeZ<*@atv6gXe5L9Wi>#_Q
z=F6MBW}h%iJF(W}@9fs;^W(R@a?&cDezqujn$oSzBe#@wQdyU$xAZQ4G0Uv>XT*c#
z=9uMwC+`g0wMglHxLIGwiR&Wj7FCB&muG&+G!#1Rd~HE!i+Eb|44FepraB*@)<-Y4
z5N6)yB^fT?_y23(eox_BC9Qw7zvrawzjI%#X5zGa%9D>~SLLVm^5=+7?(~?$(`eT<
z*FofPd2X#CZ?^Ux(}*{g(@&*_oL$v?>iGY?SJntGdFWjz=8^a!?`?ZX?QFx9_w>*B
zW^L`!xK@yMJ#NK`>Acb}W_f&lzIAc0ib>zyblFsgKYgq$m)~i<6TK%lQ?2@XOW<lF
zp=9^yH~(3yJU-RT*_nE9u29vC4F>+1UoUO_Dfmn9J^K@dPyhEiv>aUR{P-&~^RcHh
z99KW|JCw8~`L}oJ3bx6YW%tiLYgxu~b*&~tbl8LTC11{-wccL$bl!yhZ^GZ3Nv)o|
zr&}|aL*JXLFxYzf%}2MV99=j`T2gssP*%TuyJt#{{>$qke&-wyAG!SJr;*+y#{HKb
z8LAp6!%Ig_QA05nkqf`2U({Ggv})@~91c+xsGHRF+1S9)K+%Acja8eEnMsP3fkotV
mW$DQ@l~)zV#Wwza;JDoG%hh*RSvV$Nc+hQXyW1U9N&*08xp)Zx

diff --git a/roles/ca/files/CA/private/dsoclab-nifi-1.key b/roles/ca/files/CA/private/dsoclab-nifi-1.key
deleted file mode 100644
index 2d054af..0000000
--- a/roles/ca/files/CA/private/dsoclab-nifi-1.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDr++3oZVHX1Xq
-fujW/dXjGWguch+QYqh5dtjS9lHfcYA3Wux9+214bjf+5RvI1XPkyaXL6EpIJsbg
-pl4ULJCxgbJpMeJEhZf1YBKIBp2Nz0qid7PZ//NBQEwh4XONmIIvNycMJNhnvccF
-UEDFqdDkP7sMcil8vgYBlgO4oELEb2/aqhc0X17zcw53tXqaWeM80TlQFy9TGAWC
-NCkbGVYuwtskeVEPqNlmPHIeoPcD1unlxrm+lOSEvc2TJus7F7vN5Vgl8ig1pLFw
-3zJUhfY8IJ+Ii12DosQeMdmhdh0uPPh4ZKTdOrJWZb+oKqjtYsliLHK9nX5rH4Dq
-vDNgR9MPAgMBAAECggEAJ4fH/il3FXbtzTQb5ypZ5cmBITjOpYU4kWjvvhYiTegI
-xaXpdj2vTI+/Yg94QGbWRZZylrFzKAYlUMZq5Npn1GPl3ZhFJCB0pQ3mUHI9q6L/
-abiSrWwmAL1zY7i+dhEj41PZ4Hsk+Df/F1Sx8PwwBZvWNlpthRSB9BoQ4GAHfNTH
-qkJPz7IZ8ZCWZRRve71+h7rBSJVnrz3iWUmKgGigFWErD/vW0PpD4apGkwe9egkR
-2MDvf+x/QQ1vudzYHJEkKg2OMdsKokLmoJGmSh3Cq1dswAjnBqM+MPXUklHK6gZm
-L3x3GwBowQSVI/EHJT6MeMyZSGAwJlouX0oN/Prg2QKBgQDkY2ZTbV7ih1wgIJDS
-hKYqo7swHOo84JaMtz2FZBfv7KdYYUwAQObPD7jnrvV6EqI6yIOfo0WN28obz6fw
-rgugYeAlFka5g1Gg5fTGCgWIy8yTm5RvOrNn7lOsE8xx1dPuSqniCtTHjGVqc0EJ
-6yL+uZSKfL3Mgfli/RHTXmcv1QKBgQDbWHE5ZyudNF61xHAn6sFjESSOwLA4LsIG
-qeZN0l1WIZjwq33HrK9YK4F3k7AySYGlla03rOWVArM13fAPlNq+1WRZ4a6iArdx
-s3Wri9b7spzxz+OD9e+sPMjR3+odSAamZyWzk0++F+wQlu13rCX2kNO71laWOrSE
-u6vvmg+NUwKBgQClMYxy7ZoDCdtF1ahKzO2Py+v6Sf/XVq8uSt/x2stBnBAS6hVZ
-3ZfUz090LOWbjVzQXfZugl8t03slkJatjIYWVJUW3jz7tBNX6NyaXedQ4fAwGAlO
-Rsw7cXQN9CgdcoefRVwJhsIPL+qvC3xQm0YtrrfVT5LNGHn08o1xMEg8nQKBgBDy
-3Iza8/vJuCfDbgcnlJnbEUAWk4dD1ao+JpWM07l8Dx1JowZyyXm+otpihxLbqzDo
-R+Itce/5rW9UHuCVV/G2+3IWhi/ulc4rV8RRoeMBAi+NKL9hmYtthvbwnl502k6x
-WbBuiZLetlbx0peUrbpHppS1Eyu4jYpUFg0Fkn4RAoGAZsuipVjJpM/nj+aS6aUJ
-+FNYaqZRsSpad/IY509ZD9G8lf/ANNxjwZuX4P3Im/m3772LcCe2LEv4f8sOfaF6
-wz/noWgJxaTqSaNmugNDhPJpXTgdgsTeqnq20MtHrpi4ZXUs21CDsJph5dlS/gWl
-AQQhj15wJkiYTHv093f2vaY=
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-1.p12 b/roles/ca/files/CA/private/dsoclab-nifi-1.p12
deleted file mode 100644
index 0076ad1207c243f877de929e2424ed953f60469c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-nifi-2.key b/roles/ca/files/CA/private/dsoclab-nifi-2.key
deleted file mode 100644
index a6d1733..0000000
--- a/roles/ca/files/CA/private/dsoclab-nifi-2.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCst0vi1Yd/jhWb
-z8AX69uM4xuDwGm5BpGgm8Y13C/ojHIoUAKCxbHr2tnjnZXS2d3hCDVtg3OVmLoZ
-/T4EZ5oJN0V50x0L7ApDy7gkzGhczi6u20jYblrzMb6HKIZ2jo+NaJUfcmxlSvye
-uH3ig+I9sDBdwXMGrpv3mlS4AmuCkBEIP9ZfWVzfqiVZwGd6/OHwyUqL4DG2UxPC
-v4xPOubtETCmQSatVo8DC62HbLJzxC5BPpkatilt4Nyvj0Vu1WkXDfFYpn6MgDJy
-JCHS6bREI/YQj59kf+/mq/FDlNCKlw7kkb2GuR9C9JY5hQUm7ZABkRGjHwRbRv8b
-qXR32xgDAgMBAAECggEAIutEGm5VYMKXN9M+4Rc8YjWgYHjMZy4ezzvvTQBhZ0DN
-67yRZWMW37p1hwFbQy/tHgwM0UFcYwhnx81ddoKDsA1OrJy0KK7mPGK5ribtiqXc
-5llLVwaouLZ78NOOq/WSrGJSk/MMW0ZX4LcoLF3BpfszLCFqYhV3Tw4Sxskmd1TY
-DAIJ8P0mcAuiEw1G2VuVEsy8c6Ojkp/cJZudlhUk4J/Dqzhq3XcdRu+IoTOg1FTY
-Tw6aW0dwW9niZWaTCzksjnsY6ydIoe6v2GMiCOzCnfmogAgfuTH8Hg2oDvJDqFel
-zXNwxn52Q7HMvySnDn5j2BAYOyfybNkUDvjq170BkQKBgQDfwI+q22h24zg6ZLiC
-0AlqdKNliU1qdtaXu1bU1Mm0/9/o70+TP6GUDeZ0xJVPDpgf/qULaY8k2H4Ucb7i
-PNCPVYNF21qd591qaZA3i/YDNbXmzYNgy+hCPjY9+jW+DBEKOMDSCbUgUP9RJpNj
-CgEadH2xvumPeuLLhFwnmDn3XQKBgQDFm7tWnpUiyOVWcdEZ+xXPiqRr3JZFcjHk
-N3vSOVsS0xjaYPbyBnUNiw8Mxdm0xmaCCDHjv7lmIOCEUtD1YU/bp/e6UqvAULg7
-UasrT0h63eQPxS4tLpDaIjk5Zk7A/NFAHoTKrtbZEs1YONL8ltkrqOYUv4jaX1ae
-76f+1/s23wKBgAUDDzTIjWJ8XHoSX3+uoUddLXvMw4sq9kuXyq4hxhLj2GQjWCj4
-N+pVFWBwNtf6f7XXwmKrDqXIo6pZkekHa7SKOdKKw1DeLLuBedWEsRIJVfXBjLvS
-VXWGZzikLif/pTIRa2BJD2GV7uImdw603ql1Cou8twabvhDI+jd41XORAoGAW8b2
-fUZt8Zfom/uEqFJrUNcNgmMTD/H3pgz23y5wVA/jDRnX15SULNQXC1GgyUsUNPRl
-Z2eWTg6a+BoWnsCxfE1Iyyq2Rj23MyW9IAJUoWwJDiIATk/ASu92MGiJzywca3FB
-L3mAo5UN9hl+NH5DIvnw0lYa04FQE8Uu+zeIn3UCgYAgWQECDVgkUgoTtUZBmUAT
-wL5cXXfmDnMNLVn2TJNQRDvLMkdI0naQ94Dxvky6BIbSqaKx67PA3I7yRIDUYhGZ
-RM4RC0WpGtjxYmWyHkdClGLAJjSp4RPDUcCNAqmQhTySGCL4gBMalERbDzo16SSM
-lyWQP3MOrilDi/GjbUi3JA==
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-2.p12 b/roles/ca/files/CA/private/dsoclab-nifi-2.p12
deleted file mode 100644
index fdbd25a1e50851b8ea865781bc903dcc78a1cc8f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-nifi-3.key b/roles/ca/files/CA/private/dsoclab-nifi-3.key
deleted file mode 100644
index 4c508b0..0000000
--- a/roles/ca/files/CA/private/dsoclab-nifi-3.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCnSKDTqx6MSWCL
-uL2aqlwJYgF5icnlXzBkOMrxlS1IIIHvYKpv0e+0rImO6fUWfWQHsDt1w+HhFXFk
-YI8VjhaL3riXeaeDGXdbqjaCN7lRp5W1H6ydgcbs+xQ6hHcenN08BjChXtCPsMla
-E60OVle8HT++10xLN6KIck0aYogIoFe7IM5+r7dy8u6GGrEoO0H00+oUdJDhM0Ea
-kuIu7NMgYGBh1vwOP1dDiF8QKSBRQEbtXZ/RWudLUvTUI2BKIqeSbNTLIAGmuVNx
-enEC4QVyQaVCn0FHLDB+DLFzzPdjYCc/PTaTFKp+Eu0b8ctN6HwyIFD1LX0GCpPP
-eoUrC6axAgMBAAECggEAIwh9zfZvTlfrpTdKVgLJhZmFz4tAwg2eV87hCZkBQ7Kz
-I4uuBf8EYWUk5c4vasdV1JpeyXn9ayMPfUMPlCcOp7o8FFUA9N63dXX/NmQvJl+f
-ZbA9eTr9ixHGGb82Jy4Y0wJE2va9XOpcMMYgHvmMJDRH7lKugq4jFspBRX5PGOcM
-6MxlzOSEcPZFrccDFcVJIU57rJ3HO85mF8OUmQoReA7SH9qNLFFtERrsgCSkWlwq
-+Pdz+FwkK2tmSBU6+4J2YTyJ0AvF5DUex8tf6rAD7H1AGz70VEFumlbjyz+OZgsS
-oeoAFRm6Uzoo2kU7mB3fPpA2oCGVWVIY6fgHbyZHsQKBgQDR0L/WuzeTpYB3oXbX
-2rPcbZVa/wK0Evl1dfj1UZUBqazkVntMVko02Xt5RHt8FTaorTqi2ieEGfcbOonn
-cSZzChPNCvyr6MJJHRcqNP4pgxd4b1LfP8sCLZTvi7HdBA1DPamgWuiKOkqGghHs
-38BX7SPz3/gTxEjwCE7g9970FQKBgQDMGy+CjGI8btlbKBK4LkebuGGWgWUIXa+V
-2OhoEZzIwDQf6LotauA8pdljTeeQ0VG4kO365hN2v5bL02SOCo3ciaLkQ2tQhRNt
-1xSDoKf2ipbjFZr9o6uDHGtVKZF1B20j48vEWBu5EEZ8yf7L68BWBm/RCVeN32oL
-jpmIMySDLQKBgQCwbv/CzDASAkwjTS2omgpBRA0iNerKDmKjeY7ei7nnag0u/eI0
-8SL5iiCgewvz7crG0NTL+PLdzQ/UX8dzTdztQ/4eoCyVSueFn+bI4UMRGWF1Lvfb
-L8PAkx/4x9nLZwrYDlRDue5tvlLJBTuZmxYdWhavjxkHVjmXTwU1fHqJeQKBgQCO
-Rgj5FEhJ3e8PFsDtt/zcdEs6MVou2bdSWc+u80/5s9jhwUU98Xj7bZQ6H4ziKrav
-U/8/XG+G4AgKboFybbLzXtG4EbLVft3LPBilpDBQr8x74IyYbyVYEFBVHdOx4wpV
-8S0R4WT5vHmV9OvyU5RPos8AxGVOlMSD59Pn19aExQKBgFTfUARZ/liWznEU8X5Q
-krL97ge1+oaqQBI0iS3jmi8cfRNpwWFxc+uRgHW5WybGC9PxV/n3yu1i4wIyrwfC
-g4f0HH19x+VTFs9+H09wudytJh0K8LLTns5G3Nu3WW+o0gtJDQDcAxijvEr2jn08
-qnSQ95GLsDqLTauqOMzEyhM8
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-nifi-3.p12 b/roles/ca/files/CA/private/dsoclab-nifi-3.p12
deleted file mode 100644
index 4d4b23daaa41114bb1ab95eea974f0c2618dbbeb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-odfe-1.key b/roles/ca/files/CA/private/dsoclab-odfe-1.key
deleted file mode 100644
index f10604d..0000000
--- a/roles/ca/files/CA/private/dsoclab-odfe-1.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlRvZxzqI/YV6b
-88ZhiIeZCqy46J08X4xgK0FbNvs5Cm+hFgIxrA29Dv+VWdjxIWu9ltZ7eQHRZRzK
-CSJQMAHq7bQpv7RwJduzHelz7WOTAkyQIgRtMXQxroU8Eo2z9pIv3nV1j8ql8qIS
-lPvoczA38Xy1TlmrcXMmgJpGjUmUsAnlJxA0ncBTO/p3LgbAc44Pmh6MJzIM6/LS
-DKdSSMbuEiEV40UwiYFjf78KW9EFyBz8X7u4giqSOzquGZ3pp2J8CvLCKuao1JsK
-qKJa7OWjGnPggz3S6HSpC7DksP3+rR5X6A0gfKofMWm1DYw/HI3c03Fb8QRqrrkt
-qL4oEfVLAgMBAAECggEAGkUQNaf8VRC9+1ZqE4DGMJXVhnY4ldNIzTgHjAD3tehp
-M+bGp5RUGqZeSGl7/tzacGWY+5q4x5ozOz7irJdjkNxdeS8a6IKd8p7pwbugXha0
-WQtcwHobGxoo7+IcVFNbGpr9kFPCX1M2mLRzTIXuL2q+5DMu+QLNs8qmYpELrjpp
-wiY3yQ6zcv4ndWJloMWo+CzTXq+Gh0L7cWB8dk9NOGu0dAF1HIVokvud+xUejyIB
-2bBN/J9ErGBX366C5yqzMei1JhDXBT7N3XATs/i5tx5jHxO9/G7Psz6Ka7wQ2XlF
-9gY9AndkXGFNt/YnKpvN+h39caH7lRvC/AADwidsYQKBgQD+dHoAUKrCKfrHDazQ
-gQRPGNOY/J9anHhKvPKUwkoY8VZ2MDqB1uwSWioambx2CVc81eeHWmRQUAp7Qw94
-p9DWhqcPdhqGZDRQGSolw8uXnSLKLkJ0f1VxRv7B16wwLyaMgdcwn0JaZ0iaQqwk
-VX7V3OnRpbaji+7pkoJUetbyOwKBgQDmq1mSa8G+/5K8CURJz6K7/ItI29VCFm4t
-ggeQ2QdjpCEhg7b5wyW7Y+CjbWoUx/zKnT4FFX213Ca3TaOKn/sU2lu0J7AP4A85
-yV6JizecpU/aDsAelezO4PfpAdHiUN49lWt6VCTWzOM/+hKdLE1GVpOfqBCtEEYZ
-DJwS8JdIMQKBgHm9Sl16OqhYo1W20jaTc3dQXnQ0cR1N/TNswPaxGfhjBsXW/zb9
-l8aUAs7lPMiQYX+Gq5YThijykoE0rWNBjuYEWEtKaxhfOrQTxhl5Wp+4G1v10++e
-uEdQ+zPMtuH6vQu+VzE5EOrlvVOokGl1yhAR+IBIM2B945k2ckpu1wXfAoGAEGtY
-B+UluGvGzR23v61I/yqd24TSbE7ebtzXnwbj0MLpHNKcXrD2aZ1VayyppWsK4n1I
-4eHCvgQ6uUeMgZybqcNVTcCZdrfTPaDI2u+O+NaHlZUBNewkHCHFY8+eWga5mxac
-vOtqZ+PTtUUeuBNkOMKG5ZF4BmmnI7dTEMIRcrECgYEA0LJjKYwHmqHXe7Yel/f5
-6U3fQka70cpS0hg9T1qHlC2A8Goj4p2uchJmRkH3uYd0FTtImkoiAqksnWu949pI
-YFdI65eKm/7a7Pmoy0C7TMM6pN2ibbN7XBoZ7bZ6Fj6FI74MLgUBUIwMyKXWRhTX
-RWpegcD8h8CCEagLjZ6PN3I=
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-odfe-1.p12 b/roles/ca/files/CA/private/dsoclab-odfe-1.p12
deleted file mode 100644
index ed4bd60a1d96595774f510ecfd8c864a09e8d338..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-odfe-2.key b/roles/ca/files/CA/private/dsoclab-odfe-2.key
deleted file mode 100644
index 6b56b08..0000000
--- a/roles/ca/files/CA/private/dsoclab-odfe-2.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHpeE/4KMiafG0
-FV65PNvXRLvZx2mUW8F9ozRNPogK4o8u05iUrrQfSaP9SycWcKsDq81MAip77Tr/
-SUkuO4j2WYUm3je0R54cvqM4jrAia8rFEuW+QJxXek0CDNsTxZ3Shd+ZVzKQN1QI
-FkYBVNoMdzFjOUYniD/0rU7m/Qo+nZiaU5iQvpvu47KRx38/obli+HoezLQj7YKg
-XK2Ge1BTyexXBEQcEvYzP2hC+LcvJZEcqrDfF2vtbcxtp9a3B2thpRZRnwIHrbJC
-QsoLsS7BbpQtPl6ISI+2ixWwSI41WOq1kJz7Wvr1xye3ETB6yzZ8T+pSAEdA6fDK
-Z2My4DNzAgMBAAECggEBAJlsPTQ0cckRd1/3iCp7vUmplV5fYyBSftgI4jl2E1+i
-CXxnuPqRYvQkSDRvW2NgQ9t3XDXL+E/x14O1EtrHf5Io6y0aWd5dpwDZ816UMIDT
-KyjVQ943kq2a27D2piiElarhnBofq0iubBIm47dEOKiZtEdXDTV1/AgQYvEZhZTl
-dZWsX21gP6YbMgGE/ZFz2tMjFlaK/f0XygJd64gGwwt0wzhBnJsb5Nf1nyrqfuNk
-XIKXQCBx3IbFxxHSd0LxeokYR1+nWcdw2i2T396UjlFJn4n58oPJEQSQAuq5RXHe
-aJDCiPLx16Hx0sqSgwXfjptXwdxYt7DQKYZkYHdUZtkCgYEA44g/xK6aUJWfhc5n
-QeOAB/maCa6GmSaGhvjIjOVu2nimmHl4jBF3Fi6FyWG8Tqj7XBgDaByuLBy5NIAQ
-+/cQ3IGMHlI7SboQRllmsUMrCApOFyENBn5V+2dyCIRIqzstYHWGefv9ElrCroZa
-a/XZrDGO2zj3psoaKwat+b9i710CgYEA4KCC2NnP7henjH/rDbQfebIg+NSBeSn4
-1PDh37p3vm0gIclhygWS9vL1ERlvt9N3o272ago9jM+PaVK9fFBiqGuMU8X0/2qx
-LnPppWUKY3WKPkDKSBgz5J5jkTTneL6wPLY0saHB8Ob4zIKpfh8dsIXBwmiYsmO1
-x+q+HAL7EQ8CgYAjKZsxOgp/CaBtfUhX1mCi2uADPwVuBZYkpa3YmFxZRuv4BE2s
-18Yfl3D1fjUrstGlmdBs9oG0L3wvsNrvFW91pE+TIAIpkqeRN5+3JToxM+Z9jI4G
-wt9mysXEqyzPyYVpsr/lehvSClSrw/eVV5kcE0yQdG1RSUph+9ZHElynwQKBgEcy
-+WaM27iHLOd+4F1um49yY7sbeJKUODgeximpLC1i3412DJYBYE0AQ6eQ3XVyBPj7
-wgVoi4vneniS7lbKEAt8U3V2SKrxAYpM2WFAfqN57UDAPp3Ndh1gCwVKtJf0MV59
-DoTDVfrq6y+/tsOwTzPVoc3iY4wfyM2+XVX5p+UHAoGABD84C3yYWYZ9gBkEkXHH
-jjKUcDCWUTcbErUtaloI9AU+Fw3XP+H21b1ahblQ8JtGcGIosYLOGreZyjN/gVJO
-Us14LTFkYwnSQMJ0KLmfZ2qEL89xl8fIFbjmccJUmW01F1y2M9yZVTVeNiAiq/VL
-j+8aCEyjHb06KrRCjseb1u4=
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-odfe-2.p12 b/roles/ca/files/CA/private/dsoclab-odfe-2.p12
deleted file mode 100644
index 106170ff7a325bccade7cfecf2f60642e866a4a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/private/dsoclab-thehive.key b/roles/ca/files/CA/private/dsoclab-thehive.key
deleted file mode 100644
index 6d4d8bb..0000000
--- a/roles/ca/files/CA/private/dsoclab-thehive.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6xU0gpGC3YSHt
-FqFvcsTeoQDA7/xdoYk0BxXStDoUuJV1joFxSUYdyIHL8ezHWhL2iWDkyJgaYcgt
-Eo9z7vidiLV/MHCXKbSrQy3c26cQR8e1JpsRhfvTJ486VbzqeBe4iRCjpBBgOcN/
-QiWp/oR/OF70PcOYPVa5uoEGVY1lEvBOI4gdmAwvbk9n/U5nOZG5AVISqp67esjq
-j0otGPhpmjqgyG7j3sbbvkxZ4M+8NE8ssO8+glrfaL64+8xfavI+ZtTGxfYLZ+lk
-hRWHYG/ctFsTb7Cb+PPawZGegV8Wyp4UAcEczirTyDwPvrE3qskIaCve+URsHpCk
-Erz1PEa9AgMBAAECggEARJH9cBeJfqoFp6LgYCd1yfq4aR1yvPl6gwR66aHLlSHz
-lXZdZbcuK+8aYEMQ2FvkjGkBjt1qonz13j5rNngtBMFVST4CiC0CrMH8S5LFMj/4
-PTTQR822F971QciKlFbE9rYzyrCIZpuuf8FMTK4p/P84NVmbvv/+IDAuAKJWSB3b
-TXVeYzqET/cENXrNZNsTMHVoPAudtsHXXa5w3yXJXhTlRQrjMtMHgV+H1O2iOvi5
-IAJUm2HVmGON9aqQKZlzYvx9txSBRczEwQK+fLPoXGEG/KhskiBPMU0y9a60SV5F
-Oi94zzBCOSf/k+C4+EhkvfSq727ZFs60zGcoEW7rzQKBgQD08umyOtqJEB6dk5hg
-RA1mc3qx332Li0Ep9ciPD0oOyt9H/pQBMYHlV4Vf26dmjxg7XMPqB38topjbnVcY
-r1QigQ8tnHXktcO1tUpx6MhTkN4sBH9dvZE4TdBiarlcThgnuCfZUhjyfyr715tR
-BIC8TA9bd/6oUaf/zd0S4aGcEwKBgQDDMnKe7PoDlHtjxaiDs8VLRRgNKocT/jaD
-SZ5j5a1e+fvIK+lqpW7pXT/AlBVvxC6ke2Zb1csgndgF0p45ZO9WsB5fV3x8AREM
-zIvrqpH4hdRBEF7o1syVDMXmTQLsPOLzj6B2UC5mpqoo2GkI9yyXpJhNR0kqzkDy
-Pclu3xZL7wKBgQCZsFAxI/w6Q4LyG8lfnVNLFOnG8RM0mwsn6K8OE+nDnka6RWFX
-3lhCLcfhfVBraR0rIelKzaleWMbQBMjBFEEV5SRA2gqele1V9YngLs6CoELGG4xO
-pMKZMTmuhogHAnjlcwaNtJUykdfGbGFnVAvyGUcJfSCrO5DNT72GO0vLQQKBgQCF
-WyPf2/r7Eygxg8qbH+h8ghnqdNGQIS9RBqzFhxapOpR/rzBrAdcCbAiwIvt6Pke3
-a+8Ecs2x3OTHJZufjovNZ8l4TaboeToSynQVb5UGezgFs4+D96wRcIaLzrVefEJ5
-L/jqm+D3lInQGfm4fFXkzDiZI0ijjAHm/btumc771QKBgBTu4KvY6rzgmHbymux1
-+tr+xl3/Nb29XQJHpZV+hgFGg1+aWaR9c0WXz9mKovBanEUHJb5khqFQDFZuWMNG
-tNQ1JbwTXwxmAfVJbLYbSHnuePkh+qtpmTVa3H5NdRBI/062/Km6Rxcf5JljB8/J
-k+SqVxdKSTfaWxGqyyAZgVis
------END PRIVATE KEY-----
diff --git a/roles/ca/files/CA/private/dsoclab-thehive.p12 b/roles/ca/files/CA/private/dsoclab-thehive.p12
deleted file mode 100644
index 4651a2126460e39b52b3c9404b73b982758cf006..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/ca/files/CA/reqs/Arne Oslebo.req b/roles/ca/files/CA/reqs/Arne Oslebo.req
deleted file mode 100644
index dcf6392..0000000
--- a/roles/ca/files/CA/reqs/Arne Oslebo.req	
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICWzCCAUMCAQAwFjEUMBIGA1UEAwwLQXJuZSBPc2xlYm8wggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDOTAIZIW4c8u2T2P28GqTCETvhVXPlJpLT2eim
-3X2iHb5qfGQGOWAzOH1qyomd5RFYIWnzOohe6uUu4Z27AB9ZGWlPazI9LxralT2Z
-lVOfsurbE0hjLUrcDEumHExi4tARJWfLgFIC6Pg7POvL9HEDWr7ZoEn+0XL+T77h
-rKHtpRUG9E7JBqubksI+uVgM9BUOBMCRG4VznbaXoWxwChqgzkyNrCnkxRcAJgNE
-Mqh7g1JJQ2ARU8geuOufH+MTVIF3xEdKLiCNSIyRLuDU5TcLXLtfQDeS6WA7oPmY
-f22zIJI82ozweYHy6ne6tHsGVHWJd36tCDquHtwcEWMIQxSXAgMBAAGgADANBgkq
-hkiG9w0BAQsFAAOCAQEAg1Qb6ZHRANNpMip4Swkowrq8EqkMwnaei5l9ODVzlYa9
-Wo5f+kiGVMnza76E40/OOTRT8624hZEbaOzh2bLRd/9MCxE3oGWeSVtu/MOkN0f4
-vERTql3zlcIzOmQHXp2obtJXdpSt+8jlYbFQm9HV9k6qCnv+k9zjkIEkNaZ26NIa
-CzsR4d6J5l9B9eEnpZHEcbtD5SyB8pde3d5lGDkJ7tdwVc874cbxSA/402lOf6Gh
-5huX7ID1xN92VHEdtiwtOkcWjtzp87Dr0GxlFd9u48ctOmvfvxL/wBPXAYDnwLrB
-d89p+JzRZzr8eRj5KCEW2W7AbOVpaL05IBAR6a/4GQ==
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/Bozidar Proevski.req b/roles/ca/files/CA/reqs/Bozidar Proevski.req
deleted file mode 100644
index cde307a..0000000
--- a/roles/ca/files/CA/reqs/Bozidar Proevski.req	
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICYDCCAUgCAQAwGzEZMBcGA1UEAwwQQm96aWRhciBQcm9ldnNraTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJreAP3x6bkp2VjQRyHPS2cX96kCkxfP
-V1tv2yaQMAkL2cVmXvYiZqtIBqpsiLP9k0WkYMlfK2yv22heJ+aFcSe3IFJh3xQb
-2gY5siEgSyJIt0t2RAKxiV8OWSLLuckejaCsKF3lrsjqzAUgomAREo1tiApz6Hxo
-nEgsyajGncM8wef0B/dbbkI9PQ+Fb+K5iKnQAoS4GWquE6GXUJgWyAwbvQLIX6Mv
-c34l+IznkkPHanW8heocRyjOLJs6j6gH6YyKdT7BlzLO48XKHgrXPHcK0qtRw+Xc
-N5AaNb+gSqq9OO+ebfiBN3/TdyPGW2OYZAcvR/19IS9XwthEAMIpInkCAwEAAaAA
-MA0GCSqGSIb3DQEBCwUAA4IBAQBI2j+FMBWk7pwuvK10IHSgJl+MW/PS4LALPy00
-QCo6DUrkN3EsIY+wsY+jCUS2VGTlOehilOywH/RpmhFBxT3N+NmSyRHPhCBAJAHF
-lmziZfPU25xOt/q5TAbBgEgWJuZuMVUEXY0EV/BxHyaZLPOFogXMijP6jhLxx3yg
-8XU3aWYyFu3Dl5wwvhgtgXN4Bt5jHK7y4Cy+ChrybXabU6x380XlBDnlBLCmLmPP
-ASQ+xzmacFGIY3SVqI1sHBgSMGueVQLWmGEgT3uD7mX0sD1teFR4MA6pySrkhJeg
-7kZiw1lMNnFziruBsrk0wfVK5X4fy13lfOBZEc0YgVykUklo
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-cortex.req b/roles/ca/files/CA/reqs/dsoclab-cortex.req
deleted file mode 100644
index 1959ae3..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-cortex.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1jb3J0ZXgwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNCWsUM0pHdVvT2Wc7Ta0fpx8zq4axqjsJ
-qxqm+6BgBONoMw6FVNFwYYq51da1bMKzNgKUtx0Yk1+Igf8q9JlYbdeW4tJkd7l0
-RDzw+1sPQ304Xf6w2wV6qcUQJHUTyC3aab7jQzPwKDCaU/j40xAyNewdh6seLLUA
-fJ+PYeBdVhWMRkUJeAJ4EMCvLyVswlvtX8EzC/jIE9zfw/wFkP8Gnsu8HSvCV/K9
-qiKzS/XKsrgAGPEUELheaZ/t/ASD2S63mopFHFRxj2ECaoqEL2ffkjoMX+W252wn
-aR9bBtZ/5t+rLzGlzWMyYMAHUGwNOctorjyy2g8gBncsKKs6MJIbAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItY29ydGV4gh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBABmN
-TbZUl+mAgRYgyBhG8QxYAD8sLcKqPDrldqy/5qsGuLQSA4txQ7uEMFb9mr5RsjvA
-rsKljltvjmEMyLjOio00NanddY/qTAwqfk8VoPK49g0Sf1c73E/84JwhzjzTqR5v
-4Evckh4r2lrgtqos0sZHr5SUdYiMpAJ18WUAp+PCa6RydUt5+Upwu391lgjQpSr+
-M7DCM+KDSZ4X0eaSf6oFrfNA035FlDaHdRHGMIW5aE+fBXSXEU7EwgjCEMuy6iLR
-Arpjo8t2Kj5P+zJVXo5021VhWtTR221GI1v+JJxSkolHAziTohsj45m0jA1cCKbL
-bzpzNH/WwlpNEH7tWGs=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-haproxy.req b/roles/ca/files/CA/reqs/dsoclab-haproxy.req
deleted file mode 100644
index 7377346..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-haproxy.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICrDCCAZQCAQAwGjEYMBYGA1UEAwwPZHNvY2xhYi1oYXByb3h5MIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAycciMwsLD6CMxKmBN71RL0cy+huIRbG7
-EUM93rNwZ9eLOVqPE/sveAixsTLG0Q7k0y4624Tb0mVrJiRs1xblpZCOAkYTAgqW
-ZkaHt7DuVkw82K5Mfe9bqm4Bjon+TLnebLrkP4341zrtsimaW6xahmYF8xkvWY18
-i2qXHkOKNoCy6eGE9pS8ExExuNJacu1ow7E35FuRgmKqE/K24DqqhWZwCqmtXKdS
-/9z5mV7lFdUM/s0ny5ieWmnKcXQx5ibf7NJCQ7nzBI4seiim+Y66ZDxpDqz13NXz
-KlBHUNSM9e4xCHNpH65CHVKEXUdo3aMfB1fsPp4NI3gWQbxo8k/pGQIDAQABoE0w
-SwYJKoZIhvcNAQkOMT4wPDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRz
-b2NsYWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEA
-afvEI0PRtJHdn9wjijMSmeFqcKb7LrV3cXKgMNlps/7+D9S3E2id457QpHLteOLn
-G7YOlL+xddxa/rn95ovL/p+qU4i4bPfE3tG/Yj6GclQTNb4JWocZq6ukgDzPaLPu
-7XyS42sreCN8QlDuHDM+lNpb4wyzyLVKV8pUGLn9QjskKvAFmwXNOV9X20RLSlAo
-NhOYFxCoiwcCT/wyOh83uh5FcGOzZOPrG/J95rV+RyYOQGttu2l00nDVTD7Gbjza
-tv30d2Gj6tJAxTqXZm99qJ8zi7wBgymX7uQoaw+D4uZqRCzUqgEe9j72N0Jh+yF0
-/wo9Lx4oVJj6GR0I7jY24Q==
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-keycloak.req b/roles/ca/files/CA/reqs/dsoclab-keycloak.req
deleted file mode 100644
index c9316cf..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-keycloak.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICrjCCAZYCAQAwGzEZMBcGA1UEAwwQZHNvY2xhYi1rZXljbG9hazCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOqp6msvbJyfbZyJTgG6xsAy31kmK5X0
-wj3IfiLOtngD6CIogZyapqe6/QVmo1CBhXHB2eq8IeFdCod7vlWwfQFX3kz+OsXJ
-VHcuFfwSB/jvn3v3CQFwdVM73LEMZU1JxPsdQiBvgUVC09sdTFcbHTuBOe6yz5VL
-KdCoOZjWkzaZv8VDJo1N220kO/wWdqH9b8YZEccSDYAWTIjaLAl4PRt8bOzbngFQ
-X6NWf9Q7pCbSbUJ7iE6NZO0eGg4FWGVYR4NgnrTtFc5yT6C1It2fpNqIhv7LhG5y
-PQBC2ouFKvLv1+67hUK6ufvZndIsWA98AiO3RtBpBjdAnVh0icq3EuUCAwEAAaBO
-MEwGCSqGSIb3DQEJDjE/MD0wOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4Ie
-ZHNvY2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IB
-AQAFuWENWuE+yIOLn3KkTz1HoJrOwzn6g/XkrhMcmQtRucKd9T1CMr384yWXkGcP
-f+BrrW/m2WSpPGikR6i+gW5aW1zKOtu+IABFpjsOcHTuKZGjsAgzSWXIffuNzrMt
-TvmOdtlez0sBmxPQ+JmpmNkGzSzEr/qnMxdxHonn17/pLV5P5Z4Dy5vMhTKlw32I
-1C6gD1yfjoF1nI0BWmu6vSih1IBApR2tdexa/gGZT68z1XncTD7zzUnPBoqWJjJf
-7NZ/HUxmQBcM4/sYNFnfx+XHY83Hm4+i2PS18SgC7WN+GTaGnOYdgLPbUGwCEv0t
-TnDRqK0EfRbr8E/6wCgkyhz6
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-kibana.req b/roles/ca/files/CA/reqs/dsoclab-kibana.req
deleted file mode 100644
index c742520..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-kibana.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1raWJhbmEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOT8kPhE1Oe9wRkMlJqPNgRKglG1mDZAvR
-4LxZUCKl9Yh6yEBl5CI9d9KPnjAXgF4ghbxwZ2HL2OKfmnx7puhOeXvNhm4mUjdF
-tqu3b0CPelWL0ZHMIW9VN1A7ch8tO791R5GIahzqOd2LJTFVDrxSb78Llu/jElza
-YyJU5bOViwKeVz57T6D1bweoW0V8yzSDdzSlsf8FEoiPzMQFXennfSsS+rtNJfT3
-BOeVBpXqqcR1TvcDZy2cmvQB9iqNbG3QWanOHxKxdjnIB9Qgcx7znLlngzuofG77
-huo/ao6YTDmp0U2+nwpDSRv9CWe2YnH9h5pjJQCqx6FNIxLjVg9vAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWIta2liYW5hgh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAD3L
-9U2PcNoNGQu7wDkVblw29QoEkbm7yXvcXt5fFlcd85Tw3+Wig4fXC2AVLBxTvK7C
-1wLGTMVtQfzH7+H+xQvhiQG+Rz2dLD6K10sPK+Uj5iXZyyeb82cqw7QwaH40jCot
-uLgvSIIrChFWGijW0tHy2UmHjTh6+cPzwGe58yYXTK/OBJwbEKKox3IL9XtF3QJJ
-wNhuCYPNbNmy1qZQ7Fny9cCU+syHDRkJwIYBAcfKVvq4/L7txkYZasnoQqE8H2Tq
-UnCOD97mt85wXID6vhi8gqUvujr/NHqCIJqd4yZ3fi8/uxbK2Igw6sr4d1y90Dj5
-iUsJ9h+hlzojGLzqB98=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-misp.req b/roles/ca/files/CA/reqs/dsoclab-misp.req
deleted file mode 100644
index 051c713..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-misp.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICpjCCAY4CAQAwFzEVMBMGA1UEAwwMZHNvY2xhYi1taXNwMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz7Eb56KucIFxpVdGFC5HZIlOvX3wgi0DGdaH
-RLNCv3J4A8yRmFs2QhRV4oIWElhgVESPFfYbH3Y2Ii7orNM8Ct9Gx/EEvDq//kuP
-KlOD41CCBgn8Kvr+lKB7f8I+Cz7ccriUEAoLkP1FdimFUr8PIEN4/jvTSSCPmqUM
-ibsOl/JnsC3wF1MlpptLZA5yir/J445Bu+3zM2pVX41ShPqjZxp7cfuQ8V9h30Tq
-C3eI8uXBg3FYx1iKmzlFWU7g2xa2lnKQjO7CE3XqFcZr4tw63sgH3hiELZa2xEzh
-Sk0Tb2yaHeX5b8x+G0o6dRq5N7BtoBtpNfG25sKl01bTV8cOiwIDAQABoEowSAYJ
-KoZIhvcNAQkOMTswOTA3BgNVHREEMDAuggxkc29jbGFiLW1pc3CCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAdn/gw4DW
-EuPNCWcDYqlXVmwo0a0Enf5awha/1A9IxU22Tl4jv7KOb+SFRRy6d2UURGP+12EB
-iUq7e27L9byhs2gR9xXrw4CQlLjZ7egRg4a6fW1YeL2gKU68PvppOyMGxxH0saCL
-LmAM5N8ClvujX8wvLudCXu/NNrsBwQGaQ5CXtysYXrV7FyHwkO7FP2CTbvGbyYj/
-WJT8g3P4RM3PKd7+7+mmNoqKCOySj1gnB6xEn0iPoBWRRcC/2SlyUXi6idG45C0p
-G04CKFxHJHn2x2nV+3Ym/1ctCTaxg5tGTrZ7Mw3Fkp2QGsmlQuq8ukeO0wTMJlyt
-41DA9acx/R0vAg==
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-nifi-1.req b/roles/ca/files/CA/reqs/dsoclab-nifi-1.req
deleted file mode 100644
index 6984cbb..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-nifi-1.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1uaWZpLTEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDr++3oZVHX1XqfujW/dXjGWguch+QYqh5
-dtjS9lHfcYA3Wux9+214bjf+5RvI1XPkyaXL6EpIJsbgpl4ULJCxgbJpMeJEhZf1
-YBKIBp2Nz0qid7PZ//NBQEwh4XONmIIvNycMJNhnvccFUEDFqdDkP7sMcil8vgYB
-lgO4oELEb2/aqhc0X17zcw53tXqaWeM80TlQFy9TGAWCNCkbGVYuwtskeVEPqNlm
-PHIeoPcD1unlxrm+lOSEvc2TJus7F7vN5Vgl8ig1pLFw3zJUhfY8IJ+Ii12DosQe
-Mdmhdh0uPPh4ZKTdOrJWZb+oKqjtYsliLHK9nX5rH4DqvDNgR9MPAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0xgh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAHM0
-gTZ4mCfbnMSSETTVJM90A9LvYRYegrDd9iiyrHnA1ybJh4wfvmKYq1UfD04Q/wT5
-MT5ebLiCOtnicU1XtZIOdqVjrdHgYh5AiNuqGfWPTJ5714XtUfuV0U47iGgs8OtV
-W0C+DvWOm2v5xMs66QIMZRJObXiNjz/5NnigHAf0eyKj+fkmfB7oW3O28vD9drPk
-WCZYRFOTxEviwWAgapI5JCmlpvAu61gljYEDJhk7x+l2obOxEt1ibTJoobQCSt5U
-BF2ZBNI/nAKz6pQhj1bW25Gc5o2QM5bkv7uIzjHMprgGMKnJnbBZjEBdHKRxv7n7
-Pa0EZRioaWxc7VVDYbM=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-nifi-2.req b/roles/ca/files/CA/reqs/dsoclab-nifi-2.req
deleted file mode 100644
index 31f0180..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-nifi-2.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1uaWZpLTIwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCst0vi1Yd/jhWbz8AX69uM4xuDwGm5BpGg
-m8Y13C/ojHIoUAKCxbHr2tnjnZXS2d3hCDVtg3OVmLoZ/T4EZ5oJN0V50x0L7ApD
-y7gkzGhczi6u20jYblrzMb6HKIZ2jo+NaJUfcmxlSvyeuH3ig+I9sDBdwXMGrpv3
-mlS4AmuCkBEIP9ZfWVzfqiVZwGd6/OHwyUqL4DG2UxPCv4xPOubtETCmQSatVo8D
-C62HbLJzxC5BPpkatilt4Nyvj0Vu1WkXDfFYpn6MgDJyJCHS6bREI/YQj59kf+/m
-q/FDlNCKlw7kkb2GuR9C9JY5hQUm7ZABkRGjHwRbRv8bqXR32xgDAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0ygh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAG7p
-jsz6CmL0Am6fDwlnBWML8EMgYcBhhFyiemX+6hrGxZLeTXCfFn/rSKpA8oDTfNyf
-OK2BceBxePb4JJDzqkH3lAdqsuEqByJMnUQfEpLHEorXl1CN2iMaQ4F/1aX7H2g4
-dwtdYcHD/vsBu9bP3q4FM+SKE6GHcpgM+R6gyJ/yRhSWO2pmdbxSGM7MWRHc9XBz
-+8kJNwhraGqNRYlwruCFxtqL3iMyMzz0x9QS4To1T/klybmCxZ+JJaFTdZtD5fFa
-aL1/PoTJUl01ycxiL8nS0vVwh/UyFe/9c2z2OnUdJo2rsKp8NHRnHpkm8SfxYy/D
-J2jaavn1ViQDB7T8OUc=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-nifi-3.req b/roles/ca/files/CA/reqs/dsoclab-nifi-3.req
deleted file mode 100644
index be09de6..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-nifi-3.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1uaWZpLTMwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnSKDTqx6MSWCLuL2aqlwJYgF5icnlXzBk
-OMrxlS1IIIHvYKpv0e+0rImO6fUWfWQHsDt1w+HhFXFkYI8VjhaL3riXeaeDGXdb
-qjaCN7lRp5W1H6ydgcbs+xQ6hHcenN08BjChXtCPsMlaE60OVle8HT++10xLN6KI
-ck0aYogIoFe7IM5+r7dy8u6GGrEoO0H00+oUdJDhM0EakuIu7NMgYGBh1vwOP1dD
-iF8QKSBRQEbtXZ/RWudLUvTUI2BKIqeSbNTLIAGmuVNxenEC4QVyQaVCn0FHLDB+
-DLFzzPdjYCc/PTaTFKp+Eu0b8ctN6HwyIFD1LX0GCpPPeoUrC6axAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItbmlmaS0zgh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAKKZ
-4Wy4xgX3E+O7mrt791MpRJTTl4qE0bgn54Y7Pzz2Do3SNeC7OpCtFHAVVfGDjpKY
-vac+9+rtdn21ttT7IjwOIao2vKUdxzbLhqM5onUDQmattCqvh5ewMtH4rVfbKg4C
-S7MlCb9tezg8zBx6T9ZO7eoTcIZwnS6jEoRhNABb1D46AAfEkW/4psXUpJ/e1Vv8
-UFt+mGqLIzZ2MLwINv7RM5koCEw/9WU4haEjJWvvTLmXVedV3eDidJCFQrNwRF68
-/VHLs21e+lZK7t0wAWGf/tzQOTzgy1AydtMI1cpRVFV1OcjEvSwjZProAVNjqBoq
-CHJSL39w3B0+e51cKUo=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-odfe-1.req b/roles/ca/files/CA/reqs/dsoclab-odfe-1.req
deleted file mode 100644
index c680ab2..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-odfe-1.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1vZGZlLTEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDlRvZxzqI/YV6b88ZhiIeZCqy46J08X4xg
-K0FbNvs5Cm+hFgIxrA29Dv+VWdjxIWu9ltZ7eQHRZRzKCSJQMAHq7bQpv7RwJduz
-Helz7WOTAkyQIgRtMXQxroU8Eo2z9pIv3nV1j8ql8qISlPvoczA38Xy1TlmrcXMm
-gJpGjUmUsAnlJxA0ncBTO/p3LgbAc44Pmh6MJzIM6/LSDKdSSMbuEiEV40UwiYFj
-f78KW9EFyBz8X7u4giqSOzquGZ3pp2J8CvLCKuao1JsKqKJa7OWjGnPggz3S6HSp
-C7DksP3+rR5X6A0gfKofMWm1DYw/HI3c03Fb8QRqrrktqL4oEfVLAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0xgh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAKzr
-ygHDc8j5mTfhtfsRGfnEGfZiLYCV6YGBDazc+JaQiKzRXb5FWWTPbWZ0EtiQyVJA
-J/yfkRQug6qQKLaNa22br7iP1LrPu0xQD6uTH9FgYu6J9YyfibBb0aav8em10JGQ
-fdW7AmpLRwdLVii+DwJURcd5GEBBYyRPJzwloQmktPoBsnQ1EATqcStasE6AVoGu
-1h2jlb6amEGJzUIe22CDuYs0SO5wHrn/t32EC4sub1I+jjmbiLo0r7uku1JAHT/C
-wL19wSfauW079sNjgBPgJkFbjIW8lC4VQe8X0YmCXT/d6dqsPc3mJPK3AojYZGaM
-Df8uQI9AQthiaGo1Yr8=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-odfe-2.req b/roles/ca/files/CA/reqs/dsoclab-odfe-2.req
deleted file mode 100644
index e97a639..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-odfe-2.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICqjCCAZICAQAwGTEXMBUGA1UEAwwOZHNvY2xhYi1vZGZlLTIwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHpeE/4KMiafG0FV65PNvXRLvZx2mUW8F9
-ozRNPogK4o8u05iUrrQfSaP9SycWcKsDq81MAip77Tr/SUkuO4j2WYUm3je0R54c
-vqM4jrAia8rFEuW+QJxXek0CDNsTxZ3Shd+ZVzKQN1QIFkYBVNoMdzFjOUYniD/0
-rU7m/Qo+nZiaU5iQvpvu47KRx38/obli+HoezLQj7YKgXK2Ge1BTyexXBEQcEvYz
-P2hC+LcvJZEcqrDfF2vtbcxtp9a3B2thpRZRnwIHrbJCQsoLsS7BbpQtPl6ISI+2
-ixWwSI41WOq1kJz7Wvr1xye3ETB6yzZ8T+pSAEdA6fDKZ2My4DNzAgMBAAGgTDBK
-BgkqhkiG9w0BCQ4xPTA7MDkGA1UdEQQyMDCCDmRzb2NsYWItb2RmZS0ygh5kc29j
-bGFiLmduNC0zLXdwOC1zb2Muc3VuZXQuc2UwDQYJKoZIhvcNAQELBQADggEBAA0a
-Y6OxjtMpOkPMMTCOeMniiS4yzTxgfWe4ky6wOGE0E7ZXuQgb58CypGd7vJuUJvv2
-scIov+MH65NqswlHXoENSi1j042gc9+ce/Jr1MsLMwVW0JaY2fb5uxj8oi2GTcyF
-ldcLvD6Ga/zCcyttkMy3zidOlWUd0VsMJFyQl+N9BaiUOoNP3M0ux22FQ0a6OcG4
-GlsD0w59dx/jYKlmp0eKFQ7ogaYWu3O2X+BFMigGFq2rISd57WdEZk+K8ZGazNW8
-li3076e1DflticRO/uy7q9xzvuLFlfSFLoQgem8Zp9CgNJYfa/QVnfVQH7iZLm2K
-8AHzPPLphDavqr2iy5o=
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/reqs/dsoclab-thehive.req b/roles/ca/files/CA/reqs/dsoclab-thehive.req
deleted file mode 100644
index 1bcb046..0000000
--- a/roles/ca/files/CA/reqs/dsoclab-thehive.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICrDCCAZQCAQAwGjEYMBYGA1UEAwwPZHNvY2xhYi10aGVoaXZlMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAusVNIKRgt2Eh7Rahb3LE3qEAwO/8XaGJ
-NAcV0rQ6FLiVdY6BcUlGHciBy/Hsx1oS9olg5MiYGmHILRKPc+74nYi1fzBwlym0
-q0Mt3NunEEfHtSabEYX70yePOlW86ngXuIkQo6QQYDnDf0Ilqf6Efzhe9D3DmD1W
-ubqBBlWNZRLwTiOIHZgML25PZ/1OZzmRuQFSEqqeu3rI6o9KLRj4aZo6oMhu497G
-275MWeDPvDRPLLDvPoJa32i+uPvMX2ryPmbUxsX2C2fpZIUVh2Bv3LRbE2+wm/jz
-2sGRnoFfFsqeFAHBHM4q08g8D76xN6rJCGgr3vlEbB6QpBK89TxGvQIDAQABoE0w
-SwYJKoZIhvcNAQkOMT4wPDA6BgNVHREEMzAxgg9kc29jbGFiLXRoZWhpdmWCHmRz
-b2NsYWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEA
-SrEnsOQ1zqalbv8SBBMBhRXlrKH74UUc8uhwqS9peQv0ILmJQqZ2FZx3HRyRcM2X
-30qhiND97sMs0H1D4ViDAk5lScX4LNCgPx7YhAVtxXAR8Y1An47GQHF2ln1veRGo
-UJ6kZO0VTnf0TSWAbEv2EwHIT6GsRiWv9xDebrtRByZXWEJF2z/PkAMfXOaYHu+9
-ZHc7oyHm06/iN9bC7n6dfPSq+odfuYKYc90Bc5pS/bOLZuUCNuWS8fZ1QdtaTAdK
-FGms4qBL3IIWWrKzxGBtCa0B/fvCrqrNENaE0J5In2nYiobU2A8wdAb3qCrMHsDW
-sXrXrXiWYjb0jUyMIOsKhg==
------END CERTIFICATE REQUEST-----
diff --git a/roles/ca/files/CA/safessl-easyrsa.cnf b/roles/ca/files/CA/safessl-easyrsa.cnf
deleted file mode 100644
index 936ba8b..0000000
--- a/roles/ca/files/CA/safessl-easyrsa.cnf
+++ /dev/null
@@ -1,140 +0,0 @@
-# For use with Easy-RSA 3.1 and OpenSSL or LibreSSL
-
-RANDFILE		= roles/ca/files/CA/.rnd
-
-####################################################################
-[ ca ]
-default_ca	= CA_default		# The default ca section
-
-####################################################################
-[ CA_default ]
-
-dir		= roles/ca/files/CA	# Where everything is kept
-certs		= roles/ca/files/CA			# Where the issued certs are kept
-crl_dir		= roles/ca/files/CA			# Where the issued crl are kept
-database	= roles/ca/files/CA/index.txt	# database index file.
-new_certs_dir	= roles/ca/files/CA/certs_by_serial	# default place for new certs.
-
-certificate	= roles/ca/files/CA/ca.crt	 	# The CA certificate
-serial		= roles/ca/files/CA/serial 		# The current serial number
-crl		= roles/ca/files/CA/crl.pem 		# The current CRL
-private_key	= roles/ca/files/CA/private/ca.key	# The private key
-RANDFILE	= roles/ca/files/CA/.rand		# private random number file
-
-x509_extensions	= basic_exts		# The extentions to add to the cert
-
-# This allows a V2 CRL. Ancient browsers don't like it, but anything Easy-RSA
-# is designed for will. In return, we get the Issuer attached to CRLs.
-crl_extensions	= crl_ext
-
-default_days	= 1080	# how long to certify for
-default_crl_days= 180	# how long before next CRL
-default_md	= sha256		# use public key default MD
-preserve	= no			# keep passed DN ordering
-
-# This allows to renew certificates which have not been revoked
-unique_subject	= no
-
-# A few difference way of specifying how similar the request should look
-# For type CA, the listed attributes must be the same, and the optional
-# and supplied fields are just that :-)
-policy		= policy_anything
-
-# For the 'anything' policy, which defines allowed DN fields
-[ policy_anything ]
-countryName		= optional
-stateOrProvinceName	= optional
-localityName		= optional
-organizationName	= optional
-organizationalUnitName	= optional
-commonName		= supplied
-name			= optional
-emailAddress		= optional
-
-####################################################################
-# Easy-RSA request handling
-# We key off $DN_MODE to determine how to format the DN
-[ req ]
-default_bits		= 2048
-default_keyfile 	= privkey.pem
-default_md		= sha256
-distinguished_name	= cn_only
-x509_extensions		= easyrsa_ca	# The extentions to add to the self signed cert
-
-# A placeholder to handle the $EXTRA_EXTS feature:
-#%EXTRA_EXTS%	# Do NOT remove or change this line as $EXTRA_EXTS support requires it
-
-####################################################################
-# Easy-RSA DN (Subject) handling
-
-# Easy-RSA DN for cn_only support:
-[ cn_only ]
-commonName		= Common Name (eg: your user, host, or server name)
-commonName_max		= 64
-commonName_default	= ChangeMe
-
-# Easy-RSA DN for org support:
-[ org ]
-countryName			= Country Name (2 letter code)
-countryName_default		= US
-countryName_min			= 2
-countryName_max			= 2
-
-stateOrProvinceName		= State or Province Name (full name)
-stateOrProvinceName_default	= California
-
-localityName			= Locality Name (eg, city)
-localityName_default		= San Francisco
-
-0.organizationName		= Organization Name (eg, company)
-0.organizationName_default	= Copyleft Certificate Co
-
-organizationalUnitName		= Organizational Unit Name (eg, section)
-organizationalUnitName_default	= My Organizational Unit
-
-commonName			= Common Name (eg: your user, host, or server name)
-commonName_max			= 64
-commonName_default		= ChangeMe
-
-emailAddress			= Email Address
-emailAddress_default		= me@example.net
-emailAddress_max		= 64
-
-####################################################################
-# Easy-RSA cert extension handling
-
-# This section is effectively unused as the main script sets extensions
-# dynamically. This core section is left to support the odd usecase where
-# a user calls openssl directly.
-[ basic_exts ]
-basicConstraints	= CA:FALSE
-subjectKeyIdentifier	= hash
-authorityKeyIdentifier	= keyid,issuer:always
-
-# The Easy-RSA CA extensions
-[ easyrsa_ca ]
-
-# PKIX recommendations:
-
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid:always,issuer:always
-
-# This could be marked critical, but it's nice to support reading by any
-# broken clients who attempt to do so.
-basicConstraints = CA:true
-
-# Limit key usage to CA tasks. If you really want to use the generated pair as
-# a self-signed cert, comment this out.
-keyUsage = cRLSign, keyCertSign
-
-# nsCertType omitted by default. Let's try to let the deprecated stuff die.
-# nsCertType = sslCA
-
-# CRL extensions.
-[ crl_ext ]
-
-# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
-
-# issuerAltName=issuer:copy
-authorityKeyIdentifier=keyid:always,issuer:always
-
diff --git a/roles/ca/files/CA/serial b/roles/ca/files/CA/serial
deleted file mode 100644
index a09a0c3..0000000
--- a/roles/ca/files/CA/serial
+++ /dev/null
@@ -1 +0,0 @@
-A7217943DDD1145BC6F68CBA362CB35C
diff --git a/roles/ca/files/CA/serial.old b/roles/ca/files/CA/serial.old
deleted file mode 100644
index 5762571..0000000
--- a/roles/ca/files/CA/serial.old
+++ /dev/null
@@ -1 +0,0 @@
-a7217943ddd1145bc6f68cba362cb35b
diff --git a/roles/ca/files/truststore/SOCTOOLS-CA.crt b/roles/ca/files/truststore/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/ca/files/truststore/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/ca/files/truststore/cacerts.jks b/roles/ca/files/truststore/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/ca/tasks/main.yml b/roles/ca/tasks/main.yml
index 6ca350a..e851761 100644
--- a/roles/ca/tasks/main.yml
+++ b/roles/ca/tasks/main.yml
@@ -1,8 +1,18 @@
 ---
 
+- name: Create secret directory   
+  file:
+   path: "{{playbook_dir}}/{{item}}"
+   state: directory
+  loop:
+   - secrets
+   - secrets/certificates
+   - secrets/tokens
+   - secrets/passwords
+
 - name: Check for existing CA folder
   stat:
-    path: roles/ca/files/CA
+    path: "{{playbook_dir}}/secrets/CA"
   register: capath
 
 - name: build ca root key and cert
@@ -14,27 +24,19 @@
   environment:
     EASYRSA_BATCH: 1
     EASYRSA_REQ_CN: "{{ ca_cn }}"
-    EASYRSA_PKI: roles/ca/files/CA
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
   when: not capath.stat.exists
 
-- name: Copy cert to truststore
-  copy:
-    src: roles/ca/files/CA/ca.crt
-    dest: "roles/ca/files/truststore/{{ ca_cn }}.crt"
-
 - name: Remove previous truststore
   file:
-    path: roles/ca/files/truststore/cacerts.jks
+    path: '{{playbook_dir}}/secrets/CA/cacerts.jks'
     state: absent
 
 - name: Generate truststore
   command: >
-    docker run --rm -v {{role_path}}/files/truststore/:/opt/cafiles/:z 
+    docker run --rm -v {{playbook_dir}}/secrets/CA/:/opt/cafiles/:z 
     "{{repo}}/openjdk:{{version}}{{suffix}}" keytool -import -noprompt -trustcacerts 
-    -alias "{{item}}" -file "/opt/cafiles/{{item}}.crt" -keystore /opt/cafiles/cacerts.jks -storepass "{{tspass}}"
-  with_items:
-    - "{{ ca_cn }}"
-    #- GN43WP8T31_CA
+    -alias "{{ ca_cn }}" -file "/opt/cafiles/ca.crt" -keystore /opt/cafiles/cacerts.jks -storepass "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
 
 - name: Check for existing host certificates
   command: roles/ca/files/easyrsa/easyrsa show-cert {{item}}
@@ -47,16 +49,17 @@
     - "{{ groups['thehive'] }}"
     - "{{ groups['cortex'] }}"
     - "{{ groups['haproxy'] }}"
+    - "filebeat"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: roles/ca/files/CA
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
   register: hostcerts
   ignore_errors: true
 
 - name: Generate host certificates
   command: > 
     roles/ca/files/easyrsa/easyrsa 
-    --subject-alt-name="DNS:{{item}},DNS:{{dslproxy}}"
+    --subject-alt-name="DNS:{{item}},DNS:{{soctoolsproxy}}"
     build-serverClient-full {{item}} nopass
   with_items:
     - "{{ groups['nificontainers'] }}"
@@ -67,9 +70,10 @@
     - "{{ groups['thehive'] }}"
     - "{{ groups['cortex'] }}"
     - "{{ groups['haproxy'] }}"
+    - "filebeat"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: roles/ca/files/CA
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
   ignore_errors: true 
   loop_control:
     index_var: my_idx
@@ -93,7 +97,7 @@
   expect:
     command: roles/ca/files/easyrsa/easyrsa export-p12 {{item}}
     responses:
-      Enter Export Password: "{{kspass}}"
+      Enter Export Password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
   with_items:
     - "{{ groups['nificontainers'] }}"
     - "{{ groups['odfeescontainers'] }}"
@@ -104,145 +108,7 @@
     - "{{ groups['mispcontainers'] }}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: roles/ca/files/CA
-
-- name: Copy nifi host certs to nifi role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.p12
-    dest: roles/nifi/files/{{item}}.p12
-  with_items:
-    - "{{ groups['nificontainers'] }}"
-
-- name: Copy odfees host certs to odfees role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.p12
-    dest: roles/odfees/files/{{item}}.p12
-  with_items:
-    - "{{ groups['odfeescontainers'] }}"
-
-- name: Copy odfekibana host p12 certs to odfekibana role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.p12
-    dest: roles/odfekibana/files/{{item}}.p12
-  with_items:
-    - "{{ groups['odfekibanacontainers'] }}"
-
-- name: Copy cortex host p12 certs to cortex role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.p12
-    dest: roles/cortex/files/{{item}}.p12
-  with_items:
-    - "{{ groups['cortex'] }}"
-
-- name: Copy odfekibana host certs to odfekibana role
-  copy:
-    src: roles/ca/files/CA/issued/{{item}}.crt
-    dest: roles/odfekibana/files/{{item}}.crt
-  with_items:
-    - "{{ groups['odfekibanacontainers'] }}"
-
-- name: Copy odfekibana host keys to odfekibana role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.key
-    dest: roles/odfekibana/files/{{item}}.key
-  with_items:
-    - "{{ groups['odfekibanacontainers'] }}"
-
-- name: Copy haproxy host cert to haproxy role
-  copy:
-    src: roles/ca/files/CA/issued/{{item}}.crt
-    dest: roles/haproxy/files/{{item}}.crt
-  with_items:
-    - "{{ groups['haproxy'] }}"
-
-- name: Copy haproxy host key to haproxy role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.key
-    dest: roles/haproxy/files/{{item}}.key
-  with_items:
-    - "{{ groups['haproxy'] }}"
-
-- name: Copy keycloak host certs to keycloak role
-  copy:
-    src: roles/ca/files/CA/issued/{{item}}.crt
-    dest: roles/keycloak/files/{{item}}.crt
-  with_items:
-    - "{{ groups['keycloakcontainers'] }}"
-
-- name: Copy keycloak host keys to keycloak role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.key
-    dest: roles/keycloak/files/{{item}}.key
-  with_items:
-    - "{{ groups['keycloakcontainers'] }}"
-
-- name: Copy misp host certs to misp role
-  copy:
-    src: roles/ca/files/CA/issued/{{item}}.crt
-    dest: roles/misp/files/{{item}}.crt
-  with_items:
-    - "{{ groups['mispcontainers'] }}"
-
-- name: Copy misp host keys to misp role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.key
-    dest: roles/misp/files/{{item}}.key
-  with_items:
-    - "{{ groups['mispcontainers'] }}"
-
-- name: Copy thehive host cert to thehive role
-  copy:
-    src: roles/ca/files/CA/issued/{{item}}.crt
-    dest: roles/thehive/files/{{item}}.crt
-  with_items:
-    - "{{ groups['thehive'] }}"
-
-- name: Copy thehive host key to thehive role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.key
-    dest: roles/thehive/files/{{item}}.key
-  with_items:
-    - "{{ groups['thehive'] }}"
-
-- name: Copy cortex host cert to cortex role
-  copy:
-    src: roles/ca/files/CA/issued/{{item}}.crt
-    dest: roles/cortex/files/{{item}}.crt
-  with_items:
-    - "{{ groups['cortex'] }}"
-
-- name: Copy cortex host key to cortex role
-  copy:
-    src: roles/ca/files/CA/private/{{item}}.key
-    dest: roles/cortex/files/{{item}}.key
-  with_items:
-    - "{{ groups['cortex'] }}"
-
-- name: Copy truststore to roles
-  copy:
-    src: roles/ca/files/truststore/cacerts.jks
-    dest: "roles/{{item}}/files/cacerts.jks"
-  with_items:
-    - nifi
-    - odfees
-    - odfekibana
-    - keycloak
-    - misp
-    - cortex
-    - thehive
-
-- name: Copy ca cert to roles
-  copy:
-    src: "roles/ca/files/truststore/{{ ca_cn }}.crt"
-    dest: "roles/{{item}}/files/{{ ca_cn }}.crt"
-  with_items:
-    - nifi
-    - odfees
-    - odfekibana
-    - keycloak
-    - misp
-    - thehive
-    - cortex
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
 
 - name: Check for existing user certificates
   command: roles/ca/files/easyrsa/easyrsa show-cert {{item.CN | regex_escape()}}
@@ -250,7 +116,7 @@
     - "{{soctools_users}}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: roles/ca/files/CA
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
   register: usercerts
   ignore_errors: true
 
@@ -260,7 +126,7 @@
     - "{{soctools_users}}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: roles/ca/files/CA
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
   ignore_errors: true
   loop_control:
     index_var: my_idx
@@ -270,24 +136,17 @@
   expect:
     command: roles/ca/files/easyrsa/easyrsa export-p12 "{{item.CN}}"
     responses:
-      Enter Export Password: "{{item.password}}"
+      Enter Export Password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/{{item.CN}}')}}"
   with_items:
     - "{{soctools_users}}"
   environment:
     EASYRSA_BATCH: 1
-    EASYRSA_PKI: roles/ca/files/CA
-
-- name: Copy user certs to odfees
-  copy:
-    src: "roles/ca/files/CA/private/{{ item.CN }}.p12"
-    dest: "roles/odfees/files/{{ item.CN }}.p12"
-  with_items:
-    - "{{soctools_users}}"
+    EASYRSA_PKI: "{{playbook_dir}}/secrets/CA"
 
-- name: Copy user certs to odfekibana
+- name: Copy user certs to certificates
   copy:
-    src: "roles/ca/files/CA/private/{{ item.CN }}.p12"
-    dest: "roles/odfekibana/files/{{ item.CN }}.p12"
+    src: "{{playbook_dir}}/secrets/CA/private/{{ item.CN }}.p12"
+    dest: "{{playbook_dir}}/secrets/certificates/{{ item.CN }}.p12"
   with_items:
     - "{{soctools_users}}"
 
diff --git a/roles/cassandra/tasks/main.yml b/roles/cassandra/tasks/main.yml
index 7912910..f26e13b 100644
--- a/roles/cassandra/tasks/main.yml
+++ b/roles/cassandra/tasks/main.yml
@@ -1,28 +1,17 @@
 ---
 
-- name: Configure Cassandra
-  template:
-    src: cassandra.yaml.j2
-    dest: /usr/share/cassandra/conf/cassandra.yaml
+- include: start.yml
   tags:
-    - start
-
-- name: Start Cassandra
-  command: "/start.sh"
+   - start
+- include: stop.yml
   tags:
-    - start
-
-- name: Wait for Cassandra
-  wait_for:
-    host: "{{groups['cassandra'][0]}}"
-    port: 9042
-    state: started
-    delay: 5
+   - stop
+   - stop-cassandra
+- include: update-config.yml
   tags:
-    - start
-
-- name: Stop Cassandra
-  command: "pkill -SIGTERM -F /var/run/cassandra/cassandra.pid"
+   - update-config
+   - update-cassandra-config
+- include: restart.yml
   tags:
-    - stop
-
+   - restart
+   - restart-cassandra
diff --git a/roles/cassandra/tasks/restart.yml b/roles/cassandra/tasks/restart.yml
new file mode 100644
index 0000000..b6e575b
--- /dev/null
+++ b/roles/cassandra/tasks/restart.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Restart Cassandra
+  remote_user: root
+  command: "supervisorctl restart cassandra"
+
diff --git a/roles/cassandra/tasks/start.yml b/roles/cassandra/tasks/start.yml
new file mode 100644
index 0000000..1018944
--- /dev/null
+++ b/roles/cassandra/tasks/start.yml
@@ -0,0 +1,27 @@
+---
+
+- name: Configure Cassandra
+  remote_user: cassandra
+  template:
+    src: cassandra.yaml.j2
+    dest: /usr/share/cassandra/conf/cassandra.yaml
+
+- name: Start Cassandra
+  remote_user: root
+  command: "supervisorctl start cassandra"
+
+- name: Wait for Cassandra
+  remote_user: root
+  wait_for:
+    host: "{{groups['cassandra'][0]}}"
+    port: 9042
+    state: started
+    delay: 5
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
+
diff --git a/roles/cassandra/tasks/stop.yml b/roles/cassandra/tasks/stop.yml
new file mode 100644
index 0000000..29742c7
--- /dev/null
+++ b/roles/cassandra/tasks/stop.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Stop Cassandra
+  remote_user: root
+  command: "supervisorctl stop cassandra"
+
diff --git a/roles/cassandra/tasks/update-config.yml b/roles/cassandra/tasks/update-config.yml
new file mode 100644
index 0000000..ceb0b60
--- /dev/null
+++ b/roles/cassandra/tasks/update-config.yml
@@ -0,0 +1,15 @@
+---
+
+- name: Configure Cassandra
+  remote_user: cassandra
+  template:
+    src: cassandra.yaml.j2
+    dest: /usr/share/cassandra/conf/cassandra.yaml
+
+- name: Wait for Cassandra
+  remote_user: root
+  wait_for:
+    host: "{{groups['cassandra'][0]}}"
+    port: 9042
+    state: started
+    delay: 5
diff --git a/roles/cortex/files/SOCTOOLS-CA.crt b/roles/cortex/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/cortex/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/cortex/files/cacerts.jks b/roles/cortex/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/cortex/files/cortexsecret b/roles/cortex/files/cortexsecret
deleted file mode 100644
index 3119d12..0000000
--- a/roles/cortex/files/cortexsecret
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "value" : "06ca9734-9621-4c6d-bb04-8ee68e028dd9"
-}
\ No newline at end of file
diff --git a/roles/cortex/files/dsoclab-cortex.crt b/roles/cortex/files/dsoclab-cortex.crt
deleted file mode 100644
index a743bd0..0000000
--- a/roles/cortex/files/dsoclab-cortex.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            5d:c4:bc:49:5f:a0:76:a8:13:a4:c2:32:61:64:0d:92
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:29 2020 GMT
-            Not After : Oct 15 10:47:29 2023 GMT
-        Subject: CN=dsoclab-cortex
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:cd:09:6b:14:33:4a:47:75:5b:d3:d9:67:3b:4d:
-                    ad:1f:a7:1f:33:ab:86:b1:aa:3b:09:ab:1a:a6:fb:
-                    a0:60:04:e3:68:33:0e:85:54:d1:70:61:8a:b9:d5:
-                    d6:b5:6c:c2:b3:36:02:94:b7:1d:18:93:5f:88:81:
-                    ff:2a:f4:99:58:6d:d7:96:e2:d2:64:77:b9:74:44:
-                    3c:f0:fb:5b:0f:43:7d:38:5d:fe:b0:db:05:7a:a9:
-                    c5:10:24:75:13:c8:2d:da:69:be:e3:43:33:f0:28:
-                    30:9a:53:f8:f8:d3:10:32:35:ec:1d:87:ab:1e:2c:
-                    b5:00:7c:9f:8f:61:e0:5d:56:15:8c:46:45:09:78:
-                    02:78:10:c0:af:2f:25:6c:c2:5b:ed:5f:c1:33:0b:
-                    f8:c8:13:dc:df:c3:fc:05:90:ff:06:9e:cb:bc:1d:
-                    2b:c2:57:f2:bd:aa:22:b3:4b:f5:ca:b2:b8:00:18:
-                    f1:14:10:b8:5e:69:9f:ed:fc:04:83:d9:2e:b7:9a:
-                    8a:45:1c:54:71:8f:61:02:6a:8a:84:2f:67:df:92:
-                    3a:0c:5f:e5:b6:e7:6c:27:69:1f:5b:06:d6:7f:e6:
-                    df:ab:2f:31:a5:cd:63:32:60:c0:07:50:6c:0d:39:
-                    cb:68:ae:3c:b2:da:0f:20:06:77:2c:28:ab:3a:30:
-                    92:1b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                9A:0E:E1:26:13:A7:12:5F:A4:F1:41:C0:09:FC:AD:EB:4E:66:C2:50
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-cortex, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         27:2e:a1:0c:8d:fb:b1:36:ff:4e:ac:00:91:75:81:4b:20:79:
-         3f:da:1c:e1:80:b9:8c:6b:60:47:a5:8c:bf:1f:34:98:61:95:
-         00:bb:79:d4:9e:c8:fb:dc:fb:6a:48:b2:69:d1:1a:04:cc:52:
-         ca:0b:48:01:3e:94:1e:68:0b:e3:4d:fa:12:c4:aa:ff:b6:5b:
-         0c:3c:80:21:fe:50:87:8a:14:3a:7d:e7:a3:5e:b6:dc:22:ba:
-         cc:97:69:00:a8:78:08:dd:66:d1:cb:ca:28:41:b9:cc:8a:6b:
-         7c:40:b7:5e:1d:a1:88:5a:b3:fd:18:77:e9:c4:48:fd:38:8f:
-         06:6e:78:0e:f1:1a:1b:b2:6c:0a:df:38:11:e3:5a:3d:2a:5b:
-         de:41:63:14:ab:25:8e:a6:9f:a8:b7:32:9e:dc:23:45:f3:6b:
-         6d:86:b7:17:b3:53:df:55:bd:cb:41:a1:b7:73:ae:21:1b:68:
-         b3:b1:0a:e5:e6:0c:2a:77:76:23:f3:87:ee:5f:0e:6d:cd:3b:
-         94:9a:6f:f2:fd:4f:2d:72:a3:21:94:55:c0:4a:6c:2b:13:e3:
-         82:13:a5:1f:82:6b:ae:6e:e2:ec:eb:7a:25:6a:f2:9e:45:d7:
-         0a:7d:75:be:9d:f7:94:6f:ce:a5:27:d6:9b:dc:d2:12:54:64:
-         09:c4:f6:a9
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQXcS8SV+gdqgTpMIyYWQNkjANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
-MDQ3MjlaMBkxFzAVBgNVBAMMDmRzb2NsYWItY29ydGV4MIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAzQlrFDNKR3Vb09lnO02tH6cfM6uGsao7Casapvug
-YATjaDMOhVTRcGGKudXWtWzCszYClLcdGJNfiIH/KvSZWG3XluLSZHe5dEQ88Ptb
-D0N9OF3+sNsFeqnFECR1E8gt2mm+40Mz8CgwmlP4+NMQMjXsHYerHiy1AHyfj2Hg
-XVYVjEZFCXgCeBDAry8lbMJb7V/BMwv4yBPc38P8BZD/Bp7LvB0rwlfyvaois0v1
-yrK4ABjxFBC4Xmmf7fwEg9kut5qKRRxUcY9hAmqKhC9n35I6DF/ltudsJ2kfWwbW
-f+bfqy8xpc1jMmDAB1BsDTnLaK48stoPIAZ3LCirOjCSGwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFJoO4SYTpxJfpPFBwAn8retOZsJQMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1jb3J0ZXiCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEAJy6hDI37
-sTb/TqwAkXWBSyB5P9oc4YC5jGtgR6WMvx80mGGVALt51J7I+9z7akiyadEaBMxS
-ygtIAT6UHmgL4036EsSq/7ZbDDyAIf5Qh4oUOn3no1623CK6zJdpAKh4CN1m0cvK
-KEG5zIprfEC3Xh2hiFqz/Rh36cRI/TiPBm54DvEaG7JsCt84EeNaPSpb3kFjFKsl
-jqafqLcyntwjRfNrbYa3F7NT31W9y0Ght3OuIRtos7EK5eYMKnd2I/OH7l8Obc07
-lJpv8v1PLXKjIZRVwEpsKxPjghOlH4Jrrm7i7Ot6JWrynkXXCn11vp33lG/OpSfW
-m9zSElRkCcT2qQ==
------END CERTIFICATE-----
diff --git a/roles/cortex/files/dsoclab-cortex.key b/roles/cortex/files/dsoclab-cortex.key
deleted file mode 100644
index 827da54..0000000
--- a/roles/cortex/files/dsoclab-cortex.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNCWsUM0pHdVvT
-2Wc7Ta0fpx8zq4axqjsJqxqm+6BgBONoMw6FVNFwYYq51da1bMKzNgKUtx0Yk1+I
-gf8q9JlYbdeW4tJkd7l0RDzw+1sPQ304Xf6w2wV6qcUQJHUTyC3aab7jQzPwKDCa
-U/j40xAyNewdh6seLLUAfJ+PYeBdVhWMRkUJeAJ4EMCvLyVswlvtX8EzC/jIE9zf
-w/wFkP8Gnsu8HSvCV/K9qiKzS/XKsrgAGPEUELheaZ/t/ASD2S63mopFHFRxj2EC
-aoqEL2ffkjoMX+W252wnaR9bBtZ/5t+rLzGlzWMyYMAHUGwNOctorjyy2g8gBncs
-KKs6MJIbAgMBAAECggEAIdhGJqV4w2bp64Rdd/qQc0Mg8WSE7VrOOABYe+vZQ0BL
-UW3sHbIsiEJxpc9Yi8YSNYba0jWPxfi9skjTGAIcNe6bwbpbRF5G7Jw++wBivZhE
-WUOawRLGSsMvVkTOVp+agg0mh1kWf7QCodbuqBQe/krMWOuGIYr7rcLki8R6Rq2d
-WuW8Kf697ciklh/6cyy1J6axe1LNT906lYvyRock246KbN517wWw7/fu47Mb2fdC
-U6beFxbmbc5vk4lrViE7gSNkY97Vr/uXW9xlyRzvpNJuzZrm00CgNF1MnOnwf3l1
-k8kc63RMkUJGVWcxo5ubzLXpv4CnnmUNPfaSx+CeUQKBgQDuUT8JOu2vfzAC2VOQ
-OfKR4NgMQ8fnK6T67zpLDeNUAGW+hBi62ewD8xxRse0j/rWXgvADBE1GplPXicZI
-Q0o0VgIiL3NFQgCP7rvtPGE9VQXHYgd+ULKCHcPEBwonlbAhiHSwVnBqSFoqWdj+
-SHiBn4AD1ARoD6WSEVi3X6UU/QKBgQDcQATvzbbcr41vQHm9u1O7v0slk306A4yY
-ItXk+GbtLEoLAiLy7n0REKybZAzniuLCDAQ1h1bWLkqRle26XqVfg3YaxGpoJODy
-gPgr2Hi4Y/lcFrwRThUHEu8eaUWVRtY3B9Rgi5VjLVqydgI3/AFWdlzIVkhBeN0w
-MOtKdEg69wKBgG+wD/TJcz8+QkfzhiAfqDkJwPbuhS8n2yfnGdC274UcspI44kYf
-f2bSdsEqu9KUupIJQWaIi5bCuKRY415Wet5QOKvAxSr+JblOzy/9jizqPc0VeiGO
-vDoSrP6ftfibRHJSuy0xNXn58pfKh9GUMTW+hIZGxNHoE1aDXqqB3qIZAoGBAIIc
-A46SDLNDtZ6CDSjrD6T6dW8GONTboeOBuK+hmlQDdN4Z7gFqp1E8c2r8aK8jmZ8e
-MCJbCA5QnFZyplQRc0oAQ/W+EEnjd0tqqrBkGbR7wqQG/iSO5tcd9UoW0DdF+Gfb
-5Tb/XkmPUmPYWKkv4q5sD5V9ewPKXYgJbgW2ubCzAoGACfaFTBM3zZ2rqjJUk8+F
-fGcuDeh/ZFk4MgcN5nbdKHwyXDhBlUY1FzLZlKi5J1lRyTInZUP8KYnXogw757Md
-oa5wPlnw0a6VSHX1ZZUwa0yz1Rrv5M5CA4vyNBENCaHELKLoRWwbAook1gFie6cV
-nrCXNbsWttgWkzqLDWkPT5M=
------END PRIVATE KEY-----
diff --git a/roles/cortex/files/dsoclab-cortex.p12 b/roles/cortex/files/dsoclab-cortex.p12
deleted file mode 100644
index 252b3e7ef466cf7a4090ab3d5c551bd8dcaf5e5f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/cortex/files/logback.xml b/roles/cortex/files/logback.xml
deleted file mode 100644
index 2dfba26..0000000
--- a/roles/cortex/files/logback.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration debug="false">
-
-    <conversionRule conversionWord="coloredLevel"
-                    converterClass="play.api.libs.logback.ColoredLevel"/>
-
-    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>/var/log/cortex/application.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>/var/log/cortex/application.%i.log.zip</fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>10</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>10MB</maxFileSize>
-        </triggeringPolicy>
-        <encoder>
-            <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%coloredLevel %logger{15} - %message%n%xException{10}
-            </pattern>
-        </encoder>
-    </appender>
-
-    <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
-        <appender-ref ref="FILE"/>
-    </appender>
-
-    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
-        <appender-ref ref="STDOUT"/>
-    </appender>
-
-    <logger name="play" level="DEBUG"/>
-    <logger name="application" level="DEBUG"/>
-
-    <logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF"/>
-
-    <root level="INFO">
-        <appender-ref ref="ASYNCFILE"/>
-        <appender-ref ref="ASYNCSTDOUT"/>
-    </root>
-
-</configuration>
diff --git a/roles/cortex/tasks/main.yml b/roles/cortex/tasks/main.yml
index 06b2639..5216d2c 100644
--- a/roles/cortex/tasks/main.yml
+++ b/roles/cortex/tasks/main.yml
@@ -1,108 +1,17 @@
 ---
 
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "files/{{ca_cn}}.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+- include: start.yml
   tags:
-    - start
-    - startcortex
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-  tags:
-    - start
-    - startcortex
-
-- name: Copy certificates in cortex conf dir
-  copy:
-    src:  "{{ item }}"
-    dest: "/etc/cortex/{{ item }}"
-    mode: 0600
-  with_items:
-    - "{{ inventory_hostname }}.p12"
-    - "{{ inventory_hostname }}.crt"
-    - "{{ inventory_hostname }}.key"
-    - cacerts.jks
-    - "{{ca_cn}}.crt"
-  tags:
-    - start
-    - startcortex
-
-- name: Get openid authkey
-  set_fact:
-    cortexsecret: "{{lookup('file', 'files/cortexsecret',convert_data=False) | from_json }}"
-  tags:
-    - start
-
-- name: Configure embedded Elasticsearch 6
-  remote_user: root
-  template:
-    src: jvm.options.j2
-    dest: /etc/elasticsearch/jvm.options
-  tags:
-    - start
-    - startcortex
-
-- name: Start embedded Elasticsearch 6
-  remote_user: root
-  command: >
-    daemonize
-    -u elasticsearch
-    -c /usr/share/elasticsearch
-    -p /tmp/elasticsearch.pid
-    -o /tmp/elasticsearch-stdout.log
-    /usr/share/elasticsearch/bin/elasticsearch
+   - start
+- include: stop.yml
   tags:
-    - start
-    - startcortex
-
-- name: Configure Cortex
-  template:
-    src: application.conf.j2
-    dest: /etc/cortex/application.conf
+   - stop
+   - stop-cortex
+- include: update-config.yml
   tags:
-    - start
-    - startcortex
-
-- name: Configure Cortex logging
-  copy:
-    src: logback.xml
-    dest: /etc/cortex/logback.xml
+   - update-config
+   - update-cortex-config
+- include: restart.yml
   tags:
-    - start
-
-- name: Start Cortex
-  command: >
-    daemonize 
-    -c /opt/cortex
-    -p /tmp/cortex.pid
-    -o /tmp/cortex-stdout.log 
-    /opt/cortex/bin/cortex
-    -Dconfig.file=/etc/cortex/application.conf 
-    -Dlogger.file=/etc/cortex/logback.xml 
-    -J-Xms1g
-    -J-Xmx1g
-    -Dpidfile.path=/dev/null
-  tags:
-    - start
-    - startcortex
-
-- name: Wait for Cortex
-  wait_for:
-    host: "{{groups['cortex'][0]}}"
-    port: 9001
-    state: started
-    delay: 5
-  tags:
-    - start
-    - startcortex
-
-- name: Stop Cortex
-  command: "pkill -SIGTERM -F /tmp/cortex.pid"
-  tags:
-    - stop
-    - stopcortex
-
+   - restart
+   - restart-cortex
diff --git a/roles/cortex/tasks/restart.yml b/roles/cortex/tasks/restart.yml
new file mode 100644
index 0000000..d7b6e6a
--- /dev/null
+++ b/roles/cortex/tasks/restart.yml
@@ -0,0 +1,18 @@
+---
+
+- name: Restart Elasticsearch
+  remote_user: root
+  command: "supervisorctl restart elasticsearch"
+
+- name: Restart Cortex
+  remote_user: root
+  command: "supervisorctl restart cortex"
+
+- name: Wait for Cortex
+  remote_user: root
+  wait_for:
+    host: "{{groups['cortex'][0]}}"
+    port: 9001
+    state: started
+    delay: 5
+
diff --git a/roles/cortex/tasks/start.yml b/roles/cortex/tasks/start.yml
new file mode 100644
index 0000000..ddb37bc
--- /dev/null
+++ b/roles/cortex/tasks/start.yml
@@ -0,0 +1,59 @@
+---
+
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "{{playbook_dir}}/secrets/CA/ca.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+
+- name: Copy certificates in cortex conf dir
+  remote_user: cortex
+  copy:
+    src:  "{{ item }}"
+    dest: "/etc/cortex/"
+    mode: 0600
+  with_items:
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
+    - "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
+    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
+    - "{{playbook_dir}}/secrets/CA/ca.crt"
+
+- name: Configure embedded Elasticsearch 6
+  remote_user: root
+  template:
+    src: jvm.options.j2
+    dest: /etc/elasticsearch/jvm.options
+
+- name: Start embedded Elasticsearch 6
+  remote_user: root
+  command: "supervisorctl start elasticsearch"
+
+- name: Configure Cortex
+  remote_user: cortex
+  template:
+    src: application.conf.j2
+    dest: /etc/cortex/application.conf
+
+- name: Start Cortex
+  remote_user: root
+  command: "supervisorctl start cortex"
+
+- name: Wait for Cortex
+  remote_user: root
+  wait_for:
+    host: "{{groups['cortex'][0]}}"
+    port: 9001
+    state: started
+    delay: 5
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
diff --git a/roles/cortex/tasks/stop.yml b/roles/cortex/tasks/stop.yml
new file mode 100644
index 0000000..ee4516b
--- /dev/null
+++ b/roles/cortex/tasks/stop.yml
@@ -0,0 +1,10 @@
+---
+
+- name: Stop Elasticsearch
+  remote_user: root
+  command: "supervisorctl stop elasticsearch"
+
+- name: Stop Cortex
+  remote_user: root
+  command: "supervisorctl stop cortex"
+
diff --git a/roles/cortex/tasks/update-config.yml b/roles/cortex/tasks/update-config.yml
new file mode 100644
index 0000000..a49f24f
--- /dev/null
+++ b/roles/cortex/tasks/update-config.yml
@@ -0,0 +1,14 @@
+---
+
+- name: Configure embedded Elasticsearch 6
+  remote_user: root
+  template:
+    src: jvm.options.j2
+    dest: /etc/elasticsearch/jvm.options
+
+- name: Configure Cortex
+  remote_user: cortex
+  template:
+    src: application.conf.j2
+    dest: /etc/cortex/application.conf
+
diff --git a/roles/cortex/templates/application.conf.j2 b/roles/cortex/templates/application.conf.j2
index 6d6d09c..e45e446 100644
--- a/roles/cortex/templates/application.conf.j2
+++ b/roles/cortex/templates/application.conf.j2
@@ -6,7 +6,7 @@
 #
 # IMPORTANT: If you deploy your application to several  instances,  make
 # sure to use the same key.
-play.http.secret.key="{{cortex_secret_key}}"
+play.http.secret.key="{{lookup('password', '{{playbook_dir}}/secrets/passwords/cortex_secret_key')}}"
 
 ## ElasticSearch
 search {
@@ -34,18 +34,18 @@ search {
 
 ##   ## Authentication configuration
 ##   search.username = "cortex"
-##   search.password = "{{cortex_odfe_pass}}"
+##   search.password = "{{lookup('password', '{{playbook_dir}}/secrets/passwords/cortex_odfe')}}"
 ## 
 ##   ## SSL configuration
 ##   search.keyStore {
-##     path = "/etc/cortex/dsoclab-cortex.p12"
+##     path = "/etc/cortex/soctools-cortex.p12"
 ##     type = "PKCS12" # or PKCS12
-##     password = "{{kspass}}"
+##     password = "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
 ##   }
 ##   search.trustStore {
 ##     path = "/etc/cortex/cacerts.jks"
 ##     type = "JKS" # or PKCS12
-##     password = "{{tspass}}"
+##     password = "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
 ##   }
 }
 
@@ -66,7 +66,7 @@ auth {
 	#   the "ad" section below.
 	# - ldap : use LDAP to authenticate users. The associated configuration shall be done in the
 	#   "ldap" section below.
-	provider = [local,oauth2]
+	provider = [local]
 
 	ad {
 		# The Windows domain name in DNS format. This parameter is required if you do not use
@@ -108,84 +108,6 @@ auth {
 		# If 'true', use SSL to connect to the LDAP directory server.
 		#useSSL = true
 	}
-  oauth2 {
-    # URL of the authorization server
-    clientId = "dsoclab-cortex"
-    clientSecret = {{cortexsecret.value}}
-    redirectUri = "https://{{dslproxy}}:9001/api/ssoLogin"
-    responseType = "code"
-    grantType = "authorization_code"
-
-    # URL from where to get the access token
-    authorizationUrl = "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/auth"
-    authorizationHeader = "Bearer"
-    tokenUrl = "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/token"
-    
-
-    # The endpoint from which to obtain user details using the OAuth token, after successful login
-    userUrl = "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/userinfo"
-    scope = "profile"
-    userIdField = "email"
-    #userUrl = "https://auth-site.com/api/User"
-    #scope = ["openid profile"]
-  }
-
-  ws.ssl.trustManager {
-    stores = [
-      {
-        type = "JKS" // JKS or PEM
-        path = "cacerts.jks"
-        password = "{{tspass}}"
-      }
-    ]
-  }
-
-
-  # Single-Sign On
-  sso {
-    # Autocreate user in database?
-    autocreate = true
-
-    # Autoupdate its profile and roles?
-    autoupdate = true
-
-    # Autologin user using SSO?
-    autologin = true
-
-    # Name of mapping class from user resource to backend user ('simple' or 'group')
-    #mapper = group
-    #mapper = simple
-    #attributes {
-    #  login = "user"
-    #  name = "name"
-    #  groups = "groups"
-    #  organization = "org"
-    #}
-#    defaultRoles = ["read", "write", "admin"]
-#    defaultOrganization = "uninett.no"
-    #defaultRoles = ["read"]
-    #defaultOrganization = "csirt"
-    #groups {
-    #  # URL to retreive groups (leave empty if you are using OIDC)
-    #  #url = "https://auth-site.com/api/Groups"
-    #  # Group mappings, you can have multiple roles for each group: they are merged
-    #  mappings {
-    #    admin-profile-name = ["admin"]
-    #    editor-profile-name = ["write"]
-    #    reader-profile-name = ["read"]
-    #  }
-    #}
-
-    mapper = simple
-    attributes {
-      login = "user"
-      name = "name"
-      roles = "roles"
-      organization = "org"
-    }
-    defaultRoles = ["read", "analyze"]
-    defaultOrganization = "uninett.no"
-  }
 }
 
 ## ANALYZERS
diff --git a/roles/docker/tasks/cassandra.yml b/roles/docker/tasks/cassandra.yml
index a26bd28..b913425 100644
--- a/roles/docker/tasks/cassandra.yml
+++ b/roles/docker/tasks/cassandra.yml
@@ -10,7 +10,6 @@
     networks_cli_compatible: yes
     volumes:
       - "{{cassandra_name}}:/var/lib/cassandra"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['cassandra'] }}"
   tags:
diff --git a/roles/docker/tasks/cortex.yml b/roles/docker/tasks/cortex.yml
index c8d7b1e..15a0732 100644
--- a/roles/docker/tasks/cortex.yml
+++ b/roles/docker/tasks/cortex.yml
@@ -12,7 +12,6 @@
 #      - "9001:9001"
     volumes: 
       - "{{item}}:/var/lib/elasticsearch/"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['cortex'] }}"
   tags:
diff --git a/roles/docker/tasks/haproxy.yml b/roles/docker/tasks/haproxy.yml
index 10dc08e..b018076 100644
--- a/roles/docker/tasks/haproxy.yml
+++ b/roles/docker/tasks/haproxy.yml
@@ -15,9 +15,10 @@
       - "9443:9443"
       - "9200:9200"
       - "7750:7750"
+      - "5000-5099:5000-5099"
+      - "6000-6099:6000-6099"
       - "9000:9000"
       - "9001:9001"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   tags:
     - start
diff --git a/roles/docker/tasks/keycloak.yml b/roles/docker/tasks/keycloak.yml
index c910408..1fddf2a 100644
--- a/roles/docker/tasks/keycloak.yml
+++ b/roles/docker/tasks/keycloak.yml
@@ -10,7 +10,6 @@
     networks_cli_compatible: yes
     published_ports:
       - "12443:8443"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['keycloakcontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/misp.yml b/roles/docker/tasks/misp.yml
index 34a42ad..f32e440 100644
--- a/roles/docker/tasks/misp.yml
+++ b/roles/docker/tasks/misp.yml
@@ -7,9 +7,8 @@
     image: "{{ misp_img }}"
     networks:
       - name: "{{ soctools_netname}}"
-    networks_cli_compatible: yes
-    entrypoint: "/bin/bash"
     interactive: "yes"
+    networks_cli_compatible: yes
     published_ports:
       - "6443:6443"
   tags:
diff --git a/roles/docker/tasks/nifi.yml b/roles/docker/tasks/nifi.yml
index 7023444..e85fb61 100644
--- a/roles/docker/tasks/nifi.yml
+++ b/roles/docker/tasks/nifi.yml
@@ -10,7 +10,6 @@
     networks_cli_compatible: yes
     volumes:
       - "{{item}}:/opt/nifi/nifi-current/conf"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['nificontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/odfees.yml b/roles/docker/tasks/odfees.yml
index d54ebd5..fa35ddd 100644
--- a/roles/docker/tasks/odfees.yml
+++ b/roles/docker/tasks/odfees.yml
@@ -10,7 +10,6 @@
     networks_cli_compatible: yes
     volumes:
       - "{{item}}:/usr/share/elasticsearch/data"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['odfeescontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/odfekibana.yml b/roles/docker/tasks/odfekibana.yml
index c24611b..a1c88a2 100644
--- a/roles/docker/tasks/odfekibana.yml
+++ b/roles/docker/tasks/odfekibana.yml
@@ -10,7 +10,6 @@
     networks_cli_compatible: yes
     published_ports:
       - "5601:5601"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['odfekibanacontainers'] }}"
   tags:
diff --git a/roles/docker/tasks/thehive.yml b/roles/docker/tasks/thehive.yml
index 30b11c8..68fdd3c 100644
--- a/roles/docker/tasks/thehive.yml
+++ b/roles/docker/tasks/thehive.yml
@@ -10,12 +10,10 @@
     networks_cli_compatible: yes
 #    published_ports:
 #      - "9000:9000"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['thehive'] }}"
   tags:
     - start
-    - thehivestart
 
 - name: Disconnect thehive containers from network and remove
   docker_container:
@@ -24,4 +22,4 @@
   with_items: "{{ groups['thehive'] }}"
   tags:
     - stop
-    - thehivestop
+
diff --git a/roles/filebeat/README.md b/roles/filebeat/README.md
new file mode 100644
index 0000000..225dd44
--- /dev/null
+++ b/roles/filebeat/README.md
@@ -0,0 +1,38 @@
+Role Name
+=========
+
+A brief description of the role goes here.
+
+Requirements
+------------
+
+Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
+
+Role Variables
+--------------
+
+A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
+
+Dependencies
+------------
+
+A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
+
+Example Playbook
+----------------
+
+Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
+
+    - hosts: servers
+      roles:
+         - { role: username.rolename, x: 42 }
+
+License
+-------
+
+BSD
+
+Author Information
+------------------
+
+An optional section for the role authors to include contact information, or a website (HTML is not allowed).
diff --git a/roles/filebeat/defaults/main.yml b/roles/filebeat/defaults/main.yml
new file mode 100644
index 0000000..4a9a7a6
--- /dev/null
+++ b/roles/filebeat/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+# defaults file for filebeat
diff --git a/roles/filebeat/files/.gitkeep b/roles/filebeat/files/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/roles/filebeat/handlers/main.yml b/roles/filebeat/handlers/main.yml
new file mode 100644
index 0000000..40c1d20
--- /dev/null
+++ b/roles/filebeat/handlers/main.yml
@@ -0,0 +1,2 @@
+---
+# handlers file for filebeat
diff --git a/roles/filebeat/meta/main.yml b/roles/filebeat/meta/main.yml
new file mode 100644
index 0000000..3a212a9
--- /dev/null
+++ b/roles/filebeat/meta/main.yml
@@ -0,0 +1,53 @@
+galaxy_info:
+  author: your name
+  description: your description
+  company: your company (optional)
+
+  # If the issue tracker for your role is not on github, uncomment the
+  # next line and provide a value
+  # issue_tracker_url: http://example.com/issue/tracker
+
+  # Choose a valid license ID from https://spdx.org - some suggested licenses:
+  # - BSD-3-Clause (default)
+  # - MIT
+  # - GPL-2.0-or-later
+  # - GPL-3.0-only
+  # - Apache-2.0
+  # - CC-BY-4.0
+  license: license (GPL-2.0-or-later, MIT, etc)
+
+  min_ansible_version: 2.4
+
+  # If this a Container Enabled role, provide the minimum Ansible Container version.
+  # min_ansible_container_version:
+
+  #
+  # Provide a list of supported platforms, and for each platform a list of versions.
+  # If you don't wish to enumerate all versions for a particular platform, use 'all'.
+  # To view available platforms and versions (or releases), visit:
+  # https://galaxy.ansible.com/api/v1/platforms/
+  #
+  # platforms:
+  # - name: Fedora
+  #   versions:
+  #   - all
+  #   - 25
+  # - name: SomePlatform
+  #   versions:
+  #   - all
+  #   - 1.0
+  #   - 7
+  #   - 99.99
+
+  galaxy_tags: []
+    # List tags for your role here, one per line. A tag is a keyword that describes
+    # and categorizes the role. Users find roles by searching for tags. Be sure to
+    # remove the '[]' above, if you add tags to this list.
+    #
+    # NOTE: A tag is limited to a single word comprised of alphanumeric characters.
+    #       Maximum 20 tags per role.
+
+dependencies: []
+  # List your role dependencies here, one per line. Be sure to remove the '[]' above,
+  # if you add dependencies to this list.
+  
\ No newline at end of file
diff --git a/roles/filebeat/tasks/main.yml b/roles/filebeat/tasks/main.yml
new file mode 100644
index 0000000..02ac9c7
--- /dev/null
+++ b/roles/filebeat/tasks/main.yml
@@ -0,0 +1,17 @@
+---
+
+- include: start.yml
+  tags:
+   - start
+- include: stop.yml
+  tags:
+   - stop
+   - stop-filebeat
+- include: update-config.yml
+  tags:
+   - update-config
+   - update-filebeat-config
+- include: restart.yml
+  tags:
+   - restart
+   - restart-filebeat
diff --git a/roles/filebeat/tasks/restart.yml b/roles/filebeat/tasks/restart.yml
new file mode 100644
index 0000000..cf2c893
--- /dev/null
+++ b/roles/filebeat/tasks/restart.yml
@@ -0,0 +1,8 @@
+---
+# tasks file for filebeat
+
+- name: Restart filebeat
+  remote_user: root
+  shell: "supervisorctl restart filebeat"
+  ignore_errors: yes
+  
diff --git a/roles/filebeat/tasks/start.yml b/roles/filebeat/tasks/start.yml
new file mode 100644
index 0000000..1944c1f
--- /dev/null
+++ b/roles/filebeat/tasks/start.yml
@@ -0,0 +1,23 @@
+---
+# tasks file for filebeat
+
+- name: Copy filebeat certificates
+  copy:
+    src:  "{{ item }}"
+    dest: "/opt/filebeat/"
+    mode: 0600
+  with_items:
+    - "{{playbook_dir}}/secrets/CA/issued/filebeat.crt"
+    - "{{playbook_dir}}/secrets/CA/private/filebeat.key"
+  become: true
+
+- name: Copy filebeat configuration file
+  template:
+    src: filebeat.yml.j2
+    dest: /opt/filebeat/filebeat.yml
+  become: true
+
+- name: Restart filebeat
+  remote_user: root
+  shell: "supervisorctl restart filebeat"
+  ignore_errors: yes
diff --git a/roles/filebeat/tasks/stop.yml b/roles/filebeat/tasks/stop.yml
new file mode 100644
index 0000000..c5d5dd6
--- /dev/null
+++ b/roles/filebeat/tasks/stop.yml
@@ -0,0 +1,8 @@
+---
+# tasks file for filebeat
+
+- name: Stop filebeat
+  remote_user: root
+  shell: "supervisorctl stop filebeat"
+  ignore_errors: yes
+
diff --git a/roles/filebeat/tasks/update-config.yml b/roles/filebeat/tasks/update-config.yml
new file mode 100644
index 0000000..a4c4e30
--- /dev/null
+++ b/roles/filebeat/tasks/update-config.yml
@@ -0,0 +1,9 @@
+---
+# tasks file for filebeat
+
+- name: Copy filebeat configuration file
+  template:
+    src: filebeat.yml.j2
+    dest: /opt/filebeat/filebeat.yml
+  become: true
+
diff --git a/roles/filebeat/templates/filebeat.yml.j2 b/roles/filebeat/templates/filebeat.yml.j2
new file mode 100644
index 0000000..78af99c
--- /dev/null
+++ b/roles/filebeat/templates/filebeat.yml.j2
@@ -0,0 +1,35 @@
+filebeat.inputs:
+{% if FILEBEAT_FILES is defined %}
+- type: log
+  paths:
+{% for file in FILEBEAT_FILES %}
+      - {{ file }}
+{% endfor %}
+{% if FILEBEAT_LOG_FORMAT == 'json' %}
+  json.keys_under_root: true
+  json.overwrite_keys: true
+  json.add_error_key: true
+  json.message_key: log
+  multiline.pattern: '^{'
+  multiline.negate: true 
+  multiline.match: after
+{% endif %}
+{% else %}
+- type: syslog
+  protocol.udp:
+    host: "localhost:{{ FILEBEAT_SYSLOG_PORT }}"
+{% endif %}
+  fields:
+    log_type: {{ FILEBEAT_LOG_TYPE }}
+
+filebeat.config.modules:
+  path: ${path.config}/modules.d/*.yml
+  reload.enabled: false
+
+output.logstash:
+  hosts: ["{{ FILEBEAT_OUTPUT_HOST }}:{{ FILEBEAT_OUTPUT_PORT }}"]
+  workers: 3
+  loadbalance: true
+  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
+  #ssl.certificate: "{{ FILEBEAT_CERT }}""
+  #ssl.key: "{{ FILEBEAT_KEY }}"
diff --git a/roles/filebeat/tests/inventory b/roles/filebeat/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/filebeat/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/filebeat/tests/test.yml b/roles/filebeat/tests/test.yml
new file mode 100644
index 0000000..12223ca
--- /dev/null
+++ b/roles/filebeat/tests/test.yml
@@ -0,0 +1,5 @@
+---
+- hosts: localhost
+  remote_user: root
+  roles:
+    - filebeat
diff --git a/roles/filebeat/vars/main.yml b/roles/filebeat/vars/main.yml
new file mode 100644
index 0000000..137cdf3
--- /dev/null
+++ b/roles/filebeat/vars/main.yml
@@ -0,0 +1,2 @@
+---
+# vars file for filebeat
diff --git a/roles/haproxy/files/.empty b/roles/haproxy/files/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/roles/haproxy/files/dsoclab-haproxy.crt b/roles/haproxy/files/dsoclab-haproxy.crt
deleted file mode 100644
index 5be39cb..0000000
--- a/roles/haproxy/files/dsoclab-haproxy.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            d2:7b:43:cb:9b:fb:09:cf:cc:86:ef:d1:01:9a:42:fc
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:30 2020 GMT
-            Not After : Oct 15 10:47:30 2023 GMT
-        Subject: CN=dsoclab-haproxy
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c9:c7:22:33:0b:0b:0f:a0:8c:c4:a9:81:37:bd:
-                    51:2f:47:32:fa:1b:88:45:b1:bb:11:43:3d:de:b3:
-                    70:67:d7:8b:39:5a:8f:13:fb:2f:78:08:b1:b1:32:
-                    c6:d1:0e:e4:d3:2e:3a:db:84:db:d2:65:6b:26:24:
-                    6c:d7:16:e5:a5:90:8e:02:46:13:02:0a:96:66:46:
-                    87:b7:b0:ee:56:4c:3c:d8:ae:4c:7d:ef:5b:aa:6e:
-                    01:8e:89:fe:4c:b9:de:6c:ba:e4:3f:8d:f8:d7:3a:
-                    ed:b2:29:9a:5b:ac:5a:86:66:05:f3:19:2f:59:8d:
-                    7c:8b:6a:97:1e:43:8a:36:80:b2:e9:e1:84:f6:94:
-                    bc:13:11:31:b8:d2:5a:72:ed:68:c3:b1:37:e4:5b:
-                    91:82:62:aa:13:f2:b6:e0:3a:aa:85:66:70:0a:a9:
-                    ad:5c:a7:52:ff:dc:f9:99:5e:e5:15:d5:0c:fe:cd:
-                    27:cb:98:9e:5a:69:ca:71:74:31:e6:26:df:ec:d2:
-                    42:43:b9:f3:04:8e:2c:7a:28:a6:f9:8e:ba:64:3c:
-                    69:0e:ac:f5:dc:d5:f3:2a:50:47:50:d4:8c:f5:ee:
-                    31:08:73:69:1f:ae:42:1d:52:84:5d:47:68:dd:a3:
-                    1f:07:57:ec:3e:9e:0d:23:78:16:41:bc:68:f2:4f:
-                    e9:19
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                49:DC:74:02:17:71:C3:D0:A0:64:31:9E:60:2B:B4:38:43:62:DE:98
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-haproxy, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         04:a0:71:31:d2:11:93:09:96:c8:1b:2a:31:b8:b9:34:07:ac:
-         89:cb:b0:6c:b0:f0:17:5f:18:3c:a6:96:ca:b3:fa:c7:af:40:
-         17:e1:7e:e4:dc:ee:fe:5c:dc:86:40:b7:2f:9d:c0:9e:fd:16:
-         6b:85:ab:c2:a8:63:1f:fe:03:2b:89:6a:80:c9:2e:ae:cc:3d:
-         19:75:32:0e:56:57:16:27:02:51:49:1d:b3:78:aa:57:d3:00:
-         9b:93:fe:6d:a3:37:ad:26:35:57:e1:5f:90:bf:ef:30:bc:68:
-         f3:bf:7c:59:69:4f:61:30:2d:48:66:a6:44:2a:51:63:6e:4f:
-         a7:8f:96:7e:91:b2:b2:46:bc:97:1b:01:df:c0:24:5c:b2:aa:
-         8d:20:3a:25:5d:8a:1c:84:53:0d:d4:f6:d5:81:5d:30:de:c4:
-         d7:fa:42:9c:79:68:92:56:b7:76:69:c6:c9:ad:07:47:a6:d2:
-         46:d4:a5:0c:10:a9:03:21:4d:56:40:e5:28:e3:fa:70:1b:23:
-         32:68:07:3d:d6:8a:3a:fb:6d:3b:a6:20:16:1b:09:f3:47:f0:
-         2a:4f:dc:97:86:56:37:96:42:1b:89:b8:76:1a:ab:7a:25:4e:
-         e8:62:d9:a0:3b:ec:62:72:64:64:ca:87:9c:be:0a:08:09:52:
-         ab:03:89:2b
------BEGIN CERTIFICATE-----
-MIIDmTCCAoGgAwIBAgIRANJ7Q8ub+wnPzIbv0QGaQvwwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzMwWhcNMjMxMDE1
-MTA0NzMwWjAaMRgwFgYDVQQDDA9kc29jbGFiLWhhcHJveHkwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDJxyIzCwsPoIzEqYE3vVEvRzL6G4hFsbsRQz3e
-s3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsmJGzXFuWlkI4CRhMCCpZmRoe3
-sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2yKZpbrFqGZgXzGS9ZjXyLapce
-Q4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT8rbgOqqFZnAKqa1cp1L/3PmZ
-XuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6KKb5jrpkPGkOrPXc1fMqUEdQ
-1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZBvGjyT+kZAgMBAAGjgd0wgdow
-CQYDVR0TBAIwADAdBgNVHQ4EFgQUSdx0Ahdxw9CgZDGeYCu0OENi3pgwRgYDVR0j
-BD8wPYAUeQbKQNOfmlSu0zNN8jg+tgvzPc+hGqQYMBYxFDASBgNVBAMMC1NPQ1RP
-T0xTLUNBggkAinSTJoBbQrcwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
-MAsGA1UdDwQEAwIFoDA6BgNVHREEMzAxgg9kc29jbGFiLWhhcHJveHmCHmRzb2Ns
-YWIuZ240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEABKBx
-MdIRkwmWyBsqMbi5NAesicuwbLDwF18YPKaWyrP6x69AF+F+5Nzu/lzchkC3L53A
-nv0Wa4WrwqhjH/4DK4lqgMkursw9GXUyDlZXFicCUUkds3iqV9MAm5P+baM3rSY1
-V+FfkL/vMLxo8798WWlPYTAtSGamRCpRY25Pp4+WfpGyska8lxsB38AkXLKqjSA6
-JV2KHIRTDdT21YFdMN7E1/pCnHlokla3dmnGya0HR6bSRtSlDBCpAyFNVkDlKOP6
-cBsjMmgHPdaKOvttO6YgFhsJ80fwKk/cl4ZWN5ZCG4m4dhqreiVO6GLZoDvsYnJk
-ZMqHnL4KCAlSqwOJKw==
------END CERTIFICATE-----
diff --git a/roles/haproxy/files/dsoclab-haproxy.key b/roles/haproxy/files/dsoclab-haproxy.key
deleted file mode 100644
index abcca5e..0000000
--- a/roles/haproxy/files/dsoclab-haproxy.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJxyIzCwsPoIzE
-qYE3vVEvRzL6G4hFsbsRQz3es3Bn14s5Wo8T+y94CLGxMsbRDuTTLjrbhNvSZWsm
-JGzXFuWlkI4CRhMCCpZmRoe3sO5WTDzYrkx971uqbgGOif5Mud5suuQ/jfjXOu2y
-KZpbrFqGZgXzGS9ZjXyLapceQ4o2gLLp4YT2lLwTETG40lpy7WjDsTfkW5GCYqoT
-8rbgOqqFZnAKqa1cp1L/3PmZXuUV1Qz+zSfLmJ5aacpxdDHmJt/s0kJDufMEjix6
-KKb5jrpkPGkOrPXc1fMqUEdQ1Iz17jEIc2kfrkIdUoRdR2jdox8HV+w+ng0jeBZB
-vGjyT+kZAgMBAAECggEAUcxwiNDJQySK7I7q23XcG5Z5i/rtW5OZin3/7vA/eVlg
-D3gu2KLTs42Su4siHk4zZYkwQx2xH7INpgDOPsQBhQT9DN7rhcBVCFE/Y7BObp2p
-bQ375HHMb2L5Lpeyh9gx21JIhZtAbcBt6/QBp3hPmnxxnQNwtpUtEDe923714PHD
-SfJ1Nd+mgeJ3ShPrk2jhcDdU82/mQrk5eH8M5QJqlTEWCvBgJaKhBf89T2XrX8jf
-oPzeVijOqgLg49QEtAPmI98GlE1OAp3boFx4/QA/s76pgWZhYIm1hcm1AguYhQvJ
-bi96IgdgVQQp/y7L+ix8zsq+YRxwPuCSBl+9BotYoQKBgQDm4neNC87XV4RhGuHG
-w8WpFXFe1uOucPfyfTMmjifh61GZa4aWgBQByBQxBs729MOr9TFrNApTGWPO8Lag
-ANnREyNndaUAUFgtCdY7Gc99deWyIx861aAVU7GGIFVkCo3OK0twbbyzqOj+B+H8
-c/P1tXXMayt/gPVuRDj7sq90VwKBgQDfuh6Clxa2sq0GdKsRkiDXaY8eZxJZchYw
-+0MsYQjX8hPOGn0YWGy14ppE7JEPTEWSRuzCf5cwem/em8AIESgdCUWcGkgcQO5n
-DvZeXrHHpVrTmGE5xEVNYrD/NPY7VizUsyLNvn5yC4hyByWkwLV+AUGpACE3HP2s
-7xTakmmoDwKBgHKEfXuuEafptrVbWgT2cYHOKu85crDBQ5o40zgaZlm+GDkahiT7
-3fCMRseScvE2sh8GfL6Jj11sSH8KEesGwQLclUDpry+aqkGckW+6+5lk8ssKdKD/
-+GjbnD/EpdX7Dh7mhoJ7S49pBjeJvWM0OBr1KDp+JZMWaaWJnSHqnO/9AoGAXvM4
-m6fP5f3y3PiK2cwwz/tm2DpaWUfID0Wz/pO4Ex4UNbacPMbabF8dpf7Ymat/I1Oi
-i/FmkxaDf/COEV5mrdwPhO7Kh+MuyuJYwThjLx4IbCERsliQKQWnpMgvcINkR2k3
-biZYt8IZSHusCD4ZSL7zxOvfLOrK5qgZK6JT4RUCgYEAk94TNC+rYRZOfOIaYA7+
-K1qTQAe8tawTBlKauXptWCzMFtMSEwozuHuxgnyAS/uRUKFMgRk00KrSvnuyGEBX
-5QxqqhBOMvGDs672q/kVZ5C9M06+y5+Zpg0Mf3r+zOBqB5tCASnl2KfOCZkAt8rV
-kyb4KyOsi81/fpVM/WeOL7w=
------END PRIVATE KEY-----
diff --git a/roles/haproxy/files/haproxy.cfg b/roles/haproxy/files/haproxy.cfg
deleted file mode 100644
index e102cf4..0000000
--- a/roles/haproxy/files/haproxy.cfg
+++ /dev/null
@@ -1,17 +0,0 @@
-global
-  quiet
-
-defaults
-  mode http
-  maxconn 5000
-
-  timeout connect 5s
-  timeout client  20s
-  timeout server  20s
-
-frontend public
-    bind *:80
-    default_backend apps
-
-backend apps
-    server nifi_1 nifi_1:8080 check
diff --git a/roles/haproxy/tasks/main.yml b/roles/haproxy/tasks/main.yml
index d8bcefb..00ff357 100644
--- a/roles/haproxy/tasks/main.yml
+++ b/roles/haproxy/tasks/main.yml
@@ -1,68 +1,17 @@
 ---
-# tasks file for haproxy
 
-- name: Copy haproxy configuration file
-  template:
-    src: haproxy.cfg.j2
-    dest: /usr/local/etc/haproxy/haproxy.cfg
+- include: start.yml
   tags:
-    - start
-
-- name: Create required directories
-  file:
-   path: "{{ item }}"
-   state: directory
-   mode: 0755
-   owner: root
-   group: root
-  with_items:
-  - /opt/haproxy
-  - /etc/ssl/haproxy
-  tags:
-    - start
-
-- name: Generate dhparam file for haproxy
-  shell: "openssl dhparam -out /usr/local/etc/haproxy/dhparam.pem 2048"
+   - start
+- include: stop.yml
   tags:
-    - start
-
-- name: Copy haproxy certificates
-  copy:
-    src:  "{{ item }}"
-    dest: "/opt/haproxy/{{ item }}"
-    mode: 0600
-  with_items:
-    - "{{ inventory_hostname }}.crt"
-    - "{{ inventory_hostname }}.key"
+   - stop
+   - stop-haproxy
+- include: update-config.yml
   tags:
-    - start
-
-- name: Combine crt and key for haproxy
-  assemble:
-    src: /opt/haproxy
-    dest: /etc/ssl/haproxy/{{ inventory_hostname }}.crt
-    owner: root
-    mode: 0600
+   - update-config
+   - update-haproxy-config
+- include: restart.yml
   tags:
-    - start
-
-- name: Delete temporary files and directory
-  file:
-    path: "{{ item }}"
-    state: absent
-  with_items:
-    - /opt/haproxy/{{ inventory_hostname }}.crt
-    - /opt/haproxy/{{ inventory_hostname }}.key
-    - /opt/haproxy
-  tags:
-    - start
-
-- name: Start haproxy
-  shell: "daemonize -c / -p /haproxy.pid /usr/local/sbin/haproxy -f /usr/local/etc/haproxy/haproxy.cfg"
-  tags:
-    - start
-
-#- name: Stop haproxy
-#  tags:
-#    - stop
-
+   - restart
+   - restart-haproxy
diff --git a/roles/haproxy/tasks/restart.yml b/roles/haproxy/tasks/restart.yml
new file mode 100644
index 0000000..30c56b2
--- /dev/null
+++ b/roles/haproxy/tasks/restart.yml
@@ -0,0 +1,6 @@
+---
+# tasks file for haproxy
+
+- name: Restart haproxy
+  shell: "supervisorctl restart haproxy"
+
diff --git a/roles/haproxy/tasks/start.yml b/roles/haproxy/tasks/start.yml
new file mode 100644
index 0000000..f33f0ea
--- /dev/null
+++ b/roles/haproxy/tasks/start.yml
@@ -0,0 +1,55 @@
+---
+# tasks file for haproxy
+
+- name: Copy haproxy configuration file
+  template:
+    src: haproxy.cfg.j2
+    dest: /usr/local/etc/haproxy/haproxy.cfg
+
+- name: Create required directories
+  file:
+   path: "{{ item }}"
+   state: directory
+   mode: 0755
+   owner: root
+   group: root
+  with_items:
+  - /opt/haproxy
+  - /etc/ssl/haproxy
+
+- name: Generate dhparam file for haproxy
+  shell: "openssl dhparam -out /usr/local/etc/haproxy/dhparam.pem 2048"
+
+- name: Copy haproxy certificates
+  copy:
+    src:  "{{ item }}"
+    dest: "/opt/haproxy/"
+    mode: 0600
+  with_items:
+    - "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
+
+- name: Combine crt and key for haproxy
+  assemble:
+    src: /opt/haproxy
+    dest: /etc/ssl/haproxy/{{ inventory_hostname }}.crt
+    owner: root
+    mode: 0600
+
+- name: Delete temporary files and directory
+  file:
+    path: "{{ item }}"
+    state: absent
+  with_items:
+    - /opt/haproxy/{{ inventory_hostname }}.crt
+    - /opt/haproxy/{{ inventory_hostname }}.key
+    - /opt/haproxy
+
+- name: Start haproxy
+  shell: "supervisorctl start haproxy"
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
diff --git a/roles/haproxy/tasks/stop.yml b/roles/haproxy/tasks/stop.yml
new file mode 100644
index 0000000..60f875f
--- /dev/null
+++ b/roles/haproxy/tasks/stop.yml
@@ -0,0 +1,6 @@
+---
+# tasks file for haproxy
+
+- name: Stop haproxy
+  command: "supervisorctl stop haproxy"
+
diff --git a/roles/haproxy/tasks/update-config.yml b/roles/haproxy/tasks/update-config.yml
new file mode 100644
index 0000000..dc5cb8b
--- /dev/null
+++ b/roles/haproxy/tasks/update-config.yml
@@ -0,0 +1,8 @@
+---
+# tasks file for haproxy
+
+- name: Copy haproxy configuration file
+  template:
+    src: haproxy.cfg.j2
+    dest: /usr/local/etc/haproxy/haproxy.cfg
+
diff --git a/roles/haproxy/templates/haproxy.cfg.j2 b/roles/haproxy/templates/haproxy.cfg.j2
index e62740e..d566981 100644
--- a/roles/haproxy/templates/haproxy.cfg.j2
+++ b/roles/haproxy/templates/haproxy.cfg.j2
@@ -1,6 +1,6 @@
 global
   #quiet
-  log stdout format raw local0
+  log 127.0.0.1:9000  local0
   nbproc {{ HAPROXY_PROCESSES }}
   ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
   ssl-default-bind-options prefer-client-ciphers no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
@@ -22,7 +22,7 @@ listen stats
         stats hide-version
         stats uri     /
         stats realm   HAProxy Statistics
-        stats auth    haproxy:{{ HAPROXY_STATS_PASS }}
+        stats auth    haproxy:{{lookup('password', '{{playbook_dir}}/secrets/passwords/haproxy_stats')}}
 
 listen nifiserv
 	bind *:9443 ssl crt /etc/ssl/haproxy alpn h2,http/1.1
@@ -31,6 +31,7 @@ listen nifiserv
 	fullconn 5000
 	balance source
 	option tcpka
+        option httplog
 {% for nifihost in groups['nificontainers'] %}
 	server {{nifihost}} {{nifihost}}:9443 ssl check verify none
 {% endfor %}
@@ -42,6 +43,7 @@ listen odfeserv
         fullconn 5000
         balance source
         option tcpka
+        option httplog
 {% for odfehost in groups['odfeescontainers'] %}
      	server {{odfehost}} {{odfehost}}:9200 ssl check verify none
 {% endfor %}
@@ -53,6 +55,7 @@ listen keycloakserv
         fullconn 5000
         balance source
         option tcpka
+        option httplog
 {% for keycloakhost in groups['keycloakcontainers'] %}
 	server {{keycloakhost}} {{keycloakhost}}:8443 ssl check verify none
 {% endfor %}
@@ -65,6 +68,7 @@ listen thehiveserv
         balance source
         option tcpka
         option forwardfor
+        option httplog
 {% for thehivehost in groups['thehive'] %}
 	server {{thehivehost}} {{thehivehost}}:9000 check verify none
 {% endfor %}
@@ -77,6 +81,7 @@ listen cortexserv
         balance source
         option tcpka
         option forwardfor
+        option httplog
 {% for cortexhost in groups['cortex'] %}
 	server {{cortexhost}} {{cortexhost}}:9001 check verify none
 {% endfor %}
@@ -90,6 +95,7 @@ listen nifiservtcp77{{port}}
         balance source
         option tcpka
 	option tcp-check
+        option tcplog
 	tcp-check connect port 77{{port}}
 {% for nifihost in groups['nificontainers'] %}
    	server {{nifihost}} {{nifihost}}:77{{port}} check
@@ -106,6 +112,7 @@ listen nifiservtcp7771
         balance source
         option tcpka
 	option tcp-check
+        option tcplog
 	tcp-check connect port 7771
 {% for nifihost in groups['nificontainers'] %}
    	server {{nifihost}} {{nifihost}}:7771 check
@@ -120,6 +127,7 @@ listen nifiservhttp{{port}}
         fullconn 5000
         balance source
         option tcpka
+        option httplog
 {% for nifihost in groups['nificontainers'] %}
         server {{nifihost}} {{nifihost}}:{{port}} check
 {% endfor %}
@@ -136,6 +144,7 @@ listen nifiservtcp{{port}}
         balance source
         option tcpka
         option tcp-check
+        option tcplog
         tcp-check connect port {{port}}
 {% for nifihost in groups['nificontainers'] %}
         server {{nifihost}} {{nifihost}}:{{port}} check
diff --git a/roles/keycloak/files/SOCTOOLS-CA.crt b/roles/keycloak/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/keycloak/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/keycloak/files/cacerts.jks b/roles/keycloak/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/keycloak/files/dsoclab-keycloak.crt b/roles/keycloak/files/dsoclab-keycloak.crt
deleted file mode 100644
index 92b6893..0000000
--- a/roles/keycloak/files/dsoclab-keycloak.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            fe:75:83:de:f2:35:5a:2c:2b:ba:09:72:0b:d8:09:48
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:28 2020 GMT
-            Not After : Oct 15 10:47:28 2023 GMT
-        Subject: CN=dsoclab-keycloak
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ea:a9:ea:6b:2f:6c:9c:9f:6d:9c:89:4e:01:ba:
-                    c6:c0:32:df:59:26:2b:95:f4:c2:3d:c8:7e:22:ce:
-                    b6:78:03:e8:22:28:81:9c:9a:a6:a7:ba:fd:05:66:
-                    a3:50:81:85:71:c1:d9:ea:bc:21:e1:5d:0a:87:7b:
-                    be:55:b0:7d:01:57:de:4c:fe:3a:c5:c9:54:77:2e:
-                    15:fc:12:07:f8:ef:9f:7b:f7:09:01:70:75:53:3b:
-                    dc:b1:0c:65:4d:49:c4:fb:1d:42:20:6f:81:45:42:
-                    d3:db:1d:4c:57:1b:1d:3b:81:39:ee:b2:cf:95:4b:
-                    29:d0:a8:39:98:d6:93:36:99:bf:c5:43:26:8d:4d:
-                    db:6d:24:3b:fc:16:76:a1:fd:6f:c6:19:11:c7:12:
-                    0d:80:16:4c:88:da:2c:09:78:3d:1b:7c:6c:ec:db:
-                    9e:01:50:5f:a3:56:7f:d4:3b:a4:26:d2:6d:42:7b:
-                    88:4e:8d:64:ed:1e:1a:0e:05:58:65:58:47:83:60:
-                    9e:b4:ed:15:ce:72:4f:a0:b5:22:dd:9f:a4:da:88:
-                    86:fe:cb:84:6e:72:3d:00:42:da:8b:85:2a:f2:ef:
-                    d7:ee:bb:85:42:ba:b9:fb:d9:9d:d2:2c:58:0f:7c:
-                    02:23:b7:46:d0:69:06:37:40:9d:58:74:89:ca:b7:
-                    12:e5
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                FD:C5:77:F8:79:AD:0A:7E:6A:A0:2E:3B:58:6A:9F:43:51:55:0B:DF
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-keycloak, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         9a:c0:35:a3:68:ec:ec:cc:c3:65:5a:bf:03:d0:ee:8d:a0:41:
-         db:6d:89:3e:97:d4:90:7d:63:8e:73:37:43:ae:9a:e2:d0:2b:
-         a7:5e:b2:88:9b:4d:8f:b6:81:bf:f6:46:a0:87:ca:77:ec:5c:
-         af:cd:6b:d8:e8:60:5a:aa:86:be:64:d5:ad:e9:1e:41:7b:6a:
-         df:01:1d:16:86:94:57:82:51:91:be:6b:d6:ae:f0:b9:8c:3d:
-         11:99:c4:93:eb:f7:fa:9e:a3:e3:f8:97:19:cf:63:55:6a:6e:
-         4f:e9:a2:64:a7:35:0d:7e:68:23:89:e1:c6:06:4b:34:67:38:
-         40:d1:81:b3:73:95:3a:3b:67:d2:5a:e4:8e:49:34:b1:ab:6f:
-         b6:60:87:ac:55:5d:f5:59:c0:d5:d3:d8:de:3b:76:c9:41:28:
-         b4:d7:23:ec:a2:3f:1d:3f:74:2e:f0:45:40:35:38:d1:06:50:
-         b2:93:45:df:de:33:5e:0b:89:86:d8:c9:14:61:1c:d2:94:21:
-         1f:bf:df:32:f0:2f:91:52:b0:08:b7:b9:c2:b7:55:2b:ca:05:
-         e4:eb:91:e1:63:45:5d:1a:6f:e8:76:07:89:e8:42:3e:ec:7b:
-         51:0e:a0:d5:8e:c3:3d:26:e3:45:b0:5b:61:d1:98:3b:c3:d4:
-         37:9f:c1:7c
------BEGIN CERTIFICATE-----
-MIIDmzCCAoOgAwIBAgIRAP51g97yNVosK7oJcgvYCUgwDQYJKoZIhvcNAQELBQAw
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwHhcNMjAxMDMwMTA0NzI4WhcNMjMxMDE1
-MTA0NzI4WjAbMRkwFwYDVQQDDBBkc29jbGFiLWtleWNsb2FrMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6qnqay9snJ9tnIlOAbrGwDLfWSYrlfTCPch+
-Is62eAPoIiiBnJqmp7r9BWajUIGFccHZ6rwh4V0Kh3u+VbB9AVfeTP46xclUdy4V
-/BIH+O+fe/cJAXB1UzvcsQxlTUnE+x1CIG+BRULT2x1MVxsdO4E57rLPlUsp0Kg5
-mNaTNpm/xUMmjU3bbSQ7/BZ2of1vxhkRxxINgBZMiNosCXg9G3xs7NueAVBfo1Z/
-1DukJtJtQnuITo1k7R4aDgVYZVhHg2CetO0VznJPoLUi3Z+k2oiG/suEbnI9AELa
-i4Uq8u/X7ruFQrq5+9md0ixYD3wCI7dG0GkGN0CdWHSJyrcS5QIDAQABo4HeMIHb
-MAkGA1UdEwQCMAAwHQYDVR0OBBYEFP3Fd/h5rQp+aqAuO1hqn0NRVQvfMEYGA1Ud
-IwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NU
-T09MUy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
-AjALBgNVHQ8EBAMCBaAwOwYDVR0RBDQwMoIQZHNvY2xhYi1rZXljbG9ha4IeZHNv
-Y2xhYi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQCa
-wDWjaOzszMNlWr8D0O6NoEHbbYk+l9SQfWOOczdDrpri0CunXrKIm02PtoG/9kag
-h8p37FyvzWvY6GBaqoa+ZNWt6R5Be2rfAR0WhpRXglGRvmvWrvC5jD0RmcST6/f6
-nqPj+JcZz2NVam5P6aJkpzUNfmgjieHGBks0ZzhA0YGzc5U6O2fSWuSOSTSxq2+2
-YIesVV31WcDV09jeO3bJQSi01yPsoj8dP3Qu8EVANTjRBlCyk0Xf3jNeC4mG2MkU
-YRzSlCEfv98y8C+RUrAIt7nCt1UrygXk65HhY0VdGm/odgeJ6EI+7HtRDqDVjsM9
-JuNFsFth0Zg7w9Q3n8F8
------END CERTIFICATE-----
diff --git a/roles/keycloak/files/dsoclab-keycloak.key b/roles/keycloak/files/dsoclab-keycloak.key
deleted file mode 100644
index 8c5ebed..0000000
--- a/roles/keycloak/files/dsoclab-keycloak.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDqqeprL2ycn22c
-iU4BusbAMt9ZJiuV9MI9yH4izrZ4A+giKIGcmqanuv0FZqNQgYVxwdnqvCHhXQqH
-e75VsH0BV95M/jrFyVR3LhX8Egf475979wkBcHVTO9yxDGVNScT7HUIgb4FFQtPb
-HUxXGx07gTnuss+VSynQqDmY1pM2mb/FQyaNTdttJDv8Fnah/W/GGRHHEg2AFkyI
-2iwJeD0bfGzs254BUF+jVn/UO6Qm0m1Ce4hOjWTtHhoOBVhlWEeDYJ607RXOck+g
-tSLdn6TaiIb+y4Rucj0AQtqLhSry79fuu4VCurn72Z3SLFgPfAIjt0bQaQY3QJ1Y
-dInKtxLlAgMBAAECggEBAIj6HCLq8NxP15zLLSSnUQK571PLix+iWovT74UD4tEV
-frgJqvat81/vL2iqq+P/ZtSrUjfKD4DMXawOGGFOfvl8v/9zWv0+8zYKSbz1DYBK
-525mGfSkH2gxhjY2xR8jU389ae8jB3NVefLqHDiwVBT67sUdzTwZPtRUjiJgBliU
-soJCsCutHAy7GW68N79F0BQItHhjMt02fYybnFxNvBntD4lodZDn7K9iqBoZPduX
-TBsH1FcwZQyvQuiUlJgjUFM//5zrZUMjErv+3ev5c/WdpY4ycbo6VVBGZouVbyeX
-RAWeDUE1nrsEsLBSnTkXVInFjPS6mBxsIi/+hlf6XCECgYEA+bWYDKPgelSe8ii5
-mK94wcLr6MybO+GrBHT4lIP1UggGsvPtXTifNvgGrYx90gmmL6F9QWHE+4lxyh5L
-yEXCTHXl4QopgZCxWnnKekz0ma0lFlGYGr4KA0Z3Ntp+sCb/hcqVW/n24wVhNnmo
-z3ztlSI/GY3B598R7dO9sR/RoYkCgYEA8JNKbTegmeeaAyBehEPy3eajAiT6759p
-7m6Ml1P6IC3Ff3fllJrNWRi+JDKnJF9SUePOVWLWSgYSJyFLoiWK1CzoyLPdbcW9
-Ap9XNzD/aoDi6DBbKCFhRpBCsmTPnT8eFvA9PhuYY60w2UoM7byH+i2aJ1Do3izl
-tLsHJbcT230CgYEA5S4Sl/9MBlpl6xEPjh/2L7drdyVaj/IFWLjWcNBPtnMhWtrf
-joBqODQZRO09iSlL+kk3wWsvNEEoS33UxcGomy5Vxl3iTET1UXmYKPk6QVUVRc+r
-T1f9rpXc0l5kid2xBSUyQdFAE4obd7jfA1fAYfClgxmEzv//34xHfCoc5ykCgYEA
-01sD00pA3ZXc+AwzHY64y3z6D0M/9s+d+GzFNZoAsM6lqaRDXbhW2oTjX9fkgg8A
-upMiTl/kFeqZfilBUnYbLuc5qEJlMjC8KpakwAdbDk2njAgXvfz9gknxXts0j1jJ
-bauokm0aB9A7j1sAWsj8ya3QtePegnr9YDfEQr1CQ90CgYBfAQaYG9ldXcxTlERG
-jOGu0bh9DtnmwsenwTZQD4mNHpvL0MkmIQxR5FAL8XXbNBq50zCiOapLLrhdqbh0
-ih3WoOdqxLIDQtAJYs3ANhOmEAxvQPxpPKhRHRKPGXxyzgW9zeQ08GpYoR/M7VRF
-TypqufvopzWOpbxpgbfiJQmd8g==
------END PRIVATE KEY-----
diff --git a/roles/keycloak/tasks/main.yml b/roles/keycloak/tasks/main.yml
index 2bb6a62..d7668ba 100644
--- a/roles/keycloak/tasks/main.yml
+++ b/roles/keycloak/tasks/main.yml
@@ -1,97 +1,17 @@
 ---
 
-- name: Copy certificates in keycloak x509 conf dir
-  copy:
-    src:  "{{ item.local }}"
-    dest: "{{ item.remote }}"
-    mode: "{{ item.mode }}"
-  with_items:
-    - local: "files/{{ inventory_hostname }}.crt"
-      remote: /etc/x509/https/tls.crt
-      mode: '0644'
-    - local: "files/{{ inventory_hostname }}.key"
-      remote: /etc/x509/https/tls.key
-      mode: '0600'
-    - local: "files/{{ ca_cn }}.crt"
-      remote: /etc/x509/ca/ca.crt
-      mode: '0644'
-    - local: "files/cacerts.jks"
-      remote: /opt/jboss/keycloak/cacerts.jks
-      mode: '0644'
-  tags:
-    - start
-    - startkeycloak
-
-- name: Generate Keycloak secure config
-  command: "/opt/jboss/tools/x509.sh"
-  environment:
-    X509_CA_BUNDLE: "/etc/x509/ca/ca.crt"
-  tags:
-    - start
-    - startkeycloak
-
-- name: Set admin password
-  command: /opt/jboss/keycloak/bin/add-user-keycloak.sh --user "admin" --password "{{keycloak_adminpass}}"
-  ignore_errors: yes
-  tags:
-    - start
-    - startkeycloak
-
-- name: Configure Keycloak start script
-  template:
-    src: "{{item}}.j2"
-    dest: "/opt/jboss/tools/{{item}}"
-    mode: 0750
-  with_items:
-    - startkeycloak.sh
-    - initkeycloakrealm.sh
-  tags:
-    - start
-    - startkeycloak
-
-
-- name: Start Keycloak IdP
-  command: /opt/jboss/tools/startkeycloak.sh
-  tags:
-    - start
-    - startkeycloak
-
-- name: Wait for Keycloak
-  wait_for:
-    host: "{{groups['keycloakcontainers'][0]}}"
-    port: 8443
-    state: started
-    delay: 5
-  tags:
-    - start
-    - startkeycloak
-
-- name: Initialize Keycloak realm
-  command: /opt/jboss/tools/initkeycloakrealm.sh
-  tags:
-    - start
-    - startkeycloak
-
-- name: Copy secrets from Keycloak
-  fetch:
-    src:  "{{ item.remote }}"
-    dest: "{{ item.local }}"
-    flat: yes
-  with_items:
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret"
-      local:  "roles/nifi/files/nifisecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret"
-      local:  "roles/odfekibana/files/kibanasecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/thehivesecret"
-      local:  "roles/thehive/files/thehivesecret"
-    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/cortexsecret"
-      local:  "roles/cortex/files/cortexsecret"
-  tags:
-    - start
-    - startkeycloak
-
-- name: Stop Keycloak
-  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
-  tags:
-    - stop
-    - stopkeycloak
+- include: start.yml
+  tags:
+   - start
+- include: stop.yml
+  tags: 
+   - stop
+   - stop-keycloak
+- include: update-config.yml
+  tags: 
+   - update-config
+   - update-keycloak-config
+- include: restart.yml
+  tags: 
+   - restart
+   - restart-keycloak
diff --git a/roles/keycloak/tasks/restart.yml b/roles/keycloak/tasks/restart.yml
new file mode 100644
index 0000000..4ea5519
--- /dev/null
+++ b/roles/keycloak/tasks/restart.yml
@@ -0,0 +1,13 @@
+---
+
+- name: Restart Keycloak
+  remote_user: root
+  command: "supervisorctl restart keycloak"
+
+- name: Wait for Keycloak
+  remote_user: jboss
+  wait_for:
+    host: "{{groups['keycloakcontainers'][0]}}"
+    port: 8443
+    state: started
+    delay: 5
diff --git a/roles/keycloak/tasks/start.yml b/roles/keycloak/tasks/start.yml
new file mode 100644
index 0000000..468cb25
--- /dev/null
+++ b/roles/keycloak/tasks/start.yml
@@ -0,0 +1,96 @@
+---
+
+- name: Copy certificates in keycloak x509 conf dir
+  remote_user: jboss
+  copy:
+    src:  "{{ item.local }}"
+    dest: "{{ item.remote }}"
+    mode: "{{ item.mode}}"
+  with_items:
+    - local: "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
+      remote: /etc/x509/https/tls.crt
+      mode: '0644'
+    - local: "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
+      remote: /etc/x509/https/tls.key
+      mode: '0600'
+    - local: "{{playbook_dir}}/secrets/CA/ca.crt"
+      remote: /etc/x509/ca/ca.crt
+      mode: '0644'
+    - local: "{{playbook_dir}}/secrets/CA/cacerts.jks"
+      remote: /opt/jboss/keycloak/cacerts.jks
+      mode: '0644'
+
+- name: Generate Keycloak secure config
+  remote_user: jboss
+  command: "/opt/jboss/tools/x509.sh"
+  environment:
+    X509_CA_BUNDLE: "/etc/x509/ca/ca.crt"
+
+- name: Set admin password
+  remote_user: jboss
+  command: /opt/jboss/keycloak/bin/add-user-keycloak.sh --user "admin" --password "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keykloak_admin')}}"
+  ignore_errors: True
+
+- name: Configure logging format
+  remote_user: jboss
+  lineinfile: #TODO: Change to community.general.xml
+   path: /opt/jboss/keycloak/standalone/configuration/standalone.xml
+   regexp: '.*<formatter name="PATTERN">.*'
+   line: "<formatter name=\"JSON\"><json-formatter date-format=\"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\" pretty-print=\"false\" print-details=\"true\" zone-id=\"UTC\"/></formatter><formatter name=\"PATTERN\">"
+
+- name: Enable event logging
+  remote_user: jboss
+  lineinfile:
+   path: /opt/jboss/keycloak/standalone/configuration/standalone.xml
+   regexp: '.*<spi name="eventsStore">.*'
+   line: '<spi name="eventsListener"><provider name="jboss-logging" enabled="true"><properties><property name="success-level" value="INFO"/><property name="error-level" value="WARN"/></properties></provider></spi><spi name="eventsStore">'
+
+- name: Specify logging format
+  remote_user: jboss
+  lineinfile:
+   path: /opt/jboss/keycloak/standalone/configuration/standalone.xml
+   regexp: ".*<named-formatter name=.*"
+   line: '<named-formatter name="JSON"/>'
+
+- name: Configure Keycloak start script
+  remote_user: jboss
+  template:
+    src: "{{item}}.j2"
+    dest: "/opt/jboss/tools/{{item}}"
+    mode: 0750
+  with_items:
+    - startkeycloak.sh
+    - initkeycloakrealm.sh
+
+- name: Start Keycloak IdP
+  remote_user: root
+  command: "supervisorctl start keycloak"
+
+- name: Wait for Keycloak
+  remote_user: jboss
+  wait_for:
+    host: "{{groups['keycloakcontainers'][0]}}"
+    port: 8443
+    state: started
+    delay: 5
+
+- name: Initialize Keycloak realm
+  remote_user: jboss
+  command: /opt/jboss/tools/initkeycloakrealm.sh
+
+- name: Copy secrets from Keycloak
+  remote_user: jboss
+  fetch:
+    src:  "{{ item.remote }}"
+    dest: "{{ item.local }}"
+    flat: yes
+  with_items:
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret"
+      local:  "{{playbook_dir}}/secrets/tokens/nifisecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret"
+      local:  "{{playbook_dir}}/secrets/tokens/kibanasecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret"
+      local:  "{{playbook_dir}}/secrets/tokens/mispsecret"
+
+- name: Set Autostart for supervisord's services
+  shell: "sed -i 's/autostart=false/autostart=true/g' /etc/supervisord.conf"
diff --git a/roles/keycloak/tasks/stop.yml b/roles/keycloak/tasks/stop.yml
new file mode 100644
index 0000000..0f9c490
--- /dev/null
+++ b/roles/keycloak/tasks/stop.yml
@@ -0,0 +1,5 @@
+---
+
+- name: Stop Keycloak
+  remote_user: root
+  command: "supervisorctl stop keycloak"
diff --git a/roles/keycloak/tasks/update-config.yml b/roles/keycloak/tasks/update-config.yml
new file mode 100644
index 0000000..c64229a
--- /dev/null
+++ b/roles/keycloak/tasks/update-config.yml
@@ -0,0 +1,32 @@
+---
+
+- name: Configure Keycloak start script
+  remote_user: jboss
+  template:
+    src: "{{item}}.j2"
+    dest: "/opt/jboss/tools/{{item}}"
+    mode: 0750
+  with_items:
+    - startkeycloak.sh
+    - initkeycloakrealm.sh
+
+- name: Copy keycloak-tools
+  remote_user: jboss
+  synchronize:
+    src: roles/build/templates/keycloak/keycloak-tools/
+    dest: /opt/jboss/tools/
+
+- name: Copy secrets from Keycloak
+  remote_user: jboss
+  fetch:
+    src:  "{{ item.remote }}"
+    dest: "{{ item.local }}"
+    flat: yes
+  with_items:
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/nifisecret"
+      local:  "{{playbook_dir}}/secrets/tokens/nifisecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/kibanasecret"
+      local:  "{{playbook_dir}}/secrets/tokens/kibanasecret"
+    - remote: "{{ ansible_facts.env['JBOSS_HOME'] }}/mispsecret"
+      local:  "{{playbook_dir}}/secrets/tokens/mispsecret"
+
diff --git a/roles/keycloak/templates/initkeycloakrealm.sh.j2 b/roles/keycloak/templates/initkeycloakrealm.sh.j2
index d6fc946..3d790f2 100644
--- a/roles/keycloak/templates/initkeycloakrealm.sh.j2
+++ b/roles/keycloak/templates/initkeycloakrealm.sh.j2
@@ -5,8 +5,8 @@ exec 7>&2
 exec > /opt/jboss/keycloak/initkeycloak.log 2>&1
 
 
-kcadm.sh config truststore --trustpass {{tspass}} /opt/jboss/keycloak/cacerts.jks
-kcadm.sh config credentials --server https://{{groups['keycloakcontainers'][0]}}:8443/auth --realm master --user admin --password {{keycloak_adminpass}}
+kcadm.sh config truststore --trustpass {{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}} /opt/jboss/keycloak/cacerts.jks
+kcadm.sh config credentials --server https://{{groups['keycloakcontainers'][0]}}:8443/auth --realm master --user admin --password "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keykloak_admin')}}"
 kcadm.sh create realms -b '{ "enabled": "true", "id": "{{openid_realm}}", "realm": "{{openid_realm}}"}'
 kcadm.sh create realms/{{openid_realm}}/authentication/flows/browser/copy -b '{ "id": "browser-x509", "newName": "X.509 Browser" }'
 BROWSERFORM=$(kcadm.sh create realms/{{openid_realm}}/authentication/flows/X.509%20Browser/executions/execution -i -b '{ "provider": "auth-x509-client-username-form" }')
@@ -18,22 +18,18 @@ kcadm.sh create realms/{{openid_realm}}/groups -b '{"name":"GN43WP8T31"}'
 
 {% for user in soctools_users %}
 kcadm.sh create realms/{{openid_realm}}/users -b '{"enabled":true,"attributes":{"DN": ["{{user.DN}}"],"CN": ["{{user.CN}}"]},"username":"{{user.username}}","emailVerified":"","email":"{{user.email}}","firstName":"{{user.firstname}}","lastName":"{{user.lastname}}","groups": ["/GN43WP8T31"] }'
-kcadm.sh set-password -r {{openid_realm}} --username {{user.username}} --new-password {{user.password}}
+kcadm.sh set-password -r {{openid_realm}} --username {{user.username}} --new-password {{lookup('password', '{{playbook_dir}}/secrets/passwords/'+user.CN)}}
 {% endfor %}
 
-NIFICLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-nifi","protocol":"openid-connect","clientAuthenticatorType": "client-secret","redirectUris": ["https://{{dslproxy}}:9443/*" ],"webOrigins": [], "publicClient": false }')
+NIFICLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"soctools-nifi","protocol":"openid-connect","clientAuthenticatorType": "client-secret","redirectUris": ["https://{{soctoolsproxy}}:9443/*" ],"webOrigins": [], "publicClient": false }')
 kcadm.sh create realms/{{openid_realm}}/clients/${NIFICLIENT}/protocol-mappers/models -b '{"protocol":"openid-connect","config":{"id.token.claim":"true","access.token.claim":"true","userinfo.token.claim":"true","multivalued":"","aggregate.attrs":"","user.attribute":"DN","claim.name":"DN","jsonType.label":"String"},"name":"SendDN","protocolMapper":"oidc-usermodel-attribute-mapper"}'
 kcadm.sh get realms/{{openid_realm}}/clients/${NIFICLIENT}/client-secret --fields value > /opt/jboss/keycloak/nifisecret
 
-KIBANACLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-kibana","protocol":"openid-connect","clientAuthenticatorType": "client-secret","rootUrl": "https://{{dslproxy}}:5601","adminUrl": "","redirectUris": ["https://{{dslproxy}}:5601", "https://{{dslproxy}}:5601/auth/openid/login", "https://{{dslproxy}}:5601/app/kibana" ],"webOrigins": [], "publicClient": false }')
+KIBANACLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"soctools-kibana","protocol":"openid-connect","clientAuthenticatorType": "client-secret","rootUrl": "https://{{soctoolsproxy}}:5601","adminUrl": "","redirectUris": ["https://{{soctoolsproxy}}:5601", "https://{{soctoolsproxy}}:5601/auth/openid/login", "https://{{soctoolsproxy}}:5601/app/kibana" ],"webOrigins": [], "publicClient": false }')
 kcadm.sh get realms/{{openid_realm}}/clients/${KIBANACLIENT}/client-secret --fields value > /opt/jboss/keycloak/kibanasecret
 
-THEHIVECLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-thehive","protocol":"openid-connect","clientAuthenticatorType": "client-secret","adminUrl": "","redirectUris": ["https://{{dslproxy}}:9000/api/ssoLogin"],"webOrigins": [], "publicClient": false }')
-kcadm.sh get realms/{{openid_realm}}/clients/${THEHIVECLIENT}/client-secret --fields value > /opt/jboss/keycloak/thehivesecret
-
-CORTEXCLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"dsoclab-cortex","protocol":"openid-connect","clientAuthenticatorType": "client-secret","adminUrl": "","redirectUris": ["https://{{dslproxy}}:9001/api/ssoLogin"],"webOrigins": [], "publicClient": false }')
-kcadm.sh get realms/{{openid_realm}}/clients/${CORTEXCLIENT}/client-secret --fields value > /opt/jboss/keycloak/cortexsecret
-
+MISPCLIENT=$(kcadm.sh create realms/{{openid_realm}}/clients -i -b '{"enabled":true, "clientId":"soctools-misp","protocol":"openid-connect","clientAuthenticatorType": "client-secret","rootUrl": "https://{{soctoolsproxy}}:6443","adminUrl": "","redirectUris": ["https://{{soctoolsproxy}}:6443/users/login/keycloak"],"webOrigins": [], "publicClient": false }')
+kcadm.sh get realms/{{openid_realm}}/clients/${MISPCLIENT}/client-secret --fields value > /opt/jboss/keycloak/mispsecret
 
 kcadm.sh config truststore --delete
 
diff --git a/roles/misp/files/SOCTOOLS-CA.crt b/roles/misp/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/misp/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/misp/files/cacerts.jks b/roles/misp/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/misp/files/dsoclab-misp.crt b/roles/misp/files/dsoclab-misp.crt
deleted file mode 100644
index f830104..0000000
--- a/roles/misp/files/dsoclab-misp.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            75:87:fc:e4:cf:3e:c6:81:17:19:90:76:b1:2c:d5:d2
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:28 2020 GMT
-            Not After : Oct 15 10:47:28 2023 GMT
-        Subject: CN=dsoclab-misp
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:cf:b1:1b:e7:a2:ae:70:81:71:a5:57:46:14:2e:
-                    47:64:89:4e:bd:7d:f0:82:2d:03:19:d6:87:44:b3:
-                    42:bf:72:78:03:cc:91:98:5b:36:42:14:55:e2:82:
-                    16:12:58:60:54:44:8f:15:f6:1b:1f:76:36:22:2e:
-                    e8:ac:d3:3c:0a:df:46:c7:f1:04:bc:3a:bf:fe:4b:
-                    8f:2a:53:83:e3:50:82:06:09:fc:2a:fa:fe:94:a0:
-                    7b:7f:c2:3e:0b:3e:dc:72:b8:94:10:0a:0b:90:fd:
-                    45:76:29:85:52:bf:0f:20:43:78:fe:3b:d3:49:20:
-                    8f:9a:a5:0c:89:bb:0e:97:f2:67:b0:2d:f0:17:53:
-                    25:a6:9b:4b:64:0e:72:8a:bf:c9:e3:8e:41:bb:ed:
-                    f3:33:6a:55:5f:8d:52:84:fa:a3:67:1a:7b:71:fb:
-                    90:f1:5f:61:df:44:ea:0b:77:88:f2:e5:c1:83:71:
-                    58:c7:58:8a:9b:39:45:59:4e:e0:db:16:b6:96:72:
-                    90:8c:ee:c2:13:75:ea:15:c6:6b:e2:dc:3a:de:c8:
-                    07:de:18:84:2d:96:b6:c4:4c:e1:4a:4d:13:6f:6c:
-                    9a:1d:e5:f9:6f:cc:7e:1b:4a:3a:75:1a:b9:37:b0:
-                    6d:a0:1b:69:35:f1:b6:e6:c2:a5:d3:56:d3:57:c7:
-                    0e:8b
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                65:C5:56:88:65:AF:77:F1:53:B2:71:5E:16:10:D1:0B:30:FF:28:BE
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-misp, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         5a:57:76:90:fd:a5:0d:ea:b0:22:c9:02:2e:18:91:81:04:d1:
-         f4:64:58:58:19:27:03:9b:5a:dc:de:6c:0e:fb:b7:76:eb:b1:
-         97:36:e2:c7:76:ef:7d:d8:00:c3:20:c0:3d:a7:cf:61:f8:16:
-         4c:96:4c:7c:c8:89:21:d6:d4:eb:3a:c1:3d:98:34:74:6e:39:
-         81:20:6f:9b:4b:8d:b9:35:60:c5:76:19:30:30:06:0f:89:b1:
-         1a:f6:c4:88:52:28:98:41:52:f1:9a:77:82:79:ae:c9:71:ba:
-         d9:e5:e9:b7:ba:08:32:59:eb:5e:7d:11:e0:a8:27:20:91:46:
-         05:56:1e:e6:0b:4d:49:17:52:7f:4b:c4:a3:e0:cd:30:bd:4e:
-         6a:70:2a:f5:77:4d:d1:d6:64:13:8d:4b:1a:d3:0b:0f:8a:49:
-         1e:bf:b4:c0:4f:43:dc:92:e3:c0:f2:2f:4a:c8:30:45:fc:5a:
-         d2:de:92:b2:a1:48:b8:da:ff:f4:0b:04:5d:5d:a7:30:d8:4b:
-         ca:cf:0c:01:6a:50:45:5f:d4:a8:cf:dd:fa:f7:68:0c:4c:45:
-         47:be:3a:c2:39:bb:04:ff:62:a0:bc:91:a0:f2:2b:67:09:89:
-         5a:ff:e6:53:c1:89:18:12:a1:0f:5a:d7:e1:12:8b:88:88:89:
-         ca:b0:30:27
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIQdYf85M8+xoEXGZB2sSzV0jANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjhaFw0yMzEwMTUx
-MDQ3MjhaMBcxFTATBgNVBAMMDGRzb2NsYWItbWlzcDCCASIwDQYJKoZIhvcNAQEB
-BQADggEPADCCAQoCggEBAM+xG+eirnCBcaVXRhQuR2SJTr198IItAxnWh0SzQr9y
-eAPMkZhbNkIUVeKCFhJYYFREjxX2Gx92NiIu6KzTPArfRsfxBLw6v/5LjypTg+NQ
-ggYJ/Cr6/pSge3/CPgs+3HK4lBAKC5D9RXYphVK/DyBDeP4700kgj5qlDIm7Dpfy
-Z7At8BdTJaabS2QOcoq/yeOOQbvt8zNqVV+NUoT6o2cae3H7kPFfYd9E6gt3iPLl
-wYNxWMdYips5RVlO4NsWtpZykIzuwhN16hXGa+LcOt7IB94YhC2WtsRM4UpNE29s
-mh3l+W/MfhtKOnUauTewbaAbaTXxtubCpdNW01fHDosCAwEAAaOB2jCB1zAJBgNV
-HRMEAjAAMB0GA1UdDgQWBBRlxVaIZa938VOycV4WENELMP8ovjBGBgNVHSMEPzA9
-gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9PTFMt
-Q0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCwYD
-VR0PBAQDAgWgMDcGA1UdEQQwMC6CDGRzb2NsYWItbWlzcIIeZHNvY2xhYi5nbjQt
-My13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQBaV3aQ/aUN6rAi
-yQIuGJGBBNH0ZFhYGScDm1rc3mwO+7d267GXNuLHdu992ADDIMA9p89h+BZMlkx8
-yIkh1tTrOsE9mDR0bjmBIG+bS425NWDFdhkwMAYPibEa9sSIUiiYQVLxmneCea7J
-cbrZ5em3uggyWetefRHgqCcgkUYFVh7mC01JF1J/S8Sj4M0wvU5qcCr1d03R1mQT
-jUsa0wsPikkev7TAT0PckuPA8i9KyDBF/FrS3pKyoUi42v/0CwRdXacw2EvKzwwB
-alBFX9Soz93692gMTEVHvjrCObsE/2KgvJGg8itnCYla/+ZTwYkYEqEPWtfhEouI
-iInKsDAn
------END CERTIFICATE-----
diff --git a/roles/misp/files/dsoclab-misp.key b/roles/misp/files/dsoclab-misp.key
deleted file mode 100644
index 9b8a5d6..0000000
--- a/roles/misp/files/dsoclab-misp.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPsRvnoq5wgXGl
-V0YULkdkiU69ffCCLQMZ1odEs0K/cngDzJGYWzZCFFXighYSWGBURI8V9hsfdjYi
-Luis0zwK30bH8QS8Or/+S48qU4PjUIIGCfwq+v6UoHt/wj4LPtxyuJQQCguQ/UV2
-KYVSvw8gQ3j+O9NJII+apQyJuw6X8mewLfAXUyWmm0tkDnKKv8njjkG77fMzalVf
-jVKE+qNnGntx+5DxX2HfROoLd4jy5cGDcVjHWIqbOUVZTuDbFraWcpCM7sITdeoV
-xmvi3DreyAfeGIQtlrbETOFKTRNvbJod5flvzH4bSjp1Grk3sG2gG2k18bbmwqXT
-VtNXxw6LAgMBAAECggEBAIb/4VqMVQTOLvfBJc0iU8eWtLbZMMb8ySI3Xs+aEc3t
-cvNNOmolB7ymCTllQ0GDboH32mX1BaZKqV9IzHbiCwoqHZEDKgfLzFZX+OQTSwwr
-nYidXur1IRuswPnHYZrfrl1net5+GQyShF8NGBs0E3nuQaxHaMwEvTNRCzhPfWnn
-u/g3IExtSdE/XSxRnTGRQqSnMAf9OXs9bw/iTSR5cQO2mW/dRLr4aUCQOJ5Hx4mO
-ub172vkNeNwOSUzc9FjtZyQZOtn25WoS7SusK7y9ToDqqR5OcI5M+kxq+fQo8Wvu
-XlIeOvTKTHOBaih6QYEzHo9zq893I/c0xiOmfOr0v7kCgYEA7WQ7g5z+2Lyt35Sq
-XmzyQyAEbx+PMPc7yTQC62YuvpEAaDFDHMphDw1zM2mraLO+2IuBuDz7CTlsf1zl
-xwEJoEZa3odRi2McpqiUVQgJYD+bCUv35J8X93K4/7tLHvXDJQ3BKBNNoLHxjD5P
-SlR5xBCFwZiiXAkquWpZaaWAbg0CgYEA3/jjf723dlWRrVcG/m7VJrhTWq10Jltp
-8y786INKU1IUrwqFt7ph4c9/Jbop40QVkJKzsPojzWreDf3EZYGnBVhOLA5p4MC0
-X1ZTzN86dn1Y3SDCopGnJVP8X2EdDGfsTkfXxOjRCzSPOyZzxzseACw9WWAmullU
-zQs4K6/4YPcCgYB117znb8bepoMVqwILz79PbRRmaV82qnRGRAhy/I2V0ftGvbWY
-FCqsQzv9uKX7WscRTed+It9nS9c9PkteR3iU1HgFYV0seW3emW7Q6yVkXw7CRbDw
-D73g+1U0ta/r1Yoi2boZ/8MYU10aBlBsEJVFrAIKAZAPagmIc2+hTyP6/QKBgQDX
-FHSr3C0NJzkhA7zEovxwFXx+TKmImCqTjKD0S/gZMW6JdYpZmFOc/Jz2RuMoyt4G
-msqSfnPZNPIO744liC8zM8zGBAVq/sN39je9OvUyikbG+0nNwh+H+jIWCfVST44e
-0mEDSCxPHWcaf1+ZiEzUD6fOZ0Zpl5WW3lpPocncmwKBgQDIR7uJctv3UZkEO+oq
-g1Q4jLUYJFUb/3fk1mEmpq+b90e/xQMqZHlu/KHiHcKrukdWj67d/LY4mrw4DebR
-PTgdj9e0O8V9M7BYxDN+zEYrvmmY4A+tg07zm8aqmhCNKpOMsW0MkKFFuRiMkiCh
-bopZVfjdd+d/56vLZW+GSBaCew==
------END PRIVATE KEY-----
diff --git a/roles/misp/tasks/config.yml b/roles/misp/tasks/config.yml
new file mode 100644
index 0000000..864c61d
--- /dev/null
+++ b/roles/misp/tasks/config.yml
@@ -0,0 +1,93 @@
+---
+
+- name: Change password of default user
+  shell: "/var/www/MISP/app/Console/cake Password admin@admin.test {{ lookup('password', '{{playbook_dir}}/secrets/passwords/misp_admin') }}"
+
+- name: Configure MISP
+  shell: '/var/www/MISP/app/Console/cake Admin setSetting {{item.var}} {{item.value}}'
+  with_items:
+    - {"var":"Plugin.CustomAuth_enable","value":"true"}
+    - {"var":"Plugin.CustomAuth_header","value":"X_REMOTE_USER"}
+    - {"var":"Plugin.CustomAuth_disable_logout","value":"true"}
+    - {"var":"MISP.external_baseurl","value":"https://{{soctoolsproxy}}:6443"}
+    - {"var":"MISP.live","value":"true"}
+
+- name: Init default user
+  shell: '/var/www/MISP/app/Console/cake user_init | /usr/bin/tail -n1'
+  register: init_output
+  ignore_errors: True
+
+- name: Set API key fact
+  set_fact:
+   misp_api_key: "{{ init_output.stdout }}"
+  when: '"initialised" not in init_output.stdout'
+
+- name: Get API key
+  shell: '/var/www/MISP/app/Console/cake Admin getAuthkey admin@admin.test | /usr/bin/tail -n1'
+  register: get_output
+  ignore_errors: True
+  when: '"initialised" in init_output.stdout'
+
+- name: Set API key fact
+  set_fact:
+   misp_api_key: "{{ get_output.stdout }}"
+  when: '"initialised" in init_output.stdout'   
+
+- name: add users
+  uri:
+   url: "https://{{soctoolsproxy}}:6443/admin/users/add/1"
+   method: POST
+   body_format: json
+   headers:
+    Authorization: "{{misp_api_key}}"
+    Accept: "application/json"
+    Content-type: "application/json"
+   body: '{"email": "{{item.email}}","org_id": "1","role_id": "1","external_auth_key":"{{item.email}}","external_auth_required":"1","change_pw": "0","external_auth_key":"{{item.email}}"}'    
+  ignore_errors: yes #Ignore error when user already exists
+  with_items:
+    - "{{soctools_users}}"
+
+- name: Get user API key
+  shell: '/var/www/MISP/app/Console/cake Admin getAuthkey {{soctools_users[0].email}} | /usr/bin/tail -n1'
+  register: user_key
+
+- name: Store user API key
+  copy:
+    content: "{{ user_key.stdout }}"
+    dest: "{{playbook_dir}}/secrets/tokens/misp"
+  delegate_to: 127.0.0.1
+
+- name: Enable feed
+  uri:
+   url: "https://{{soctoolsproxy}}:6443/feeds/edit/1"
+   method: POST
+   body_format: json
+   headers:
+    Authorization: "{{misp_api_key}}"
+    Accept: "application/json"
+    Content-type: "application/json"
+   body: '{"enabled": true, "caching_enabled": true, "distribution": "1","publish": true}'
+
+- name: Fetch feed
+  shell: '/var/www/MISP/app/Console/cake Server {{item}} 1 all&'
+  with_items:
+    - fetchFeed
+    - cacheFeed
+
+- name: Add example event
+  uri:
+   url:
+   url: "https://{{soctoolsproxy}}:6443/events"
+   method: POST
+   body_format: json
+   headers:
+    Authorization: "{{misp_api_key}}"
+    Accept: "application/json"
+    Content-type: "application/json"
+   body: '{"Event":{"date":"{{ansible_date_time.date}}","threat_level_id":"1","info":"testevent","published":true,"analysis":"0","distribution":"0","Attribute":[{"type":"domain","category":"Network activity","to_ids":false,"distribution":"0","comment":"","value":"example.evil"},{"type":"ip-dst","category":"Network activity","to_ids":false,"distribution":"0","comment":"","value":"10.10.10.10"}]}}'
+
+- name: Set Autostart for supervisord services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
diff --git a/roles/misp/tasks/main.yml b/roles/misp/tasks/main.yml
index 826e9dc..9b53c6c 100644
--- a/roles/misp/tasks/main.yml
+++ b/roles/misp/tasks/main.yml
@@ -1,59 +1,19 @@
 ---
 
-- name: Copy certificates in apache cert dir
-  copy:
-    src:  "{{ item.local }}"
-    dest: "{{ item.remote }}"
-    mode: "{{ item.mode}}"
-  with_items:
-    - local: "files/{{ inventory_hostname }}.crt"
-      remote: /etc/ssl/certs/misp.crt
-      mode: '0644'
-    - local: "files/{{ inventory_hostname }}.key"
-      remote: /etc/ssl/certs/misp.key
-      mode: '0600'
-    - local: "files/{{ ca_cn }}.crt"
-      remote: /etc/ssl/certs/ca.crt
-      mode: '0644'
+- include: start.yml
   tags:
-    - start
-
-- name: Configure Apache web server for misp
-  template:
-    src: misp.conf.j2
-    dest: /etc/httpd/conf.d/misp.conf
-  tags:
-    - start
-
-- name: Configure MISP database access
-  template:
-    src: database.php.j2
-    dest: /var/www/MISP/app/Config/database.php
-  tags:
-    - start
-
-- name: Configure MISP app
-  template:
-    src: config.php.j2
-    dest: /var/www/MISP/app/Config/config.php
+   - start
+- include: config.yml
   tags:
-    - start
-
-- name: Configure MISP database initialization script
-  template:
-    src: checkdb.sh.j2
-    dest: /var/www/MISP/checkdb.sh
-    mode: '0700'
+   - start
+   - config
+- include: stop.yml
+  tags: stop
+- include: update-config.yml
   tags:
-    - start
-
-- name: Check if database is initialized
-  command: /var/www/MISP/checkdb.sh
+   - update-config
+   - update-misp-config
+- include: restart.yml
   tags:
-    - start
-
-- name: Start MISP
-  command: "/usr/bin/supervisord -c /etc/supervisord.conf"
-  tags:
-    - start
-
+   - restart
+   - restart-misp
diff --git a/roles/misp/tasks/restart.yml b/roles/misp/tasks/restart.yml
new file mode 100644
index 0000000..5878940
--- /dev/null
+++ b/roles/misp/tasks/restart.yml
@@ -0,0 +1,16 @@
+---
+
+- name: Restart php-fpm
+  command: "supervisorctl restart php-fpm"
+
+- name: Restart redis-server
+  command: "supervisorctl restart redis-server"
+
+- name: Restart apache2
+  command: "supervisorctl restart apache2"
+
+- name: Restart misp-modules
+  command: "supervisorctl restart misp-modules"
+
+- name: Restart workers
+  command: "supervisorctl restart workers"
diff --git a/roles/misp/tasks/start.yml b/roles/misp/tasks/start.yml
new file mode 100644
index 0000000..c07917f
--- /dev/null
+++ b/roles/misp/tasks/start.yml
@@ -0,0 +1,73 @@
+---
+
+- name: Set PHP symbolic link
+  file:
+   src: /opt/rh/rh-php72/root/bin/php  
+   dest: /usr/bin/php
+   state: link
+
+- name: Copy certificates
+  copy:
+    src:  "{{ item.local }}"
+    dest: "{{ item.remote }}"
+    mode: "{{ item.mode}}"
+  with_items:
+    - local: "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
+      remote: /etc/ssl/certs/misp.crt
+      mode: '0644'
+    - local: "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
+      remote: /etc/ssl/certs/misp.key
+      mode: '0600'
+    - local: "{{playbook_dir}}/secrets/CA/ca.crt"
+      remote: /etc/ssl/certs/ca.crt
+      mode: '0644'
+    - local: "{{playbook_dir}}/secrets/CA/ca.crt"
+      remote: /etc/pki/ca-trust/source/anchors/ca.crt
+      mode: '0644'
+
+- name: Update CA trust
+  command: update-ca-trust
+
+- name: Get openid authkey
+  set_fact:
+    mispsecret: "{{lookup('file', '{{playbook_dir}}/secrets/tokens/mispsecret',convert_data=False) | from_json }}"
+
+- name: Configure Apache web server for misp
+  template:
+    src: misp.conf.j2
+    dest: /etc/httpd/conf.d/misp.conf
+
+- name: Configure MISP database access
+  template:
+    src: database.php.j2
+    dest: /var/www/MISP/app/Config/database.php
+
+- name: Configure salt
+  lineinfile:
+    path: /var/www/MISP/app/Config/config.php
+    regexp: "'salt'.*=>"
+    line: "'salt' => '{{lookup('password', '{{playbook_dir}}/secrets/misp_salt')}}',"
+
+- name: Configure MISP database initialization script
+  template:
+    src: checkdb.sh.j2
+    dest: /var/www/MISP/checkdb.sh
+    mode: '0700'
+
+- name: Check if database is initialized
+  command: /var/www/MISP/checkdb.sh
+
+- name: Start php-fpm
+  command: "supervisorctl start php-fpm"
+
+- name: Start redis-server
+  command: "supervisorctl start redis-server"
+
+- name: Start apache2
+  command: "supervisorctl start apache2"
+
+- name: Start misp-modules
+  command: "supervisorctl start misp-modules"
+
+- name: Start workers
+  command: "supervisorctl start workers"
diff --git a/roles/misp/tasks/stop.yml b/roles/misp/tasks/stop.yml
new file mode 100644
index 0000000..6a56d87
--- /dev/null
+++ b/roles/misp/tasks/stop.yml
@@ -0,0 +1,17 @@
+---
+- name: Stop php-fpm
+  command: "supervisorctl stop php-fpm"
+
+- name: Stop redis-server
+  command: "supervisorctl stop redis-server"
+
+- name: Stop apache2
+  command: "supervisorctl stop apache2"
+
+- name: Stop misp-modules
+  command: "supervisorctl stop misp-modules"
+
+- name: Stop workers
+  #command: "supervisorctl start workers"
+  command: 'su - -s /bin/bash -c "/var/www/MISP/app/Console/worker/stop.sh" apache'
+
diff --git a/roles/misp/tasks/update-config.yml b/roles/misp/tasks/update-config.yml
new file mode 100644
index 0000000..cd21505
--- /dev/null
+++ b/roles/misp/tasks/update-config.yml
@@ -0,0 +1,2 @@
+---
+
diff --git a/roles/misp/templates/checkdb.sh.j2 b/roles/misp/templates/checkdb.sh.j2
index 5aba69f..c8eb4ab 100644
--- a/roles/misp/templates/checkdb.sh.j2
+++ b/roles/misp/templates/checkdb.sh.j2
@@ -1,5 +1,5 @@
 #!/bin/bash -x
-MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}})
+MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{mysql_name}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}})
 if [ ${MISPINIT} == "0" ]; then
-  cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}}
+  cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{mysql_name}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}}
 fi
diff --git a/roles/misp/templates/config.php.j2 b/roles/misp/templates/config.php.j2
deleted file mode 100644
index 46ca1ca..0000000
--- a/roles/misp/templates/config.php.j2
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-$config = array (
-  'debug' => 0,
-  'MISP' => 
-  array (
-    'baseurl' => 'https://{{dslproxy}}:6443',
-    'footermidleft' => '',
-    'footermidright' => '',
-    'org' => 'ORGNAME',
-    'showorg' => true,
-    'threatlevel_in_email_subject' => true,
-    'email_subject_TLP_string' => 'tlp:amber',
-    'email_subject_tag' => 'tlp',
-    'email_subject_include_tag_name' => true,
-    'background_jobs' => true,
-    'cached_attachments' => true,
-    'email' => 'email@address.com',
-    'contact' => 'email@address.com',
-    'cveurl' => 'https://cve.circl.lu/cve/',
-    'cweurl' => 'https://cve.circl.lu/cwe/',
-    'disablerestalert' => false,
-    'default_event_distribution' => '1',
-    'default_attribute_distribution' => 'event',
-    'tagging' => true,
-    'full_tags_on_event_index' => true,
-    'attribute_tagging' => true,
-    'full_tags_on_attribute_index' => true,
-    'footer_logo' => '',
-    'take_ownership_xml_import' => false,
-    'unpublishedprivate' => false,
-    'disable_emailing' => false,
-    'manage_workers' => true,
-    'Attributes_Values_Filter_In_Event' => 'id, uuid, value, comment, type, category, Tag.name',
-    'uuid' => '6ec3e533-99f9-42ac-952d-002664d1500f',
-    'live' => true,
-  ),
-  'GnuPG' => 
-  array (
-    'onlyencrypted' => false,
-    'email' => '',
-    'homedir' => '',
-    'password' => '',
-    'bodyonlyencrypted' => false,
-    'sign' => true,
-    'obscure_subject' => false,
-  ),
-  'SMIME' => 
-  array (
-    'enabled' => false,
-    'email' => '',
-    'cert_public_sign' => '',
-    'key_sign' => '',
-    'password' => '',
-  ),
-  'Proxy' => 
-  array (
-    'host' => '',
-    'port' => '',
-    'method' => '',
-    'user' => '',
-    'password' => '',
-  ),
-  'SecureAuth' => 
-  array (
-    'amount' => 5,
-    'expire' => 300,
-  ),
-  'Security' => 
-  array (
-    'level' => 'medium',
-    'salt' => '{{misp_salt}}',
-    'cipherSeed' => '',
-  ),
-  'Session.defaults' => 'php',
-  'Session.timeout' => 60,
-  'Session.cookieTimeout' => 60,
-  'Session.autoRegenerate' => false,
-  'Session.checkAgent' => false,
-  'site_admin_debug' => NULL,
-  'Plugin' => NULL,
-  'CertAuth' => NULL,
-  'ApacheShibbAuth' => NULL,
-  'ApacheSecureAuth' => NULL,
-);
diff --git a/roles/misp/templates/database.php.j2 b/roles/misp/templates/database.php.j2
index 0cf1934..867e5fb 100755
--- a/roles/misp/templates/database.php.j2
+++ b/roles/misp/templates/database.php.j2
@@ -63,11 +63,11 @@ class DATABASE_CONFIG {
 		'datasource' => 'Database/Mysql',
 		//'datasource' => 'Database/Postgres',
 		'persistent' => false,
-		'host' => '{{groups['mysql'][0]}}',
+		'host' => '{{mysql_name}}',
 		'login' => '{{misp_dbuser}}',
 		'port' => 3306, // MySQL & MariaDB
 		//'port' => 5432, // PostgreSQL
-		'password' => '{{misp_dbpass}}',
+		'password' => '{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}',
 		'database' => '{{misp_dbname}}',
 		'prefix' => '',
 		'encoding' => 'utf8',
diff --git a/roles/misp/templates/misp.conf.j2 b/roles/misp/templates/misp.conf.j2
index 3a9cb85..2ca0521 100644
--- a/roles/misp/templates/misp.conf.j2
+++ b/roles/misp/templates/misp.conf.j2
@@ -1,7 +1,7 @@
 Listen 6443 https
 <VirtualHost *:6443>
-ServerAdmin admin@{{dslproxy}}
-ServerName {{dslproxy}}
+ServerAdmin admin@{{soctoolsproxy}}
+ServerName {{soctoolsproxy}}
 DocumentRoot /var/www/MISP/app/webroot
 <Directory /var/www/MISP/app/webroot>
 Options -Indexes
@@ -10,15 +10,25 @@ AllowOverride all
 
 DirectoryIndex index.php
 
-# ProxyPassMatch ^/info$ fcgi://127.0.0.1:9000/var/www/MISP/app/webroot/info.php
 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/MISP/app/webroot/$1
 
-#<FilesMatch "\.php$">
-#     SetHandler "proxy:fcgi://127.0.0.1:9000"
-#     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
-#     AddHandler php72-fcgi .php
-#     Action php72-fcgi /cgi-bin/php72.fcgi
-#</FilesMatch>
+SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
+
+OIDCCryptoPassphrase {{lookup('password', '{{playbook_dir}}/secrets/passwords/misp_crypto')}}
+OIDCProviderMetadataURL https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
+OIDCRedirectURI https://{{soctoolsproxy}}:6443/users/login/keycloak
+OIDCClientID soctools-misp
+OIDCScope "openid profile"
+OIDCClientSecret {{mispsecret.value}}
+OIDCRemoteUserClaim email
+OIDCProviderTokenEndpointAuth client_secret_basic
+
+<Location /users/login>
+  AuthType openid-connect
+  Require valid-user
+  RequestHeader set X-Remote-User %{OIDC_CLAIM_email}e
+</Location>
+
 
 SSLEngine On
 SSLCertificateFile /etc/ssl/certs/misp.crt
diff --git a/roles/misp/templates/mysql_secure.sql.j2 b/roles/misp/templates/mysql_secure.sql.j2
index 7b8dd28..dd8ffd5 100644
--- a/roles/misp/templates/mysql_secure.sql.j2
+++ b/roles/misp/templates/mysql_secure.sql.j2
@@ -1,4 +1,4 @@
-UPDATE mysql.user SET Password=PASSWORD('{{mysql_dbrootpass}}') WHERE User='root';
+UPDATE mysql.user SET Password=PASSWORD('{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}') WHERE User='root';
 DELETE FROM mysql.user WHERE User='';
 DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 DROP DATABASE IF EXISTS test;
@@ -6,7 +6,7 @@ DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
 
 CREATE DATABASE {{misp_dbname}};
 {% for misp_host in groups['mispcontainers'] %}
-GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{misp_dbpass}}';
+GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}';
 GRANT ALL PRIVILEGES on {{misp_dbname}}.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}';
 {% endfor %}
 
diff --git a/roles/mysql/tasks/main.yml b/roles/mysql/tasks/main.yml
index f915611..69395fe 100644
--- a/roles/mysql/tasks/main.yml
+++ b/roles/mysql/tasks/main.yml
@@ -1,4 +1,20 @@
 ---
 
 - include: secure.yml
+  tags:
+   - start
 - include: misp.yml
+  tags:
+   - start
+- include: stop.yml
+  tags:
+   - stop
+   - stop-mysql
+- include: update-config.yml
+  tags:
+   - update-config
+   - update-mysql-config
+- include: restart.yml
+  tags:
+   - restart
+   - restart-mysql
diff --git a/roles/mysql/tasks/misp.yml b/roles/mysql/tasks/misp.yml
index 60e1d0a..c541e99 100644
--- a/roles/mysql/tasks/misp.yml
+++ b/roles/mysql/tasks/misp.yml
@@ -4,23 +4,26 @@
   mysql_db:
     name: "{{misp_dbname}}"
     state: present
-  tags:
-    - start
 
 - name: Create misp user
   mysql_user:
     name: "{{misp_dbuser}}"
-    host: "{{item}}.{{soctools_netname}}"
-    password: "{{misp_dbpass}}"
+    #host: "{{item}}.{{soctools_netname}}"
+    host: "%"
+    password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}"
     priv: "{{misp_dbname}}.*:ALL"
   with_items: "{{groups['mispcontainers']}}"
-  tags:
-    - start
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
 
 
 #  CREATE DATABASE IF NOT EXISTS {{misp_dbname}};
 #  {% for misp_host in groups['mispcontainers'] %}
-#  GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{misp_dbpass}}';
+#  GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}}';
 #  GRANT ALL PRIVILEGES on {{misp_dbname}}.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}';
 #  {% endfor %}
 #  
diff --git a/roles/mysql/tasks/restart.yml b/roles/mysql/tasks/restart.yml
new file mode 100644
index 0000000..79a5ef4
--- /dev/null
+++ b/roles/mysql/tasks/restart.yml
@@ -0,0 +1,4 @@
+---
+
+- name: Restart MySQL
+  shell: "supervisorctl restart mysql"
diff --git a/roles/mysql/tasks/secure.yml b/roles/mysql/tasks/secure.yml
index 18f098e..80db96c 100644
--- a/roles/mysql/tasks/secure.yml
+++ b/roles/mysql/tasks/secure.yml
@@ -4,7 +4,7 @@
   mysql_user:
     name: root
     host_all: yes
-    password: "{{mysql_dbrootpass}}"
+    password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}"
   tags:
     - start
   ignore_errors: true
@@ -54,7 +54,7 @@
 # 
 # 
 # 
-# UPDATE mysql.user SET Password=PASSWORD('{{mysql_dbrootpass}}') WHERE User='root';
+# UPDATE mysql.user SET Password=PASSWORD('{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}') WHERE User='root';
 # DELETE FROM mysql.user WHERE User='';
 # DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 # DROP DATABASE IF EXISTS test;
@@ -64,9 +64,9 @@
 # 
 # 
 # #!/bin/bash -x
-# MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}})
-# #MISPINIT=$(echo "select count(id) from users;" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}})
+# MISPINIT=$(echo "SELECT COUNT(DISTINCT 'table_name') FROM information_schema.columns WHERE table_schema = '{{misp_dbname}}';" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}})
+# #MISPINIT=$(echo "select count(id) from users;" | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}})
 # if [ ${MISPINIT} == "0" ]; then
-#   cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{misp_dbpass}} {{misp_dbname}}
+#   cat /var/www/MISP/INSTALL/MYSQL.sql | mysql -s -h {{groups['mysql'][0]}} -u {{misp_dbuser}} -p{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_misp')}} {{misp_dbname}}
 #   touch /var/www/MISP/dbchecked-$(date +%Y%m%d_%H%M%S)
 # fi
diff --git a/roles/mysql/tasks/stop.yml b/roles/mysql/tasks/stop.yml
new file mode 100644
index 0000000..dcfc34a
--- /dev/null
+++ b/roles/mysql/tasks/stop.yml
@@ -0,0 +1,4 @@
+---
+
+- name: Stop MySQL
+  shell: "supervisorctl stop mysql"
diff --git a/roles/mysql/tasks/update-config.yml b/roles/mysql/tasks/update-config.yml
new file mode 100644
index 0000000..cd21505
--- /dev/null
+++ b/roles/mysql/tasks/update-config.yml
@@ -0,0 +1,2 @@
+---
+
diff --git a/roles/mysql/templates/dotmy.cnf.j2 b/roles/mysql/templates/dotmy.cnf.j2
index 56feaea..79fe59e 100644
--- a/roles/mysql/templates/dotmy.cnf.j2
+++ b/roles/mysql/templates/dotmy.cnf.j2
@@ -1,3 +1,3 @@
 [client]
 user=root
-password='{{mysql_dbrootpass}}'
+password='{{lookup('password', '{{playbook_dir}}/secrets/passwords/mysql_root')}}'
diff --git a/roles/mysql/templates/mysql_secure.sql.j2 b/roles/mysql/templates/mysql_secure.sql.j2
index c1f602d..5b8474e 100644
--- a/roles/mysql/templates/mysql_secure.sql.j2
+++ b/roles/mysql/templates/mysql_secure.sql.j2
@@ -1,4 +1,4 @@
-UPDATE mysql.user SET Password=PASSWORD('{{mysql_dbrootpass}}') WHERE User='root';
+UPDATE mysql.user SET Password=PASSWORD('{{playbook_dir}}/secrets/passwords/mysql_root')}}') WHERE User='root';
 DELETE FROM mysql.user WHERE User='';
 DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 DROP DATABASE IF EXISTS test;
@@ -6,9 +6,14 @@ DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
 
 CREATE DATABASE IF NOT EXISTS {{misp_dbname}};
 {% for misp_host in groups['mispcontainers'] %}
-GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{misp_dbpass}}';
+GRANT USAGE on *.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}' IDENTIFIED by '{{playbook_dir}}/secrets/passwords/mysql_misp')}}';
 GRANT ALL PRIVILEGES on {{misp_dbname}}.* to '{{misp_dbuser}}'@'{{misp_host}}.{{soctools_netname}}';
 {% endfor %}
 
+INSTALL SONAME 'server_audit';
+SET GLOBAL server_audit_logging=ON;
+SET GLOBAL server_audit_file_rotate_now = ON;
+SET GLOBAl server_audit_file_rotations = 2;
+SET GLOABL audit_log_format = JSON;
 
 FLUSH PRIVILEGES;
diff --git a/roles/nifi/files/CountriesWithRegionalCodes.csv b/roles/nifi/files/CountriesWithRegionalCodes.csv
new file mode 100644
index 0000000..f9b67f9
--- /dev/null
+++ b/roles/nifi/files/CountriesWithRegionalCodes.csv
@@ -0,0 +1,250 @@
+name,alpha-2,alpha-3,country-code,iso_3166-2,region,sub-region,intermediate-region,region-code,sub-region-code,intermediate-region-code
+Afghanistan,AF,AFG,004,ISO 3166-2:AF,Asia,Southern Asia,"",142,034,""
+Åland Islands,AX,ALA,248,ISO 3166-2:AX,Europe,Northern Europe,"",150,154,""
+Albania,AL,ALB,008,ISO 3166-2:AL,Europe,Southern Europe,"",150,039,""
+Algeria,DZ,DZA,012,ISO 3166-2:DZ,Africa,Northern Africa,"",002,015,""
+American Samoa,AS,ASM,016,ISO 3166-2:AS,Oceania,Polynesia,"",009,061,""
+Andorra,AD,AND,020,ISO 3166-2:AD,Europe,Southern Europe,"",150,039,""
+Angola,AO,AGO,024,ISO 3166-2:AO,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Anguilla,AI,AIA,660,ISO 3166-2:AI,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Antarctica,AQ,ATA,010,ISO 3166-2:AQ,"","","","","",""
+Antigua and Barbuda,AG,ATG,028,ISO 3166-2:AG,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Argentina,AR,ARG,032,ISO 3166-2:AR,Americas,Latin America and the Caribbean,South America,019,419,005
+Armenia,AM,ARM,051,ISO 3166-2:AM,Asia,Western Asia,"",142,145,""
+Aruba,AW,ABW,533,ISO 3166-2:AW,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Australia,AU,AUS,036,ISO 3166-2:AU,Oceania,Australia and New Zealand,"",009,053,""
+Austria,AT,AUT,040,ISO 3166-2:AT,Europe,Western Europe,"",150,155,""
+Azerbaijan,AZ,AZE,031,ISO 3166-2:AZ,Asia,Western Asia,"",142,145,""
+Bahamas,BS,BHS,044,ISO 3166-2:BS,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Bahrain,BH,BHR,048,ISO 3166-2:BH,Asia,Western Asia,"",142,145,""
+Bangladesh,BD,BGD,050,ISO 3166-2:BD,Asia,Southern Asia,"",142,034,""
+Barbados,BB,BRB,052,ISO 3166-2:BB,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Belarus,BY,BLR,112,ISO 3166-2:BY,Europe,Eastern Europe,"",150,151,""
+Belgium,BE,BEL,056,ISO 3166-2:BE,Europe,Western Europe,"",150,155,""
+Belize,BZ,BLZ,084,ISO 3166-2:BZ,Americas,Latin America and the Caribbean,Central America,019,419,013
+Benin,BJ,BEN,204,ISO 3166-2:BJ,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Bermuda,BM,BMU,060,ISO 3166-2:BM,Americas,Northern America,"",019,021,""
+Bhutan,BT,BTN,064,ISO 3166-2:BT,Asia,Southern Asia,"",142,034,""
+Bolivia (Plurinational State of),BO,BOL,068,ISO 3166-2:BO,Americas,Latin America and the Caribbean,South America,019,419,005
+"Bonaire, Sint Eustatius and Saba",BQ,BES,535,ISO 3166-2:BQ,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Bosnia and Herzegovina,BA,BIH,070,ISO 3166-2:BA,Europe,Southern Europe,"",150,039,""
+Botswana,BW,BWA,072,ISO 3166-2:BW,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
+Bouvet Island,BV,BVT,074,ISO 3166-2:BV,Americas,Latin America and the Caribbean,South America,019,419,005
+Brazil,BR,BRA,076,ISO 3166-2:BR,Americas,Latin America and the Caribbean,South America,019,419,005
+British Indian Ocean Territory,IO,IOT,086,ISO 3166-2:IO,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Brunei Darussalam,BN,BRN,096,ISO 3166-2:BN,Asia,South-eastern Asia,"",142,035,""
+Bulgaria,BG,BGR,100,ISO 3166-2:BG,Europe,Eastern Europe,"",150,151,""
+Burkina Faso,BF,BFA,854,ISO 3166-2:BF,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Burundi,BI,BDI,108,ISO 3166-2:BI,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Cabo Verde,CV,CPV,132,ISO 3166-2:CV,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Cambodia,KH,KHM,116,ISO 3166-2:KH,Asia,South-eastern Asia,"",142,035,""
+Cameroon,CM,CMR,120,ISO 3166-2:CM,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Canada,CA,CAN,124,ISO 3166-2:CA,Americas,Northern America,"",019,021,""
+Cayman Islands,KY,CYM,136,ISO 3166-2:KY,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Central African Republic,CF,CAF,140,ISO 3166-2:CF,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Chad,TD,TCD,148,ISO 3166-2:TD,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Chile,CL,CHL,152,ISO 3166-2:CL,Americas,Latin America and the Caribbean,South America,019,419,005
+China,CN,CHN,156,ISO 3166-2:CN,Asia,Eastern Asia,"",142,030,""
+Christmas Island,CX,CXR,162,ISO 3166-2:CX,Oceania,Australia and New Zealand,"",009,053,""
+Cocos (Keeling) Islands,CC,CCK,166,ISO 3166-2:CC,Oceania,Australia and New Zealand,"",009,053,""
+Colombia,CO,COL,170,ISO 3166-2:CO,Americas,Latin America and the Caribbean,South America,019,419,005
+Comoros,KM,COM,174,ISO 3166-2:KM,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Congo,CG,COG,178,ISO 3166-2:CG,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+"Congo, Democratic Republic of the",CD,COD,180,ISO 3166-2:CD,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Cook Islands,CK,COK,184,ISO 3166-2:CK,Oceania,Polynesia,"",009,061,""
+Costa Rica,CR,CRI,188,ISO 3166-2:CR,Americas,Latin America and the Caribbean,Central America,019,419,013
+Côte d'Ivoire,CI,CIV,384,ISO 3166-2:CI,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Croatia,HR,HRV,191,ISO 3166-2:HR,Europe,Southern Europe,"",150,039,""
+Cuba,CU,CUB,192,ISO 3166-2:CU,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Curaçao,CW,CUW,531,ISO 3166-2:CW,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Cyprus,CY,CYP,196,ISO 3166-2:CY,Asia,Western Asia,"",142,145,""
+Czechia,CZ,CZE,203,ISO 3166-2:CZ,Europe,Eastern Europe,"",150,151,""
+Denmark,DK,DNK,208,ISO 3166-2:DK,Europe,Northern Europe,"",150,154,""
+Djibouti,DJ,DJI,262,ISO 3166-2:DJ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Dominica,DM,DMA,212,ISO 3166-2:DM,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Dominican Republic,DO,DOM,214,ISO 3166-2:DO,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Ecuador,EC,ECU,218,ISO 3166-2:EC,Americas,Latin America and the Caribbean,South America,019,419,005
+Egypt,EG,EGY,818,ISO 3166-2:EG,Africa,Northern Africa,"",002,015,""
+El Salvador,SV,SLV,222,ISO 3166-2:SV,Americas,Latin America and the Caribbean,Central America,019,419,013
+Equatorial Guinea,GQ,GNQ,226,ISO 3166-2:GQ,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Eritrea,ER,ERI,232,ISO 3166-2:ER,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Estonia,EE,EST,233,ISO 3166-2:EE,Europe,Northern Europe,"",150,154,""
+Eswatini,SZ,SWZ,748,ISO 3166-2:SZ,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
+Ethiopia,ET,ETH,231,ISO 3166-2:ET,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Falkland Islands (Malvinas),FK,FLK,238,ISO 3166-2:FK,Americas,Latin America and the Caribbean,South America,019,419,005
+Faroe Islands,FO,FRO,234,ISO 3166-2:FO,Europe,Northern Europe,"",150,154,""
+Fiji,FJ,FJI,242,ISO 3166-2:FJ,Oceania,Melanesia,"",009,054,""
+Finland,FI,FIN,246,ISO 3166-2:FI,Europe,Northern Europe,"",150,154,""
+France,FR,FRA,250,ISO 3166-2:FR,Europe,Western Europe,"",150,155,""
+French Guiana,GF,GUF,254,ISO 3166-2:GF,Americas,Latin America and the Caribbean,South America,019,419,005
+French Polynesia,PF,PYF,258,ISO 3166-2:PF,Oceania,Polynesia,"",009,061,""
+French Southern Territories,TF,ATF,260,ISO 3166-2:TF,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Gabon,GA,GAB,266,ISO 3166-2:GA,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Gambia,GM,GMB,270,ISO 3166-2:GM,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Georgia,GE,GEO,268,ISO 3166-2:GE,Asia,Western Asia,"",142,145,""
+Germany,DE,DEU,276,ISO 3166-2:DE,Europe,Western Europe,"",150,155,""
+Ghana,GH,GHA,288,ISO 3166-2:GH,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Gibraltar,GI,GIB,292,ISO 3166-2:GI,Europe,Southern Europe,"",150,039,""
+Greece,GR,GRC,300,ISO 3166-2:GR,Europe,Southern Europe,"",150,039,""
+Greenland,GL,GRL,304,ISO 3166-2:GL,Americas,Northern America,"",019,021,""
+Grenada,GD,GRD,308,ISO 3166-2:GD,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Guadeloupe,GP,GLP,312,ISO 3166-2:GP,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Guam,GU,GUM,316,ISO 3166-2:GU,Oceania,Micronesia,"",009,057,""
+Guatemala,GT,GTM,320,ISO 3166-2:GT,Americas,Latin America and the Caribbean,Central America,019,419,013
+Guernsey,GG,GGY,831,ISO 3166-2:GG,Europe,Northern Europe,Channel Islands,150,154,830
+Guinea,GN,GIN,324,ISO 3166-2:GN,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Guinea-Bissau,GW,GNB,624,ISO 3166-2:GW,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Guyana,GY,GUY,328,ISO 3166-2:GY,Americas,Latin America and the Caribbean,South America,019,419,005
+Haiti,HT,HTI,332,ISO 3166-2:HT,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Heard Island and McDonald Islands,HM,HMD,334,ISO 3166-2:HM,Oceania,Australia and New Zealand,"",009,053,""
+Holy See,VA,VAT,336,ISO 3166-2:VA,Europe,Southern Europe,"",150,039,""
+Honduras,HN,HND,340,ISO 3166-2:HN,Americas,Latin America and the Caribbean,Central America,019,419,013
+Hong Kong,HK,HKG,344,ISO 3166-2:HK,Asia,Eastern Asia,"",142,030,""
+Hungary,HU,HUN,348,ISO 3166-2:HU,Europe,Eastern Europe,"",150,151,""
+Iceland,IS,ISL,352,ISO 3166-2:IS,Europe,Northern Europe,"",150,154,""
+India,IN,IND,356,ISO 3166-2:IN,Asia,Southern Asia,"",142,034,""
+Indonesia,ID,IDN,360,ISO 3166-2:ID,Asia,South-eastern Asia,"",142,035,""
+Iran (Islamic Republic of),IR,IRN,364,ISO 3166-2:IR,Asia,Southern Asia,"",142,034,""
+Iraq,IQ,IRQ,368,ISO 3166-2:IQ,Asia,Western Asia,"",142,145,""
+Ireland,IE,IRL,372,ISO 3166-2:IE,Europe,Northern Europe,"",150,154,""
+Isle of Man,IM,IMN,833,ISO 3166-2:IM,Europe,Northern Europe,"",150,154,""
+Israel,IL,ISR,376,ISO 3166-2:IL,Asia,Western Asia,"",142,145,""
+Italy,IT,ITA,380,ISO 3166-2:IT,Europe,Southern Europe,"",150,039,""
+Jamaica,JM,JAM,388,ISO 3166-2:JM,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Japan,JP,JPN,392,ISO 3166-2:JP,Asia,Eastern Asia,"",142,030,""
+Jersey,JE,JEY,832,ISO 3166-2:JE,Europe,Northern Europe,Channel Islands,150,154,830
+Jordan,JO,JOR,400,ISO 3166-2:JO,Asia,Western Asia,"",142,145,""
+Kazakhstan,KZ,KAZ,398,ISO 3166-2:KZ,Asia,Central Asia,"",142,143,""
+Kenya,KE,KEN,404,ISO 3166-2:KE,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Kiribati,KI,KIR,296,ISO 3166-2:KI,Oceania,Micronesia,"",009,057,""
+Korea (Democratic People's Republic of),KP,PRK,408,ISO 3166-2:KP,Asia,Eastern Asia,"",142,030,""
+"Korea, Republic of",KR,KOR,410,ISO 3166-2:KR,Asia,Eastern Asia,"",142,030,""
+Kuwait,KW,KWT,414,ISO 3166-2:KW,Asia,Western Asia,"",142,145,""
+Kyrgyzstan,KG,KGZ,417,ISO 3166-2:KG,Asia,Central Asia,"",142,143,""
+Lao People's Democratic Republic,LA,LAO,418,ISO 3166-2:LA,Asia,South-eastern Asia,"",142,035,""
+Latvia,LV,LVA,428,ISO 3166-2:LV,Europe,Northern Europe,"",150,154,""
+Lebanon,LB,LBN,422,ISO 3166-2:LB,Asia,Western Asia,"",142,145,""
+Lesotho,LS,LSO,426,ISO 3166-2:LS,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
+Liberia,LR,LBR,430,ISO 3166-2:LR,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Libya,LY,LBY,434,ISO 3166-2:LY,Africa,Northern Africa,"",002,015,""
+Liechtenstein,LI,LIE,438,ISO 3166-2:LI,Europe,Western Europe,"",150,155,""
+Lithuania,LT,LTU,440,ISO 3166-2:LT,Europe,Northern Europe,"",150,154,""
+Luxembourg,LU,LUX,442,ISO 3166-2:LU,Europe,Western Europe,"",150,155,""
+Macao,MO,MAC,446,ISO 3166-2:MO,Asia,Eastern Asia,"",142,030,""
+Madagascar,MG,MDG,450,ISO 3166-2:MG,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Malawi,MW,MWI,454,ISO 3166-2:MW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Malaysia,MY,MYS,458,ISO 3166-2:MY,Asia,South-eastern Asia,"",142,035,""
+Maldives,MV,MDV,462,ISO 3166-2:MV,Asia,Southern Asia,"",142,034,""
+Mali,ML,MLI,466,ISO 3166-2:ML,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Malta,MT,MLT,470,ISO 3166-2:MT,Europe,Southern Europe,"",150,039,""
+Marshall Islands,MH,MHL,584,ISO 3166-2:MH,Oceania,Micronesia,"",009,057,""
+Martinique,MQ,MTQ,474,ISO 3166-2:MQ,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Mauritania,MR,MRT,478,ISO 3166-2:MR,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Mauritius,MU,MUS,480,ISO 3166-2:MU,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Mayotte,YT,MYT,175,ISO 3166-2:YT,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Mexico,MX,MEX,484,ISO 3166-2:MX,Americas,Latin America and the Caribbean,Central America,019,419,013
+Micronesia (Federated States of),FM,FSM,583,ISO 3166-2:FM,Oceania,Micronesia,"",009,057,""
+"Moldova, Republic of",MD,MDA,498,ISO 3166-2:MD,Europe,Eastern Europe,"",150,151,""
+Monaco,MC,MCO,492,ISO 3166-2:MC,Europe,Western Europe,"",150,155,""
+Mongolia,MN,MNG,496,ISO 3166-2:MN,Asia,Eastern Asia,"",142,030,""
+Montenegro,ME,MNE,499,ISO 3166-2:ME,Europe,Southern Europe,"",150,039,""
+Montserrat,MS,MSR,500,ISO 3166-2:MS,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Morocco,MA,MAR,504,ISO 3166-2:MA,Africa,Northern Africa,"",002,015,""
+Mozambique,MZ,MOZ,508,ISO 3166-2:MZ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Myanmar,MM,MMR,104,ISO 3166-2:MM,Asia,South-eastern Asia,"",142,035,""
+Namibia,NA,NAM,516,ISO 3166-2:NA,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
+Nauru,NR,NRU,520,ISO 3166-2:NR,Oceania,Micronesia,"",009,057,""
+Nepal,NP,NPL,524,ISO 3166-2:NP,Asia,Southern Asia,"",142,034,""
+Netherlands,NL,NLD,528,ISO 3166-2:NL,Europe,Western Europe,"",150,155,""
+New Caledonia,NC,NCL,540,ISO 3166-2:NC,Oceania,Melanesia,"",009,054,""
+New Zealand,NZ,NZL,554,ISO 3166-2:NZ,Oceania,Australia and New Zealand,"",009,053,""
+Nicaragua,NI,NIC,558,ISO 3166-2:NI,Americas,Latin America and the Caribbean,Central America,019,419,013
+Niger,NE,NER,562,ISO 3166-2:NE,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Nigeria,NG,NGA,566,ISO 3166-2:NG,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Niue,NU,NIU,570,ISO 3166-2:NU,Oceania,Polynesia,"",009,061,""
+Norfolk Island,NF,NFK,574,ISO 3166-2:NF,Oceania,Australia and New Zealand,"",009,053,""
+North Macedonia,MK,MKD,807,ISO 3166-2:MK,Europe,Southern Europe,"",150,039,""
+Northern Mariana Islands,MP,MNP,580,ISO 3166-2:MP,Oceania,Micronesia,"",009,057,""
+Norway,NO,NOR,578,ISO 3166-2:NO,Europe,Northern Europe,"",150,154,""
+Oman,OM,OMN,512,ISO 3166-2:OM,Asia,Western Asia,"",142,145,""
+Pakistan,PK,PAK,586,ISO 3166-2:PK,Asia,Southern Asia,"",142,034,""
+Palau,PW,PLW,585,ISO 3166-2:PW,Oceania,Micronesia,"",009,057,""
+"Palestine, State of",PS,PSE,275,ISO 3166-2:PS,Asia,Western Asia,"",142,145,""
+Panama,PA,PAN,591,ISO 3166-2:PA,Americas,Latin America and the Caribbean,Central America,019,419,013
+Papua New Guinea,PG,PNG,598,ISO 3166-2:PG,Oceania,Melanesia,"",009,054,""
+Paraguay,PY,PRY,600,ISO 3166-2:PY,Americas,Latin America and the Caribbean,South America,019,419,005
+Peru,PE,PER,604,ISO 3166-2:PE,Americas,Latin America and the Caribbean,South America,019,419,005
+Philippines,PH,PHL,608,ISO 3166-2:PH,Asia,South-eastern Asia,"",142,035,""
+Pitcairn,PN,PCN,612,ISO 3166-2:PN,Oceania,Polynesia,"",009,061,""
+Poland,PL,POL,616,ISO 3166-2:PL,Europe,Eastern Europe,"",150,151,""
+Portugal,PT,PRT,620,ISO 3166-2:PT,Europe,Southern Europe,"",150,039,""
+Puerto Rico,PR,PRI,630,ISO 3166-2:PR,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Qatar,QA,QAT,634,ISO 3166-2:QA,Asia,Western Asia,"",142,145,""
+Réunion,RE,REU,638,ISO 3166-2:RE,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Romania,RO,ROU,642,ISO 3166-2:RO,Europe,Eastern Europe,"",150,151,""
+Russian Federation,RU,RUS,643,ISO 3166-2:RU,Europe,Eastern Europe,"",150,151,""
+Rwanda,RW,RWA,646,ISO 3166-2:RW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Saint Barthélemy,BL,BLM,652,ISO 3166-2:BL,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+"Saint Helena, Ascension and Tristan da Cunha",SH,SHN,654,ISO 3166-2:SH,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Saint Kitts and Nevis,KN,KNA,659,ISO 3166-2:KN,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Saint Lucia,LC,LCA,662,ISO 3166-2:LC,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Saint Martin (French part),MF,MAF,663,ISO 3166-2:MF,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Saint Pierre and Miquelon,PM,SPM,666,ISO 3166-2:PM,Americas,Northern America,"",019,021,""
+Saint Vincent and the Grenadines,VC,VCT,670,ISO 3166-2:VC,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Samoa,WS,WSM,882,ISO 3166-2:WS,Oceania,Polynesia,"",009,061,""
+San Marino,SM,SMR,674,ISO 3166-2:SM,Europe,Southern Europe,"",150,039,""
+Sao Tome and Principe,ST,STP,678,ISO 3166-2:ST,Africa,Sub-Saharan Africa,Middle Africa,002,202,017
+Saudi Arabia,SA,SAU,682,ISO 3166-2:SA,Asia,Western Asia,"",142,145,""
+Senegal,SN,SEN,686,ISO 3166-2:SN,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Serbia,RS,SRB,688,ISO 3166-2:RS,Europe,Southern Europe,"",150,039,""
+Seychelles,SC,SYC,690,ISO 3166-2:SC,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Sierra Leone,SL,SLE,694,ISO 3166-2:SL,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Singapore,SG,SGP,702,ISO 3166-2:SG,Asia,South-eastern Asia,"",142,035,""
+Sint Maarten (Dutch part),SX,SXM,534,ISO 3166-2:SX,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Slovakia,SK,SVK,703,ISO 3166-2:SK,Europe,Eastern Europe,"",150,151,""
+Slovenia,SI,SVN,705,ISO 3166-2:SI,Europe,Southern Europe,"",150,039,""
+Solomon Islands,SB,SLB,090,ISO 3166-2:SB,Oceania,Melanesia,"",009,054,""
+Somalia,SO,SOM,706,ISO 3166-2:SO,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+South Africa,ZA,ZAF,710,ISO 3166-2:ZA,Africa,Sub-Saharan Africa,Southern Africa,002,202,018
+South Georgia and the South Sandwich Islands,GS,SGS,239,ISO 3166-2:GS,Americas,Latin America and the Caribbean,South America,019,419,005
+South Sudan,SS,SSD,728,ISO 3166-2:SS,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Spain,ES,ESP,724,ISO 3166-2:ES,Europe,Southern Europe,"",150,039,""
+Sri Lanka,LK,LKA,144,ISO 3166-2:LK,Asia,Southern Asia,"",142,034,""
+Sudan,SD,SDN,729,ISO 3166-2:SD,Africa,Northern Africa,"",002,015,""
+Suriname,SR,SUR,740,ISO 3166-2:SR,Americas,Latin America and the Caribbean,South America,019,419,005
+Svalbard and Jan Mayen,SJ,SJM,744,ISO 3166-2:SJ,Europe,Northern Europe,"",150,154,""
+Sweden,SE,SWE,752,ISO 3166-2:SE,Europe,Northern Europe,"",150,154,""
+Switzerland,CH,CHE,756,ISO 3166-2:CH,Europe,Western Europe,"",150,155,""
+Syrian Arab Republic,SY,SYR,760,ISO 3166-2:SY,Asia,Western Asia,"",142,145,""
+"Taiwan, Province of China",TW,TWN,158,ISO 3166-2:TW,Asia,Eastern Asia,"",142,030,""
+Tajikistan,TJ,TJK,762,ISO 3166-2:TJ,Asia,Central Asia,"",142,143,""
+"Tanzania, United Republic of",TZ,TZA,834,ISO 3166-2:TZ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Thailand,TH,THA,764,ISO 3166-2:TH,Asia,South-eastern Asia,"",142,035,""
+Timor-Leste,TL,TLS,626,ISO 3166-2:TL,Asia,South-eastern Asia,"",142,035,""
+Togo,TG,TGO,768,ISO 3166-2:TG,Africa,Sub-Saharan Africa,Western Africa,002,202,011
+Tokelau,TK,TKL,772,ISO 3166-2:TK,Oceania,Polynesia,"",009,061,""
+Tonga,TO,TON,776,ISO 3166-2:TO,Oceania,Polynesia,"",009,061,""
+Trinidad and Tobago,TT,TTO,780,ISO 3166-2:TT,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Tunisia,TN,TUN,788,ISO 3166-2:TN,Africa,Northern Africa,"",002,015,""
+Turkey,TR,TUR,792,ISO 3166-2:TR,Asia,Western Asia,"",142,145,""
+Turkmenistan,TM,TKM,795,ISO 3166-2:TM,Asia,Central Asia,"",142,143,""
+Turks and Caicos Islands,TC,TCA,796,ISO 3166-2:TC,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Tuvalu,TV,TUV,798,ISO 3166-2:TV,Oceania,Polynesia,"",009,061,""
+Uganda,UG,UGA,800,ISO 3166-2:UG,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Ukraine,UA,UKR,804,ISO 3166-2:UA,Europe,Eastern Europe,"",150,151,""
+United Arab Emirates,AE,ARE,784,ISO 3166-2:AE,Asia,Western Asia,"",142,145,""
+United Kingdom of Great Britain and Northern Ireland,GB,GBR,826,ISO 3166-2:GB,Europe,Northern Europe,"",150,154,""
+United States of America,US,USA,840,ISO 3166-2:US,Americas,Northern America,"",019,021,""
+United States Minor Outlying Islands,UM,UMI,581,ISO 3166-2:UM,Oceania,Micronesia,"",009,057,""
+Uruguay,UY,URY,858,ISO 3166-2:UY,Americas,Latin America and the Caribbean,South America,019,419,005
+Uzbekistan,UZ,UZB,860,ISO 3166-2:UZ,Asia,Central Asia,"",142,143,""
+Vanuatu,VU,VUT,548,ISO 3166-2:VU,Oceania,Melanesia,"",009,054,""
+Venezuela (Bolivarian Republic of),VE,VEN,862,ISO 3166-2:VE,Americas,Latin America and the Caribbean,South America,019,419,005
+Viet Nam,VN,VNM,704,ISO 3166-2:VN,Asia,South-eastern Asia,"",142,035,""
+Virgin Islands (British),VG,VGB,092,ISO 3166-2:VG,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Virgin Islands (U.S.),VI,VIR,850,ISO 3166-2:VI,Americas,Latin America and the Caribbean,Caribbean,019,419,029
+Wallis and Futuna,WF,WLF,876,ISO 3166-2:WF,Oceania,Polynesia,"",009,061,""
+Western Sahara,EH,ESH,732,ISO 3166-2:EH,Africa,Northern Africa,"",002,015,""
+Yemen,YE,YEM,887,ISO 3166-2:YE,Asia,Western Asia,"",142,145,""
+Zambia,ZM,ZMB,894,ISO 3166-2:ZM,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
+Zimbabwe,ZW,ZWE,716,ISO 3166-2:ZW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014
diff --git a/roles/nifi/files/SOCTOOLS-CA.crt b/roles/nifi/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/nifi/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/nifi/files/cacerts.jks b/roles/nifi/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/nifi/files/common-cacerts.jks b/roles/nifi/files/common-cacerts.jks
new file mode 100644
index 0000000000000000000000000000000000000000..200a005f89ab6e2ba316460b071979aa9f5b8c58
GIT binary patch
literal 152651
zcmezO_TO6u1_mYu28Jdut(20Ql$n@km6(>6S(IB+R9ajTUr>~qn^~G0pPHPkSCE>^
zz`$7G^omb`fi*(U)WDK~fr-hWiSeI76JzTFW+p}^CXSNns$IwJt3nL8*f_M>JkHs&
zFf$vt8gd(OvN4CUun9AT1{;bP2!S|UJlu|8t3p6l87dgafkc^k#F0c50w4}haCLSz
zkQ3)MG%zqUvNSX?GB7fU66ZBBFf=kYgmS56O__lJ8#~zTOpI)-+Kns>O3X<NEW8GB
z(xP*jFD$Gy-EL(wsp^!d%-N*RbJSwkZJ&nxT72z{(5o*Z@h|!$SL^F}JX<5-T(RbY
z`Qg2r&gwjKe<bxRd55i@e#H_0+h6#XWcY*@Wlxp$lW>|^amL(c;-lHA+M0`<3>*w(
z*_cCR`B=nQL}snmtU4fQYN{4!z;HP0pTpI4*K7><LDIsEjQ?3!4VW1j{~Pdu1o%M$
zEX+)dY{;R`oX%j7!ek)M`MJF#AZq=I15W$h<G<!)wLLhZUh>2u_&RI7w8`UR`kPO2
z+L+J1{(Ohq$G;076*3t(MYcO%3B14SGN)10xsJMU+d1)0*<aapw|;1v{4+9tUCOVB
zr`>XollN_HJe$wdQwdHyve3kno|+FyIq5n1Nr^e}$%#nmrURaCm?I3Dm_rPjm~0^F
zhMCDE%z&4TQ>)FR?K>|cBP%O|ffH(~5i<}0r4KG)UiZ{|aFS8*%uCiYls1qAi8Bie
z!NuLdb}KkLf|87Zk%6g^p@E5kfq_AkIIj^hmnwENF)ATDospG+xrvdV!Jvtei>Zl`
zk>S=EiDZMnU&NKA!s?>$+vHe0DcoK$@yecsH++7qaNfrJ(pQn4qvKYDewwA`Ue=24
zxfU;2w`bKAE_rq&VcCZF4Np2X_~)r!d)xeZ?Xro-XPk7BFcq1*c81#|J^xc5+no=J
zO%2x#c;BhpP!+!R)4TZWOANg`MSh5gn%+F%wz#_J#Kiq4L$%Ldm~J;mE#=JpbIp>4
zr~IB>xmvwa@@(k66K^iXSp+|g@$b?77ocqRC+*qkz9p8D4BMwNSx)5U`)8qdQI>Vq
zH($Gaes<aQI&%F9mXCg!1q)kViBr?QZM#BbuhDA>W{n`0!l$c^Z68|fW;bg|np62o
z%-~D>0qqxs*-w5lF*7nSE)F&b#7w@3<bI%PMn-Sv@71g+Jc6~WYEyTdI^$;`4@%w2
zED{D{4I)?-pr#mRP-vSz*35dU9~;uA88Bu3Oev8k{S{hCQx>VG&%1D5D$f1o!A(of
z-*uE?^_%Ve&MQAOXtT;fbFSAZWm<YVpZ{8yPT2pe@Wydl^GjP<rzY)OcCXXctlFa7
zWBQt93jKP^PVyYuG}D#g_&LEqC8Y;TUu_fh;7oZH=U?)j)$Vv#5YKJVEqilkKRvcF
zBxB{{%n93OE#=>_(_W!=o!8bKbDqd<Tm5Xx(u2pF*WUiB-p<F8bM^n-1+j12gSKmn
zGOe>*mR0id){*CXd`;w5#`qe?PvX??NQ*6>eq6Rpc;(fnAH_HYO|P!Gtx{N^Gb4=q
zrudeNj{~*iN?%;PaL3=|?IG5*hJ~k}8H019A~ZJ^muD6i7iXsD#i!@zq{JsD#_PtX
z8zFKeKO;OxvhFizV%=rX#JmWSBRLs%JIFYHjq~4toVY>x61g;Y_AnGR5C-KxE@7Tv
zkZr-4>3Ir{?uPQ<vW$gUSPUWTo}ZJV;OwZNtKe<~&YEV121cd^7RCm~rcvU&#>iZh
z(wqWonwT(iCle@lGI23AF)=c%fAX%bTZK<3Z)Je4n2YtKNinB(#I{Uw64u(28s6k!
z7p`(Ppj%aId;XvIi!L0HXHxMJp4P7{{7fT)VX^yhw&g9#+Pn8o)2<Ia(|s^po-Zkt
z|E_IVSMjZNb-BA5W$K)I6ijbA`?maQxgDhQnNPi(JA1#Neo@7Iy&HDVB+R3<ihkZo
znlNeVDfu}sH`{2R{>&)6KkEF!ty~Fv?{1x$61-!<w9WaC)XFFJJV+8?ns36t<mx2j
zz<c|8cePX{*ks+Ful?rUJx2RH-=_g>r?;$s>*8?qR8-HcOWHLn-tAlVlxr2=()+AI
z+e42l#TsQzpPnpy`{eCPv+7nWucJYoKUJR3EnnI6KU8LEVW##)CY4W{)vjdUVhMeE
zkn4D^f%ycjC-X#%<HW>6k4A4jZPGdE<6O1=h3r?3ZK?>k&BMc8!`<U}edo)&JssZ{
z`))Eib3^>r+3n}j=3e<5_kZtnJI&JPb<2|?)~lK<bv$mnhd1C9Gc!L&l>F4<ilqJP
zi$pT{mOf?XtLRhHaQeW`ounX;Zt3=GCG!~;i>kEu3e8)4yu$h>GW_X_X}Z_3;P9i2
zyxQLPHg{9M#I6Z^uhOt?RoL|WpKEJxCECv@w^=%In@o?|t<*)Fxd$JGJl=WA$ETsc
zygFf)-2H8zJmmOx`Gw@pc<^wM)S~i$^GA{=y>XYE`}$e-xr30>sd0@#<4TO$6r;LD
zlvmNJ)zg-w2G;Gc{CuDyE$)TY^AGP($}6l2+&~4I0*k$Yt${TgXF_WUV<aOJBcp+y
zfessoHX9==D?1aTm_kNLNr9EVeo<;cesN|=eo>_!JR|ER=jZC9<w#~wI#%EHcuLL3
zbqDT=KYM!P>erAB&0lt(jbp9$pI@4`-sVME-JhZg3+9{JNzx2Ef4odMd*)nV*YN<u
zyoX+O68f2u+iX)BwI4UPJX31#t9|f}X=dUMxi34kJA}kq4jE3im}a<ar**LXVU@{Y
z(V3Ip96h+(g5mKS@s&I79Is()o^Ry7D@e&i)~JdzY<Z2U*-BgQTL+r*xpoVkX!lkZ
z{3)k<e6sz#+wp4IK{xffK8hT3=@nhMegEEj%cS0|)BWvHF8*)#oAnZ3wE{m_woIRz
zlP7&x`$$PbrRoMQ_51hZE?J&;t#$Igzgb7_=&{&Sp;im#WX|fp^?uU^oB8cILfWYX
zqCtjID(CYJl>_8^{QH#;mpCTNgsu>|Yxf{9;QU8vgD}2H8=6{gG@n*V*`vEd^=inX
z9c-`GPFkX};9%QUFX1fr^LpH2Q$tRln{_*D%d$<k9XZ<6%fDwWaLVDfICs4?z-ZE;
z``QLd9v7}UTByb@c^NzZ*p$)>u73@tJNHjm&2_x3IKeAZ_ukTq>uk5O=6TzdTPX-D
zF<#i8F)ukG+timkch^GO1Ct-rD{l^6Tcqme_Vbe1`wb}v8Rxw`wIFK--}xH}pY%O<
zJaKwxVJi0JM4tcm#;_N=7VlGDzwU27^8+SpgR)=JxsK-<H@@6)GVRN4wa->dN<Mk2
zM4#MnA^hMkyQ+uNPlC&R5oo!en4DZzl$cp%h$!m$1mHzI`*njR_R9uMth*saJxAQ(
z?aQ3&mpnjAR|ZaoLIwh$!kw9i)6v;EEXdI_%Fs{%oKIM|dDsKIJwd{TyawDLRa`tQ
zU@oGu?-~p$<_!%EObtv8ERD^L%|XRHxX}*fQpFBJW&G@wtM?~*O<%7+J#AJ={Dqs-
z{+@sIB<;Ptyu0xsm&NyI-IL!Ma#yq_(^N2j_X(c9ED5<A{Wrz-2zZ#qd`R9rAu2}2
z{QBZ+r#TCEeq=0a*-(4ix8dxc%lRjN+}g(1bjh`Kg>=RW+ZSJ4a`rAfbeefzkDV|>
z%Y8481CN!sUc5A4F5$D0lUF&cp2hd3c#Fi+6So|u6u&;l7jDDcXf>B>VYqYVn(*Ap
z2^CMbZn3_x$ER0g;qt}HcQN^?UesFmb{(_Qj%)>f1C5ZW^$*^i<4T)*(Lpy)Y5iQO
zgRGL5@(+BP|D$>{lhf~jm9n~%`IT26JIFuj|Aj@OUxPUdW&XPgw>(pe`|+SdhU<^m
zwiU%}J3b`0FfBM1_2zlW{epFin^j+3J3hUA^73O{UB=TB%mwVG+vRDBUR%h2u|r2_
ze*UT@$DCd}E_yuG`7&c`Zr^U}&&p=U|5-m+sLJlK`ebLxe~$i!{RgI{et!4HJ7e$M
zj>CqV9X`G||IK3eoF^CSuRM*IUGwY8XTI5`6QAq~(vz&a`1Nd*<eyz^-+l+J@Se$X
z_s7pI-2sdJk~%-MtNdzqI@tc}s;;J1RAE(0)^+uSWZv87JiqqJPv|rf|55C`<5JY*
zw!~`>OSxWErj>R07rtguy~Y()HTmgIZ*d3yjoWs9z2|@D!R9sAf&~dJUe0+l6%J??
zavey8l<`eWrwy8zjvLg%idsfSmO_Jk10NXQfT_&^TJ)Bem+OHtkzQ)Cep+TuYGO)m
zW}d!dQF2CRS$?s8a%xdYW?E))VoH9oJ}9Gs)Eep~7nK;u!%bss6NZ|WpIlr3GY;G=
zf^_jNwQqTR-&}oi=(n&}jZe+a^vK!o#cU%ZH-fS1XksjeR4Yx4Sq4pvX$DP<No*{k
zvI?LsNQ6NXqY}(X;NH53Toa=JgCj#JLkUAZLlHwJLkdG8LkfceLkdGGg93vyLn=cN
zLkUABLmERSLo!1mLo!1q!)Jy(1_g#7hD3(93{`NoISh#m3Ji`6&J4~BVGIfk8VrsM
z=?tk1d0;&tIf$7d45<vs40#Os3^@$>4CxGS!TKr**yhTR1J+l<Pz1Ig;u;;WE>8wG
z1_g#d1``G|1_K5|215o@1~Ud%22BP%uzUbRFoOcvB?=4~3?&RD3<V5U4EhZE4CP>`
z2liJoLm7h}Ln=eDfdM>>7{yee(T1D|a#GVXi*pi_GxPJ}ll3x6at%U3fiBPDXW(Pt
zwZLP6Tbm0OZA7P?_>|Nlz2u@CaM>!0)T0*%StH0IV8GYN14?BMAVM#-7_F=Zw*jUb
zGR=Sf*E!w8MdXQQ`&%E4v<v;Fw|o<~drkM<dV9hHRz1FBl@~ru&*b0B;(l}A?X8-(
zX5U=5a^}^`HU^Ww_AXrUhppG;%PFy`HO6<6x>uP0P`|;cEB*e2h`Pec6qo;c*GgCA
z_$D|=dOC+B-+FXrSK3p5m#XNSS&iBbSL=T=sz>OYc<V8-#(o*Y`6HUef@b&HB<<$D
zlkAedy5Vh~?HsKGyf<vq9^3Hly*ef4(WB+2(ku+$?4x>LIq!|{lwEmn!<m_nd>OcI
zom7v0E<7RT$yeh=p}BV+aQf<RREt(GW#BxLRIbSpKQD64wz{?RLkyId56Ts${QGIa
zHBI6!lgJw7(`+(wOKN+0@2NY!SbIx!`v&E^+AA*KQf+_xBGkpV<BM5c%dCnu-}%Bk
z`K}qOUTX<(%25!K)w;TG&!>XMB?SrlShvoe$KtXtQF+bFr7Asw4O5~PE!ydM>ENA<
z%ikIb>dcc|_U>Wm!vn9*^R_$@-@d43>Ag@@ws&U^w8uEyIy2Qi^nvN|9WDE|#Gb8c
zW-NNw{w!X0-PYD)YWJTVob^(U$$h@oirkga=ij)N*UwO&WfZIRxaHl^8EN{{6lCw-
zIIMns!_R*=YtLSo-_I=)5jbDJ`>=)Xy%+u0dfS(L4RaQosq<w?*cOu=iRLE{MKnk+
zn7;5&WbaGCZx{K!LrvVYy4$S5Z2(x`4?GN$oL>}Ql%HP$DzM^{6LpdMe&X;30h_Tw
z6Pvz46N@;sL7=+u{wd?rkxa;mjGL9gpm7P(m`s49A-@4HsN(0~VGBsiOUzA#4ehb>
za6<$XoHI)*4OI-3K+3pyq`~7h&iO?O!Ii}&sky}p!FmcQsR}`QK6-}g2C5)c+&pq{
zRnD+-wj@=-v9u&3zX)WUJh%*HVdfEoD-6odF99i5aCX!McP$Og42%p+42_J9jEq5T
z4iMAO(A>z(*fMIUc!N;0X1PM%A+1G8DpMzvov^5DxU~A<>{Qk%Uk-8!TxDAGcK+n!
z?I$*<Ydi7Sa@jdX%`3gzd+NdLHyK7tGACv9a5wUWEwGcitD`E?q(A*~irbfvm3OQ{
zbPcs<HhsFOb^U!I!w$nG`>Isf4?8J*>bf$CMLIRiC+EuVZHZCt%3E$^ZrN^ip~Qx#
zbYYKQ*}|8%wU%1{I=A6}U6#gQb(s?zUuu2~&r8{I;h<<P-#$G)w-a$+0{^||OSZBu
z+;u)b@)XbG*|DBGd>(~woYCbJKBw&c`@I)4R$ThRxx3tSpK24w5iuPXg|L+_g5~dH
zx5%!F%eLz_`o^vw&NAuL*MD;ly?n8`&&Qj|@a7X6k0$l+5=~_uR)rgd7g}D`J8E)B
zHmUVK^FQA&>uvAHMECwGc(}Aq{dk*RR=?1(mN@6YfH{)0E1v!N_SU_w+BWUIuy9Ab
z&BEm0Ki9OI&i~vrZ;3tE9K+1+nM*pn`ts6z--{jLuhdXX;B6JFy&humaZ=ddt;Rmh
zcdiS}_x^kAhtu9&HN{L1{@0$3et2a~Vs-dcuj=S4tr6<6`+sOBtXZJ8PDD}tSotjD
z2AeoH`|pQ0E^aeE_9BjVr>V{=w}Y)rr40*StNa#S^(4JMuiX9%OP794^<(kG4|h3N
zDxBEIx#U8f%i&E1UKXoXzLA*4-lTnd#~g{Zw;s5OuQ?wJY1SkgB!cq;q)l=2pQ1zF
zlzDq*+s>(-p&<FR#~^7FO1~7V0*sC>>bP<nS~&o&Z05Pn<FVfM{-M>0nu`p!=O4Xd
z+q%hWH=B1x)dl70CCha_aNMYjx*pZibwg;D^v&8B--4q{f3AMIxU=&v<F7Y&f4-bF
z{q_bor_Yy@R!#k9m@bkTF@b9p_d9dt;{kzNzShlqT>bsY87CuMPoC5NJ$Yu!nf%Sm
zo7Ppyye<DW=jp%ksUqeNExvwE6pMJWHJ6v0McO_<w|?{SDk-ssgdbh<FQv7P{oKVU
zmAU^?#PN`Dj{b+13FY2vB3q<7KHfd;Uvd5ULu1`P?;L+AY}j}DyTz0P4==Rx?|!RO
zy!!3GNo7(g_0hb>ob1NcZ1#dnVhU_p51fBIVMTNKuiMX#_GF|Bq%RH9{cvPvfBpW8
z*^jomU%Ppsb*Ar>+5FzU?--)oWd)hnI7+N<-=5E7)qm>z9p;0JI8QwN+Yomm!HH2?
zDmZGl`LgYMcD1~e%aOX0a_frozscR+pL8n41g=cx?&x25qfNwZqWf$OmG|L6elbpS
zR(<z;qyEA{Zu7EErJ^}sd5yP3EH<#ddnGGm@;)iw&y%No|I@;4-=Yv>!t8SN*4jN>
z2bs>xJ)Ls%b6@lgpAU22B#Q4AF$&>f(wr<esqI_+`{$Eb`6BPm<j~XmHHRVS^3gQS
zC(Eb1EaB5=6gEBjEkEU%<B_ZSXG~mG&pR?qv-Q$DG;M~zpVyq}+i%NHGCJ{}KQQmw
z8&1^9CL^)DBsIREC^I*)s1jV|pbY)<^TI0|78Qdg76pSQW)4VYBVgipHC*B9+c%zH
z^v{{!*3LyvY@qSR#+68wPG~UFfMW^RRvpMZfQEq@xcU&52UP^%)_F;0ex5>bYEfBc
za%!=HOJ-SSab|v=p@o4NM5Vq)vZjKOfq|I<vPlZM3U2vD3W<>VrYbc>p|m(vAwMst
z5@}EqqCp`5;$a0){R5kCFf%kXG&cYPP|agzU~Xt;WNd0_3aWXAkY5PRYphxD;devi
zl{v?koS(ZevY1oAm4{a+FXLlQv`2<#r1>9iW64A1^=AZhr<%w-d+p1)T;|e_lhe(Z
zws&4piDx@-#%0QsUZ$k{*HL!`do^aov`i4F;@w-4rk`c8;L+6(m)ElF^VxUhzkB)D
zk6ZJrUCRQ-k8@W4kg4lj@?znQ!c^YHfz|K!TvAHl-5EXi{;ofP(cJ52Y<j8plI2BG
z`#tRw*ZmIqq{!Vp-yX5c%l}jcyR6JyuVYvBC!VP(ERs2TApNz`-;<MKrrc^hFnfP+
ztv2VEp1Bj{r)LG7zQ<{{r2Iy8dw|PTyFAUz-<F<ga-2&WsvUG+zff;I`7iNr-LsnM
zvRCIqieJ#I9f9JL4XJ#tj&?o2{@m%RzlM{fvbKG8dmZi(fR^CF(-@V42fQ~=-1g_g
z%k(R}d9M3HUrfGqj@kb0E!7RO;iu)S$`<&%2`GD!QpB@l<;NY}*RHj<>^6GpD0ra!
z=H`UCucfbE%yV&Bxs35mXp(ICj+j0V&zd>b;eu<{7Mu6!SHw)naKD+5@azw}t&)QH
zk?&$JkK8Ewd7`-HzL>t~O1r;V>f08+j@mUt{_11j6t20#ClYskwUlY!wPSC!QvJ7o
zYaA+{t`W$$?U$}B>po(>Sy7_psTsrTWQCbKU;Z;@+3k4ZAk$BmWQBQ+=bSEIv)3uR
zoIEG;ZvV1}d<*m(zw1qPKfmX%@#k;ciFI`owHw_JsT;goE)Z+pA7iQggylnZZ&*(T
zxOCBi4rk?O7MG;PmuD8IW~WxhLuVF2&D!|%B$Q%??+m<{Vcu!b#Jts@iD@phm?_(+
z5LEJ^wcTy=4`r!uhYlczI;d@%i&V-ud%#AyxP;lmJ%dxdQ!5RX3=|;6hNQn|aEPmd
zTYhO?N+P(7am`D~FDgz=F@zRE%);^zHBh|@&>2Z^G2!k6Eh!9542=v74NVOUjEz7g
zg(ZY*Xkcs@Wk6@=5X$T~#J9_Msc2oBzVXx}x!<)G?`M47WI4l6eTQId^(ECQ9ZjNY
zS<;5PS41l+YTw}Zn;-RYW7Lz%Yevf24};Ilbd9O@U%O|2yBD|j^r#izJl@n+^PW{?
zyFX9#uVa_Tc7-nstE9uP#0LD|m3~8cru+%}$M^o{N0)ER&f9S^<@>`^j&6LKg%@@z
z|2f$h@Ap0b{{EJ=#VNbDJN0FLyHX}wH+T7t@UFo0qU%>y?3fzjP|W=8)tA@*G@Q!q
z=PFBY+Gg7z!tSHz|NSbL81LRRXY)E`=gPwlZC`yfZ}rVu%e$1Ny+f|`@yp<=vrlw0
zCs(|FAnBF2TR+=4C1Ud0%>Dh+@0&c1Lo$1yfj@YtQ<k3vG~eEaIa-65Au#1XVU`^C
zXz`n$)@h>W0)rk;oMmeuz{aV~#>m3hWG>1GGJydt6@v4=gU|2wO*0!O)XhD*VT0P)
zj%sbA-n<=(g%Q(h*O`l~w|oA5)}z{Qg)?Tdta2`?Sp3*C(XP11cglmGg-5oD@da1N
zUt83!&t%!CX|rB*hN8hgjR_1r7ayMf6?fwA4*@spMHNmH#Y;lD?gga#rd?eA|L@HM
zTURXZI+ym9-}&rv?eOYkx2#oqK{vj<eVDseb3%p3u7}F27I(hcx_a7yE#8Y{r_ZbU
zl;==*KjUMn@3|V*`@yLzmwwndouxq3jd{kEOZ!8%EQqKL%D)w+mUQLD?M}mdnGZ^b
zE+@&Dp7qHT4Uw8K<KAnz_*3P_Pxsk6XU>@waY4oUzO=)%I@7g{$NdU-bqIs=z7aI<
z=cSgE=NDzi7w6}cg7R8%Jg6@VsoqoLp_Oz=CDK6m2}Bw2%Akq)nL!iNIcOOWe%d(y
zP>k3!cQNtD6AUvj2E3Dy%7D;dLq%}QnT1PO!VlsKg<zN~6nyl2^qln!4Gi=^g#xp%
zI;IjtI|Qls3K|eMFazaua0>yvB*7B2iUrn0pobd><@P6g>LwZF9=p+}&ArF%+ynJ#
z_wN1tC3M-wxOg**{+_~~r}MWdCD_Hsp5y%A#3MZ`FhEMJ^X}EeSjjs={JLC=oMXi=
zm`qZ5Reat;hfR&Ms_6T#0HYs=CST56q<qeC<C!N{<;^a3S^elqek2l^`Ih%`efEnT
z%uoHZp3X?l^kChm_uqKi%juDsKhh=FO-`KVB6_)KgZ-YY+BY8cy@yw?D%1|nbPP7x
zx?$&0Hm)NZT)#TT=5@MO+ghvjlpK0`>0<3B!7INbjFe_IoV@dw=Vg5y^YnAp3?l97
z1r{s&@;0lN%?NzJ`dD$b)YVoc8_lh=#Ev$s__90OpkLpOY0*X=r3aTGxxI0^LE{vp
zx?9oU<Zp)Selu>huhP1(TyLX;;c_30@j8sQKoDpEPoBlwz|+8ef$IY2Hb>|<VRBK9
zUS4WRaehv5agH8nUJsgt;E4<=0l`N<z=MQX);;WA=ly(p`0M&ry4#E0TeA*6St|SF
zxy{Qjk*VcdtD>WNRm~n$P1mzH5T4LHgROb~&a$e!fCsxebpE)Wk=QVEY9QYm*&QAK
z+XG~p4n2Ng)Uba6xBH31hVN&l8#VZgD^~Jk#@vfDS;w?h?Nz}2dWlq>lb@0wu4MmL
zQz)Nptdb?i`kgi7K$g&Hy|~2F>ohLc9omvMQ7zs^PbL0z1pjM|H|qtbeZEtje_(mX
zr{MC<332PzY1}f^$v1JmtoHEUn`nRaY_XcXE-VsFn>#DT1qyAe7K!<NWjwniCpBZC
zXIYH%$s2pj(sPzh*?Q&7&b?WtVT$)|9De=#^pXUh4WSDbREKW@7aAteLL)V=1hl3M
z6uj^yY(@qq7V*WY$)!c9@x`e{WvNA|O@}ggvB9Ee(8Qu;(8MeRDK=OvlJEUME~r^S
zLt$HBgI!$0+^z`w3>^&YKqUgVh&gEd7|A92&H=&kAXg}4<|XGB73e7>RVoyvrs*kY
z<YeY%mJ}=GWF{u*X&R~;D1%K9mI3uo3@t4!6_6}Y@Bt}KO))e!Fa#-M7S=+RMWh)}
z=Leo_6f{6KYl2E2OG`r|BNIb&Qv*{&(1IvS19Kx2LlZ+&L!&5z#-ZsgLIv7dU+<Md
zZJS;#R$vzuOVQHyzPO*;%eU`sL)p^w?G+9Oik(hm9Jn2<eK&4L*$mUk-BNRFgsu4G
zqqobQf2txPx3O_$Z|#mV+1|__nRxE3Uh1I2P+u}-;am>Q%^lod+so&Mo_%t-?s`_r
z>Q<4qsnOGo0`hH7>`LQ#{AceD&x2*1o|1nLtk~PRI9>nP{5^$|2|ILO>YSWVmR3FG
z(fW#Osll-}*XC?GugUyVe@VcmD<0=qjY7NrZc6dtdoqK)^mhIIogASFtp=Jut38%v
zwmmkrmuriysuJD%o}o`vDMXxMg4*Oge4ZH-_y2IeJa?+oK|bI6`D*76ODHC#ITu{J
zdVu{Qq(E~ra3EY>AzCn@PZ}=@Htf66xszkD;m?ICoMJl*(6Rxzy<$DPKWw(a^Wd2^
zRh7$qr(c(xI^j2){3+uax8(k5X)3=Qq!raqJu52y<p0lb=HC-MJ{iHs8k&S>{Mxqm
zR;=yEb9vuH1*bIeytALWUT`)4b^Uwt%>Cgyawm7sl5&~)TEc&s{Mp)Y0sYx5oKY=X
z^KQsmJ-jyWVoqgTrHshY#}|AiTc_H*y>Gj3+0&^~hqp=|-WwOa`@i!049U|%lhtFG
zb@L4_$ZeBab1&-q#Z@cRm;I}3JW@H+IDD7ThLsPTaweY&yZ0}*g`1<huJ_gT8H&d~
zKewsWkDGJRN3{3h8zu8Ivz)o7-)Wf8yE%P!z6XbB*!le*wQJ&LmA#CdaI~h`R4_FV
zT=Ymniym;n0~&TuO-|G`L^MnIg%ITn+6V|ILrarRyiC#s2jtKN^+_7%AT>w^Y`k6E
zKonfi@bJOM+g+U<bqzs<i6MNP-54~^ZUk=17@8Yd7??*H407iaDm2dbKM>qHe??i@
z?fd*8?~9W)o7TD?Tb%v&U%c@T=fIaz#uE+27nB^ivYheRrb%{LbKmm)ESceO*`B$9
zt;ylV#z)Hom&-P*Wv{;XOMIgCjbm%%HqMh|ygGf^E8gu#Lgm$KE^%Bflh+h&cd)!`
z;VM{qVb*e!2m8;S2$J3DUdOv*_c5Mt#o=O6b<PvzL#>YGy0EO8vvSUIpHA`Sb&FZz
zf*QKzgj5A3uk+N_8oD^Xy1jmb%=^X*I!9+I&bEE)WF4UP>CL&qM7AWw5Wo6^bM5LC
zdKyk^-I$(qqS<(2?S@5B{NXRG&wNtdbfrfBjqkCAR-#qUx5b)%{pR6i=9+e8*Nh10
z(kRsNWtVv#U(e)vTv^~<|1VNSzj^x1S#97}vMh9+CRPO)jUqzh%Z!W+tahd`q6M>0
z9xqPJFVenpsQ;65EYrCoQ+7@fY)+4Tl%7*swtqLzDzjs2-6tpCk*m9QPw(GLNh1s9
zdXaAo#X6B271<vCUL!G;XYv1;)4pq~&%Ua1M)vMOs|Pb&HXM0kSH7`$Ws1%>8O9p>
zSl8AAt<P2ar`{3&Y%^afZ^Nm_vRW^Fl7FcrCSAK#w@oJJE0gRMt-GNUUTX=u+vvrW
zY-&<kS{p3y`bK?X?Q<ou7Y8!TZXEmQ-{4~O^Wnvdva9Z`SUrbj{aOXSlo`HDvk!Pg
zOw07W!`>4(dC~p({I=Z*Tbg=Tarh;<KKRLf>A?e==zB4R>Z*sHF*kM#1V26=x@gP%
z>(9WYiZrxTNz6^G%Flz1tHv86$`w8}c)7y3%b<yIn?Vy}G^E`k%$76%YRPo7G<$3A
zSvOzID`WoTg|tGP$-ok+bO{ZH&E|0lvpIsTGn6y{%|5d*3kyI5V8fgW#^9`PYG7()
z2Jgj~7$9*eF*?#f7_t7I1H2HQnUS5@iGf9P`toCr^#^!ozhIOOJN7AP=`P((LN6}q
zUH^6R=#5pm^2LqT)-$p#YmAp3^=s>E5YI?*4X<^Hklk$lG@avh+CA_RdxB{ZQ30;r
zcKbTpJo7aMZR`^Zj?XzFxv}B^asV=WG8niqDKb20owQhdd+$$ewxyHTNX^JdEc*3u
z;f3Ea6$#6nXCB>ggh`QM4%7ROQ|4@*_Ve{ItsmQT{#i{B5xd@#tl}Ya-=Owt24w11
z2^!mw5ian$UGOLuc-?N18B(M#hDSPUyFn9cvq2McHYC#dT%YY`ZZ<yLn(FcFziS|J
zjl#pqVBiDWXTdEj4jGgJFW3bSOo3PC2ALTO8wi5RdoE!vgbJ7-GqNB!6_^+r8A1{P
zs4r`b%%!qzgyuu1vcD)kmG<+E$f;_Z@4Orzx43faG;Q%X_Bz^TUGomdNyZ{e^6Ot}
zojJClBm3yK&Wp!3{TDeGD5Chr>#lUvv1{$`e62*;-ln8+Pii>ja<6!b-{<9>_5Kyf
z94CYVa-GujeRo!B_y$RJNi}SjY~-su(zPeWM^VN(<GQU)*U?RBS0~KcZpe0Y-=kb3
zwq<fZcfMY=c*p*IP00ZlK1g)lf5Kn+_0=MItxE-Z)z9}#-klr#$fKr5fZgJM+NScv
zx(Ba%Y*uYq^6m3fFCq5azdf5e&tF)OSbid+WWyC@tM9Q^rxx9w%Xu%>MR&r-#<Ss*
ze%0*>U`aN)pFLS(U$)sM%O`78%(j1czfDFseDbz?n|?fM-Cn$Chv_QUPY>prEzA$;
z`dAc}r`K^b(8)z~%Dcr!EvC)(^NZqk|IB9QS#GeW(ERDLH;Npkf1V|Z*_U6vIdOUm
zSI!kC-;x6&Z~t2UZvGS}vXEs1_sf6p`XA<TZ{paTn8um4k<BV~TI7KbrhiY~(&&{E
zY%gf!S~06scAixmE5p3o4cAnE-eH}m9_dqN8U5<#(uFsg`7i#zZy@-y^}Mmi*HgJE
zB05zO{+GQuJdaLIkxJ&PwEeod=TyYnIZm#Xd3^1XF(DgMx9#tleMk5uZ~hLwJL!2R
zy9Kwlh;%VX7Bp8*oIdf2l=^;iIV1KPBFQ!yKI<WkTu^<5TD`F08>U;A!@78~@S{b~
zA6=KZcKk#AiS*zFC>0u31xOum9?*UdCPs#4)weG${+$|hcHRM&1rsx$#aw8)cW3P)
z{}=8R*HUM!j9y{WUc=ONF>kwA@w4~?Av3O)>^pe&k>JF&$`ZDB9~QYx+cGuoKy}~D
z3NdHlu<*@`Hd}8kzvED}X7TIUrgj@S6c;`};%r`Nv~TP4IXXUjoHb|m8C+hY_~5bZ
zuN&;fWg!eoT04Ce^a?U=Jq`ZT9CLZ@r~fWIE@_`GJ>KiaAeGCsOEtE4p<&?N5H}g$
z+cT%Vmy%(LStk0v;z8xV*xPoid_w=u5?z`9aM|zs1qLq<zjJbXduTFi=dar2YWoX?
zjWrA}W~}3@FgdLHdp*~Dh3vc5!u>)$j~t~us)`qsXCB`cQ{Qw#?q7tohW3h_wQ;!z
zST9v?f8Fp;)%+jR?2I)|v4`J%J#*(nK<Op3%sJ1hS?=etWp2C2#pw~*{<>Nup(<rn
zrt|xW$9>*N+|79(tlKm5Vce%8yYnF@_NKpC!tdky|ME@)Wp<x_f&FdMZqAI_GBaFe
z$(h}vox!_wSoxnEnJ2kX!sM#Y++A<K%dc0N%2Kg{dH1`<r?=v3y1f=oC{bO$+0Off
zPT1b#C*E5;ikbAG^81{YT_w7Sj0$yi7eD#4N5*&SItRUW<C*gCYnppy`PGnU`L!zM
zr(L7`7PxqvxUpg8QPCF8Z`V9M52WsRCRLcXV8zF#7p`_W*O;zzr8l!iom?USuCFzr
zC3t2EwBsM2oS&PUT9llbm;<l9k$MGun-K+hia`@=f<Y6r2c#eu;9_)YU|?W$RX*Xe
z6=XPaQ4Z=Hc%jzb(51Ru!knHdsd?a*I&4V|v#=aoOu-rMAb52SX~~-y7#f-xS{TAs
z%ph?MsA(6WVtjdk<URYDwpWbZKIR7|Hf>tz-=E$Y+j2AbE|12|>mUBFo9bLN^XJys
zny!OR4-ErKE;jPkoSm(>+WFC%wQ+5EpE<kaqm1@0dOhXmix{pq|7ToUU$}Wo@O;1a
z_mlSQedBLr(BUl}7k(u8&^M;(y*HDz_p8V!_1-_cL(|){!e(+phti*!x6Do)T69Gx
zgdyEDuXsOG#D^t!pKe&BR(0xu*-}ZduYb3{UuW;|H8+ao?>UoGDtAhhrDKhSg<_8|
zs(v%L%M?5R!BzLYTV6{q-0kUkV}3N#=dLFz6P_gb`yX82%~vA6;$l%pRu!Y?nJsRW
z$HX_@njyy?`Kwg1HTCX<uyemxFHM+xWbV(P4c&X&fA(uDb19cue>Z-3lHqgaPwzz!
z{PxsMwrpYl?ov?qk3H(?#x)lu&U`X`>gmaGD(s}~Z+?l|ZtH`>hkW}_`tzB;lwZh~
zbw5e(v?*I)rOpXei!Z;tmv_d@x%8OVvdycc=4xd7A$vcbn4mAV--DVyzFNHIucwKW
z#%IS4E8%x9?){%B8^7!H3%O4_0}>7xUM_z6e&2$(#@r?Q6cmo6=X~H`t_p3ack`RJ
z{EM93!*4e@9~!4<Cto*;oB#7bHGf6^^gWYj{hT8-p`xmxUG#cU$(+!VijBJ-<`uB)
z@?Wqk<8bwV!w<!_wo|k=ay#-Z_~+Y^nq6tU<vOGoCvmLet&8M=%OBXf-z}-$=k#1H
z<V2rY8Cr$`uUg?<H^J!JGVdCfGRZ_ab&a!eA@5c9Jm#42Q}g<|4339W7$V;5>D2`X
z^=yk_f7P*TW_Q4p>rD;!6FC_sujLhacJAOO^C=Y@;^%B$RJ@~~b+X0TUb_uDejhl$
z@zWb!UFkD#R?XVHDxpbQ*ZOdaZFtu-xjCgfE*qRp;Aoz3xi93SZ`y&_5@v_R?^^2)
z$(PSzdvS2NL~PL1w<qta&ddF^^6g?PlM9j6x84SPHr@aBwTQ3b@q{n8KDN(!<nid(
zQS;wy0>4Tl(+u4;Z<WoGdD*n?{j8mV-#e6NWll}9c^cYac0GjY|HqxN=dLK{-*9d5
zicWps$#Yj^xx#6QrK($ae=>epbm<GjiITpBS{{9=w}p>9QWdX#y{|o5Tp=WIvR5!O
z_nX*L#&47Ux*pe$z7w&a!SdO!>;HsBmc6x|;^kCw<#2gq@!5X2eW4cbf4!J!^lEwp
zi_$%d!)Ny7o;0?~;>xsNaN<=_e@}9o^4?sVY4fH&@bp==Xs4F+9J9uXw})T2JyMHw
zDV4if+8KCOpk;1i!s*zb)0KStW;}ab|1Em=y0fRe8nffLKL<W6(SBK{zWnA)Prn~a
z8*Z!e%Oodtoit9*wh?GPw)WnNvtoU{AK1+c=YLxL$MNgI?l%nPv7Ar+8s7if7-PY<
zRNCv|9SdEXJFDd<NL}@s^X_6n&Y5>#!hcBYYRPK{6{HNXu^Px|FnGiUbu9QXyi{i1
zW6;FB!=Q<20kl-+`Op``A+~g_Q~ih6>JpI`kP{hbT-XD(REF+q<`NbU1`j=lfX1a2
zob!tc@{7Q8$A+-c6=6OU6^@|BwSk$Tp@F%frLm!*MU*(N5oC15(!{{jG|GT_HW3;K
zS-qt3>D04dzlro6@;`OuQN`4VIgSr`XF8~eTTV1id%5pn^ZKNi&WnFkq7yei5EOKj
zk<I(CWA~4H%Nuts^EftNcJIEvm5z2hro7dZy3%)vS(f>IE^oR__;t3mr%rtR$G1LB
z)q`akckJR_Vuv~WFS`8@iTQLQj&Wx0-;OhFD-PxxI^_h}Wt{#jX>xyeyF^%n+K~%)
z4&>jzx8Tr3u>~oD-Y$FOzCHhyd@pTH*^<J=Z_K7-RFyB;_?%C_vFg#*qPF*ovb#U<
z-@Y7azpH4Ei^`nG#hbsc57&26o4c}P7emk|@3X-*?%Zard}%8=ri+<`A58n+@c3;(
z$nnV!^fW{x+js4Tlt_(p4H{<|2*YP^MVMIF<X9M-861h86LvD%CiaWv@4r~@s>6T3
z`#8u(Ij=V`flLtT8fY76E>K^f+NO*&L4=e<!Ba%RA<mBADImNv$*iC@DI+6;!CQZ?
zhY?mmMbTTAEl!nKwmZ<e{N>zNm*>Yka80e|Jr(_^AYjuJR*`j{$9o;wg^H)t@hB_)
z-6K$+AP`mbbq3#>H#_U^R^`WDmih9(gEiA>C2Qe{?Q7It=xyoA`d@fw$Hx0J_tYqc
zXg`Tqv^!jL-Mp2HCDr(6>Tzs%|2OmeOexOZ$IItypENV6R@q$PGgW*Eo0{CVlpwSC
zg!G$pj<S|;KTlV_#PO%&<+|?rhX!BF>;4`yx}`hM#lRrv9s9jYCVwvdclhT0CC!a3
zWZ5Spu4FZX?AaIZbi40*xbte#g+&X#q_b9NCQIeBT>Ej%XYs6!=39E7YIw`e(>b&w
zW6xWrcZT5H?hb8}m8BMC7K8S}Cg&s;7sngN7nCODWG2HGts&->L5uw1Gs~bYv!;ly
zH@_~tY+$)=(8O}tpotl}k4iw|*2Q^hwJ&yiDMp+<lWpyVUN$tILM<GiS)WUoFD$hv
z6Vwrhu4RL+aOM^kgGner3J&NDp`n$51*nV8Eo`U(TfzoY2{8iCA~sh8XOLcIVH=nh
z1!qu*C>SdQfI|enstwm%lCFZgDZF^HfOP&r3s_K>x(z4K5-K6rt8j2=R+-LA;92$D
z+uH9=%^n+9ncdnC{%JD(4Ch#!(kiO{_2b$ThMloWFSJ%IbK2bhV`u30joZC9|Ld<~
z4}bIC`F2{8XyW+<-X%Bg{djOViNiKT__gP$$dFdGr`r9}^Iv~mIPs9N=MCrNtRU}8
z{VxgveJ^%qRv$0;w)u`w$?fV`@370$_KTJ;-0)?Q>ZkQGlhP%geqm#IKVjz+h9`He
zwo3kI+V#ce-GlDe=G||;Twn9)+XvhAcS|Q4OUlYPoGww3RGfTM<lh>tpyT~lSv;Tg
zCcAgoWHz7v=e}3F&j0Atb$oNLTy#E=Ui?^uqwcBw{Nf$PT<2r$P1>h*y$gP!Dhe$j
zHyJdp$LwsQ_r`N!du<qbSP~857sf7#Hi$F`HwYEu%*;(pPt{M)Ofyh4kT+mwW7Xzk
zW|CqN>3@1zs%=egU-sei4Ov$_By_4J^$b+SU?pWvetNzhEPsQ`$+BXw7|0~VcwYVG
z)a8fnzS;f3fb+An<u9i7#)igdc@#XMHCe^WAU^5*4XGLWwy*BY)ZJVDZE2;F#hW9`
z7gPwXP2zJcNICj^dYbMG&bs*Z*Uo69eqvn3A?1GW=g*o+Q5=~Hyf^J~^K5wYZaia~
z=peE4$HBMvZ#%AfFiqj)*%VQW#*<UtEo#x^7S8Xx&2v|k>GqOtNta8GRjip_5&j9M
z>YB2+nO3QaTW-Bw|GXttYiiftwtI1nV$He&XYT!7(WI5DA<xTw<mq!MHOYrx1oH*9
zPW|)TiPh-#xw(OH8r$ZzUXFghwAR(3sBb%8HXqw>V^fd99dp&YkEF))ww29ssroiG
z=3A^0hw+k-Z4&kwF`t~gS}j7F<1fC@`Lssx+KRWyS>R$5HW-<bnVtzM8d28Wp&aXx
z051`lHyboDuQzC7nhtF(aacbHo8aWOabaoJ$;gSvF-pWl)B+K4mVirUdZu$~Q3+^m
zFKir|TUY=zr4DltD4t=XnaslCa2=3AOIYU?R!$+0Q5qT=!np=?Z~~#y<B|14!J>OB
zmRw#OzA9i*KX>_rlZ%$V6FN67nvqlC4CCbGeg@lvzdIkvWC)-8s8{K3JDUSTBj>qu
z(#`wtpS3P@dvq=BIP2yzb+P{Hd2&;0-);9;%yH}5`YIkvw$ysBSouBTKUVL1r*XZc
zzN%toWNSuVjIxpUe!l}RqH-S>>@OGC|A+Bg>&+D|0ue?lOC_#eT(r;qk$TpbS;jv+
zITE_B#BZ@`*}rg=mrt$TdH?vFvbY7_<`d`LQF@kpPDH9N>-4{~n?+K@k4J0HGur>@
z-LK2sPFGfMcQm@ibLIVy#;dz~BkZ?Izwp#pRB+3X<?i=QVxN4t{Mc8#^|FoITEBS0
z;q~f}(j(a*5p8xF@A^9CdjY0l7kzf8eOUZRTKe$xO|}<9Q3md?DnJ^zgEf*)&oN)+
zAuPo8>#oZj|DX+D?yqC{T3N}lSViKGw|2_`-JMsD|NC-KKH~I_+&NVx&u3_^7To%{
zV8Oz(J{>bB_e?B!w3=UL-{h75ldnEuPq@5z|J-QKk5~I12Y=~H{$;=X_Lj8!Nom(E
z<~jC$(%t&1+-v^ah)3Fy2ON~&>S{E(+Es>3Qk(Ih!DEH_`w!PD6U6SVdBJx!Z;gw%
zg}&#lhpu*7JI#X6TLrLv*L!g!+%qRpQQ|7g+6o&TtA_05uh)x;yu8tQaHmDiqlr0P
z|5J9BtA-mKkXBjz@XpKo?loJtsBo|vywTmuz29|zz|NJQU(a9^T6?17*bI~SUM`zs
zFRxCWntKnN+tr|rB*?mUc$)|@{g95lb&L<5<C%I4nwUBanwWT@Io|Y-TFlKB|C6?A
zw&AnaT@OQ=FJU%lY{8Y^A@)MrE|?4S&52#058Y|TEG!K%5Z;tQOmIMt9x(^+N(Z-H
zKus4514Ba#*b=-!;><DwtOrpox;m$+dg|PdK^5))y2SRgKD)n|$)A_~7(?JL9;P5&
zr6o?5NB;G{I(cy472p5!tL8o0STk$w@;1)m_KVMFJ+4~1D)0BM%>@V2I~JK<Sv+gw
z-?fL{8~$3c^Yd?xV-qj_)|^VrEEyZpvbb3{7z`MmXV<q%yzAa}u8Ze~;KSX>vCf>y
zV35XS$Z+?^gK+og<<Gbd@BP})HQkg~y3;14tz6^O!Y`Hgwm!4i@FBIJr=BU~(Ek57
z7TVoB&t%AOq<6}nJHeOk%&icU7d2K64tgAA7(4gWy1l}hF1+f|E1qY}5&9lsuUEtr
zzPNv(h#oj8!!|%7pJRp?g+;XF`J~~gm^r|piP^`XiOB?#iaE;5+0@lmZmdCW9e~DM
zT~O06_LIz@t#@V~F-OGtW=P|%pehM=kePv*ff*?MfzL!RGy!uBsACJETIZXze>%JN
zLeZ~mN~h%+H$5(PWpnY=+3l$+a_!vV?W=YCk2xAm3I8RuJeu!Ozr0+V<nmQpb$7<|
zb{$&ZYFcTeyIUs7{L{v0FWXaR3*%op?VIxA#J!(N9x2D3u0E!nyO#CCudCeWXFdH8
zu%z4CeW`MERn-q;`yKCRPJgU$@R~;F`6<75y1sqvATD^N<O8?iBW<;;**@Xx)+pHR
za;;+hymxk{=(<`zh2$fqWmfD=C(ZvJcYpWdW0`ER=%?vRww|b}yy>(`yFTXMIW_;q
zX^p1qU3P`Y$ru==&V6PxIWEAj>ao?8yfae2e_k?Qr=qnwoLNbO*R!;KyT+~3{e6$`
z@KqW@Y8}uxBcg>kck;2|?zmIy?dQw!Kb<*skIJ_x{e&B|NR<jVwC5eM<_ino*#o@)
zx&B_+B^Ix_w>o2Hgy*F#vgW?^>a}icvChZZ^z4c^snz;VUb*dv)~wZv(?vGk>$$wT
zQ}jl*%9W2|>uxNGxl$k4_f~>&<K*PMdwwJ~%$m3HoKwN0m9=cDwdxE1<-gf1r*iAD
zcc>JDwdoe?o7ZCv{x%ACemcaa{Wkqb-%009G1;P>OnZ|4_<h=HylPYaWv)d5kH1;J
z&~rI-JI!LHahS))TxsK8-X8k|^SPH#<<^<h@y;(Q>z1Bh^f$=V(UobMzRads#h!{A
zJ>6a1x4h3X5j^QT>rCYKYfST^{8G10Stos8bA#B&{S5Qit;AEdvTRjWoXIuSdV0-!
zl$@ATS^*hkgG_8gCPI+v6TZFhoXC3Ipo#UcK@;<8NKO>ts#|v7+hyLZES1)I&vuAj
z7OUUA5j|JBA>~S+P(#>BaXh>}r4^8VbFiMH9(?x}j~HAWxvdD<H*9KPY+!0=Y-DH(
zKC1+oYd|e~2+e?8Z=JqhaK_6INzFbs?LULF%(*}D+q9p{zoVwP_h{#?lg+l@-<^s+
zmg`x(<)qtUX%k`lgPpG7Uv6&vZI<f&o8ys3q2P%;>v?nUccz*zYyD>JBC+k5xj~Z4
zr0JQpP6jGZczHUrlkXjUc;9cONKWvB#B<-o^<{1LK2!3Mo%~hc$ilKWS@(|S+@H23
z%)#kE(j<e0x}sASTvA};%*)Ds`g;4mD<3|J)^tDf+a-L)TRm>3jd*N-W4*Dh|7CmW
zH!=1fY<x=dJ}tXC_m(buGSji5ms9rmcuw{22s&~5MP}2FGbYhWAKI38?)BixO>4|O
zaU$h6<HIix@7<ht_jdFZt(j_~(sDkNG@IsKozytVu|V?slBbis_mrm_-j(@lSimbj
zljkRorKFblR)fOOtNiOC9@^@g%sxN=TSe=k$yG&mY5jA=1QYt_b>^q<d*B{r%`+>#
z`@Gw+bry?1E#LF(T5GnkN`aF1X^z>uPyArgl-;Mm<F-G$efDOpG$&KHoK?Hl{+v<$
zG9XmMaR0_zx^ElSW~ltmTz#WZ*x*_E=5~j_opqm_FACn*Pt{L37ca7N<9@@v?G;gx
zsU55SL>hUtUGv$g={@yw+2?ZATqhZeX5YVy<7e0FuBnvfb26NsyySOR=2azLlL-cT
zE4Dny-8N;-o^HSE1%HlO^rfgi^tGID?qqvQL?NVPYFuH^xD>PSaRLn&DzI1^SQ?nK
zv1>PKGcq!A8R!^j!Ftt9jAC-25yWEDBcx!NP%ozxt(nb+(ro@Op;7kJgH>nYx{un@
z+M9xZc-L%3s_n5#qZfcoj0{<lB5(6559+jE;Vr1U{;lF9H;dnqjprs8{M!(6!07Bu
zgB0=o{7)Yl|7ACGDB_damKAx8;c14#UA-b+`K%N}g_c^+Wl`p@T~D@ty>eW9Ci}D5
zp-*^TtlV<0Cwi-3%=s=p-fL^h8~+*2QJGhCF68rt{6%5c-W)d9NsZVS&LH*4^w;ZZ
z!`MRyg>0uac1-I$7#UObtiHhHdGn)<4<GJ`cz<Q;lY}`RrcE#EdELUKm)gH%`=$Ey
zyC*Ksi&?dD$pTdow%Kp|>vXy6WlKLA-*|g&M`^BI^v)TwhP+`nocRqVZeq#48@6w1
zLumTG8)utuO1#tKZ_}MLuR!?Cy}*;s6--NgPyCEOGBLtUtURh@mBSwP`35^TeistI
z`}n_#gKSmSMSlsdRTE@iJILK%DCaUsVAiMJhZnuw=Dl!rn*Pdl=I1wQSDAi&TIQv)
z>fX7Xr+(T`&i}c1*Q=#=GuQt8Up@0{>bnn-8tK<3OkE<}va;pii*x5nCnrnov3Yeh
zMP64+$nx0XD5JOT6UF%USR4$v*MCZDf{DyK$0>8-B=vr{dd@7FxPc}AF-z3O)mp3n
z9ltPb+pULQDQtNOzI&bg{#V>mIVHX2`ZUX&bszawEwA<HR`5BWa&5<Sw+((5wZg0x
zOy0Y`LFEBg-SbmdPrYajy<?{Ja7xDH<7q`M{0)jmIjYB%8=ARZgDU`eXs@E8C^5GH
zHh_?v2(ADS4KaR0c=69-V$j55V9>-Y0V)0k0;c4=k$81=j_=j!?@Rj^tVJ&RLDMab
zO-N;bXt1H2fedJHlUrC6G*ke#7d(WXSyBleFMxIsxP+x6f)aBJ6u@&XnI)BoZNi>;
z$%eWH+8|Syg;gM`pw$FuKmxM!2xV<Os6A(3VrXb!XlQO|VqgMl&zTw+8W<Xw8k-w}
zcKr?pM-pld&QOutE4pRZ{o_4L)wfx2XMW!1w?aoxQ8vcqzG7^ha>>8Ax-DMYm#vjw
z_kd08(d_7(=_T2*4gH#P+oW&K;hm9NCZG}VBy~f**Nn>f4-OmFHE3_`IpAO|*mmLc
zqBgUHC07laa&P8c;1^;so*wU?81>=F&xxy_%UbVwasErTu1U=!k3^Zi&xtN)@)vlm
zoU+09*7KDnRYevn9M9NH5v+ZEVp-4jw$rDKt#8_zcmJ-kYtwmNe4Q(NP0DP^*I)Qq
zIJ(v_i%X__iBeVSHPPAhEkjl)_i~q<$gLy&%N{AWUajKYoAu!3n>XUSout!OslIh>
zR{V4DWX;tiyI-G<>R$eP1$szS<9vh0Ih0NE9P?jf%a+{2Ip<u`6P7i-F<W15lLqfN
zmz8JHH_$cEUZA-^y-gKVL|f_WgLVO7BvbtecO26^jA$7EJYG3b)RLJ|I{mko%ulX_
z=!Lg@rzibX30A+}l;Sr*@35z|_N+U9R#c>$ew6(nxOcn9V}WnH_w6s8+_oxoiN`Lc
z+xH^%M5C?eiq*PbH-8oHTP9?-TmJgOMiw`P#X7kw=P}mVYo246eE;vsNyVL=Df6Cd
zKarWJb7|+f+H?7aGcP~ecS&x-2Tqa780FQzmu@M_`_8PK`|!N_e1X|A9lRU5QXCC;
z@a0TUSu#7Ouz%O?IvMHPSq=P(dtTmNw%y^&rtXy+pS+(Xb-^}s=DQUdiyzu-{;)}K
z&iNXLXLp}F*DktYwRL6hCzF{+t_VD2`^(uPVEyih&zCpqHBN_0YMQz@Pi|pW-2*Ob
zjG<)>bTbvWj6vEfh&rc(dY<(=c=^LL(V&T`*Pw|>1XBKRls>zE`d~)%3ZxD#lR*t?
znZswm11c>zcvwSHD-w%gTZh?s*gf(~i%atJ3?&T2Kq|O+_=AIeP-cG(4fH`W%sd*w
z!9Ji83Oa5HKllcvq=6rUZDwF(Xk=(%Xkq|bb#G#b#2sMQ;TW`V&0868WSO$rym*aX
z@zc|kQta<k^~s*$*u1DvWmli)P8MnRX%VY+r=EB_kHhqY`s>b~;E2~rUH?8r^Jg0d
zB|BPoo_+IXTd(A06ZSj1kFnJsa-I6-bo~nD2b?b(e|>hpycjfki0H>PU2H8jcy7va
zxsPem@25*H9#MR87PBdZe6$)?9jG%GZODlLdc1c2^VgArOA^i}ZkSg6mi4E;@WeZB
zpZ*ER7IbslEThPfw0qy-=P%B(&-}^D9b05~WEGQv{GMIhj|^0P*W@;Ya?P}B;5B}l
zws`a6-Ak`__jBqji>-U~ft@2G_fkz}Ui|&1S*hT}Z2?W(>9FIqVJB^XM&{vF5@I`S
zyl#9t@*?p*cnW7>GH7D{XVAp-43feHMAzg^k=#`2?f6Z7<zWeadE^2HH004Z12wh7
zdROS@aD$qo%%LpY!UoVONecz|f!v^jy7A0Nnt|uQS(t@&;W}UkYv8DIK}QIK7oi(i
z7?>Csfrs(H%a6@LJ8R+Nc!SsJglgkEkK&RdWR1fujf{W2KHc84{EF9IwvJaReTFlZ
zT1=3eab7Q3`-9samrb1u4`}ds7AQ`gpK@T?WFe+hwYFnRJ3suo-m;)zy}#6Sdp4J=
zCtnu{)IKrP_$`z8OoQE}c#=})a^{YlxydJjZp~1C&f!yFx8<bJ!K3NTvBsa71>a;{
z2!3>Nms!G;hTVzDInm;E_Z_Clt>!(Xs8P`I|C(A(P6CUnUua$J`~6cq?roR7ThPlI
z-?4P|r$g^vU375FO|p;;V>`<19;hJsr&@rUFKJy_=>GWfeRiIV!L~D0nafn7WVhVz
zd{y~$+h%L~T|OF)^=xah`VL<B#wuI;%&G11(yQ)}E)ZyNhQNA#<dMiDm8bd^`Z3GO
z+{wOe7(K<#-k@F=EjfehOWmWw=ffJRt19-+U#Bzk`TJY<r^In)E`Oev(X+Q`pZiL_
z=|VfaKBio@ysv6<<=|Pr#t-}~M^rYOOgpx0mBIat#Nz8e`&v8S^Tkco@X}K67wFTg
zX*<F+?-oyaDxVAQq`!YRi<$ir<dyB=WADt;4EtX6<*w+Qa?`Z%)xyCy`VKlAy)G;k
zRdjrNCgYK+jm?Z1wY`oDr$`)BjrsH8Uo%sC4KMF`J&qVJ2VT23jfu}xZl8L<r^~*{
zF6>V4SI1U%kJ&ujr#<a!-)#STx;MR3YW3UQa*G)_IK;J@Vhm&5x^(&5W|!P_{e8t@
zW7Vn*-L_3Ll^!0{K0fEi=lB&(La!wSb-_i7G_*)bPK-|ht&4zEm_^9LGUo77gEiNn
zi8a%pi8&BbYH%`4+R<@)L)XD%wD2_uLMknSy<yu1*oC>AK<k}~a}vuEVS-%3TrMD+
z6%zG|^<a~H%)$cBjtUTQ@SuH=5vYA_XargZWngJ&Y7ENfCdgcx*hy%NX3^p!44l_m
zV|8;yz8yMTJkRt{VQ5|B@6~Pr4-VFNRy<o>8DVqle~rxi8`GI8?6MtMUOMjG$E@S}
zO+V$z>e$8Zwkfk;X3RQvM%sSYzD?aGOnNgyCI9r~uZq9rbIzApaq*2yCX>Uao%Z2j
z5VMJwI(y=H&a$<a4VUkE@$_NZwM)O5w>YMr6j;Z{ntZGwE7RcbrFRqF^QzyUKehPF
zL)BY3V)q;^OkQ>Wx%h%bBvIF~Zq4y>zte#szvCuJNV7y`96NdB*LL9rGqwwAZ@(6P
zre>b_#nY<)+Wb`X!gwlt=P?Q`(_YS)npcw~+tPCX)q(7-OSPsp9}X7eDVF8l<Tl}=
zlhrwgys2ydADgl^Z+c5#ZT`Hj242tH;z!k!<PLv6`1!RSYyM5?^X6qNC$>aA5nq1#
zZkhZA$+8zZtedaRF}X4APGb8+)+a6;#s_ch<Vd};Zj%}B>s=PRc%IIl_qsRj?#%Po
zIvu~UOzP6q%+0ovd0tw}RLJ-F!1KMQCGXBn*mNi@VcSNQcPF2<?VOe7u;RJk+eTOB
z?r-UlFAlN^?!9}yfyqDBp(4gT;Kb}_@{QF`TvkN4&U$n&>gw^IRxWAYPmDrpp5)Bg
z%x5dUXp@Q1wYp6!Ja=EL(s0<fNKF3z6LWdN;@=avQk@s^*8E^&3^lIZz`Nti*L6#s
z!fVU~d#dA(FwgC&oJ&>#wRPr?^&6&qeXMYeYwbC|uqAqVPH)jN5O|fU8e3e!^Hk##
zO?fxxh+9clrEOyTR$-kPr~m4|-%pLhGqe(Ywx|eo)#eI{e4n%R)U!SF)cbrSPpsTq
zb>O-gUv6tr-il+3a=-m5POjgRSIHqWw`;ysSMahMyKkC?ZWKJal6iBO_0E>bN^x}u
zzX=6(ztTzH^UuuZ>yGmmH+xR9zO2bNQ+nF>#2wa0w6|5{Y*Eht@b~hjxKjC<Q&+6{
zcI)9$!|LA`-8Ns^lfES>WEbc6<PDP-&HDK=NUu9VX!W1331ROAV!Dq=Io)ZFPT@Pf
zb<Z{bgEcmJy~4S_t6v*jxZ}J2=+$jYeWD9bzA)VP!h+3Xq12;Sm+lE!Mo9f{;A<*<
zw*4e~4&VF#79VF69@$>cCwf6ObFb1|?YFGo+}zi^J@Da*^`kfMrbSN>_LB><dcEQO
zwB6H`1$TXNZYxQddP1Z0zO3o4OXkfM!4_uL=W|~E%;vlBo8^Un`Sn!BiZ-4qJH@1r
z^~r@iC+EA|UZK9IbYEVh-Sq>nrDyOL#F%XAI&+{^;&oot=I>Dp+4rw>n)EqAY5Eh9
zh3vEa$`16^{#~Ma-2Lr;`QkNa4ljL~&($|O^-w_T*2N2gh0cVwCw^{RC*YR2*F|y1
zA={Gkbt<O6WZ3y;+bW%UZ>Zn1MriMQ2aP|P>GL-U`=_ZK36^{*rz!gWS?-2<-Soeo
zbEHe%7C-e8f4Ss3H@JX?&0~Rw&OtkhL6fnd_8#aUPozBr{37sT8h!YLli}9vH-(>>
zH%OwTvY~MVCS+d%e21~28Db5rxskD<*$_F&(-3q9GjarAToJRsZ~N3oht!0!jU|se
zL~yN+T-D34_)o*}fa<<03TnHIgl;H@c&Z90&6w+U>EOwEe$sk6d={UjR5N6jMX^4U
z>-N|`V_Jz_=BbxkE0(hDxylg7$@NLSD(H{y)s3&VbSA2NmJ+_b@_f)+9+h1?=e?<8
zDET#cZI0%ob%9%UUk=~D`SXh2IbT$~wXV&a_hsI{19eVT&$*`t-`bwRH^Jw3fqlQ1
z&Xmt;cat+$PPrlAchsF@!c1v#-<>&m?-Qm9_9-@O-MgUp#)VDgM_gY;sr^nXEBnDF
zpP0)ZdbD}FKv)qQ`_j)FrI=Y$_~u4+U27|lR=M|2qf7fj)`mY-i|%Zy<m*o5hZLr$
zUATAIo;FqXypK0>Ztps=T5^7|almtwfoiM@2(%V4PqJiWWKfm3GO=IyUB8^HVDK$n
z7fs0pa@mISeEH_BwT*GipQ^30uyTf#h1u`jY4be(PnhuD_R5agTiQ$Q6=t6+I=?XV
zpl`||Nw$UT#ys4bPd~m|z4*;mu96AIYl}WzkC{L5{lxC=ciyHgI^UOOy=T4^(*yOp
zVlxg*y~4HRN#m^2DW-EK#CMppt&N<@wc%p=Wyw>W&yAwYWbB$&L`~jz>_W=KZRc-p
zlQ@67?o#UFWk>qN4G;dVE4zKU^>M_e@~SfH9Q^>9=eNJ5SIU2FnmUVpxybtdI~t1V
zoR_ZoM#)IZ^p(dPo}yxFl<i%2rD96+K6Br5@yF%-Y#wwPPvz!cYIMyes!~T1T-v~f
zYKuz}i_$VvLAS+#7KO$ep{|VojVNn`4VqZ^4Vsv~Lz;w)C}&xL#%42+nu4LhuwzZQ
zgk^$Zb|{3TCTHa3=j5knrWQjNe;64UfJQ{Pg*6e%AnQ|&6mawgK@CI$69Y3NOG9&G
zOK>q^jLbElpG%q;6)<x;FX$w84)A4A+l@~Ads(=QrFAWjV9Nb-zVA;kOSIcBT>aZ-
z+58WO7v8#ZBTqYc!f%x&b}b*~y@-GFRNdvP#xncrdk?feoLC>MKkpPP<7B!1G#Sg~
zzQ3Zj6|<<Oy)LhR9(l}brm9HDYqjH_>m{!m6!fp(;HLF|?Q6}q*XOTdX<vNhXXjFr
z_}k7Co6K&e*=*dgv+3^~D?5P`*6-O;)2e1mO4$A{474%Oi{EEkUc4!mE$6Uu*evZ<
zwMjC|nKnPM=UvZH*|fvV_SKxrrknR<p89%b?u)-Ez2XhVd2wE`Gf&F3Z<#A~;A)<*
zsdC)?+3~jTuYE5&^vZ5`1+R=#dN#|AAJ=Z>cYktOz_^-;k$G|BQG>=qNK;Dt<F{Wt
zcUQjcOLXX(JJ$sc@vZE5ZqPUhG|#2X(%5Ct*xn$5P0hlbC0X=~+9pN@@Hn5WFzoU*
zq**Uk=(IoUT>Fl>7f(usE?krO`E%s0*^KQ{{^2VZR&r|H{;t1C?#%JHtQ*bk3#Y&L
zG_@;dbBsvZ-xsliE8YIh=DUh%@+U)n6`is5ak$aAzI<MD)$T>dznX~m-4t~A@<&I@
zSG0b4QmmfpWd?2qDcOvl;yb?V?S88fdDmC0TfF(irqtuQRZCax32w{18@}Y!4+Tf=
zj1OOam+T9Rt*ZR`Q?~W7?$mu>3nw_A>6M?wz}2q#GE^yoLHX5VA!p5KcaFO~j#;T}
zE1oK@a@;aiaq7<6izcguudUs4=aH@D*}Zn91q&r2nNKQh>7R2oPV4&8ZCAK*e{6RU
zbekn#$(OXBfBKsT`tssaz(on{F1W(d{IbN9%wkB-GC2|D*n%7If`o0MK@;0tgC>?%
zNI}BHdJH)Wfl3lrq>{wR7uHqe5*7$7%?|@v0Y4N8aT^?53fzlyc7z;S0NPPwWMXJ(
zXb3qM+|bYv#5FK8F^NLCa*6_L2z4FLggc3a%y~BB@@3z5|K1*-?`-Lny7`4zhskZ;
z$cZKAC+%QySj*&XxOz|T#EcsXd{T^$q^kYIV;^;Gx1T9>_I2XwL#fN;w{PFOz5mbO
zf`0A=>H8QLMV>Ew#;;lSe`8pstG4{Ss*o3pHBB>?F#7W^(KCN9z5j8)z>1>P5#i56
z+D@GO9DPgYR%~CM&0@P-znh-k{S>o_)i}S)?A!%mzyJHacuahj9ah{Mz!Lg;<L<e?
zUFA|l?}ak<FqLgRz0lq%bC3Ss3}>;hPA&7qiGP=^^E+@_Bz20p_awIWEEi79>A1~Z
z-MD_Et=5rLtBP&!?lf$?bb00+t9RK^*_(T}Up+VH(7vVK`eGaBWmvQ2udAK^<KCMy
zn#*S_R&~~Y|1n<eVTbRJxV-B(Me-z#GnZSpbWT1J94fppu)^WTj+2YtRqqONYMv+Z
zmNh6UGHm(uKXdK5G;iGTpU5Y?=ibyM_q%8ATQl3Z<Nemg_0q?bf=_%q{%*R+hNCqV
zK_@<(%PUW4S@u$^OyO+=qqxE3mr~siij!|<O`78Aw`HwY>ygDu27fr;W+)Xe>);7h
zj5zwxYQEOpQx7LRxLLe9r(wqn?v%+3=JZJZ-+YPZ%|x~KuFZ=c7WC_IJw2P75%~I+
zJ!^fp(KF$g?0@kNkCaYq*^=UaZC9;_-HJ?}>$}?uPZsa6x1Ou&ee1u&Ye;LSiE*ky
z6XQe!j227dLr}@5z|wfrpz)eP<7GBZ@R5=GA{dwrKt<<d_(VUGL1UX#W3yvkCFF?W
zG=-9k%wh#ZEt#s2oS#=*l37w(l3J{gn4FwiP?DIJoT`uyQktrOnMY7G2ju5uCRZxx
zBME}0BLa#NlS?v_Qx$?s5=&BZQ}asn40Pd+ViZ$^PHll^U}0qdWaSTNf<r&Kpcr|>
z6!HMxrvt(dnw;%^ztc}Qnr0evd&g;}3kG?h;812sH%M&|!KPrL=Mr}+W!)ysvIpEB
z_g}j}$LH69Px;@|LRTxBynC*B>u~h84b3+%TzI7T`*Xr_>)3=~^+mJ4aVTj$-@l;f
z=^T|T!;KTF)Ni*4cB(HckFvPFe@)w;cd^ZT*p6K+&*sln(f6*(S<XJ~)Z>=<YdgAS
zSBv#Vr-|Pb`_kQT>F$qBWrzP*2(RL~=ai|P_u1xkgZk~S%UpQpM}<amU*!$*IJ$2B
zC;f(_uZ#jrg{JEreE9#Paz~)W{7-3NWzYEor!NiS@%0RxYG%8CkvETkY}-tqRiBFl
zCqH@hZT77dvCDn8&tqCw%y8nCGV_a{uOv&77^a+7QrI_TdF0lntbH>pt5$yUQVIHA
z@^_ctvlX&Tc^i2fTn?_gtZW{?yR}AplHQBDrQLUDKHRUKuN%9ny8R#5UGG1AU)7%E
z6*%P?zcHLwJ^A31lbKSs2eSQ?a^J0v@I7|H@u2oAf1&oc*RD5mzRqB}yx>M?7u!t9
zMGML=8q8aBru1F&*9}RQ=X1gz`COXF%~z@+J!}78Dd&%;%70t;C+^795OZRQE6|cr
zywU$~uX40*iNmCu$&$RqcQf}Sx$k*UqP^*L?LJ58tq0tWE>t=l?{`pR(mjb?SG6>D
z3wDc7o-s3FN{sUPDD~-a+^lSq&E>2!&0epZmnhqBbgPf&T8UjXr^+qHa`z+FXH9x$
zem(V2HPLuer1Yb_>*nFxcvlMD0#|Fc&;iq8SnCyhj3DS}acBhxpR+?cmlQM+gFK}A
zA71S-e>P}hes9pkbRAOdp|+o~&AdP_-r^8ucPz@R%Flxjq_PWh1t;g1loY2V=A;ta
z&bBtN1huo7g^dvHZ1`E}kUA6LAqB)ig7C{5Ee$LU3{hrYj16(kybL0z6PkIs%42mz
z>!;tNulppY$M<yvZ<Mz`eSW@zaIU7+3I1A}@7ZM*$v4dsR?LozVQAQ-A6fsc{imvP
z+w)B6pji_h7CyeA%j=i_?S$veZJ(vW)@g4m5qW+7x7uT=U9!{kvaBPfbh?NAS6wi<
zAh`KfONq$g^m!~9R`>fHqGY}N&O1-Eejav>q2P4TyXx9?R?qhs{&f9zDB-+tB$IZ-
z858&WJMT?M&1E{TGjZ9n=l5DAJZsYY7F*@6-1^Q$Zx=7~4&(douQz7*s@|M^uJNL)
zo6)p__Ipfxp3be?a*B7Syh?OjbMi{a{dWE1N}JTq%#RGonEz*=mj01YnNo)Y@m8i#
z%kFwsNbN-8%*&j3hWo1+uN!DvbS&DD>ow<-;KXL+MjUKethd>+mh#NI){^tnl{xbH
z5>NhZxf6fGtnus(X-D1p33rc6W!$`&*Y>bO`MmHw=kt$DHnYr?*Sxy_N8E|42lu|4
zly6k>X=0Q9-X^E2wOZR1YJK-qg$f-KeYN*{)>OTmlKJOlwtPCuxVZH~k=@$j)!eg7
zd2(I1_f1(d&3x;E3;m+*e2-r=-|heV-jT8VjQYx?R^w0R9PbOym$ThFAt~G8aK6?}
z_P^Zmhv)t)-#+%MH`H$>({p!0H@h!?_f~7F?OvIfWUjGISL>TVTgu6T<(JlO*DR=f
zWpgW8b^hOs?FMfOewTJ_&rL|*BzI!x%Nr~5nYz<?ebvGXZz=pa=oQerQDYalAkl{w
zB(NhwK;wG2Rw^J?N%2*}iw>5l22Csz4VsuMAw>s^Yj!{ga&Uv%%#9n68qJ}>@Kv$G
zywKx9q5W;dye+7{hPnxKaw_P&QiaT71;}ZopzZ3ZDbOQJQ;Smbl2c&|YPp5Qpi{nP
zu!BmWW+T>7LG8r5x&hpcH#0OeGB+|XGByF7iEaetnu53nL(ofvN}Fv{w>dlgI+m-I
z?{R;Mk7YRPyTg@&ju~ce-~5}!*uT(1<Ii^iw=_LpIjN0Oe#b5znA)-7<bT6%W9Hl2
zo2%^<TH@Yr3e#Br<H1gcLi3}i-T9_#WgJkNnk0JL{pQyT+W(upPp-AQ=W}~PLx4SJ
zR|~@%11?*Mv%mjpMb1*5Dz4)?Pd?ANGM6W2#y^kcN0r@U;{N76m)r6!!}VfYbM&IF
z-i?nn8~&*lcC6jEr+-b*H1Ab`y-$P<C13dY&cD58bJo>8mLY|ws;cTI+^v;uxY@Wn
zQtgo7zh{#leQ$V@`rE{uPqU%GcfCcM-n{zo_4CBny_Pwxp%}kS=En0yEJ{Bw-@0)c
zQra|bFlbzBzz1sR@gpuX$7mUY7Ujtbu&5X)HSmM3?LbN@jr>LisEGx6aYx34C+SO;
z1veaTOIz~sySMZ2mc6-10}wc*!MBlrt7Ug&0A0T(%@Jm<XJ}=jXTZ$FG65~Ofv1%x
zUoqHlomoNa!q4Ov6M0w_R>n)7sxI=ovhntXX}?3FBz1T=zHi#ox?*m9u6596t=rG9
zwDcr@<3Fv&I58mSOT5UV$t4Gb=NVW9Jl>LUROW+{OK+k3niEndU(TMzkRbfOpe|m}
z*He14Xi)XZkX!rbPF<fp>&Cp7AD=k)J`!}X+P{8pvr}<U_p05?HP3%dk>T>axM$Ux
z`C1qL*Vo^weYNqef$G7QTPByHE1JXJ%rQHx_DJwsx~J@<)jhvo|F3%2>a{$e;luJ6
zuPJ)*tTSzb93PzBl6;=gdDoogJN*gPpQE;Hsa|)BdxAyj`$pNcOW(r_%r@`;qp`kF
zwKZD!pIm*^78`KkCI&6sN)j{66Z7KJi;%a9@^iq;FxE1ICe|W@Cgvze873e<H!|wF
z{vkG(r41aJkK?|fg|LA=QgId%ZU{Yior_1^J-;lqC=b*PAzZo`85)6C_Zx#xD>X*u
zQf>jEe*Y}h9dFJoDqT_i{akcp*U5`*LL4D)=6rhY_O0V{&C8|teca8KNHfaR%Y}FK
z9zJ?e@$oGcdk^j3^Ys=^d9EWf`Qm<Q#`fTu=azrvQY<U~zjFJr;wk=a-vvC)f31l0
zjLm9f5Bt>hlkLLy0wv!q+Z}fr?b!HX<Ka2>1%HF@Hm<snT=DHjaNfc-SuH9>A#KMl
zZ8{~xSJ`-NYe5nRqn@8X-&Mi&E7w1rwg1kU_FT0mC&L&0p7!(1L;K*K9G|+`!5rK<
z;=j{R99p~aY{Qo6cgh&WL|<lIU-GcR{aoAC--e%m8SXP#rSZGKN7nQBdY!qsY0I|t
zrqpd!$eL^2xUJuTA>F&PZO56^f1<%JSq@%{mvy<$rLR8At#%=A>DrJs(L0{jAE%w;
zpS|GC;;PtvSG7u=o>t#mx^2~ZjWuf~tg+aBHN#Y`>dtrT&wpKKU)=3nk(d9`DI{yg
z2i~>QUk1g!yqZ;XFYCK>g2<PpPqr1NuabZD$oHU=!@qPlaSMHS`@%Wvo+_S7)XimI
z(Nd%PE>QJj@`QPRABJ~izwc7c-S}*;{o0GR)3{rE&t|Ld-p)Gv&F+aSx!8r6ru!*O
z`0$@s?vbPQWe2P0y|K5_o-l1-51J9f*JnKE(6Xt&LnZTk`qp{#?>%VY8`s|=n|AhS
z!n7?xQLLSPQ>$hioM<yuc@y84$}J~r4tgm<%DOCr45Xsx%$fIRG!vFsZ=AHv=9f`Y
z{~A?MYqViTOE#8tEp`SLLj!#ST_#2b15W6+cvc3`4*7H~W(Ecp5$4$+l!X6J)iAq!
zXWjv$--cFQfvIR&2;7x*Xz==_cJf@D!Cn8hlCp@e>ozwVS1hS25tsCP8MJlh1Fn*!
zRT-x$7WmBS(^1yDnkA&N|4PQ?t_wHj%-<r<bI+nK+~QB~BmX#_`Kzrj{V$z<ddcH-
zj{i>&h;8*?tbO^D>%a8VtjzrtiYpE+S6<n+x-9GkAI~@8yIN^oDW0}c673UM<~s##
z_dos5-LcH{{eOlsGgqV8$J|<DAE|7Rd+af7M!5Tw&?<h%jV>ym5B`(N-rw=};Idnj
z6XF`ZW-83_NR!;kP#MC%Lr33x&&t^7g!-QLr4NFVwf5bxZgmj-C$}xt{;2n@x~)~F
znv3<SW+W&r{!**%r~7J4iOoy?CC2;$f_sD+uRZ0vynn0EqKB@^2hMQhC2sFr-TYWZ
z?pZARb9n{3^XVs^uQA9~_s+=k){0@`FuDDs>`D4!wK?{Sj1GAnZImz+2wT<iUYG0t
z4*Bv+`<F&6NP2SJdtzyCXTyxT+|$8+aqGWrn%+8n=dDn-oht9HAG454mKL&}`Y>Y6
zr~55e<7evghDJZLxUFYj^wOjC^lnYzemRTKou4-yF_@|B7yHR$p%Bj<p$VK5LMAfX
zxIevmGWEfB@7g!+mp60Ut(|wFgn{q%-oUj7?&%yjob~Vh9q#47-0mmbp0g}6pj0`t
zc=D#7f0!=2KPx;Z!1PYNr{(_|S6<<mW}^qHOWSm6z6gN}X$5E@omi4z91osfPE7%~
zLX8Xzk!F_pG~vZHbG1PebGbniQ#_=&=7=#qoum`L*$6p}fjX@=uqF7+Jfe;z`Nfcf
zOHxz7JxY-A$hSq8<QF5A>MpLJ7NDV_fw_UXp^2#lc%_dqcxNQ6UrCwigc@U0Tdk+(
zYgy}ApI`P_({$f?i8XesZvOCHU?=6ibI+{%pZ=Y(bAM4a?T|{J>6eu}f13X09xO^y
z-}@^2_4BSXA$Ai2&Np0{`uoM!rYj;xx2+6S4ZpoH;M<0Tl*p>g^UT}xdH0>N%P%Q<
zwaP%NIBB2f#KaSV|M-}-zGo@iVG`wy6V3Ybxar{5qjOU@a~4O=U{^mbJxx2Yq%g<%
z<9E|efd}*6gf28!TGY<Ms^ea}MP_G`W}3#S?GGn^T{4Av=FWoFt<OAO^#=U8dGAa<
zJKtUIqPYzQV(e4xHTeD>E%gt+Rx)dgie4Yn#PelGXUm0_%&Ab^_(At0_xwXwr%A|v
z2vMr)VTTk@wFcD&h?TU<m$GftS;m?0?&9>91?%=$OXl2G#2m9kZfs%IApvUJDX<6{
zfUXSX1`lX%&}C*}WJGKAVV$5=D>u14#iLEjajuRX+k}K8J!`l_cF6CnzRYg<<d<Fb
zCR@L^^Og5b|C}B3{@q`PW%n0OUdYw9=Dos&O2)kv-z9IT7@Dv!F54wK>#+Kr8~*%f
zB$EHn<ma21T`Kla@y`vl<L=v+osTFgtlRa_cdEPf$@RGlw;X)a`E3io#nwkDcT~?W
zyZw4r%*=&HIqv;^cI)c3C|8~%+YfCOdA~*QKcDE<uU~H;+xt3d`G+v2l{Tp%$3$1`
zZJT$td0IwQVPoe*?uV}gr879rWX^jt&vBlMky_QGcCJF(*H5CBT)KVq?6G?Z^*cZN
zyG(kowOzt)x#Ugm+KuLpP8)V5$bS0ADY)T7d-d|U;5-XEv@E5#1UlZ77+-<B#y1O*
zS^W%}n7s^|n2aEqRlsHahK6g4)pvCoShnf?aL7i^w4lDCJ^YGRVQJ7g8YPK23c;D_
zd5I;ZMX8V+tl*rlhjdn%OK=FZwdJS~0a=M_U|?x%U}R`$WM~Omr(p=<8iEd$G>tN#
z*aAXX_x}2q(*rn~!?&DCO8qvW>CN%WI@t!NqTk#+TzlN%poB>GgBQkSo?4IX6+I`f
z@#9->=W#mq-Ji>f{Hd3;ZW{IXJpEq2L8yA`)B~N1SMGXStXIXuX4Jf>u1mz=tl)x&
zS{6GixeWgX>}^QBzdbOy`NX4+#8=*ljc<aocP@J5Eu}HvWAQwmTbzA%;(Bs-74AnL
z)9PBSx3^&JQEn;K2_;2GtFu;{Tr=qW|1?9mI)wYgwRLZz=1h{aP1)RY?Ee0fjs<VT
zims}?u?V$vzVPR-M2y47>94QOn%yhA>z3-yV>j*}6lJnneJk&yo!-|NjyX2hnlqmW
z%$C&JrWyYDsqO6fADEzbfs#0Cb7c9(CDl5GzivPDo>2P#h-gA<rvO^g0C#K_OX<uO
zXNXxT_f8|t+-iUGaeME>oC~HZ#6G?m>2k@A*KTi@_kt4na{^6sN~C1#W=P#VE$qEn
z!R5)smuLReF1?-g^xw0;5B%<KXRz8@;JN<O)7MNNFEVvYo}OYA=W#?rE<!S1jw$K`
z&&Q2xSKf(i>&|;Q@oU?uUpv!`S4Bpjd$e4v*!{HjnVB2RJ<dN4^Zt6CpQp&E{n!VW
z-N8k<&R^9$W(B2hk68ULy{xd}Ht(V^5n)Re!`4MBn4%2aAKndM-^0W?f#G#Za>8t}
zJsl^7o?WV)*!|Pis5f=X%bJbhWv`BI)3DqxnksYRTlussuHJI)8xy%%`q*!4ZsU44
zx5?BLa<nUKy)4>M?8t+=s_-1h>T1x$>S)l!tO?11prhC?O*3tq&&B_=t>Q<t+U_oM
z<d6m(&25QP6_RusJ7j?@O-^GsG9c8cSvzgM?i?>4ug1#2nQyvIXD0*-@A1uL`?G<g
z_pYQs)^Rl+(;El!6<S_S**LqE`Ec}YuNNnNOenh<?f=;41)G`gnOSRWc_wI2y22)z
zu*Te_vbC{kZIt-~-ZOKT`2>}{a-O@L<zm3M&<9s9E%R)BY5ww5-MW~mz8<se*C|Bh
zc1*o#vLi^!dBTSMIjlRkRcwEC;fa-vP;k<JuTRzcOj%b7nLPfSQj(-&%itNM@z2O*
zcl+H`b*4h=TVCJgZ=L<F7&^h9|INClhx4;<x?bM>A-?^sjgDp8E&F?Kib7vkE?#^4
zZq0^WGUxu>^EWL!&;O%BKFci7O+7LC<-GGB7KPT<sCMP+Z#jCtMNj)LZ=gWV?|A7w
z(sf7IS<hfJob;bN{L8FOJHubDe$QKW@x!|>=h~J($a}dZbK(8WZ^p+m^`;BYTiU)M
zT%ghXWbo$Q_1`94oO40q%cQ(p&Hl@hXZkGt9rs=_rAi?_C#6;NwE4><9&RnMJB)fp
zx9q&X&a?U^?l9&3yonrbzxE}sh%$b2y2N?v&z#I4v*Viie?pmK<bTiK>;C$=r~6cH
zzfL7i&j()<<v#A$>nh4?i2NUJ^|RDyv0wa~w;D+|eTzSxX%tU*d-nC6+sjWKtz+8z
zDTE{B?-pH79q|ya85cty2BvdddYf05Z+}U*F;X+_^aRVPf^sG5|L(qq9=c6L!PAD+
zsMx^s!N=eWYXp<WU*o4i>%ChZrv;&92XJR))ry9GzKX>U7F{{}?CXpw>sJiS8>aJ3
z-V?Rrn@&$r`^t@f>Wlv-7gj87k34VikXK-na8z#7*Q{p^^B1skXFPGwKAv@d+uw4d
zqNftSIKM2ItP^{wr?j;!bpj7_<#t2m<h2#eoNXB`r~dyuuQqE^<@2-NN1rDy7eD=Z
zrO@Qb*~?$(2TwYZ5V7G5Q=mk2Yj09y^0u{G?#=qG_MJifKy0Xa$;^`h^^YU<TpsJF
zzI)?iRK8`t)JyMJg`>Cr%Cw6ebAEAUx7sY%g1D93=E0BLs@4BKaQoD`{fyJL(;8}d
zH<zBYI^igs@I9bMbls+0DN(8Lif5CwZl+FXvd>{!zfQ<XeVQ4|b=gG?$t!1ne7b8(
zjmQSSlN;qr;w`=fzMB0@XOZBQmAdLut{c~H@+;&$5aD($lkIfy>COML9nU(})%x()
z6jfG5o{jV3TQhs*jN;0gEnm*;+`-PXsU&8{@%)a36PABj^>cr^)fXwzB)RSL_t|dL
zT%W#B=u?D%WH7UV^bV=cZ*%reXYO0f`B}DG@#B{JPh>96Pi10z6?08^bIbchOJjP<
zHJ4``$X@4gX~mXTXFv3MTg;K1C9M&%qjSRhQ>Be|a-ULEj!Uff`|m!F{hMj(lFM9S
z|G$c-<h);@r0O|&+kFP{TM>1!?~Y1uxOg#MQQ-K`&%2no)Y*@IymtKZgWsG9IpBtm
zI<&J=qFa)hlUkgb4Bbc!?yx}5azqT1^UJ^sVdmooP0WW4nwX$xNiZ@Zr!i1x1!ecJ
zi>slwfhK59jEhGpL^l|EL%nNWNor9+QD$)}Vvn$UZjuLl^qWTvp%`-7gmWrL4{Rci
znMWo>HzYMDH8?d{0kV@A+!=x_YJ;?$EI{YM7#bK^nu6B28XJSSus+YAa3rDj*WS{}
zACi>vRn|SIDqB;#_om9#9ozq${owTAbwx*5-0WE)vc5cB-!7jo_!6}B#$=YqZf%8*
zUfLhDbV8Z0c^rOVY4P?`jE%j^p2@a}tNqUM?)#vi9>M2Q&mz^n^!hXrvk4bGs~493
zmdY;P_~YD4PMuG|R}YK0>}Xs1ty|mj)?(w3o4<;rzAK5!bWF^yPkVYet6_u6=lgB0
z9e*Y3OWWn;H%fCAt3>ZieV`L^BH?nHxc$R3A;!fMnXH!8SC?5XlApHCV%^pglS^dh
z?cDM-VXl7I#RsqBqJ4x4cye46Rtw(vBKhsooFMb(zqTDRwD!6pGIQ;5sjso|zu0%w
z@XB9nmfH;JIuTI}A}@E?%KW{|I<YBBXq80pYi7kM`~RIgg_cCY?XNJ~_fxL!y;Zy^
zV&A$6YiFoW|Hrs-LlDCb-zU<FCDL^V-o<5VsjiQ?CVT5r<;l;}H6OIK-(!j7{}_2C
zrPX`pdQ}#=lWr@g-)q_=T`+&nxAldFcdJ>K>RjG=%Kh7^Pv4%e-RWV!M{N7S+%K;<
z*T4C^^*QUjWpZ7?f!8KCo++99ZRf3Js;niIQFRV>P2OsP26+$d9gn*+m|p#Q`Fn_6
zqwOuvtXZ4i3)nt;oqzF!lKbg1=NSzr-IRE&w2xCx$}VctlWd-ls#<5i9i2<7uP?Hl
z)^_HTnu%`Kq`9-CE*LzD^<&u(->pzre$aMm(?z#g);1M8@)us<O<7bSr|CEO@RAUb
zXmBwAJE07A{9k-xadBx;YD#=&3amebC<XYU5v9OxgC^$f22D)!Ax$v>p63sqir;Yi
z*Z(x(kMsuvOXLs-b%s(=+hL@iNeDe-fEm)40<FeTaD=#3!P5oSYXS{*7=W${hs>aZ
zHZ>WeoJ&Y2XAsKRYxzXaJ#lV`+1UPhd&18`p{48Ys7>iu_2t}G1xt;H1fCxaw^oWy
zHA=MEx>2L0tLx5uE}mxbs{RRUx}H}C#~8L~edC{DWL9?O-d&p&i{5AbR{Ru{cz?da
zb@@jdZ~l`=xg-=F|1(0ubdUSlg=Rmq>#uCEusbMyxX1YB4Sk7!8vL7=H(xuP=W-y?
zbeh<|$T{6*xz|4~^5)h4&s}tDUc!aG38u#?LfaJ<o`0Ilb;7g8aE5V?(#!S>Mp27)
z2{#G8wG^K_)2e9UvtLVYUKKYiUDsNxw9cN<t?ipe<%x~Ao`j1ZsgvQ`uw~M+u+4in
zO@F&;`G@UCSJ+P#yYPSEwAUQ*66OAoj15|vjygTnhB*j=7&LKxy=eWHNvE3(bpyMX
zFISxVIrjuV%G!0T3b3pvUBtKN{-d`a9v2l?rA*oXy(sO5(G#cAq;>7DKV7|fFKqMt
zGv`D!cJfY7h!OIMcyigc+0!**x@o4=3inrG$0}C~-AHe2xnIv|Gv(P1H64Y$wwpCN
zzsLVqdNjR7{$=X>_6PS5rh9IVeZ7fO>$Te3ihZ^A+Ml<pndZiKGH&yXp3lfSd$q0V
z!86<H4}HvUJN7Fj<8`C%l-Ew%fAz@SP5QVmAboqz-p?Q9vw6(e#p=y#Rz~MmeH3y_
zXuht_vd{b6^nHiZwK4?nH$3MtPTMccE0XuQUOrhs?pLq0YHm*d((Q?i8!s(ZTPRRC
zckQFYKM&6g+^)^eaZc}9z^3KDxLoxYefR{<`NGf!0BG+EXix$vn_D8X`5J>J<`o7_
zOcNm4oRi_-oyUy)Cq4e7=Wi3F{OuNGC}bc2sq;BqGBR^3^Gh;|4F$oG%figV0m{7~
zJHgr29K6Kb)X><#6g0wt%rzj-R6@D$M8?OH*RE|gDOGEdd$VQVtC)vsZw1{GA1<m9
zt8h?!k}xmoMDoKU8>dbBFOi$6{7^gT``t%o`V-lAdYtEbQ@Ks&xruiHhw5URc4^5^
zjqLmu6C^JS{%hOv>0+Fm+_bX|Ip?emCvW?-;KItOLbXe0oyk7Y64qtB^0|^|u-Jz)
z;%~y^UoPUB!Flg-{G9wd9*<kOMWdGOn!m>5G3Tc5UySa>ne3CPh;@oS$EVcqJK=h*
zk;G<hovi(R_9B9v3Vh`vTWzOsw0~EXySgcX;Z44lhH9RcokX&@s=b|yg4j2;6RPW2
zy|z40*7@8c7F-weTTqJQpj*;>r5zs+^=97rWfj48ACmhT_ZT$p1V@RiFlc(1)qt6i
z@jp_3Lh9{5N6QIYR3i5=ehRwk`Yp=xj-Wvb8*`|vGE1yMbb|;s1q&^fn2{H4O-P9g
zwNzj;5M<*_X!Brf`{BgM$il+R#K4Z0{=hYQE3@3B!f#INA1+Ru_xkez{!dG<+?x9A
z+P(}k+qyh?pRV^8`4w~HmIfuC6Z-L9>sJ12^MArj$4^_^DP`YE)T_TzWP8`(p`4F{
zWDo!KITxD^s%J#rsXexnN7HAa@uJu1R;ewQr#*UG=33CdRr}sg<!hdKHX>V(%{P?`
zxNxvPtH6aR>GV3;49DfG!e0chV!y=p?WzbH_eADWot&briBo6scJJhU{`G#y*?Z4!
zT;t@Jp8WKn-iGZiY6sK~tPeGqXMNR7OOoYFjNJe8I@|wW_}lIvcvVn&x5oj+l}j{q
z|BC+D;HUk?AX@Q{;6#&sj_<4IPA~mGed>W}5&ExoyItS?<R;{xM%ZOJkhP)l$r*{c
zNvTEPBig}jd);^=0|N`B+&&$i+u3~$n%F%Jnph2Cx&7qX%P+6iDxX6OZG*-&NZH*r
z)X>?$5tQB8g{^!OQ;ITE6f}xcQx%d+i;7b7N)!@PQi@WGixm<}6hNzCk`r@Ni_$WS
zaudNTSD~_+urh;HnA6e1$lS!($imzZy7HV$Sjf>?!5OYm0etkFx`8UlR%T&2NC!Z{
z8R1z-i$GTa<XLbrV_^U~jnv54&;;BnurM$;1}#?yafh0B2#p>cxF2@;iPh{f*Db=g
z{~z2Y*=_D9F*V5jwfJ1kjy}^IHX}Xvq|cr#`)ggyHWr@Q8^u|C^=7Nf|B2zM_v6g^
z3NFSJI?LX?^*-j(Z|S{OTTicDe8y!t?>a?M`<+$MlS*$a5whr%?AqRN>5)->*qn*i
zIs~{km!wQ8N%;Kjyo7(kCglsqt<NQT&+I?MbHQQLj61w5{1)%zT9>e3t!q&7uC%=w
z4}R{GTG6;$&atBO^1*)$p&QymUZ_tnmGv=RJN?gey%{b0bxtnce{qJO$lK%}r)G3S
zh|hfM$~?W!rcJJ+XWyrZE&Zt`HyC_sw;PH_X;yJbs2D6Z-&(bju~zNcPrkm$kAJ0&
zw`y98TRU!3ynE$<?b7-4<(&gg?%tDAHGRgrvpw>^=LD|nF4(I+zwkizn%W6zFRsU0
z@ou<!sQ2oLxpNQZUbwJ7@X6yJhb_$3U0YuIY<-J!?Bq#2S?u?$WoIZ|TXWF#_TmMq
z|BJSk$==I-sgtG?)N;Xf(m9!@PmN{oum^`MUe#nh%Uu7?-32KxpWWTN?oUdqtj+S1
zZ1-CJXTQjnvN^hFv(xWxPP=%HpyNqLuCNyFKa%p~$HL|pc0#jP$Xzk>)i3<ktMRRQ
zrSPT1gA;dq95Cs3?D6)wohkG`V9FeY=E&l=H48s|{CoGi=Vj-J1!2jjY;B*KhDE;Q
zJEd?&+k3JmbmLzWW0pY^W14{wsKf@B@EitgjEw)87<rHi`JJ4n=E&W?oMV-}?rq4&
z=*euRdT|Dj#q!FK#qtdz*wid++_a=|{SeDJO`Hty5)HkIu>}Q_0*e{w<P$cQP+0{A
z11$p$qy_jg&;|Gf;Pv}@sHGTM0SO*wYv`yixHn1TChHWp{}aMje$>A&#hd-BhEK**
zrBeNd+p2uc$e@k_p;vcpzs?R0$$yxzXa(oaH?JdWj+uVEBk}TM`qTBhTpw`WJLSTE
zNSv>HqHC3LeEc+>jP8T({WE6U9(Z&5>(!=7Ev6UunOTGt8AiM7t`c989Qc}xac%vZ
z(s`#B%73gE+PL#cN`3k@WvwqeEMsT9P+b0SudS0*$*h9)894#5p6CDn=8Ju%<9@x-
zDw1Jqadxu8H$ztrOTI4!bq)nl_7}39R+iXm=riS(7ER^s^+-N;OgVhg<T%rVy+66W
z>&#7(`L?#^?lMEUZ5xl*wW|GElC||#vcbjolg&4!>DRJ;f4<#&#uU>7H?1@e&fOGX
zEbFy0YS~HV_iw*EUy;|fCA{VJ68j79R;_A}PJS`@QTB=}JBli@rQcdUi9J1gRr^(c
zKZbudv*z0v@@p_L*3Njbe8ZxYd6hprK8db8^X!DnYx|0spQ;P(Y(CCdepEup{@HE~
zW2cv{Ts66$+A8&rHc8fUcGhePDeG8w@8IV%5A$vtUYopb=7RUCS;aFtqpkFWJLL8s
zm^8&i`my@<Zn=D?|Ic5V&km5)UG$Ub-RX!3tHM1Qk5?UBFQXy9=#Fx#edDWjGcVsT
zI4{iWFM6_N&vFml9|p?hH{84{bHDYxwW?1LtoZVB_PVPf2TB?)ay!jG2ySL;L7UmB
zx+SIQMTtbLNNtAK$87!vO>Eu<O)SQc`j{gt!){LC?9;)>sSP~hwh5^^4hb>@O$RfF
zvas{8Ip$?279|=w7}$YoN-iFASKW}(BlC+A6<nR%6`V42GLO#B%vA_U%?524&C1M4
zEy`3VOI7g5tjbL-0rMR7j?U9FR5MTknZV5>3o;?SC=oPnSCW~QnVnc%nV+ZNn_85e
zT9s+2VW0+5$IK%SQwMJBr)4H5mVmaoz?Zy(DrG}s@VT%?29_q^o0vdcV?zknpm8XA
zicr=3=&Su?)<C(|q>#8O?ynN;&Fkvc*L=UymAy3C*>b1%_ru3hI&G)ug){_NTC#h4
z-)&_tYd^DJf2z-!+U2%;-1%n|{OD<wE9sk*EA4P`ChzXjyb~+4XB}uUTz|^>^lNRC
z7yZ+-8E0SR^Ws<)J*lMC`EtX$g&ooBHouBHEjFv%<;22oAsOfH^-tH{745*plOld#
z>*TW!KMJRv<EeaqaiYfR_ys~i2E~$n{SSNC7aiX1_2HGg=!$o$XO_7AkXCxXna_Eb
zj>?XsIx$yde#EBiJv=#1W4XQh$3D5sS^=z!LvNmbZW(-F#=M@8q;9nh-)nnoo*bK(
z<`mlG{(MtJZ`ybE8a=aT0W$WtomGzRZ*#BQTq*NC>WlE3oFDd&BIT#PbF$mHc7;)^
z=XAG!-iG~Ar`MLa%fFns{k{f^(t<1ev5zYKU*)v6?On0#+>>92A8uZE&nEEQY2g~i
z`WC*}z$x>DdA8{-_4#R8V3t4alpc>u=+RTZVwo1-zn0PywV9D?<yJ0t@&E59I%xGR
zbh9#?@l^27ncbdYU4M37NSu|Qn)B@NX}eO-fBnlJbskN>KG#jy&#=r|W%E42)V9_2
z?`5z2*z<f%RLu4$_n6Rgp<9#+qocV$oWHXmG3C|D>ls|h%OCLCFIazh)up=kfeW4m
zYKKk|6%RhWJ&iBT=f}@dp9#-}3XZ!%x?Z4x55%~J-s9VwJTJ@%sf_uhuJ!MX-=!CR
zAqE)BbdeW>VAX+Mp&<=?aDz6|GBGl+np=JG-R}CxwN#~lTY1n6nHvI=Q$K%-WLsh<
zr}-xK;)T^U54a|HRJ`?@!94SyM#4l{1KAzPH7lN(ZvAyRvFzD3cJEV}vo^I<l}~mR
z7oD$iVTQ2K|J@7p{`&c}|2P-3YKAoH0|qy*riP`)-5Ph^T3o*W)b8cK-;s9{Tl_DD
zOcPENw(D=m+&9^MtEuy)sNJ?P?>9TSpS2DZX4}Ad`)~3$s}8Q2`E?J^Ne5@Sq$vk-
zRPTunTJ)FA+`=KT-)q{A3Fbf2j#o@z5Y_8m8)zELz9Ktg-A_LocD1t{tOaK*?aTHq
zy_~Mb*tRVAQi64jbA4#no~cp?H7tGPoi9!NQWV*>GwhH3mbteI=9ESCI0wAzGbr-C
z|KIcbv6bmJbJs8lKC%*1T^_-4IzQNPj)#SNhVjMg$NR68C|)_tI-%<SxoI66MKxoU
zS6@h2DCB?di}+cirziKHa9;aYukYjfM_*?A5|UTAabP)5>(L2ctaYcUZPeN4v-<VM
zOI;^#R|xaVan8-{XPD1)>)<c>sw&PSUe7wTrqA!}{%al|Z*|Thvdw#aA@`OWp9=iv
z8wo$&usr<fty|8gTTDJ_9C?-dMeF^+?6O<G>vp%=TnawqyRYz}>&3sy>Ab?Fzt5+p
zE6rWEf%78ge_50L|CFbjU$XpV%ge^S<+k<W)%h{9+v;9yZZdhx7NY{Lk({74QbuY{
zPHJ9ea(rTPVoGW*h>@2PUzA#$npl*a5uXX&;+UDA2ia?!oEQ&UX@=BuTn(?OSWFF?
zSPTuCm?a@K73#Jt(D-lTRHQ1(J;>0-zzI}Oa0y#`K;5C>2z7@-VqS_u5Y!zCo=EOc
z0M#XWh;37_dW~7woD@?)6GhIB3LxKrYav5JBLg!-V-rhL(C!FOx6r^4$~73Q?j|(G
zwKACDvEH(8eZLZJ=uWl!p`#VzcXnq>;*<#ge%tOR&Yw#=djp>wHow%>;ae%UUFfcJ
zg;&?4XV*Qh@-MN{bTQq*{w+f`^sGhThaMHf*7eONYhRYHe=AizSN!MZxfTKZ%c3eL
zHmo;ax9qav@2zT_b8VvD2OibFKP~pPksQ;l0?#*jJSS$E_kRCqmf)?X(=_iw#b;jr
z<RyUy4}WT_3$fpLwO1l(#)e4q+I{anD+D@4HNT&{D^v7i(%ktoEt?i@FVXA1a+JGT
z|HBEcTeg*4vnI<d)hH^S=saurMc>wzohwWFMI4UbxwpnKC1;D|Y^LN~m6U#$O{%ZX
z#g_0S8^!dtKZO*ujhzOKSjLpOL2Z40&_EI+^32h)iB5lo6TOt@aV*h%dPA5+`JJPx
zfjda89E*d2-2xi})+T1X^dc~oT57=7#G;p)0-^JZ(hXP}A+n9kdLY?GsB9yP9!M6c
zJcb=?ApgG7@nLnI{idEab0;r98FRVbv|TEVC;f%^6%Q~^Z&S^Uy{x3UB4-ir%Gb7R
z(KD@%pE*3sq<%Hu2|t;Kzn<JV%e!yC%D<fF*@t*fu+8)9P1IPH_4nzwq*oF)ehY%<
zZnB#5dg+{rV%vP19`LYwtjzg(=Ev!|o?AXJE&W@-{I*MR={n&y&%?&W``WEby2V}9
ze8eU;|4Xku>zkbZ>oc>^v<kM~jp=Xu?Dx(0XZpICQ~$G1`+cp`Q)?K{tTC(Fzo@wC
zd;h_$vlfbM>NlRx`(EizT6N1_S8+C5n^QZ>P5Mv0I&W`i_qgM6gQx0=>09T{n(4d2
z=7$%<?3BCnExj+QU*7>Pk6>3~C6!hdBo-IPLnfb%uuMN8PPAr?HE3duG-zUWgqAl<
z=uKijq~gZU-%!>-8eH7)h&Vy4QE&{_wX`rcG&43fGKXJy#Ul=rhRh=yL57i>!S{xO
z&Ym_hGq5nWFaVzqYhY*q=NeGkK0*!2>&N51A7sB${@Ypc%a^a2Pu>|Z-d@}$|0I%k
z*Yncmpx3Wt5=A|B%d(&9S-0WNw7IViCroN<(kPx2#`fPk<pYnFx#!lW=Xq-0ee~L0
zY>@i-s($mfy2sDI&Rd=E^YX{JlS;at$V^)k-SBej7sK|&fq#zIEzIu=F26GUV5spV
zI|=>LD{I?4PfuMR!j^M`O}IDu|3fv&$O9_78Vf5YxCCUVOo`vIS@5H#W8z}R)5>O7
z4}LTX5b&%2(l+@`%jLd3-uq)1{n%~qh;&WiTJoy+H+SF*VRngMd>^$hhKSbMJp8^z
z(kVSDuKdBG&^Oy|W{O|6TJQ4K>*%~ERq8cQORujwt@`|aHrH)_-^qR}7M!it`xMET
zwVihddt+U<g|x*puJD<*?-XAw{>meExBHDr-yAI&22t_ejOI%P^CdXW3T9kAnH_ZY
zh+F@it)Fj%7t6hzV#%`q@;!@tTY}$Y$}Flo(*H!dVC|<xKYxE0OG(R|?-{u0k*GvE
zn^*nSoUOi_jUObwj@|ci2EWmDS#KM?D8`_PoS*K$>b=3{ki1Ip$-l$q^F)H|zdSng
zDRJ_}zv<c6gVycOSnc4vAlx*#;zRI{L?`x?W7qR%`&jTMuSr^O*1f2hi}$PI-jY?m
zuZoyGZy%4BO-erg_wK|u#_zu7ZpkyqxOd{3+J@4&>MiUFGZvN^?eNWk&Y)qP8b`D&
zPd1c4NSf62)osq_UEh5U-`lZxttHyhU^cXj10J~uj#vD;YlBsgrOu=cISeP?pHq0x
z_G#L@mrF|OtHl0n|GMqBsI>j+We1941vVDG+vERu?HcA>y+Xb9M;@<Tyq8CC`Ii4)
zo2mr_<d=s#ZaT2;i%#S<cY%)2ih-I2rxM!MyRDXeYZbj=$~~9IjvR{)zLCB5*MHkJ
z_X{H2r=FeKT3ue}C?D5+d|Qv@v<>#t8XfZ!COmra^S4sr&DzbjZu_^ite+sm-!GK4
z{{1_-s&!0WUE<nh|JH<bs_6LJZ`-uouV=-?>Ay9PRmbS=Je{^}`-*6xz}Bstbx9Qk
z|5j!tY?I}y<oSE*l}ba=;pz6D%2zupaUFlXji;qary<+1i{rrSrP=pq3Z3q{8rQ%x
z@qrqLna9yz7J{b#RhxA`Rqem^x9{K5)2=%5M>>MnmGj-4Rd%#bM|Sb9t8a|f9ay#I
z`^75X*H_pdd3;yu+puJQ*15h-n-ab(R=S}4dP-DP=3V~%4&iIEBLi+Op7}8EUoT^&
zy0YlKNpq_?eWRXxdl*DXJmboJ*8kwr?q~OF@)Vm6W?1@enGunebjE8!+~Hs9EE_9D
zOJ<(gw^revT7t~$u)t-DUp-lDzx;pVosUtzIY!FP@7An%_s&a*(<Zj?(7wuFhuSk_
zx&Ovwo?*K%t2Sh&)=5h#$@Sh^&YzQGqaq&ZKbC#6^4bNi3-k70Z{+-V^0*rBni*nY
z3&7>FHng2sT#}er5}%S<6rY!xl3J9Ln3s~87oS>&rGWknZxFJU7&NgK7&I|QKniFU
zh8fd((UO`$1acYe1KZ-j#UmOFvQi->wMfAaVWpv_fjX!RXXXJNk&#$}F0bGkhE`e|
z8CVz^8d@5GS5AX=rGdBxMix;tw3$%3{rGrY=T8-Ht4qesraGB#?r<)79JoSNyK)DI
z?SqNCT3U~_E;;q=q+alnlPYq5L(>Xlb&e)vux!71C`iqsW63pZhh>M(+Mk^<d2@(J
z#I(?>0sq?8E=jJBY5&&uOnp+i_#`G~ojcdkO5Wa0|9>#CH`$+mcCNUA+WXa)<OLS|
zJX$Z7*~skvRxYErXrb>WwPU+-;&ZR9zqnDjZ{^z0ahauR5_XQ-iuLchW7*l}Iv>&G
z(*C1m*LK>b+3M#>-djg!KH5{^Xk7Mizkck~B{KqeMDITMHK*Pp<HDw8Rm(3L?yc*J
zP<P(E%Xs4D<ugQMW<9&iUwZS8<BaKct5k3IPtw~^%@hAId8PT!*`=928fvPyu6`0K
za1DKYzc|kPt76WCKGUd^mz7^%KCrK1jgv-1+ETaN0;cN%KfOc##I||0pRYgVx<)W+
zt3qI}euw*X%LC_k9dKfFnCYR&oxS|h-)UDb?sJ>#`G9-b0wq6-3kPis_7wE%l%Bb8
zv?tKob_z#|T4L?a!>Roua}+PE`YT?<+`o5r&$GDTc{}I6Z`%EE&!Zy8XvHa)UCpOl
zyw7PF`&@a|EZI}JE4bQPyPEbnv0wXS(Nuh^J^HE5<#~3?t>=AV-u&}pt#Ap`|J@6p
z{$i+<S(fJ55t9(UOpo)(uD`R+FPC>Xy!%WPSE#qOMOomE<nER!V$Z@pL)xWI1`e1#
zeDn@Hq8$IXnqk6>c`AQao{{SMt-fQwLEZ{$w9Eu9x6haB<c00?+q|uXVajUvlf0M8
zj<?O1Wxu>_%WjT}^_iErJ?|MGU9<L32U9KEc2lN<2`Bd-c`@bQmCGxIRipmpEm~L0
zdZ+et&WE~Xz3*;bKNlhXVx{J~VvqLcvrpw|E=-A+6#l-BP2hjvvDv<%s{WH_3NQwj
zeiS};e3_%;rTraC>s|k>*|Bu1F;CNx-|XMAo~pLQvz<EFW+`|(;%vFK&LJQExLJ=s
zthP&(4p2FC;LAtJ4}zN8mP#<qzMkw;(Br<C**RustlI+K{Qr@C`|i#!IvlNizbE?K
zQy#aRNt?J9`-C`2hzd#Uz4d2TN#6g1+ZLqUSQ#I>ZhlNw*|ZzQ>FvLL>to(!o+=jj
z-L>-XyuD@?o}TSr_(VRuY~NwO+`lTSuky;|C%ZF(TGr&e{5+!|w8-eE$!cxSt!EXI
zo>*0-C$FA%CwJZSH-F}rg>~qqosZsja><74th*kn>rdXTrnPAD2I<dz`(zy!?=<VT
zYm$<R>v$FLBl1zRn<n>TmzalBw`ES4C6YgVUE}$T_cLeh+xq-r{f}S5?qWV?aycBH
zcUR;GG`R%Wr?GXdc5Vst;#bgZ<NJE)_NA&W@3Tu^_<f91Q)P@)UQl=GTb*L~b@e@>
z;XX^;4nAm><MHv8_h*xQ^mD}*tEPpUDxE8@t<A4epTNB2l}fw)&Am5Yeu@w9lzI2&
zI%EPEwhgTi{h%;I)YI!PAPVaggC^DlgC=GVNMS8f5fQJqR!7qNu{pb`iLl1jX;)Gw
zqop?k52V5y|FK?jklSOJg+(z=Mlw`zHwJgXL49!}Lvtf@6VOF3CdgbW+C->uUa&7f
zpzr0U9EU9|b6R&Ap1Py^L~tdGjdbY2=Me_7Dq9Y}Z@t%}^YEbU{ibLBYu(#(-b8yI
z^t!sc|4sXv`leZJZ)}-o1~FbToww%Jhv1WGHdod#G2T+SY`ucXZT%9N$3KcA%C>*w
zo4~vE!}&A6ejf9AdbrJit5>|v^!3sEyZPoE=xu-8VbPlY%kKE<2f}k$C1#wT{B`4`
zEq|0RpTBxU-Sfdbo7o(TyJNK!AN;Xg6@06<?z|Ld@Sa#!mh%g}`n$`Tco+V-bX=r7
zdV(2y<7_*&UqNxnN0%}DTlz9cI%w-8%OYmZq`eyw#PXKiRXxO<cK0*OMTbXz-ECj;
zpEfU0Z;4|$_;tcw1KT6-S7h$7n7w4lw2Mi%G7m6LTX*_MpvfzqRsR+HBKy5!o+Qp%
ze(9xFMQ@<3mFT-gk$o#;?j8L(LFs9SYvJ9AGjpou+uF{kiTk!sEMr03I&S4ZQT(fv
z%5+aI6p(##*+qFm$NXbj&#r%+wK+mg-=LF2I%Lt-8Om=s%4Md;CSE+<IVXOR*Th-x
z6<2wRaje*zs9|`rWNquWn@2ZxUwkTH<Qw0uU}fVeZ`>Nmd;2tJsdHxW@9e_b5BHDw
z)E--`cVcSg>EcCwe!eQd<DRhWE0SKOuIm{!v+8;br^5F7DLef?^2)?@I7tg`e?IZ{
zyqqst_j}l8Ft0tM@qVfM=U}o5=f%^neU4is@Nl*3d>io;n|F)_bIzb;7I5J#@hiIY
zk6qRA`10eY?w^l8EOf*n_KMM}9a-0}ii*0;P+t0MLbSw8pT}#R7B?B1b)0?q`v}W4
zk8Z}}y^QChjoGHTrIpC~zdg8Z=N8_?Gs$(=^~!su$!IBOWVeQw6&MTud+5JRxm@Cx
zRL_gOsVC3de>o|B=k@VD2UzrU-Sjil4omm{dt-O`)Rg^YT&lb)tC?h0Ua*emKG0}o
zoAPk~a$Uc@zDI6o9#fLIaCA)(Q<MEFt3_5y(+%%(Bp)sn*_oiB8=dh$Y-L)La^Tn3
z!8Z(NSHIjo*ZXyc*!iEa7G0hO{ck_Mmi$sKWhmjB9+IP<pZfE*?Hk26abLc4pGrs#
zxmcL;<>#`+jmBoig&&qw#QUvnR=j88+4~}L&D>9AQD&cnzpQ`2c|1`o=lg@X>vp$!
zY2@p@+fsRUg7M+aWxu|D$eGJH;n%zg-{usZcfWO5{)wqV@TZWA_Y<3!F+EbXxYuf=
z8&^CbDAwu7Ia}|CKP6jauPzEW<M`WA<nZ2WC!-c8r!h6`Wwo+)pYw)6&F5=J;QkfL
z^%CqGxZifGEljzb==C~g{=LoX)0sER-_4E9%*b3FXZ5BgbI)<>R=;_oJGY4XAD&tj
zas6b@%bcB`HIw7E=zP$%eH)efU}dz!A&;4jx%1@Nv}}a7bo0+%r1D`|@3pE2-rG{9
zB~NWR<aJg?Po>>B;pt&;qZ()7Y>Zks-^N`y>wTTgq_O;V)&HxDSH9cJyx_c0mMmI&
zqfU`&j8Zs*P69CojgLYKXDFA7HW4bEH=pJcNbh?kGJUy`7FU>AeTL8R&G}Z!A`|~h
z)-OG^=H2G9xm7Q_rB`Pg-u}fM?6dypQmIOtE}#Ev?yKJOyV+#K?Q-wb?VdG@^Te91
zm!)_cb^aC;v#5LR{OEFt*P$e?Vy?TMo5L?{;A)*)XmfAz=>tZe87&o@rA;peZ{GOs
z=;X{MJF%@AZVT_d>g0Uuyo1%PtL<x~`#$M>Mn!?0e^*}8I3-}oc}m#q{G7FG9ZD*-
zne0ve|5C`Tz5Fim>#ohu4KA1~w-qJ2YI;Ow<d-kgYuv}~o4@|t5m(`fA_Z*y^7DVR
zXKv(sf4EZ;G<5T)DyQqtHD>O4YP*E)UJ0>Wt+v?sRcYfb-Lw4uPna*h7o9GhJ>e+R
zgvn`4iW}YUb<gr@*csZtb&>voYsTrf>W(bm!s7DU{r9too!@yrRBLZMP@s9(AxYQT
zBlC{3jmPV1&dQa!w^kU;INwmj+_5a$ZCz1i4F|Jg>bmU@WtMK#T4Z=Hjph4+k{5;d
z{@X^LnWiSx-8wZ~YISxgw~MWyhD~+i_DB8c{!ic7_#`xBhFi!nM)!ukIDY@YnQ~<l
z&(fN2GX!7j-h1n)C&J29|KOj(Yt!d~Yn0A~+ul2AkSoC4diLZ09<i+lH`#UMB-Bsv
zpZfiq?pj7mc9vhI4Ym6{1Kz$rd89_>bwl0lZ5Qqe|2uhk&h<^xSCUmY9}~Z@XT>Wf
z=TFjXGh?+UDD1pG=LuS70T<3Di8sTx3blv&-d${J=(c+ad(ocw#H1HXe{-8}wAr@#
zm*(7hrmss*u9&>Ns!$`dzxZL$gj-klSv}oemKD~Zct7^pORITL?Y=F_Jg&vHLBjox
zLP2fNV!OzigS$?i5OqjARdlUj&86)hWS+EXemM6&Bl*Hsg)Y&=S#@nQwwydv_WR5(
z1F<uU6OWY$Kh1u>So9V1KjH3_CzlUideQRR^P+%nW!mdif4}q^$`y#Ly>l;J*r!o6
zanJUf6Uz%F8xwYah*-LH4)^zdrBL+)-i*1{GkLGb&Q4C(zwnOtRN9^?{>#?B{qrt)
zO}Krk>iJD={TDd??<f<=yZ2Q6&FYG+!8^CvzfkyjX~n)ow^QvsEuVjWT#zwaNv=_C
zwgAh-!UJsbcNSdU8MgfK4Bh(Xx%Ydt=NR=FP5HoRqog(8`H<e>8J6r8)qmm`oa8?n
zsZ}<&e0%!gV4%<eZaEfZo{*(J`kqI<E^f<9;LZM%-QB8^vb~dUwW@ox&G|ady~kg2
z9lQ0tj!&H9vd8obg_Az;TiTgq$<*HXq_l2#<`?5F%RE9a^7E;^c(aXLcX_Mn*}st|
z=3hK(7o};k)3)W@#?&j36DNk1DjqDK_p|C@!raSiStP#HypEgPAMB;1`NKoo&bMt%
zbp2_znUM)MB2uUJx?KETU#DJQyRP9YyU#YeIfWrJS-k&7{G9OxTsXt-1}M(YO9d^}
zfF9KiUN(t*;11slc<IcnV$j5_V9><G0ckojq7=oTi7(_0sBWIHr5RkpY{6h#3?&W3
z!J`_&0uTWO@W``~0%XkDzz}o<w}H8lC3xAQ5i-|+0;35{A59SVGM#(s1MjrsF2BUg
z|9I@(Ti>8-YW*;OMf%G9%rd?``9|(n9W#~)vm7+#nbqR_Cr0*v=jIpU5@#pI|L%PJ
zYQJA>jkMb3(#p5bS{{c#U8{NIi<QRnrPVEFnVbK{mF-=uJM;1cKV^+tiR6zV)@pOh
zqNh7;`oHdj-<!LZQ~jFR>YsZ$oH)w3DI_XQ*7ncOmo{AU8g~?YVC;UP98z;)-H!=!
z4AY9Pgq%-Q-t+4BT&AfPx9u#n%H*);-}2Duc*j@!87r3Wl6g>A_&y@MF`z0YyTpyJ
znR&+Hz7=_&%8c^Vn-3L#z9aEs%j8$3F4-&z3WeeAb3gA}FhSY2OXcA$#oLD=g^jU+
zA!avS5Humg$HK+J;k95@M9bwk8`OhWdD*~6Tz%(dWQ5K0M4fB@DOMyJ?k#(B_VYz*
z25%;(-@m4N$z=U^i>2pQi|t&kUt@ZD%?17~KH7g8-e>nrj5jO$etWaD<f|{61pg)$
zy6o53Y$dyYv-6Aj`|lWX6mFQ?d(Fh%Xu`2nmG29@YFLW<E%U{Dini|cK2i0fy7{n%
z-yF_Y>Gqq_S)>n(-1_m{Q)S`>*{olQmhZElE0(gc-w@iOs8HZk*m%okmf5~#(Y#qX
zv*agM|NQyhX_uehyfZw#Q|{b!ofG%QDIj^>m)Ij4h3=fPUZFQvB#O0k`<v^@k9L`E
zW8s+i;?~?b-_o{9tl?S~qGn=zN&4WGdMT?u?o~#4xBvL7&cA7Nd|Fh&n)^QB+$9Jd
zPfShLO-xSKD@e^{U|=k8dc{`+&rPgR22HGC22Ct>klZBjPTThN6~%iZE0Wf*e7<`G
zWvd}5b2WZO>V>)n8$yrY<PtV=Oi#^A&P-HrPAo~xNz6-BNJ$0H9)quSOU}$!(D3tg
zQwY=ruL?Fd)AiJZEnVUkmIs~KnVMOw5Kx+wlbKwMuGi4iz!;QgxrKGYQqxmQ6*5Xn
z3W}}t^&zX9OF&yHz-RrHr4}U?6{Y4VXe4VI7$a%(0!b8>W+sA;_RB0uEWxk?=J3>F
zSdqaj%;xH>>*(wZ>M$FClBT(lF=(F?=w?*V+?2VIk*TGrWt73l3>88}+GeHW{*R_R
zP3>@RcK9YM{<*nWMK193jIP6zcKmmkz*^9raFSu=)+woyN}}S2oO9A#X7RGvS>`YG
zu3DA6y~}0p&E$zKX%95`cR4-I>-#REJ~{K<M83uGd>db<Eh_RC5^hVavb*ii{$)95
z!YwPOna4NPZx)*>bNr{t)+w!5XT~k?SWx#|JaxyS(j9W2pE}j9fBU)1BPF&;Wb%yz
zPyTNXDEd_PZF8(sK;?xgcG)}(`)*|O`DwkeyL6^$kwmJoaQVDhu~Nb}4&SytF}><t
z!Q17}YHk;v*PW7dKlj>Ki+%P>Te&26thm8h>Qr##)%(+YCrnldDb3*7Av|T9_nQwF
zCOlV%6lsl*4H_Rn*8d8!h#8193Z;TpfFwI4C&JS$W|@b3XmY{fZkJW&OI`O*Z-~11
zv0~Bem$AJD^`IhBfu+Kr%%Fq~axTr+3Pxr|E`wA99i%0-1T&6-DO@#^fu@u?k=YHo
zg$FBx7kETBF@E#)*kKuJI;Wv3c;?lp{~HUf&scI!iMw{|{XWL%*voP^{?_`RUEuh@
zWb*#gkJ{##Pnr-WbLX`t>(e9ij+@@^;yHU%(fQ@7j;E#vB%P9@nBtarNLaPz-<i9|
ze(s!u?K`RxIbN1?*B7j=x_fiFPKsRX{yinr79Oq=dcz}?*UV${qR4IjZ;z{S)1Pfz
z_~XfYH`OU~I&WuM?0XZ#7j`@~@M%Ct$9|`)+O|)B?wY5!`P7%<Nle`Pe9~Sk{M&hY
z>&*IR+k}6e^7g&?F4&FD`k3F^$x)4UIa=OXtgbzu6qguIXwONVGk0miRI8x+uNPNy
z<b8e@{j<ZiZbyC|^Ajg<8SD-%gUeEjKzGFDK_}ad;|stgU3@`NW^Q6pC9YMfpmUc^
z5G6Oi7QEzU?l5R#ZZT+L=7N^o`VIe-d-#<2J<^3VCbqBHY{13Fq1EPb&X$Fl*`V<h
zQn4Kx3_AgbOPDV#wI~yGMh^6-Q+aSoW#JYUgGnerHiP@6mXzlgWgA)<SU^f*L+D|t
z<_a*C5F-?H72NWR6cS5IGV+Tut5Q=GN{dq!^7C>k4P6bKL3){mZD3j;Z7&65Xu+>Q
z#C@42;L_OK(9pmXR2CZ;fJ$Qv14Ba#_)hcT<XIdS(Jl|GstLN4GMi5~=0@C_Nw)tO
zpGkVziZFZsN>Eq0+1#1=E9BTLiMUX$lzVL7dcCaI3fQFDPUv9id|;5cd0i~y^6Gmv
zoA#YbO=M_WcdNhpLg!jv*~nRr8~3<3+?khj_~+urO$LqY371Q`u;PM|hb7S<eqro_
zXoE<DaDz}W&dl7z^i=)y%rpZ<19{L9f7*P^Oj0Z&{ZB7TwXNyx%RYR*A?u2Vgif`j
zo`I^EGN?|s($~+)PtVtbWf$;%rLtnM7|0~V49#Y-iGSZM%X_j_&$GY1qOsx4(~Vn^
zlRR?<gFz~jL7F0ugjzzBMRl0dgXMqBS^_63=#=?7+a8f^QNFO|T8$~&xwDyjC-C0R
z@o<vmTjj)L$S}v&!&2EYLP}I9GHc%ZtC5>zgLGyVo;|L4Us@}%y71z?&j+6JT6wL~
zU4ElY>#m*vIG<ag=kwCM%(B#?;=~;2tS$Ty^341^#09rVSz8~TwORHWG_mY7XkuOn
z&Dsu9M^Y3w3oA17?S3L8brhw?173~3mu9)!g81BR0lpoag;`i1p1VU~fdHK+Mh*nT
zqC#+n#(M$o5ceOUhSKpw^SF(SCbyHWi_ZQZ5!Iutd@Z4G;`IqLnya2gNLut9{q{7a
zb<3i{-*5Nsymi)>Vao~K;-$wk3#ZCk+H7)RpYww6m#^0m#rv9x{YFZOO-I}1^LlFH
z#S{WvE*AKQzj`e5_)O)yh#P!|HoHzfp!0l|xOO#zd6lDa#Y5vqp9Q4q+jaJR`}*DK
z(bN6yNuBWw-uI8*eNyUT<Y*;Vn3s8)yVQ;2;;Bp8Q!kwVz0)B(r6=6?kFa26%iFk+
zZzl6O7(WZBvWa`$`Y2nKmOUdOZOP5|m-L!Get6IM%H^bJ)+6RT<I8L2hcX=h#*sB;
zXZ)Q9#vfY}enzVcZuukjX?IvwgK96dp)|-#oNeX5GCkbq2Mb+2^orf6jQ!$tcJ%uQ
z!JA^ee*D<L{7fgk`pJ~?<TH6bKWq7T@0{3ay0gGP`IpMCoaP?)xz@>_XZ<WQnmTb~
z`JOei_HBG(sCcY#YFHHC#zR*&E{k0AG5PckAKAzWUhgM}X~;*d6ZqX2V8N4f=A-T5
zugQ-$KUO@cV)^o~Xqwv>X~7G=#fxj*e%iiW5ubGBqy3KuCE?l<a~roD(YQ5b`qF~e
zYh?Ga3x2qI`|i`84_A#gG(QV})W3h<!d3fiWw&0jcy)b4jFo?uegA>9oa9w6Z!Qu0
z(s*&I2w&~lsU|ls^%oR3R?n&1J0tOiYx|4|M_;!Y95dbj;s4>#j%M%otdrOZKkb+?
zdHb8QO^F{Zp7~Fop%v8&E)NZ$<zZ=YY7zKk&iJBYBKG3&tHVn{)<*_StoIC>n2$kA
zLB_wi27eZx3S1$*Cxy?H8Rbf3(7|Jk9jK+CumNb`fQ3Vt%P+ND!7H_>IJMGH!~nEA
zkA+>B8zP|KoLN!{UkD>C8j_K!5E|?n6cQ8~9HIbg^ynGrKpHNpV7a2w;u3|RU`Is%
z7Ryc>0|O)EdnHg?D1*nTgeCzRgi^)L_zvIZ*nDA4IB(h8v+9?9)&?{uK3b*V%c+~f
zdFNc`{4=&I-+ViN@Xp7}8?RNHYY1w)-?BWm$4YWb{Ib2Za~CH&Z7ch<(pr1sk4O0z
z-iRqo;Iw=6qU5B+mWfxAQf}8TX8YJ7ku^cdX3sz25A7n=-=4_#U3n6COfcPzBk**a
zNQnI&<9~HIbN-9XmDn5DXS!^8+KHm{+lpx$ugtDsJ`iB_;>?FTd*=E4ThBVpR6aav
z`~P!4ZMW-e`xbKd#B(7l-*rA++hb;J*{)!Fs$R)tU7dAC8l%f|MnAXU*~SUqr|b(h
zpHS@l+30Za``fGjmH1^I&+bW>eDBC{p8F4t)}5Jb9au3nz5AVQ*gu{Nnf%iHpH<be
zjdQ=}x&JD5ep<)3G;O11jZsT-Xy*~$gOfuHB!$;pt~Fo&I@T)3H0HMBb)j1;J-P4S
zXz1dcoYc29?YwHo*_Is}?Uz{c-(;HiTF7T=&F5^^m2qOtXLh7NdLcabOmx#_pUrQh
z|KEFByhhntmtntYXbGq14bKRv`blQb0w?i(R;!iq72k96jkDT?{f_YtD_vZ^%zPf+
zJ}*E%JY<F4-;!kgjRC2g&mx@koTYrWd{A|d{KX<S`HGsGS3u*Yd;2Q3|4A2pcrv_2
zjz9U@%cNb`;zRXb#T?V%U{ST)!Kc0Qlh1S+c6;8SuW#S$H$k_yf|k!9+Frqx`=eHA
zdz}wycz9#>fw`YHF{hozSmnqM>XL$Y!9veDKpLjwfo_k9xl+S>{ySr><IGf^;-f+H
zPyaYSldWF*mb2*mc}$_<(?mW7*{HWq(ReFw#b~~$>`!pOftK0Fvi)}TDEcqz3r(8%
zIaBn;o{q;yR&oD*zv88Ls1}<-ZfJ$3<hyu-7;hE9(Elp4^5V3#-*NlSum8?yF-2sm
zGdt(+gq81PRtxnkm=(8tMpk5Qw>`)26Bk|AONgdS5aKV^&^!7_#qUqVn-5=H|0!*L
zt>1U)rfVYW!Rh%c%8L5Cd(77F=Vd)t*!yf*zI@KI!la`&E;JYMd`uVY<e4MvQ)F^~
z&(*^Fs|xQv+?ms3BNUr@Yj3#FHs|dBPw)Ar2?m~@x$celwiksHd+vGuyK7pwNK}1_
z%=yH}YP<6nr>iQ)KD#T+t(PHf-L(Eqb9(EQ8G$7mcg}3+{9j)o8B^(%pf|~3osYSe
z&dK9RC-`E&n?;{`psLEa<*pR_oN@;H3wN%*vAyzZxBZ#cYx(snb?@(F`u=tLtgWWE
z4ySKu_gbkjPr2`ZjC%IN4gR0m-!bT2iEKX|<T&-!7x(M$QXE5TdLx;p-c6c&Xy>~q
zjgpq7v$sz;&clBHYo}R>(KU^O8#Zu1nB#L;=GvdfnOoi68ub@7t-hS>QgEdAzpnAF
zwf)sw3p&=>NuGDmxbf%2gx#?-mA(c&i#RIZVd(s>L-zWyJ{#vO+2s=VYHh_nCjC4$
zVZ~o?RRLR$o}QWysVNXmXV4B9L=%~BBBF9AFlb`UF=%2Afm9BtXQF`yD&0{l12F>;
zPzlZ@%<G<-59!f*<|XSHDj3Lt#F>S~;o_n2Mk{#BikvvFfr){!feEC)2|6*w5{YX-
zHH(^<l#qu}z_;r%@iQ1SF>x_9F)=c14hcGV((cpEI~#+gA~m0HJnX9R^!mlOM~`|h
zTvbvXzTQji&yBBf%kv~}m+<(TMjLT6KED0Bs@(L|s;CFoUMvis@?pZ_lCUW*2F!9X
ze%h^SB~4X4Wef6s&pGNY5M>jI-|lp_x<4Y(<c=1{Prbv8%amMXeAt_wMW4IiRl{;w
zvRM7Ysu}fq>-}E0%c+!S#cq2M?YisE;f1XEVSW7qYD+y2>s@zjS9;*zb}C`(tA)u2
z7^e$V?q#qM%GDO#xW;?qJBgis)9&0U`)|GPd_41kKh`hyxk>-O<!~tI`@hFl-?Pe1
zFWl;V9Vd}xcwBCmjkLzK?2u!tqOUK~k(NBOi0Rwx$i3#-ZCi7jcHMY&GHlOEvxvWT
zlAqu5sI8oA@x%XMtP<OW>8~EHJr??)QCp+g>erWQ#XyFAK^EuErd6)^(iryWLNlj(
zV01v%`P&{+v3B22e@p$I^Kt4ACTpXxCd;bmz51Qf`xkC`@xQ*e=RWht1iuJDpVy1+
z1+<%IF&5vPlH0<dp0?&gfdi-0q_zH&c@sGURc=hW$~`4<Q~Rd3|7V&0Zw)#1*2Q^^
zw2fG{hZmQOLx=pNL);9k|395z@>;TL<(Zk&=IBQ}sC~F^H~XD<mZBI#lf!S~bsyNK
zOi+4u@y!msyOHZ|E;QdCVtS|8$iIh0&Un*Fw~sesPJ{-W%-FkPml-Fdl?>X+h*7j6
zisrJ<p$~s8G5h^teoRu~TbnQL76RHRM>b(qfI8aPhMWw+qj^k>3~2|CDSy8CKrb);
z#rbs`HmLe)|FDjj?Vw^Fb$Yd!=l{*6mBtJ8a|^^xCjLvW>wh!*X<XCFP<j13R|46E
z{;d(S(=k1k{O69qYu?4HF4Ua4ctJl<?}$j$y%&-X?T(#UqWN5}Wfhx2MOjF(#*9dd
z2MoMPmz`=A=dZK1>bd%>oL53yj4$5o;UBH71}f(tB=b~9Nd23+%SmYC#4j}&k50T;
zuk-3;-MZacw!ETuOr~y=C|Qxke|*aq;UiC?-*R1AGTle(t$vPBr|n1ef>l|}L5lMo
zR-^}f`Wz*H|Gx6KI~9J<X84C%1wVfO>C61%H8&#GYbs6O@nG*ny$xk=!UfO2*L3;(
zvb8E9`AMvCr}$07RkyBvmM|?k->$8ntlSdY(qkXKpySWXi5hB|Gq3bdciGo>)nnrl
z4b6|DTOK~0clSsCvV67coHkZ6f_%$z%)hU7Y1h#>exsym^M!n`@ZF}G>I=GGC@ybL
zF^fHOLu}3QP3jJlLM=3U1M}{RqzC5|#;CRUmPT!>O9)%(yY}~Nx#^#IZ(f=nQhv);
zX!`@X_Z)0%ezvy1Ty$rBorF;H-!O4Uy{no{wKKmMek)vgUWZYADeKNvn>_rq-p`*L
z6gbr;sJJi8N8I56r^b`+ERW#ZZ_b8>emwT$<su!QWf#@r>()p4+>&4RNk*q`9h2Cl
zunYR(!R{|6fs1O`Q8&r?x%nyixCSkeO6&l5iOr&D(8MBZ(8SCNDX|6o8g;vxQXg<L
zy|XiAa(ilvmgo!`8<9$IcPH4vG#tW0?nSAIC8<RUzKMCs8L7o3sYQm+i`m$P*@F{v
z((;Q^45bV}XSK6%2@5*=`}({1D>yqU_+;j0mZYW_s>6@5fyv<+m@qR$ZpRy08X6(p
z4>t(hNN8~3f<t$A(c_8I-vbXyhp^1JymJ4+XI-(@?Z0<-oa240Z_hUE!y?Uqnd@#_
zFAU#M5?FZlt<ywb$A2qN+{kJxciA18Ha#G2%N3mhm-DyGr#fZY7#u0w9P~lacj1j)
zmNhc-7OTwt)GRh*l~|4QY|-fL>r5v8yON|P;Wo?u^}(MXCxpLVQ^nhTyT~9b?dk)!
z#RYdVZvJQS=q$gt_2uvMT*sGtEcY7SOk(=DafNN3`J6}kk1j7#>pr$4)VbrKvfa{4
zDwbL9s~N5=+`LltAFus#*<F_d4{|TLwZ`IoXn+c9s@r4}f8E}-$F3+!Ug|r=npntQ
z?EbV%QfM!W?>WCYOFh=?R{IVqHXHj48oR+`+p>HtVk{!u5l_31`G}e?aad`vQgNTV
zSyb46!cACDP@7hs1=Je0TVS)ms?7pAXqjA;0~)H#PsvYC1Tpj>2@AA)7Ciq6>L0=n
zV$e%2%0Wx*;DH0X8S`d;lYV*Ka(l%(*&+$g%k58`n_k<WT=jLu*7u<`ib1JAukt?3
z`C`{Ixp<-;(-A-R!u$jM7Kt1y<QlmS=qu<uc2B(H;kxJJv3tA9vW-tL=o-5DynR0R
ze8-gk#s|V)sI;l=xM5*&Un~2r(3#`*?&3a+4zW$+ymtGay^WjW{fI|l{5IAHWhR^6
zv<O=B?!+5C1HUPzTU6w|D>83=VzM|hHE8mO0@cVl3h77Q{p=1;{4%Mm*1n}Tbo+~^
zYp#C$DjBvc>h}bh^^;#emAR5WJ(h)UA9wRI@#dWdLJN)>i?Z(I{e7IZ?C}k+-ajVd
zi;pR4>@#pRlsjIrFCx)mjrAkORB#bv4jnkiOD)OCPtJ}{EK1C)jJHh&FAYi0&q=Y3
zPdhrXBr)&suHwUMOUe!}%&SByaE>7g97%&F7EyyHroWH^ht1Pb=LrMK!SLX*)8$CT
zj7KQ!%sh4;4yV$T#Ddh~5<}S0nLIpxsU<%7$=M3tX(f7w<_4yqrXx3xUI>b7vNID?
z4sXs@&_IcO1<({X=$1`Q*sL@&j}FW{N028KG{6f{6x{Q3QZyCZ&^-wmB{eiMG&D3d
zurM+NHAF4I`=}vYgT^7_6GBDS5tX>&ecrhuhZlZ%JbgmmB?DJEn|J9qQyxfl)t@pr
z)%;lD;Nve=m#4%_)kNp+H}G#!|2ALVbI-AvToXR=f30_JF;5Qcu3B2~rz+xX-|V-C
z-EvwAVsCwBoS^*2&tPTUL-pk6Z&Pd*>^Nzh{7-Dc{|!6-USDzGz!YchZC4|g%?rDr
zB41Fs{<dWZZ))jHQO7Ba>*L;h>;3qDZOT7|S=VD;|63-{k+QhEEOf1$wMK$oyXuQo
z>*bH7xG8KesJFT2aeG?ucFXc7Qjd;{wUkYd*555D+WI52_3O;#D?gbmU%71=^Pl`S
z+mM<vmf6`q9by?wj_b`Vo%^(dd6n-E=1Wdx2c(&p8CG;Jb~SJY4^}}A3xpjd#ez{v
zAsT;Yex*<Tux-bMr3d6b2mkE}zTbR(8gfAcK9z!zkzsZHI~lQ+b8G?`790@dU|l}*
zSw3S&NMhc{of2!k*8XdBP@bayyR=4M!#hc(v5EU@;zyah9f=mN8-FD&w2n%;JSFwW
z!)LioKlD`#HYutdEDDtG(K*~Q;c!&{uJd1(r!IXx<Kl1DO>U*4%31lX$p#G{uFjL!
zlsS~MAs{k#LbUY?UW4=dYwOQ_oZGzjq+6cCvY&~8yA<`S_bnAoUU+3{`^R}ZKX-n%
zZQZfs_P(t<HGkeRXJzo5!rbEWe802d`O<FHi(i(de4X@dHS25JmrJ?Ll5U-0i#O}u
z7H7Ca>v!C@!uu|2^Nu{@ow!A>bZSFjmbbyO4M__pf1G{e+>zu``$+eV;DW{!TF^kR
zio`oj6R#Venv8s-P!+tGVft&(#PrjkiKzin%<wWS>#o#fU|?VfxG?c2@{E*0<9?)~
z2G3QN&=Y;Y%VJW&2lzqV2wvinlbW8Gqg#?%lv`|QX<!a6f`knqld*<Ipye%~;Ys*h
zY#NTaSYrc2kXB}4En@DpRM1s$bv6VQL54<#MurxKrbed5;4{9>AzV`scNq8($8>9p
z@W~6iaviH5<y?3j8lT1_rSc`ZGt>R?jzhH{KQSGhzu;T+)owP)HveFOTy_=pg$sUM
zb(c)^sXaAW{Z$Fi`}}E~|B~Mn#G0*5FJE_ZZcV6*)uQA;`LB<YuB>!tw>zV-7}TUd
z?S-*nPQD^?`u61KQg?e_ax4pNUh*I-z%f<O$rCxPF{d*aq%avIR^E8(<bGdfUGPlt
zZTT{_5BCdBxyam6`lPpWNmsesz1+n2OkaO*y?^GP-~WFrpDkxHh@N@9)tqf>HOJrA
z>fK&bem?xQyibkeMa`s)+~OPgYHJjkcFf$a<`}J-u<n9~)H^nCR#Js#rIggtlH%ly
z)OgSd_u2Wm&^(nGk9@mGBs}XdFE(gmo^Q~^)DFoyjB3b*6=)Er5GljBxEjhBNP*HU
zm$0x4)Fy?H)ST4p{9FY`cSFR|1;jb^kdYqfLH5c9iXiRG!crL8K?jt8dI;b<NGvT4
z%nd9-HLU??aRDfo8CZfA7Z?~s84Q4v2vwJ>xfh#0=++e3DAKy#M&OBMzG<x2y1TCu
zd#8GS$xm4<m5{b%rGrw-%_~cvR!rv0U|hS?H^%DR<sB=W9PXcAysIfPYm)RDnOV0u
zv{luAW-7aXeDGSQYW7!QrVDi@HHYTeFhs8YdW+|)k&X76fLqrN-)o+7Y6Z_sBR&p~
zu;{Gcw;o1BFnY!pIogP_G4{o-UA1HKmb3F-FMpAx8)S0Z>U~UU;H}%A4S&8XoMCh%
zMAU`n=j_n8Ywt^NELhyu<@qj{wO`Wb>b;1{*_X0poK_#by8L_w|FkC$6K9kqo|ss3
z&5q&G#DMmPbGe?aoqkF7m{slRJ-3)muJ%PUe$8UvF19Vts~*zA2jw6{1~EKbDZT4!
z@OAMAomINxIb55y=NdyZ6bq~>WyPpUk%p+j;~tER3{z4f*IK4L*L*GfFY0i&aQF!p
zl@BH52NE8q|9;uIta<;mrkcDfhi%`_YslNJxn)MxM(dE*mg4SpQhnTi<P9SYSvH*$
z|EzO7$t?7d(v8m0Ei*h;rTn@kV|K%(A}UJRDt!9aDg*y@^Rs-swfhz@Kel_Y^2(*^
zOPg0bDzaHS?|(z&li99YzFBWLYbiOy=;<rP#0gIf75hv!e%CkkY8ANkyvtm1Uu5!w
zPput>!B;{=S_>+_=&_Znm+H&!==%BZ=&l=PPnzF6Pu;#hIqI|9`o<~dR~&n;DPNO2
z|20F}C3#WQuH~kY3!fIS&gN4NpE-pqcb8?dM%$#%5-m4=Up&tmmJ$xm;5yI@UQ(W%
z2+h>UJ!Y)y8I%$EyxyP*bnzZjGBlqvqUZB?q<kI{4m+2Yi-$AB(KFo9PuJNI*2CxK
zVTa~bLoEXhaCYWV3<-C3BxZ$yg^`7Uxsi!6=r9q;g?xslkOiDHcL1S0yrHgW#}ei#
z&z9fgw3z56=+M5rCNf2&daIzo-GBS99@riBs8#igX%YXA;0ulqT^J8-kvVMWB<9{~
ztW>s%E1&<VYJh)h+rIrX^aRr7_6f4Ku}(M=d7-94U_(R9_J_x{OHbF#U$^z*TxIj*
z<#(JG=}uyi4meo7!%q5S7)!T)(CoD<!(JZzzjkFryTP``@6%oXNQPT$=Ra}(GSl^+
z?8hI|7k9{-%f$3QC{vvk@MA&9f0qem%9o6e9bV10|IhFJpV!t-N@9xEyllF7@+{|+
zgxF2LjQ(4*toL=u`g#2Ed*#2`r=Rk7TkyW)`ty%}#(V?AyE#FrKf4?EDLs^lVBR%R
zx)XY5A1Du#Pzz>RM631Q>yG;5Ulr0UDe;)YblEPnqy_F++gvTTy>-8HS33_!NR~pt
zq<tG4ZFj1rG;`^{a5yksL%qqs>*VDBS<ja-)OR|~x+eHE_?-TkPq$c){CgB|#Hy|K
z%&j^BPU}ggTEUzCz1C*EnG^f$!u!ivY4b!iTB}|(F|3hW&Y2nJbU7nXVqeIt{VtBX
zJohQ=%8Yrpqx|f-9Qn1)(<Ey7wu)G`eAIZUyLeu;Tvbt2^XAI@_gns4;945t?{@!p
zZe`@B7Nwwd{AYgGSU=A?<(_!B>c{0tEb==PS{|B(h#hyhXWdnN=l(HHpZjla{l60I
zwD9DoBw3|qo9Rb?N+zkVNmaUj+2+{OzD>brJkRYh_*czmJmL4-OCl5H+1G>fFl?G7
zBR?-aJ3lWyz91jz3O?k<?FK~7H8E&nHZW*nl7Qq~CgvAt;fpf;;o*&RJ-Y|g9)*DX
z;u55J78G%4u60xZw=KbEQ<{QqHZ}xpN;Wb!Ff}waFflbUvW%jhMTD~An*SEtUZyd5
zK3=rt;e?+K{gpo-?XCRBwD+CLBw3|zw_1xb|6RA|ymEKqR;D=@dZQkO9u8>Rsi}78
z@y!JvGnq9M8eElh!<JizObt_tl-IZ~uV9<I$ZVhTf{l4wH>%rP26Mhzo%Nz*)1lOu
zzWp_aD_YLZ6Z`X3&tE}{V}AMPqjE=P1*OS(#61>Z>sOlbFttxQRyoaj$5Nxf6K$&&
zuAEn2Hs#Q=ob8SuuAX4Ccy@*7(PwL)+<=}V&FTk*TOw`em6mL~!4zjTq3VE>S<#y;
z-#hP*Fx(fG2#;5*IB|`uvV8yd_1nvKF6C|!j}>^8|8VtG!T4O8#WB9k(VsR;b~SW!
zw?nE^H3Jnay-#MeD)SgxasX#HKDVnj>mIe=jBD&>n&HUN<Fn`1?RV<ZP0zDj--vbl
zw=Vd+sbFu^v|Xq2a^Jai=RMcbo3>ff`1O|gD>j+Go3Ud0Hoa}>>Q|O|{*{@WS~kx~
z|Bh15EdNhYqLv#AuWJXs$d#FK;HK7>g-z90PdYAAW-PG??dIR9m%d1W#r)PB?#tqe
z5BjH9n&h{5Few;IKQnQeKe6CTLtKmVA<auULLyHRd)Ej|nAZ}p`@^(+*ZEzaPv!Xk
z60{N(bvt}kzByXgQRr<zx}&hI;_4|~tNdyXZv4Ic+E#V_>8tY|$UeF#qa*L~=+C~1
z3+Md4rWst^Hb3}=Ghghr<fcN|hLTg?9x-L#i~?sj%mpy1$;pIA%=uN|nU86*K@(HI
zK@*cGB=ZTxbk95*HRb4~!mxX1I~&fZAvgF9=)C&H)!A7Ab$kmxyb10l4x-gB_?(KP
zyC=0KBx>c)4CUulS5@+Zk44?^UVZH9wu{e-3)kJ9bB!nQ@9hPh%sW^`-h`if7i<4W
zar3$FSGp=6EN-sToqi$l$j6y?R3|2{t~Xe`rQp%=g~oF}@7Ie7-Wb2R)~LSA<Z)#s
zxVwjFtXe(fY`bz^^3b%h63?<b4@{3GC(lC5XjpoKNb9?yi(Spq7m9J*c`}{BQPywY
z!(_(u)~lQZQx?pfV#y>}8B;C$D`n?9F{jP@yAE+4dGlnWFOwm|ORYrro**x8KZ$~G
z*IcgUeQn;A8?jgAW|+sT_eU1FHFjiKxm{d2+xKMRt&6eYSrXv1Z31l$7MCOzrDdk(
zq@cG6QxPpf&<b|s?%!W{`euG;(8PS#po!@yBz>bEVF@0a?MG@Ch6cmhfE>c?jzyVO
z`FV+k&^2D{!d$`0`6VUADTz6$unWt$gk^$Z4paz9P0j!vxSXDuS_~N*F*GtT0Jk57
zH4(}nZA*CDHWjf*RY6z59o#!Kur#nlUf5-hG9fhRTui98+xzw)^Pg}1f0#DrN6+`T
zIk)oBqV3FyVG@Vkw_QJFYpU1j{C#2O?0a2Oe}xt1Z1F5N(hU2%^G(lPrC&vN)Dx$_
z`xe#mCQou_r_P<0=&L2av*V9;E)@vsbPN5mqg3Wu{gaS&-akT%!kHw0h!;k_meXJ_
zIXc&4U(S{<OE!E?F|V9-;Eh{c{lnZ~pQQC?<++o0Th0Cbr;=etV##^6CWqwDn~Jg|
zd1s!w!dH66{C9Wf!N`wE_3@kIQw@GB-|kx$C07<_a^S_Zu$f((Kh!TdyZ4TfVa>$z
z58?%XWUum!xj1vm#YK;kqdCjAh9y1pE|HyfMePa)OXP(ae0<OD{W<(be!@pcZ3k+2
zV$7<ew?q*cwuZ+@e)&y<`XjX&i<4F?Jhz%XS{=D2gblO`M*dRuXU?B8(|VSCQ>*2b
zGS(?^4>cy|CdG0dTCn2EhEj`<CRuZz%<pPb3w)+?@tAJjR0Xd|jBj>yrB@q1O4sX|
z%B-g6JlD(c8{bx*-P<3T*DLK}Sj<-)^gDaE^^wb!fqrKvd`V}QJYnNj#miWGG~#*g
zvsMG~St>^a9<Y3W@TvaFDz5)dvgU86JWYudQYg2$Y-DHASURovS4RKF)92)mzWFt$
z?tI<GkL<eJ{_H=sWdDWftX_LwNoX)l*c(#8saSaVVy)~=u?;H|Z7*;!DE&EJeVQ}H
zmD}2(@q2BJ(bpNLBKm5z-c5)sPWfq85~sTGYZ|Lwy`|_%t=|FNeXW_0O}-Y;(gMD|
zhlo8d$R$QMyu@JIWYEO4&Y+3O6jEXc*lhaZ!Nu_C-)j}?xCFby*{C(*4AjyC*AgJ~
zK~w{C1^8MZ&>A5;8(Pc^Odv&wE?fr@J6Isa2;LnmgV*UeYE03MFa9!%IzL_Wy4_qb
z>HVc<v!GhnaBi>O>JV$Iym(Qj0|Cp<tLoRD^4M`aAX!FBk)vjo*$wW07uAkN7#e7(
zevXY@ykpzaEtB5n=*)k8*ST|%jkm`{*?>1{_pc@B?NtQVm?Y#-(RkDFz|h~So7OUC
z{$X7FYoB1~RpitG9Ux7a7P;&N=e_P-zoI%iKFCkJ?6%^Qmk(3&@0@sx+j@?ZSMoiZ
zd&f{_(}Lv^GL;XHn=u(!g{_}elJo6%^8@3{9Ptb19EzUrc5U0~iEPP>*q$4&v0Kq7
zbm8=_3zN9F&6~E0g})12VQN9MKx!&l3oscpvY!gAJ`<7VF-zcyo`v0@iG|sqiRm>o
z(T6nrTu}Vhp26o-=Z(jO&%BTe9?+m^DN?d`bv0BnPynS-E*?q8V1-~v)mBoRnp%{Z
zn^~NlTAW>44BLncx<kMftyu>eJ1t6u_0tR`48+)AyRA7H#W)MHGaZVv^-@y}lqC2;
z3ndJ}8)ZRc6i5Ix%wlK`8axH<lN}(Z5vl`EC>(h6;HdX%_KK;WUEclX=J{XJm$-Xl
z(ktZ~s~4skRlV*L_n&ryt9s(1<ecL@K6;h=SF--ejG5Y-^mAvy+rxpi7bZW;d2QhR
za8K?2pxNj0s#8B%Y&@{Y=zY?rj0cIq2hFDbe=}v5*}6G0%Z>P-)@(VJU-GwF;>DWq
zw`>aDMg|elf6uOXw(w8Ep1w)Nx2G?!QCw$x@T*6Aj{4sDswIt~8@`u*vt5#sea-**
zIfu3Uca1LZ=@JT_akBHbfUIxb**f_!Ud4jeZwk%w-*(Bf^uH?aFg^1BmEXc{U;AWf
zm%}bsRLf3n@4YVPm6mcg=IET}hle;iX1(!S{LxNE=Vp%VLT^YN*w|&z*bW^dMY^60
zcP%LNDa!6un9TmOY->J#R6V)U`-;d+16R-z2~`$50~^@RFlHt=ixJLZhO=1UEDkt}
z6D>`HyOq`7o*dv^CF#E1H+=EGwYxWFUFDy5`$_WAzJ&o{lc(*lIH01GwkKF5aq9jH
z$F-(e+Sh7q7I09^I<kI4P`SjzX*a@RAKx{LlU*JVvf!xJlT|%ay8P#w{x4g?COmP`
zqFM$Q`_RixHd0rk_k{T<>A5*~sW|9<7TRH5Ahl%LPO0_nj#60?ylno*?ecbN`to{q
z3bq?XKl5fe@g(M1N%53eu^GZs|NXwb(dDUC!5Z`IXPb?SG)`^~U+|4dtb>hv+cIwj
zjVt$TyVsht2ABNHJF~}GyfE(P(KAvj6W@I=<M~|lrD*N>A|^9-_w(;113DAVyi}RW
zf9SOAr~I-B$Ip}=oOX0BxFnH<mLwQw%^}yAm*9m5>u!T4*6pBa7D(a2#EKrY2ChiO
z1^#2@pjU%23kzW!D+j64%nS{UObjiI%)#>}pnE{UTw`P7C~8?lXp!tJiBsNFco}rp
zGi!Ez;BP#!&PTFUmSg^EO_$cs`i*Oi<R-Z7U)-i9CHJpRM#3s)PJ+0WRY|k4L2Y7)
z;OV!kA3VFXsP1cazQlGeZr#5x?cQ@8+br<%&LKDPAF+Rz-1<MyGiuH=<7X<<zT5AL
z)|RO<J#;Po-|Do0?p%!o?f2Ic4j-Sqr`K%a=lUPF1%;2yDK9&?ZaY&}W7SI6=0~j0
zc7`3CV&3mjn5^_hJe7TFm-qetV^LgBH$0Ay%NAVC^RxA}%gY}u#h+gOi<!~$wRnB@
zmb$Z7VwkjjEFW%~I#t)H{rc6-6P&l_2!FhH_uG*lo%R<?zfL+l@oHDcg$Zx&<lgH%
zlv+5go0s|Toc+;aYbM=(^{=vK?d$d5#ZKQotE&A}{`ai;j{?tF1@m}3<J)_3OBq|x
zGeP0jqGV>42P|gV3X)7ON|wuSI~kVtp;Yxw`a!<LgpSR27gzjQd`ou2#f{1#_g%_z
z-#XqnxJhYSu*`i^**go%wG5x=etr7%_K64opEg|QPG0cecp?8T9Z}I&(>GsQv~}O7
zo@sJY{jxbr63utE6&qilK5d?IZPOB;#zzY;?n;lJ%Dz}#@ST`I^&VF*pG_>6R=>ac
zmnZOCKo*DL&xyBq`cq<<4_kFB*yr`8+ge@wR~y}NGVb@8#5>)_<(FNIOgWQSCW#5$
zn5XXk+gkDQkJqx%(4uUELE~D?q726=^inNJdpvxMRavgQyYP+qh@{)aDcJ^jpmI!^
zCEXykK?IwEg`P{?sg$UjFmomNh$K5MG2i)Y(JR&!#_F@`r#};RZ9Zc5?ehUO9^S3)
zDX~Ac6rFTi$}FKC+F4Os_G+3*gSf(-=gmKQ|FG}474NH;zNzK!O_x9A0gcaUww&bU
zE(-op#?J2OK8@%1gC@1fp*{bU<P%bB;-9N+{%$m3M!*&G!q9J%6f3?@t^D;vSFJrQ
z%%FUkd4+M1K*T!x#J*2i8{bRRc||6l>Rl9eb-DhYF!}SA2Os_BS|O@a>syt4EN8ll
z&87UqUgBIoCR_?%BpJ9=ce>*(cK?+Dw<h#XaeHX@Vai_t28*xOFB~3j$qSQGIFldI
z`&Q4j|JuvR_Rlx!+_$=>)N`k0w^IIvA5V^1zGUgJIlSw2XjN{*OqH)WjK6<O-!LWm
z_1{bRAImd%O;eQD><C@Re9_lQ^3IRa$gssfS9n(bSkJdpa6!%XthXi?wy7mqNVW6)
zc=1>7@`QT!iCVJP>S9`(XKt|Iuzwl%)0F+m$)vpS`sD#rzwbIR`&r*2#-rEL_E#o;
zwvl<bvneKa!Qq!TJoZX15)_fl+tenVVdr5k)v-NxTHKuD@70qy9!->tx%5%-?k;hs
zrs;)^!G<g6f2&Q}U-WSCWZ5%aYEhgP7tUShZ4ld1vDB*Fr?+eARk!J%bOd(p2~j%0
z7?9~a@5`q5xj)|A`uKR``}-67L$tV652{HX2@+sUz1k%3>X6}CJ#c}q0xj@CN1T-A
z#)EfAq^88@LAK+^qnwiD3NQDW_Zu`Z?>1;+S_~=onOR&8pw+1cbw~w&fDgQ#C@dM8
zmsyosl8-WGq7ba-s0Uj(%PlMi8v85FMQbZMLiYTZRKg5n7M6r61W&}LroeX8!46xp
zFf=d%ofB<tYz|t_23}liXk-B54!HXWwHhD)u3cQT>(GajBJE$Z8T}sSIk4}_RgbOz
z9<94M>Ud!M>Lo_Y65F@s@wZ(vV4D8pdS>`S3Cq~5l*(g_k!x%Wy)0@jv0U=jc%cw)
z&A#Z2Z}IKV>->+0U5#2kt@GFC)frcm+alG^bE@xIlULL%V^DPe!J?O!9+s3!?$w%C
zEgHfiecjn|ZK%f4M^d}L9C)(M!qfOnS?hdD*Go(0eG=*k{895nxBlyz_}60dH|k#8
zb!MVdxsU3}2^RUcKb-m9CpSIP?rMVHGgghao|VGhyF6~||17#}dFr414U?j;TO7_C
zG9G?&Pf%ApR(?mo#W>03nfKU@HBJRg{kc5kbVyr(>&l;=Ow5c7jM)2Sh>;SGva_ez
z|EqjEdiL$^340#3n7fsJ#~9kgGVQ)>#ag9vjJC@b|4+K$F}FLeXhVg|<2y3zIsYnq
z{MxH^WM?SLR)NL6>i4*tk}tfw$75dU7_GEv!z{;`Wd#qeTqr-Se3{`vPMH3~OkUob
ztM)542Ha#@y5j#-^9!r~J=*+rrmkyC*Hb6X>m^M3-#c&2e7Q&cihJ)aUN@QY^CC-R
zb}lhIGDo9?+2p^mq}tM#yd~T1rXMSNp+0SK+TDliJ~>98ni1AqT=1k#>XM=3F8zJF
z!ck@UelPqQ`Rt>al@<u?ON$WnI?a4!i<Xw|H1P+PA$vS7m#NR4rOUSL<QvONt8dSr
z#jVa{s=3i&>hqs3=7e@gx?S6D^0n@q<*b_)9|OPp>wxpV3^eZ-7w71L^1p6zUSf7?
zer67|qnN+4>gOwXo@csZ(8P4Xpowt@B+rXP*k1V>r2LR0Q^n;)OIgh$2P0ok<U)X(
zmBBy|e%KKYTV7^brY?9Q&JeWv#S%1E4w;Apam}DyY+49r6;08aJwkPDQz}lzPVntm
zbEJ=Peae0-JB1UP3_rsszcrh-#_1sc8~I9q_YiOKTRQx6B(?N^8cpDF{@%B-*6U1-
z&$WMf6T9qZca|wjn6$k;8!K_;cS)qy`l45#ZH(^;?wH#u7@L1WZogGrL|kgHT-N%-
z7V~*6&2Jy!S<E(tQ{v#d9sB;?JKDI^#dP0c_iz7aGMPuEE3!;k`1b95(+!8_Ue~yl
zz;^d>&HlB_lb4!&Z#h!2=Jo6=>37-eOk)ZkC)!+cRo~fhz`xY`)VW*v3$JC!m`(Nz
zJyqYSa8<!c;$8axIG)pAuXD~9QJHXVUwrB7n0xH2XLjl}PFQUBBVz)q`eR5|Q817*
z-~=@*gjtvj7{I%eWd&Kd3^<x#L64LXU_*!oe{<)v?J!;4wsifQwXbFz`or94p7Y+#
zW2*Z;n~0G4v0oMmg!uh>Ja1?6(cI_Wuga~{#1l(b=1vOS*jF>_+*|GB$8sNLPAd<Z
z%5n63pP6bI=R=3Hzr-&m2JF$Z)|6vm@_C^9^JR!-i~b(H{Bv=W-!9mBcXEBrp|%t?
zbIy124>**zb!li#v}IAa8DAlEIZrGlCSZ2V?A-I$-<&X(-BYx9uh{DA)%F1@mJ1f0
zJokmy^SXX;h5z}AJu(9MY5v+iYw`;(ez>`E+C{#+XB~$78Q-65R;j&F=)FW~(YxZZ
z-J(AK7JUy$jMlw#yx#be{g0*MFJ3hqtg`Vv{DA3~`dO}&8{mupJ14LtH77F>dRQRz
zkihsdq^WCuZg_5BwJ~U7wE&$J2+0kC3{&@sE%>hI_OaTsspwbtS(KHrpm7s(*yeC9
z9_|p3MUdkGVe876dBl)JVFMxxW#9~BU~Xt&2wIJ8U<z6?W^9DSH6YtyLY<vM`(CSm
zP+a^uQ!TV^?$J=Oi7|iQEA9_&sM5VOu_xK^!yA<khnHR|su9TjV!r+9vzp3RJzJZ)
z*LiGP!*D0H^o^Ep{K59G3aQ$SE8Oimm8TkrO{jkn&hGJCa@~H{^o{1yY+C>B{ajPq
z{5x*flm6-H`@H*lQ`o~TLNiUwY=u4E`#-vzCb#6g)b=<t<11U(_DV4REpG{6aQ)g7
z`$Bn7-9OWZZv(1V8uUtD=IqNzkKJ!GT_Sk5X4279aYYA@PrGtkcfl6<Oy)PQ9tC{l
zvH7s(bFl6QnXhkiEG>&0#7+clP(J&>?#^8s_XWF6yB^KR=-&5qf6=>3zm~ogdi!UF
z#7ecYI~v{s3Nn}L#maTx<~Mxz+#SriJ2vC^l@q06_MK7P-^Jap_<X$7S!w5MJ7Y!S
zJuA6OKjN4l96Tx0bGg^|@>H|U=JCnNvyDYQ=&EH0*L3z69m;!StH@w^a$&}!fM&f7
zR@$G<7Oc^KlAm}ekkitxJ9y{r^jmj=ca}w(&2@gN@W9q6p;akx`*GvlcSZG=R4ik!
zZgewaX}eo#dVH#m^@hdbrcaCIx5Pxgzx7HWwYus;{rt^aw9Kswx@Sl4)ZYGPQ=riF
zV9ls2AA|(%_%rPmnxvm}#Xi%yhWFZ^h*HLmxe;RC_jXPA@6OoCmh~-u(}b+eOv{)$
z_HTBt)4F-}S4M@YFQizpH?SqTtMj2h(t=_0*Zx`4c&@(wRlQ35g|HBEl>lD##>B|5
z?@3IOpUM{=j{hGn^JF}k?5Sk$qMpAy_g-__xfN%4|9qXr_Ox7N;_JDN)ibqPp8o%%
zcrf<E6Z!D%r7IW4GpYT*e*C-NJ^vryW!w%_`8((+nSPMmcp*DoXTypI2OP{zzqQ1~
zJYMfq@o)J_-hfxUEoI*V-!}&ztNPCu=Bd|Tb&cnlddOp6u7skbvlH2`E!}@&X7<}7
zlFwHA2wEJ?H++=mdBVP|L5*2W^MTp7ZwkSW#S2Wt=O$;!WxqM>+qOg4KtI-v*WLN5
z^r}d{oiV*^9&1b5<B$I_3~>~GbX<{d-UB(_hX<;iTPGatia3_aRT2K_m@+@(O$G0J
z{J$r)mTJWm_vTisPCWI_bsd{G!<ow)BLi+(by#aUyTwh{4mlT`-|O{!+OPeEd`{gp
ze>E0d@HlnrNTbj0Ma7fVPQ2#1rq;3TfXeyZd!t{M*1qKEYctlVEa%Kz+WBX5!G!j*
z{>w_cozCqo=2lSCx-i?eKu#s+Y<t;C@oC%7^G^ERC$Vyd=f!#d5?qQDcS^oJ^wsdA
zrANmEmC_KgwdcP4$P`Jj{JnU`t^$YS>N5L}ga!XfPQCD1hEMEkc3Xt6#FZz!eM{#?
zPrOs65@3H!>-Wv=bGBZ4cH!m=$!^g?kG0!h-H7bCGGV{i=9@3qL?(uuklA(W;Hif@
z6@2=wCU-7faAyDIZ>390r{#u$OI_G*zue5^qWt32<oHzG;;PK_ynNVrHRxh{OK4jJ
zbgtxnc<IZ+XVApLWzfX*2~zrUG90RNX7O{kM?W#eps~r28(b^0un99^-+u#}xZ&aT
zg}Ow+rz8d58)4>=gNvu?27_G)FP@DI3@pJVIHy*dN85K^MovaCfy}(Ld<U3k^fF38
zD;5ka4a^M93=NG93@u<?5zwWCAnxFBB%wyu%OCxplh@vAyRrO%)9>>W?=4gNF>`5h
z!P?pDP8mDY=1$97$mjCzq43-(PC>KwmbRAYtl*QKyiH<zkIstozheq_-g@)zMP2_B
zec4SbO51O2U-;De{7f&m3(b<X2Nnv+OwINBa^v_?Ut_&iONY`rk(vgf83D%~(|0Ur
zNDNt)<0t=ME+6~Lle>(c|2q(>p~KX$T=MI@JE6hM)2rD%{?Ghv-lcLR@=Sn0a^I?z
zQX5*N+J46G-WZU#<RaIZtA%y)%cX0+2IncopVoeMr6zXWwL`~zp0YCDd>j7fpmOD(
zUnf+Wr+(g=707s@{Mt*Qg+Ha5e>X|*+%Wx18Jn@Q=Ys#-TYqhZl!lEB26dRlA?`u!
z)BMNoJ2{`RJ-yXKd7)I*GOgVv87Ld3u_^%FZ6_<pB4Qxah?$zOwBk-)<crh0dS-Kt
z-RVEJ|9Lg0PG&i=|JK>c9nKRzEZO(|(|g4kd#+rGW&8Hd>5W0of>kR|eO%x5%bvS9
z%kGt)L!JD(ki^Q@dK~80l|T2)-zU5A;gZtZ3m%1tY}_TIxkTcd(5^)yB99GCPdNPF
z{(!YC{Gd$aryu*Dyj4w#Y57oBC%<{$&+UqWXP6no3YH5@l9M)Rlv_JT>M)DVTc*To
za%`XDt=d0ne{^ksYP;s*@$i<t+3W7y__<9wses$o?4;8tqw7_P&o14zJ%3{5$=P>q
zN4Q+iw^(0aae47tsnT6C2hD2w<#J^Xm%6PpWnK0y##ZrN*oTu%O1f1cs|ya-Dy23R
zOaqrEYS8XXdQN^)Voq^pdR{zeO%$vlryE~nid2})f)^%CN(N0#at2L|OCW`bU_zwl
z12w(fp+C9Gy9$4L-N-?n*)s?*R54HjO?hz(OS^-u0-bND09pnFS>EBOpsNsM3R^qE
zCCr6T1ruaO76cU!pxpq5#;6AlS{fJ|ni!Zz(ZEI=v#jo}eA9l{#_oS<c~SAleC};m
ztK}wHc|^*5NHWwtP^IxtYI)4&ZD*!GcfAtv>tcDX^P&UosU}?VRd-+87%x0J*LO+2
z<5Y|KlX5MuFV6Fv)IO!1$EwvUZT{TI$-dJQ+1k9oy?OM!f-&og=-t~s)AX4Aiv5(L
zi<jEHynC0LFU*fbjtj`TBtwR$nL;P?ZXYw;#p(EP`j6j#XFaMFI{CIH<??A()$XvH
z3!cZt`f)eUi7wMzz^SH~mBeIFcxh{Y%q#1M6`ZXrN+(&Li23XBp0`A41;?Yjqn_uE
z^XyrknECO$^+T=GKea!nO)v*1FxV2;l+5%@P=7fdlF}g6Rk|@!;z~v&E@y)#CVPV>
z#-otLCBPaQw&zpa5>wN|OZcy@b}d5ok3k|*Wfd9>-x(^*<C2-42^#8B@XSj#gq|?Y
zEi3>!pBUyE(7s@#b+B+9kkkjMv7ndp7=sT<HUcF#*y)z0p!G_i4JdSQ0*=&oclpiT
zT|2mcbJr_g`mk?b@n_>$sXZpI?j4)G=fc!)AI@Ch-jx^~=vFsRcmBJ+WFGN1>;+%X
zx9B-E&v{|*m}|ZE@)D6qvx>RQ&hG?-bBgY*>sY=pd#m%g^gGJ`nPnC~vID0+jMRpj
z9NUogaBsftvE=8%qc_%>Ii3+r&P>wW<9!S{wqU7m?Ve9L_Cj74buABbaZWG((qY!q
zp}zZBM{hvu^5mcMjP9jP=KpwRBWM5JoYlXw>lZK?Sf)iEO6lD(FW}CKtDcMA9=~(Z
zvtFEW$BDLnzn%{56|+`$9lgk~_eaR1Sx=*DHmi$+Q=c@ncuUMptjf=WB)a6pc%<$r
zpAtOTF}s59QZ;B|(u5>CVYZz4=V$Kk;j(=6p`y$A*)+50Q^*Z-&{z%f>GPq%uz?#c
zVKzswjj&|LEGz&KfFvnr=;CTaQv*{YGf<L(%+7%hBr}I{Q4Y2z(P%==l1&v2g{La6
zJ}zAE-Vjhyn|I@SN7<K|8Q&um6MmMoFzT;i(rvrEz`4qA(~=8jyBPQN-u5`bE^g-Y
z<z0vJal6;%U$;vB@XXk7@A}R%3)#eZOa3*PEq&@0_Qdt!&%ay5ewEysGuzZs|JMeE
z0JfZ}3k{o={apXXU9vyGg8j~-cFTw#yRNSM>5*<Q?cJ1$xctt=fd>rQ(iXa=?FxCl
z`0&J^9(Vp<d|{wlt6NfFdc8yC`@AEOdAp0-#XlLjY3y+RwOw}AsV$%8tMKW1e=m%Q
z%l!XpD${9;u5|$x`L}=TCP^PXE*J8!{6YE&{yFW+*X$h>>J=J}H2BzAtEly{tjn2o
zVihl>Swh4DGvuV*B5|hG<jo$QDO2<~BIg|6B;d!zftDP=bK)~TnMXNJSSWS0EKozi
zOqp-pGmYJ=eoR^CvBaQW`j1Ml_m&e2r+?e_v8v!i@Z>Wb8jokFo>yM-^Pb}6npV!W
zezQug4smC7R+PE8OQh!XI`&!D&pQ2O>+*o>tUBf|n7!A&OkBW}_x00<qnqAFZ@=?v
zN=*4Y;idIKYo~ttG1>ZFcTDuDsG#VC^&;QB-!J|>-(hO5VaOk+%g5d1mDk?n_b8Zk
zv$Ue{Vv(~+X<m5bA*L9$1kLlxl45-w&P%U6InD7~S<v}~vu07!!j-Xc99Jf++i~NZ
z$e|0NpW411ne1GimUv+23&-ozD-xLVyo%N>y;!?TU|w5}bl1*E;~%e&OxX8vCphD&
zLo;59E@<B&sG|ZY_aO}n@WBB{v*Y~Ih)j6gpo#ggK@-zzNG4=N*_Z^%awxqM7gs}V
z15HrNf{RBfL^rsyxFj{VSiv=~B(<oZD6=>fw7jMaw8vk;JvYe%-0ffvW#Q%#LnsE%
zgD8L&)ua}|7OFDy$b{&EHZlgMCM!T{14u&!<a7nd)VhVCfq^0DE(-8~tg$hO3tLq)
zC>%+s7+4j5OFI5V@x-UMV!kYT=Kl0^MrZ=7EYp(Bvm-ytb*(p9`-k_?O%KU;nf)gf
z{wS_umwdY+W=-nx__s_o)it`(*LLk}I3&>|*77TD1IMut<;EvxcY4}?^UpK)(6Hb?
zy6<^L!C%YizL$>Am>96?h|6Z>T1)qrK}pwyCdX|zoaV&(yKK4K;;)DPysSE!v$D|t
z)#-{o3G0vF`*QR2zB=Qjc~hD{nEX;){i?5Mf&G$u2GQ@^e6yxTJG-n95S4k#7=Cod
z$7gIB6IUr5-5#tK=)8$raB9TE1N>z-5A@bFel9AQm;X<y?`FK|u}%3VHTyjLA4OSS
zzcIIB-uyN@<~Yf2mqk~P6I~1--;cgOQo)R&a=`+n?4GNi5-;u0Io*V^+zU2HY{<MQ
zkz2mxMUmOD+@HSlekrYZ*cf*H?C$xmR!@|)Sih=9)c5nY#l1_v^nG(#x%`FV)U|dD
zNn#xzn0Eb1RDNbW+n_4jEU9`ei*idu>Z9A*UC&j6&69%T_uOJk(p<Dmz3`cpQr*FP
z*{KBzUhF3KU;P(tc)II))s5)V8rCXJ_d16ahQj4%9jvzmx>xB5K6V$pH#hA<_tlWJ
zU(KPfY7S|3O25qCeC`oz%SnB^iq@pOlko>Dl1m~Ecu4Tfw0ynfjMUc3s9w=IH$-^9
zRk4R3S88U}wVAD|W-GCIrE|@R6RT7D`4;b=BR$vP_N@z&daG<c{x)tXdvbQIq(7^A
zpYX!GL*QZnwn;HX7d%M{t$;y!DBd_8bdntC3SH2608%?JA6^!)xEnOFI2$xEYeUKc
zX3pj>XeF*e08;DE#TDNA<Kc19h2(2+wnywsbkT(zBZ`!pjlsK&K{w}uTmtG@7+4yD
zjxx6}H825fs5e69(!fSS`E=&T7L$Tq`r8c_^zE%-IlnJy&&<C~(=SzVrBAcq{3hTx
zRjGJp?=4Z?=d6Dui<P$b&0yGLW4mTy&hKlLs@`iqoJqOWVW+u+pYyWGUE{Aw7ayLL
zeECko-zQ?-Be`ol(V|f|tacocNRfMNylHD^xgXE|n^Urdr{@bT{x@?a%Nfx(2^nT@
zIjXmR-9PzlnqhO#u|kt}Kk--VyC?R_ggLHLGLJL=BzyCsF0X!O;PQQG%et(z_8yno
z_)z4-J}cRs=c6}f{oAt9O<~b*IqQP=lV{ZS6i@qf^nGi=T1~Y-ax8W-3vTeA4r)%S
zdDk60b;8Q<MXwTBZ~XK<qW&vy?c1N%1HWf4h2+yFMiql5Mg`1)1VrEG@{}&0Bw;N{
zy))~Jx@yg?&yu;5jxn>@co#I^BhS)!)u8c`L1X)Z#+C(*jcxTgDTxJE`uZuEMXAXp
z`9+m_&_oM9;lbI@7MgNYjSN6(N7cvxd^C)zk%2LY?Wk&GV5Dkf;2H*E7#LXU_=9wS
z&V5idG5{q)9cNn?S9?$&C^IcH8FX4!YFU1ABIp>RoXp}91Gfb(3!K^<pr;psdnu4y
z19m`iQI0;;L3nZz+9^h`vdH9Zb(GDLDIM>n1WVcVH~+KwB^Rjny8WBxy$2t!98=+Z
zdGLIw^cI7g=cN9z1uhd^qWgZ6_kINpRnLpd%*st(q}&hMD0sZM>a69wLu-2q6+cB~
zufK2O7rK5^OR7lc&hpb*hWpMh&OM*+F~!I&|9N50f@Lj|=Io!CT{*SeN^9=NXNEJ}
z&bzU!NXa|kO6iQS``ab{J39xgt8%ISP#JjL*>?Hm#>*d0`tQ7TY<k;;ro&I1a{q03
zl;X#y_T0flZ7WCTb&lj@3-wYt<5zhr?#`d-U*g-?+2DP5)^yDn{e6v&JA3}Ws!d><
zclNsNWxd6sdsaMCdzydv&JJe9SM$X_>V#|smqoAzzxkQPC8_b{nZ>Eusg<bR(PY%M
z8)xAq5mT-~6H}%^6XSbGNhF}C6~?pf7SC!2*Ztaybgf<?_i+qzk;)`z57-tNE@Ad?
z&)`(=RQOU1ZedA(&)^VO1-JatycBRsP;kvl$uBBSO@Xif6_$snf$D`eMj-tNcW3CL
z4bZ_ypiM9)7RI1mnkGgDrXa4V1!$Qcot=ZDr|R=E;J`8dB8fdWKJMDw`KZ!svDotL
z5S813|6hIKR5{G8H2-v#dQ&6sr332?pOiG^ol?EoQ#$wK?F+LOc`Me5El-|s$@0p^
z_KJ9kY5W1wrsn)v$L`z|_Fd99!Tj0YXv2w%Lkxm2@;XM(6;W1rw2Q2He0bi31gq<(
zI^SJh+p{Gg%|L*SQ=5&Eg|W$8l#zv*iID+0ULk!~1GVFs(RZ#s-}L+hPfyR`yOllC
z$yZMXP4V+>@+y|w)X=h0^?*-QuBT=~h47;~kJl+oh77k&6pT3j&+=s2)^Sf{eQeIm
z!d@x+?&}X0nYGEVH(8Yh|2?$m?fdEt4gL}Q-oci8!Rgf)+Jq){j|Nf|+67Oz%nb%j
z%ryp0OexTWE3sy4*5Ax+qE^W{>u>!!vJkmG1<kl3Uq_E}9u9mr1!(_;p`n33sL{<V
ztN|A%u*(8muYy*i!aBI(yvAk*=7wglCNu49CRD%f+aX&0|4L15`r77{>Jv`Ey7#}e
za3~~RV~ot2<082Jec9isb>|Wdc2_mWGwo$eJM~VqH-DkQoV^QM=S{Kt9M-{Lc>cz_
ztZ7U)-!k|7F3o-ZYDcITtJthB58^g<97t)65%ujjzJ1q&(wA#lZRZ~E^mwpa;{@|V
zgUKmzK?foWluW}rx;{?jYQDb5u$a;0?R&Sv2iZ(3OpCIo&rW-ATBb7oh7?PNoIBIA
zxe1TVrZe6@XFBQrzVzd{<&oC?bFWPhowCQtMBt$1&yDJKb=SH|k8WB&?ed~~v!Be^
zSNrf~<JxWcf3EZ0dSJ4FSE~H^V~!c`BYw?k*>1M}(ET-+z6h`t6q-WnS0cK@$n9XA
zs{xMFMY})rn<Ykj{m#BQ^Q7@4w8RAN4o4N#>)hRL;{UZRaHZNl?;Wc?7V_RnJig$S
ziCk4VKa1%L_5Pd*`zMO2xY>F6ozoV(${i&8M?QTKldGZsxzE3tmsidW&boOk+3H8b
z^~*CKE`7M~N@(E>Q>%TGU#(l~v}r>AgFlMCrpd;gp4VpkojU&9kCWm1t>f=!Ce1A0
zHdQIEYr*O-J1S<JvXGp4vS?n#S?@LLB^MM6>Haz7xT|sEEwL!W?LW5^HVAplEGmwQ
z3_h3~Wc+sd$xD_@1-~9_bV}1)H9PRFL5Pw_{LR&}2cJy&@Z+oY_gAMX+^+4I_;(qv
zwv-5?UBd^b1ykAMa?hUeUgFxjTIj{*dr?mp)V$zVl8t&93C_!M(7arnnp|3x3La)J
z%Fi!JPBb(`%C-*?*|yN2i5XPqghH|{YA+Z)pLzwrJHf(AUWo;Xc?zI$Pe?N(Gd~aB
z2i5@%h3di1>|qub4hFjiJQfdX)HpjDLY7Wg8kiVZ7?_xvnLyS6B5@6n^C@+0CX`SA
zmakeWGlA9mw9jng?kEx0CC?{_UA!NDNl{>l_}}|$uE{Tda=YgHoBKPMZ%v8#8(UP<
zV;|3$ULrc}F_TUE?RBRa`wo3hJJ#y@h3S~p)}&4Af6dvy<k^)5gBhQBw@vO}dF6)L
zrwxC)PU$QZHJ)mC>wxs9cS$qblI{23ovhWoqHL$I{PuHxPObe)&-J7}P37Fgy4A(6
ze4)bLm7n~$Y6I4OW#x7CcPsp>VHf<H<%aI{R9P?SU+1ki7|t@yJJHQ{nPK9mDIBRj
z8%@|4syZKiIL;h-{_3?C%Z)Zao8i!Q^sKs2_nGQ*+XZcs64;gPv>o!MG;ro_+nisX
zZ^{wyo2mV%T_+-+BC4_IAHM#ZmbP87y7V!5)`ESU-@>=wBU}w4O^1P(7ceq1ELdnE
zmZrBnOkQyg+b`L-JC%-FsNL}Mf3vv0@}8UG!uIlhc8*z_mK<HrZ#09uCQWnO>{`_z
zPv_M>dfIta1?$E59y8_qc6uf;*Y!r|i5J#)pFjMf$1P(LlM~_fyQd={eyYs=x2u)5
zrfzQCHIIMC+NV|0T>)0IdwKU%hXio%bXp&}K%#MN>dg21p3K>Qq;<99rjYzQs%PI;
zJnG}=<@CIpTpg7;jY)CE-k`{rwWg;}1f8mH{C6|^@^`_vs`r09|GDH>(e##J-lZ3e
zBm&DKMRNFGzlm??DRpi>+&bgG&pch;C*{qP{kBeH@755W-6PrSsP5_T?%p$H7t1>f
zm9Fh#{shja;?R7WoR*vj>Y9QwDN+XYfM-zFi3Uxqy#`IprH~BDBH?xB8glUm8mS6H
zZU_1q8W`w->P#*kb?1!CyhH`J%)CU<^^7@axfQWw7kbJiGY^lmo3kURhZ^MX9|EdL
z4UG&e3@i+c4a^O|r%r-b=|Z^%w6d4b+NbNW*=Ggp<yj-Ivih2D<a;wiyH8a1*JN+;
zCdER5pzDDt1!9LnGkyC+bLa2pkv{Zbar!l$HRqMqtuGJJ^7iQp4yro*PVe64Le+yW
zV{P9p)L;Bv%jTrAY}RVoh08yFezV}J%X!iBMf$SI(_hT|`FHY?kOrTiD?zLEJnv69
zyCZ&|{k?^!d=;*!zG%@5-oCLz{{OFA6XtWR)OEDq_)$XhomixfiKo;Gw(Bc8E-@EX
z89jQH;hU#3Ew%bo<gZVU?!Gh7`F+N1&5`8S`SoVnCdEQi>hGUXoA<FOHXt>!KXY??
zoKgN^iLR|v`!`gX--~j!K5q8#efmYq%hRKalO#QK+hy2(m&{P`EdIcHNqXag#oMI|
zE_Y<^jJjs=CFzc8cg6l6FY0#0oSf<(zg%~xLiYLWyI*;~G;RN~DNRp6<J<J8>S<#A
zjFP%JdG(eNY$?r*&CQ2>C*3tV*1p92rP#Sux*6-a8dI$b4$fZdn;UXUOV_(qdUM0G
z0$1MbIMWaH);s1rVJYYoQk{H@Yo<~{R&s)08QToMz0GT7Bf3;uFC9;n)9pKUf7`K#
z^<6BAqM9Wi?B-0E%cJ+P%Pwja52xJmt2T?@PCqPX^2_2U2jAlZvD(cS!?I3pTM-hh
zS7DTH+f-k2;rGLBtO+{{ZufEj6pqL*Ob`eX*m=;A^L>$gx?#otX{^vYgFvUD%Y(Yu
z$}AEFVhtjX|LOkKxWK)2*S1AR_Oq>G?V0>rAF~sWI;Di%(7>u6sQ?3aa+w$zRFCb-
ze%*fhUX$fC+Yc_wvs;Rp@6FZr-=$E$r()Cj=^Lcye7;_(_tj(DrQhNm&n{QlzYP|?
z@JK(a@-&08#xptdaMR9~LuLLZW^2<ApL1mEIQsqF4XGX1xa$M{PhKVN-Sg&cP{O7q
zY_I%Yf612o`}(WY168eAcaA%neLqpc+G07?@*21G67^pkH)7;|up|TtYG^S3e;=I2
zu++;$EUo4*=aO~v(xvhpxwF}XXZN=ivTo7u?MyS)EDM<>_(T2ICi{sG&hbirHjrAo
zUny4l@_toT--nZ=>SxZkahZJTii2lPL;H0WtHVY?rhH*Pmfo#B(#<O<AADMFllZob
z@~8(_PM=_3_ti?T&wTp@MsH`$@*d0S{Y_Cn0-ts+ka(U^AIqipd$Bv8?K0)6V~of9
zPsHudZ3x@frLxQT)%=G>g7ZFJ@^APi?Xccro?t*_v5?T&XE}3qI*M!z8rdc)y^36W
zOHxniQ18y3_6KQuik0IPQ<57zzAmtlu$^+k!%@~@SKPmUVU`O|oR6C)nc^mJOMK#X
z)`m6RGbhzPUvz_=+f4nrM`c3S;p@UNKZ+dgd!0T%lYxtYTX5>FFjwXduKDQ~u2ybb
z(d&@Qd#K9c*XQ^Y_erONckYfn=l}PDXfWfA`>$_4D|>%IdAIe-%FS1qG|zS}p2qKG
z`rOayK<Qcb^Uri%SL=ZbaM*eV&@c<utr;li9y%k+^J@l8td|U$n0G<Sa{<L`7rgvc
z`A-^||5+6$)cX>-Z0BWVFlcN*D%`2PRRg+Mf>~G^)Q&67h1~auvQ<OD2)eu1(9poZ
z%)r9f($p*pw7b{D3`t-xIFnGVvG-@ik7rjKcv9xJNl!~jw^y=~D`l*G|2rnV=j54~
z?3ELr?R0vo;63}+?CPB}V{guG@V?&SpsjxS#V&*0cAQenJ*U3cc2GGq{rK{CvsK@(
z;9{8G8ntTf9nF)EOxa%-_<CJCxH)XcLPv|)7k?Yp_dke#xY3@!Ps}snI$N*A&sAyy
ztF<m)xR~B6?Y7U|;HqBH#iPl$o+nqj)OjbXbhhc4*lYR(b!#m@@Mxk&=gtGsKV@$|
zS6};o7Sr^D#{wqJX42Waa;Hfo*Zvl-|M&lGp8xvhyazLs-z>{67t^|ZX05f%lJ+}p
z#c`5J8Lr_^CNw$icDnW<@xj5xwrPuFzev36IN2-isyWlBl*#a&rrL>Yre|A|T<gt6
zqm(l`uh`x5Q{V8xfoG4e_-Wroo8>OBMcw^2`Fwck%&))Nq|z%k@1OS1<j&sbL19lf
zKP|1k?l_V4PHg7msl3iR|1?jtoLZgJ5almibnJSqW|hmXpe0&Y9o;w;{wXck7H!bG
zr<3RE^@1PmL4R+(UlXXuzS-~J1<qRq?`Ql9dzO29Yq<BFr#h;lC+6u@`2DywXI`7m
zsqoKIPftwhmTH<-b$CyJQ05K3D7S8_*J{6%Pj1`LxX+1U$&YLQ4D^m)a{KnQuk`Py
zGdnM|N1tI6NZ8$Mx;-xap8K1b9v_!16#cihC#lae)ZbEU=f>o@|F<JrwRlErwk-^?
zWIDXSzOQS~uPZ-fmR+>s`-{=cMXD5dSs9o?7qk>E<vaJ}<$imMtDR9tm=b^c92F7Q
z?e-7O77+iF+HzdLbHcsb$JHixsO1-2V~Vp}@V$Taw5>~pV;V(r`5K!9rMvu&`7gbj
zB<FIUGxAGxIk)-CZiQn%xcu}YWL_IzINz3V^49ML{dqnKEfuzkDc62G%1iJ+KUrG1
zcW=x+lXg4D4Se5rUbE*Eo+hGyZ<cJ-&aiW)RvY3AeB&N#epJ>dirlvPP*0kgOu3F)
znQ6Di^2`N4t-mVYZ51dvIe|HB;`8;p+^+~t7gTz@$a6~0^X*f-cj+#<W!&wv%;kTS
z%`w@O8(R&ZEVHRv5zc-4ZKBlakLQZZlb5vT`vh8CdlG+q{<cP~C#@cp5pmW(ZZkEd
zAGExExWwDmOzx-V<c^H!6)uvBAC|vp<kfjG*=&pXrc)cF)v9Kx%FmkBFwa}d{`cZp
z|B8(Y56wGP^sp;K{o@n<Ek}HoCQkk_U4UK7Ky~HL6NNk8XPnWk`}&}cziCDOwp}^R
z&gEyjCW$Yc7hNG{>-xyJ=<dU`Q!_80JgWAWH-p7(-L{*vd-h50+j#7g<l`8oQ#v>D
zz1VM_G`;0e`sv7W$^3av0y9dVP3=zD^Y*CF^{#VQXT*d}V?O$>oXzzA`6ut}g%jW1
zzNOpx;q1D(n<O}04^LWHB>u;J+X8N#k4Nq~XK-Z2TYo4^{(Xi`XW6kwd|P+!Q|Sj+
z3RJl87ipmqzb3raV39LuVv#avVrF6zWSCvY=DFA|Y3J2<6Fdqv--jdD7@!_It?v6Z
zw6wG&{zg!$-1ln?>VjBWf+oD7t5whk^M;jY35`pf-ZdxaPlddcT)wn<@!lUNv!@6d
z_<t~S|9W8}*H`fqOA`-@Ir#qWN}TYtOyQs)TkUF{yk%bn9s7RiuGLD6T#~NlbK%9F
zpy&bxmWYd0CzoXIX%<ge%i6u?Ld3b=p0BSzIC*l<ovxm4l=pDmWKo%dJqo`1689!`
zyvS({7nFKg_gGCZWRdH%(B@MHoiFa(So~J2!M?sSHQY{AA&o<S>g4^a-1S$uP5&VD
z=-(kO?Z9Vc&$hd5f5f}&%!<Q4k)fT>UIfR;yqfzVNsN2>$#|X*_YRevTmL=l(=W$m
zi;P81KCMc=JTJ-oYHR8|zGuNICDL)SLc!6;b)GkST8pmh%Gen`9bAH=C3o=HpP<OJ
zgR3WTe7Dy>x#{1NsQD@PZY%n?%`_=93%`3oRR8GOdQo}vq++`(&*RUDGv7A-rG0x{
z0%yEje1G0<ZrfK;!g4$b`CAWcRaVkt=RUo%<h1*4*@M@YW}nf&<n-6`?()v_!MkoT
zL}~1Ay8mOBuxvnE)89UWeoeOxa<-<oERw_|yw*P37MOEyebQ^j3vw#|s``bbgfe#g
zPMawr;u^E=`MON;M(rr`lW|&Kjy+l!6Eb^Q2*ddg9}ga%VIXB~CU$#q-mAZBHyyh5
zp2=Of>%hm&hHL$09{SH&&(AaWdj;=}FQ#D)x3=es_s^AUOnLb4sOzq^**m$a{QSLJ
z-g$qly(<VVePB!WanIg?rk#;S8FCQii@8A)i?Klyvoxet%FNmP89AImgABe%?NHnk
z;IQj;c;sAgPJn})0m|60*>7W0Q|PjL@MJicYd~e|2xYCyo4n3fxxX)+t^CVM|5|`+
zr>WJk?A!ltGi0oIz$_?h9>6i**DGU+>E_^zQ<9e}gss09Sn)>7_OpjafF0L;x6p3&
z+`|ICyc2_*Z?r#%^)uV5cq-n~fh9h=?#$w2+AAI8Zkn}R^Y}bT&csbY<=~RQJ};^F
z0rr`(lJ%~Kk2CfMo>YEOv~J6uFwT0R(=r>^Yfj)g8G45Q@)oJL?xs;*Z|4-VC|+2#
zmq&Oj!zs0#BiTGtqNYx{6)@}L|E1b#hD%ObEVwT#zk^fn^YRzzL93_AKX9|VvE=Zn
zsH27rFFa<=pOX1c^6rh|n#NPp?)AOhY{Z({V)E?S-*ADg@n!q<Hwf?^1!t|rO^i|o
zO^jlgy=KHX;NM#!N9G&cQ`{@(Wcg=xva;uck1ZGtq{hpjez`nL<7tD&69$b93+fis
zv{g}O;v1BDNS^a{Uf{UEzRi}bId71K=-2ju#{w7`8S1CsHaKyA$(&lns)mAdB0`xR
zB2yDw7}soiY2ZIQ;85C)x?Y2=1%@vlWgh=ra9csN?E>$IeQOv?Th7(Z_uaoe!FtZ;
zQ?ifZGHxuMJN>Cc!X-1se;2mw5WiKjxc<uh4KtY5<Y#B=sHzk#Ons*s_4Jw1^H29z
zd;a=7AyfG_%gyI85r0yzOy76rj~>?<RV`DN9|;phOKlzhE6Yos$a&oq%(Co>kCJb1
z&#rUP#cxtV0&*|T3H_aU*z9o69-G!>*<5P84<^q@SXXyUWqMa){KUSrNu2FwXS-+X
z+I<VW5^yC_V{h}PGaA*wZMiqpIts48nt0Z3=cxk|@}iE#m84#e`M3BHxZr{9&`eKB
zPJ|p%kXTxh5np5qUO<3U;IzRD9M&F#Ce{vvCguW2fx}VDIsM-U_g7WurA`u3spISi
zS_cgo+SGIpb@X#raPjwZS8#R>3h{LFbao7JRd5Uq@$e7w42e{5_Se(#331VbEyZKz
z5p#EOc7$|sLCO?@Ocmh6oF;~bMrPpChfSlzc})yJ2Rp(J2&ab|2z6d>E*AT6qNJpJ
z_IqPqYqq-3KU)*}%i4sTYQxg(I-1@VCG*YezH6ex6c~6|@^55F%gK+~n|(ICeBl;r
zact3YJ;Cr@O`?nD^yhAv>BaTwb!S1cU*(bQ(R&xgZv5oPq`h{f)#5jmTyNs79{+vc
zV6)a_w$$nlwd$}%O>Oe8O*@<G<JW2W*>1~wv+m#r_1Wtle|htMUH$hq+oG!1OMgfD
zEq^_=N6E7Cp)N=NnLQJCIDQv7sJ!y<+F7nHn>St8IeSd=QGmd@nA1&t;u2=H)1P(B
z+Td%#`9)`ERGQWX@!9j_%I12d89Ls#|9zD0z4W#^DL1q4DaqE4EhUtnr<aOcEe)S!
zzIR`iv|7L?Gc~peM++EJa?8>lPQ0DReju?yZ<C&WPr>qw);60bKFQm5#Jb>9&ZOy_
zXWeTh4t(A{kN;ZtI`(Z*{O7oN+?PMK+p)Ly_-xY!iPNndOU2J<Pb=4&q$qcDYMDZM
z#(Cbo_pixwX3ctZrnqp4eyvc$_Fx0IIPZ{|{OKo`p7^A2u<6ZQ!TX1peoI+je5)|)
zeQL@i0bZ>~_X<8rq&M{>-rKR~qW+xU{1>#}N|)_?Vj245$3od1s~Q-5nx1c}=iIT!
zV1YjG*PwZQ-zRP6VvuDBna=iLBm2$c{4uGuHo1}EPu?!=ed!Q9U(|a+;WsJ8$F~aD
z6eC31Tgxj~HB~~&XVBCsq9}fJ(qX>uxfin*)|}_FPd%#HktG?3S#+Zgc%t0z2rk8#
z7#S{lhCf(-CL>}OBfqxf+1?F_u4@F}CI@8xkgwk-*8g|zYwlG>?q!$KRo?EcF*cg6
zb)2;=jaR%@L{$39>%a1|zQs+?+%BcMglqFe`*^c8-EYEI*gbFTk_fkKEs=6M{xVuP
zzW*o3%Sk1@U)?XQw!ZeeBF)dN_UFq<FIn#W^-TVg`&*=Na=N~|*Y=(N<+O?m+zj?d
zebTR7`mmSh=Fd&Z<~`=Atp!;z(VRs)*CyL+y!+#i(SGx`C%gM*sMqb17kgMB_=)+x
zYLbz<nuJly{QnGA!n<bqe(~QSQlPZ)l=g&kng<KM=+CYHG(qlK)cx&lf1b7dI{iSQ
ztZLV?(_d@uB`w|9{q9~<T9==dfxLag>9y*+c;c>K*cf)Iyl~Uj(uDyl9h}7vY1}*?
z)E#{y`HGX>0^=$-z3*HKZXtD9{)QhL>zqm~Qj68!9jn>VcYUeV^%)E2^azArzU}?S
zVZx`gdEu9m_-eu@Z(N>xc5d@-t>;g-Sr<mE{d>`MPt?SB!J_$>T{%nhc1?(tV>xer
zUv5R(#-3*iS?~XN_?66XTCbU}mv#Ji?Zq@hr88{|b!p8!PG9z#Ogb#}%KubdkuP^a
z&oYnQ%NB}!`yJsjQ)JyL?#Y=8G*!Kpp4PtGmBubsAsSvN{pPEC%jbE9=2chgRn|V)
z^Y`zWyyh1?E4Dl4u;1Nl(>7iI61WuCg-%Homn0^Z#HXYd#pk7_q!#5Q=B1<}b~Nb5
zqwJ;mi73%444PO=44Rl@ASF5r!;D3i=%slSQfcnz1HXEmM>H5@sX|I>k%Aw>QrKiO
zGmjEhdC1x%XV8`|*xngKLqiioLn8|lBhWrh3qwOgV<Yg+ttbOp+D)kR-e<HZgumdo
zPE6$MoFhvDU$km%KI3KbX+!*HzT+~s!EzlO88`B6*B+X8rYW6Wy*;DQYJTZ7B{$X$
zZ`U4=o~Lzh&L68|Q<r}gPnUSE@5#XvbN<;GleZPW12*2tHu|vW-!_{kZ=$9jx0fs6
zFj#Qs=;qw~3r$6Wt1mTXL^g?Uub7nZ>&!j-me;)&#uK=Tlz*9?Q7bgOSfnxOX0&o{
z+SXilr`OAj&rQ00;9E{|#o1GSwp*VD&HlL0`dLWAhBP_O)$IR5It86BeplI*P$4zr
z`$@sSVh2s7LQ3B|Uw*pI@7(k1!^iv*1HD(za`j#)@3_|^ShO&OyKVDRy?y7FNFUT}
zS+w;uhjN*-l8U@I%ay!2$Nto7r%Ao(dV1}=@7H9`?V^^~s@J@JT=UZJPpQ+1w-Hl$
z*qj#4`TnF}^ZlayD07F-8?8&Of8@UBEP2H%LZ_$8a^C)y_K#xLW;`!1Z#k7C=@`Vh
zP<BJs{-*Z@fr>_VSj&1&e@}VB9I(D;V*2W%pWa2>xVP{7bHnpFC#?$)UhUYLy63<P
zadCE`tudEYD@@+<tf{%c?C9CWy=%MQEI#Pm{>=H2$-b%Grf=CTZ>^B6nr}8wXai5G
z&;-$hn`#a&kHZp{3S7yu`RjOxFUoz}`{{|L{x|;}-z0nGZLH_!m073LT7<90EVy$&
zubk~-Vd;tR{Pq0h(38nPr8maVBWm%CJRcRZ_Sf-A;p<MB&e0S4{bX0H!ksB7V?D6a
z+hFEgR-+SfeAY7<t-6*xXa8RH<N2)n0nWkGwQNt>xX;jgC|dn-(&xlm6I8`g56lmV
z<zu#vE@zt4vW<5}yvbeb<U@xw8V}9U)YE));xOYU<5ya%&Tw*kPfb5|_WtE<+ROKz
zxyV-#zeD-r>4|<^Urtm#y_sxw@XGx^O4Gk5#J<whkJz*~VsGy>e}U5d9@Vyi?F(&6
zln(u2uWz_>WX-><g9Qc~UiM`^(#dR`!ny12Ki>n*JyRkMxGAikBhU21G}Key?aF}<
z3#Kvg8y_wFJWsiH%J#ojmpPl+6#pjJt}{At>0R%#56`zW)o`6DI9b{7<DbuW(-z4t
z!{1ytuh-B1uxM8HVOFoVjtL?L7gq^7<y}^0V&OiPdiQQn`K`w6O)GveTI`(mN-HOQ
zdgqjRdme^deUer2-fOS+EL(@VV+Tqv<^9euc=M)v?oUtCSyDPTH&3;^DmUr-vYn~=
zPi=FpJbXCrJkb!+*jH;B^Xh?Eov?J)b-U~H{^*u&Iw*2gnfZ2fKDS+kKJPu_Ua{>S
z&zom8@>d^p_6=nbx9|$Q8o8*m<nsJ|a^BaE<!<j#$xoQLq^UJJ%yG{Jm(^Lq`!4E4
zY!@<)*kqo3NBHX$S$l`Tul`@H-kv!6`jDKg*wm`ybxwto^Snj38{A*@HoVnijcnFk
z%giSaD=YS$W8J@y=X*o7V!FBkWZ{n!wDitM&B;m4%S?_>OioNm%>^;?QsRqJi&GPe
zk~88n^NLF{OG-g&fs4VdbI{s&14HD!x9i|VIvc-16C1Zd6Z2<Ck<Q3~UY<8DLn_eS
zgJ9dz*oD~~OEOaPiVa;1oWSjMVQUYl!xS8$4pT_XOHl}dI!wV6$zckh$tXPq#PS3O
z13Qo@%);iRm;za7q+n!VXbKu_Ff=tV2Org9XarixU}9ikW^7<+U<l$G3>l9Qs%Z}W
zSZOca`NzhFCDwL=*@lT$l{RTn?{h5~J*Bp6KVR>w9K3x3!((ABjb(-(Co(+Nc(YE?
z@tpjvzqLZqjLrNzH^k3;_(`a_!I#bM{+jjA7j|SDuK&<|LBe>)ZPzT5FH8+88eB}G
zQ{&3CcxPIPM1MPdI(Uz;FJp)K6jf=bJxVwF7Eg<_x@mOV?!^az)VC!M^_SPIS2x+M
zSvz~%dCn70FLV9rNKGx_x>GC@bJk&_%$02|Jw5^FGx}CUt~;de*R;s=uE-bp|C`FM
zw(GCTt5s2de(bc`v#0;k*^_U$^4_(IOtp-tnl!V>c1}xNhvJT_Uv&Q5EC}+i*s<3}
zyL;-4ubVGsoL3O3^NERn-u?8eX``h1bwQ5pY5OjFoofzfusYoML;Un4v)GG^Z<I<u
z>{fqO<>C0(Rg!J3`b@ur1@3pZ&TkABdb+X4Bi7Ja{Bh5*s^n?jng)I?eo2yXHs_{K
zSX$5cdhUZC-JN$;XV^~KR`>qq$H2f^U9}ULk%<r1WbM#06J)6h*lX0XPybHQ)$6ii
z?oZs)6zsoDJG#D)v1%!QRmxXhiT0c8I<Ed|IcRktQ$zO?Z${v%$4kqPEt$Z#(7fAF
z+5I3V$LqZB6|=85{b^B{=_$EQ$Zg|q*HE#Qi&NLkVdsC9eMer8t>{f#htLz<+wrXW
zPd+eTRx^IyaOkYlLU9vrL_dLqnx;@R{ltlrdrM=BE?7up&HY@c62gs^)xncorMq)O
zyjKZCxS4!Px-MoG%Mo`q=S2J7EqZRB41d(Ta@smsEcDJo9-#%d66^RQB8pRrj=ym2
zyR-6>n*FiLo{hmA#*G`og!erQjJYwJ%inuWSTNH||8KkruY8?CU(`q|DqfbhI#d2>
z$Apg=$A3os`=$G3|H-ee(&sD$w9LCI7jJpYnbX=f`G4m$^@_&+^v7-`A$>P_Gaq?<
z@hxHgzp4D~)b#03HXdEQKTG+=l_`&0G?I>ZKl*Uvk!H43L7htC<Z6FrBUN5k742zT
z+_Lt2aetrHe{hY|(e%&xCYOE{C-=M;+puDZo7RulLT`$;y#JwH*AsN0yCvkOzTM-{
z6?f7$-h3E;V{=cWN#v5%{yDqlC2p6lzHxfe*(nx@eC%xU-fjXPMfdf###no4H&*g*
z$(-*QFx~e%Us&vcsac224ohd8{Hk@web&BB=Z>nr_{F^Q)=#m#i7j7cG*0|cJ9AxT
zLfG>7d@GhcXDd3n`}p-2ukv3cEo3Xk;lTgV&FA{6YL0_kUvt&(G4-E1yjA<u%hx9q
zgDsYxvA$7mZm`JzX8y%b4r?8&#E)L{GVR>%c(tajKGe6_YiY5<0ju>BKF(6<yV+NG
zs(MG;txf$i?PP^{g#_PSS^eRqXc^O!2lrPg$VDf%rZ}veFr9a8@TDl(_AG|!sYzS*
z<!3Gbs^j$5Xzez|dHeQ&`w6g>53sH6@rlL7rA4VJ@tM%8Ku|geaSW^xdZq@J3=B+O
z22D(E22G4-A+?DB_rj=OviBEk^>kT(R%JoX8v~?EO$<_zDi*Rf+as1Xz&G1FLL92#
z=>q9Fz&Z_hHr&(68925wNIu`Q#wGRb*&X%~zk4@^uXNF675(&{`@cZR{H;kr@o9DP
zPwz;(R&t*?7R)ubH<sz<%E)_6QQxL&@%37Gb$K4!bBx)7JwEhS9cSL7`nU_O3jC2}
z0@oI(e9*mT_9;ixlGIK2r!VYX`EUkn;6h*XMa`AxdS$hqv>?YCb2|9uQPm}lu1wiN
z-lZk}CzKx-d@3!vSJV07{KTTfd2s@hBExnz9~XFT@iIcqtoG^?lQv5xgBr8o4+c+@
zlC5Sw+P2tww#hHKTLO~`<0c9(zq=%F(ix*`Ulr4i>%W?ooR#W2X)5Cua6(juHhGH6
zGmDGCOPz}|bIMYSK>Pi4<I|D1{j$JQA?rbdCf2<MP0ULnsgT28`ig$YZhdd$@{X02
z0p-duXAeW@3P~<uo?wu5;FZjd?uLrs<6>Btg(VQe!C+T__WJ26K(CE4Gc+(VHLx%?
z0&nv(M&?q_B0^1rBOlxAFIO0Tw>bIZ@J#1D$G`6}f9_Yf%e#MRv20A<jCIW6>nzNj
z^~G)FPn^pTI9Rbxl382emriB#w--Azc7}dpaanHp^AAh6+{Z<}>OT{!cWr;VNO;@p
zM7s+)7oYw9757$l%e)1q(F-S?{@^+3Un>`@-LsqAkNkJvnQH!L;!7h_rHk@be(J4r
zH;7I#x|PW5?wjDWZj$?p=BR*(mtEaEV;A1JJJU<vEPc1fljd#auRW~R^QZTVv%g?D
z^*+n6{mOxDKc^H{r>E@LHqpzeI#tggi|6ZvcT=BzI@|Q-=0dMG-!^$ab!~l?TQQkM
zZ%$LL*~%k^De`U2+*)5uxhhVEo_E~f{?cIn%zcR~*jjdKRK;7|lwN7Ep}D^J;9+YI
zttNiO**ngxFg@HN-Mrau-;$}Bj8>ft6)ZPTewit`I;<|byUkK`;t~NJPNRl|&65vk
zZIj@hTi5IPNx-ZA=T$d-$w`Z6E>~N#yT|4k-yV1NJH>$?3sUqser|D>HOO&!rD@(e
zDI;x9v&Fw^OTEhhALM_>C2U){?3cRZ$Jr7^pT4$~c%4i?60*)C<$lk_ybZDs+50)<
zX3i;m>2qW0cXuKAl8b@!+CCpzr0l?5eA|23^J2E1g9~0Bj9laP>zV$K^M!NVa(5mP
z?X{?6cJ+9FB=$PTyLL;ZwoSbJ5zgNWS9<9EeRWM9(llsXW6-z~W5Ncbv49w56kl-m
z;1kDfR?*g{UFYtVIW*%}TLd`O%R<*(VpZS<ngCK@0i920&BmF~TEZB~$jr!Spl6^1
zJL#W^QA`0kAybrEkYAix0@@4-&&{ACQ}oetCAbw*e5~<-`Xycd2U86m&2p>{(20*v
zN?h5Nl_|kf;(0B$<&|TQM1I8DfG~xuV|z6+BPQONC}_IUN_LOb(u8?8<m+80X5OsZ
zT~Tz9jbH0re``VFngwUMcUWqMwHW!e?Y2Flb@RG>(Yt?v3zZx<7BVGEHEl>*9TzSn
zfB*E|(gg=%D<||wKL~hs&+y-j>Vo*C6K<^i!L%*^a>88)Z>6KQYpts0OG&v;tTf)$
zbjK)@d0L*l_lLrNkJF15Y}_By{p8n7rQ<C-rF)g9+rL$Pa6WbS*F={0cjY!kIVwdh
zoFA+6BKl<RN*<nyRSCz!`Wd5mGWKLjRvwYBo6frb=u4HrxGPt^gWuj%jxu9TU3`#v
zt)szbH|f?1>r=O0-S|W-x}sEedR1=ZO0E9tdxzUQ1!j5{SDdij8)#ahb@gLirnJ^>
z>%FQwW<}W+B~D0df5&sp_ljT%ch)~{=0A%=!#n?Zon99$&U)fgud-pV#U<S=`=*_}
z99iGv982;J3)Zo((M*_VZ*eMIfOoHf{_&;H92eYL$J#z?!IIP*A5NamT{|xCJTSS-
z;8*X{S=pkDe(9@jC573waHL&2VphA{PT)_+gDVYB8TPLF?8mmaD(h!b(PK{k*R%N;
zl|RnkU32G7j^K3FO`o<Ti(F#UO7Cg@dhQkbjagZ8Z=P`N*7AAHnP7SDRMHK-JaFL;
zo9s?ZE=kPEERF}wIHl&5fcCp)A`W0dntKvMQ~~=9npk%mG%-WZ$L0v<5}fXI<nbBg
z#0Hx2&PHm3c!n7A8SsF5q3k@YzL`0Rd4|f6E2X)3q#PlRPzcs5&~wz&H!wCfwJ<d@
zurxD=otn+eBL`Ci>eeD$3TcTrJA!+th6a{KMuvt)Mh2kaOJf5ht^r*gL#QfQe(cCn
z%_TbTpGq9v5U@Bu(0V>s)X7607F>s97D&`j+}gg=!TzpnhCD~}Rb9D`1wZ=3`g3P8
zO`0HfHJ&4<^ZLUzdlU|Be9#=&mFdecEh=CCfJ@zCz9$pUM!dW8`?#E|`(5>&9E|gq
zDaw9z)YbR-tFiV$*IK15VX1v>A^nq`HSbxvRV+48-gWjvt#J5(*h|gX9zI7_&u@r|
zw%U7gxsrW@x^Xn$_AZ`Sc5{x?IhU&3m0V1Zo;jn}cUSA}_S!Vw_{2b^Q0d2Rk00A!
zFio0ud%ehs=!IuGr5_ro{aG+uzHzy`Jj?6FmXp}#&%C_<@+<#<Ig<aTwaeM0ep@V|
z(%dHSJj8B=Rhf!^qvFxW{7gS4PjOe+{qG9j<&2$ok5siZJq`}3ynB1jrBCd$^|tM?
zd)u1(URChZbSbCA?_SeibZ-=3|CQRfX_4jm?>7G>ejoc7)gAeWX-)N{3w|R0k*?o(
z;xytnys&pYe}4V!{NF8?%cG{|ubI*^@7<mQUj1H^f4C?<GIUK0@DsT4*tEt+a?3r|
z{fpV=pV)f#iTrhOHr}eKC84|-Qhx-blTzm9KA5`T@D%oNUXf>eS%2@C|LlJEqhrtO
zrhN-O+F%l(5%EDNpitak*RzV`JzqAhovpp;-$TouxLw=|Q|?ta@A&^XtarQMOY5Fb
z8xO|LUBd07eRGq<*RAuRm&Sk=;3MjZpc@@lC+1hAz3u#5ZBa1gBomX_1<ctf<OTa!
zb)b)jBCWNA4R~@_7quTqSmx=|5%Em6<GV<T$Fds{Tzvk*ruR){ue@b5Jke;Eb@i^b
zl+n8hwt|=RzVsbV)>BT~kiIW}+W}$AgjI`7R411P-CI6)Enj<QP+^vsjihYzk6D_j
z`@Y!Ey7}RARJ&qfgYW4F7PIYl|9W8Hd%o>*s(_@##pz5NwTqlG)-2fT7j;WwfA);V
z3x8+rixc%YD=512fM(2=7aia2%+_sB`YV@oub@Ie#v}UHo+TE$(%**K#f9I$!tCJF
zxa5+5@^VfmPLV$hD-Sgk`|BNWxG7le@v4gHz~$E(jA{`j2M-i0<xZaZ*RpoE*5hwY
zk9DTU`^it7^6Q_@;u~dBJA5};_|N_&>yc2Y_UQB9l^15cDCqaBy7qK07vF8&&%OI!
zKVDLM`uNns7q=GI96j`-WD<*X+nOax!4BKj{PQV0|9gtj0n_<q_IXby<SkgHwrGdW
zzKhzef0t*R*u|*5F{ea!NAc9>@3tRT{lMVEu&Hhvcel*v0|E0?cRt{_XO{NgeCfsA
zAt^d1)wg<2s!RQUS@+>izdiL!92F-xmM^oEe>Ly%{0nLMtZ!D8)$Pv~Tkv}8@jsJ7
z^tA=mRn04W0<$)JJ`)iu@-fRp^#39DZ5w;}`(gszHrwuJoZ-JIGQ{1^q`D$EY_eYQ
zt2B*@v$7)l7xe4v?a=G{B+_-}<<^?tIdgfIKAZ-w0AQElK#uzXH~)+B^Gi@S*3W?#
z`plJ}JyZrwOtFx5KQ{{l0|Nu2sCU%iDahqMsOcY$RPH;u!j9JB5*BdJ0UcflZu{qz
z=@uu#cHDCd!!IUB+>?W(7&H<I-9T??0lGmFw2lFM5|@#MfuRxj>}b&OZZxx)(CVjK
ze9va~o?HCbzpL)|$L?m;>{lN0AGJ2@oGQq&_e1i<N9k$jW$vDr_RxOU+u1j3y=Ft|
z>X*lLg-)-Q@hM<mXv<}AR<zgu$K5ME0irVR1Ku6c`~K%;(5H#D4|1=X8uZ0E7k_em
zc{S_trcSFcON)Fqn~uzAE#ITdLw4kJo|*mA=G4=_onM7)CRI$kcBdq7vP<H{-s5hY
zO8MGeNOoP#&AD13Hg(a<6I>RrKdA`&7l%w1Zncu$BWJR;o3&?WdH2TK@(L4Ia|Y*4
zI9F|6va`T_qEcY8SmnBn>m1cMPDpBBbX(<dEk)~kv&nxQt%Es|&R*=T&o9?}Q_Oh(
z>Qm7C`pFZ{Lz>2*`5E-$2T#K|p*l^<m3R87&H(*dma`@+{{Q)l-irh;PP|t9yvD!m
zLht@JyB6&;IjUi_wdPOG93Abwob!VBXUDA)^w{>4WAWxwwu!!%-8eVf9bWJ_IaK=7
zuJ>y#A3E=}So}=COU?TIf`G7}$GHAloIS!_5IAM}43_(c<ELB|Jt^Wi=SXa6iYV{@
zP=hyZ{r`F2>+DQ+`?l)O{XLm~^@Kc9W<8ktVcC1le#VWWTX|%c{>#+KRH=~Lyj-R*
z>D{Rl)7OZ{b{+cR-j=6zB+PK?h4ju=?VmZzV%_HQtZI5PGw^P~_S<2$iBGZ~#$5aM
z&-R|<8TNI_LHmP)zi7Wa{&(B=ruf!NjuN*UH?znbm0!}3FRF0z9#03C?6tJeM}Is{
zYN};E0B2WaXlEThYE%L`u_P5XWMqQWQp<p6TGlBBO{^0PnwTpfnO1;xwsiQsK1HKP
zmh5|%mzTyM=Ug6E1_R`kI%JI+A^P+1Q6uo_KB*~?hMKzxxS@vcj7EC6fl&Kw|Fa3j
z8TWQSiS@EEP%_9gesgHKs@_RO+fQ9LA`d;(Ty7h&x@^|jb=A@>yhjY=KT9vM5PKbV
zY<jNj>P?lOP6=Lm5`T@=CWt>s{@6UxrFHw}uM8K93@uupF}dK-rd_2ovx<$TToiB-
z(7WICnZ4y%iFIz_BV8WpcM4ZeD##{l>YjTO=XYZA55>gUCa+nK#l4A^+VlG4`Lk<G
z9O5@trM)XZ;jtnuJbZpgL?4g#cK_uDH^bhYs*ZiU_N0H@Q`6^$r*BP;yVKX-aBJJd
z84eRF4_6%Dw(-c;EC~x{f!-Te%$Mk~)^>btvJ;qCusXEK(dhbZmSU~EiHtRhK3Ddv
zlV&cBtw_6RW#}@?*kM1%^(fCJhn}rmkbZZG`ksaUmRkiQ#J{V=xb>%eKbYB3Hlxfo
zGS;cAy>ohImB)t%i-e@pW|f?}=Pmb~FL~XwEAJ;wvYKamhvA8<YUj3DE|S`H2c~Sf
zl$iV4_~z03-Yg7fYGtM#?*Fd1X_Mgg-SwZY_7vziCal_+Ea5U$sw}DQTf>ImFH)8n
zU+iRmxOe+A=Oq$5mX$L;<e$Q$D7z^{Q?)baDPK^ad&xevHQO9Z?^Ugd@3lX<=dz=q
zQ1nxQfY*jcPZfzNao(@-DYZ|2qZofgAuv0C<Lb6<|3lYY<L4^;Stxh(K>wnRbzEvQ
zzdp&-pCPOJ_2$Y=vQMQE<rzl#g<8NNpF8;G`s1ccg|R6<_w~~4pYNKnPKMtfErWsk
z-@6lU)~?LiCw^q2^x=hz7<wP4WblWbFJD*i^Y1LLnLAHb#PIOMKY1pi8OCkq8S9e#
zVC|e~5^2)Pytb7ubF;67{J3Ou(Ai;~Y{1u`KNGBX&zPB+ef;3^6&Xv^@67$FzRsX^
z=eKlUE4%(kOQm3!*C%3`PrVJOs!dYlYB*7xc5wk~Li~%RTb8e1@jcgcPEAzTwM7;)
zKUZ{r@x7$LeUIf`&usU`BHjZcM(+(G_0~No{1o;iYkK~qfZS=l8CA13nTb@feNx%U
zDHw2_W8;p_sutx$C(Wme&n{AMynb;`%FS153%f<G`$%pIa4fX7_bpIv<MF!Fc<GGM
zlonnN&gnA#2i|2Xlo(ukU}+-Iswm3H@gmgdUZLkr4e<cqXZw6Fmae&Q>bK(#=cTJI
zA7*v&*D;&@=+`6H9m>HuZ29S-^=?~z?DI6DD%CD6S&=mTlH8-WUfp}7|GIne-cL`f
z+Z641!TQM;>n|+HFW(;uVF+B%rFHUL#hI(G+F2wvpIh(QvHtU<ncFr$OXR=Q%J4iu
z>WTE!xsnTa&e=G7BZJ)g3;h00IVZXHymS6#Rk-woui8@6zn!srT9agrE-lawc{?lo
z;O$=m=Owpydr9{*Zd0Ec{9;>YZuFjvE6Ojr0~dw;{IINH!8N(fd-(Z-OEp)$5-xvo
zucuLQExUlb;M#Uu_KT%^&VNp;1DEGo(DEG5AxDX*ZLw4EVx9S`K@;;wgC?e%&|=-u
zw&?hmZ23m#+K-nsLhjE(PIaILSz{Mciwx^QN6=;$x3G|NenDkXW_m`6f=05Yf{}rN
zDeOWj%1=RZgf`*~Ou<J&n;96JfKEX&HivR8O%0<A29;w8HT+KdZ)TWnYj*eNMbE5k
z0Z;iiH?%h$`(f0m={(hEmZY+xsO!DQCu9Ocqt{J-Vg6q``{k8a`?T(^2-Lowb~rI6
zf$7B8b4AtGJ3jfPa?CorBunxj<L=^R*S{UUdv?!~?yWNucQ7tme8u+)tL?<KKelib
zrmQdcD3e|H?Qr>AmE!6rJUtI@nmwG^%{r6&t*asDsY496zZWf-wrXnog}&q45{r4u
z(t7SlZ%JM>zkaf?!N-N_w{QN}3GJA;;DJB;292;D3F+xBeVun7i03`mdf#u!W!Tbm
z!$HJTugdYs@_&z0&K!&^^wv>a9$ouD_M%?n?87%QzVDqTy{2HJm<adngq>=PtdN2-
z(7@k-8#G|a&%(mY#Mp+}ZAEl*H#66*GuyMF^5UH-YTE?&DQ?Pan}X#yC!}sG?BEOU
zh5xzR^EUrH=)BS6v&I2gy_1}dzoszAELpPJ)4$(V?!9mR-aSjceNr<xDR4@*<9CUq
ze5>o;4LN~7&FXG{^)a$?^pAEw|AJe0+Y!mRB}d(lS!eOD5xH&irFhOt*82>1N-BQ+
zFinVL5|*gh^V@fWLay`f1cRz{<Cvo}FaFTA3@ZNJvue6(Owmmaxz&C)j~fl=GcWsn
z;Gbqk=&hEk0nFPTwJcs{wo1^7@u7tGHJ6Odwm*YQS~j~)beqPoy+LQ&!^Z-TZZCSS
z(a$(7Nz9JnvCLAlMu|l}L1hO77w0{b-Ss$XpIPuxyVCx)OwEYkt#fwg&yP7O@#e1n
z!x<<4?7Pp!3obWcYsC}O(lU#3!HvLp=zVsXdFe>4Kp8}F5n#~7>|@ZxWCAHJIBNV^
zEM>0D)I~2QT#!nM&|pIm10m3O9TyL`BiJ%<Lk?**IFhJ>ALL5C%)E4P`_90?(8$uz
z#K6J`oWCKf!694&>exakV{U0VV=S(hJtZeQF=)Z-#pf%h_&lA`F!OY1ic4yLddefV
z$1&!f-}Gm<w8-gxN|<Zlcc!KFk<NL!dH>8-8<(59+%TOcWo!1Litol%_k~%R-8cX2
zwpv#ib@j`&!rikbC}+>w-ci!dBNxAOp6;*J!P<9rm)TAB;o#_zTcj*=C2OtHu9=K_
zxv8i3sicLfcssakl)nD(Q0swv0`|6Vcl`PIQ91a|{?zIDH-9=5_SWv5dga`{1##-i
z_x>)spvK3b`P#<qgKffo`+!S#)EooniI_XFEG`INA>IB~_gD419<IkL(>f(jJN~@u
zVwQORQMucR+HYSbHJbgsZSt|G?lX_r-Yue#j0x(IA+jF3{H5n}ZXL>7<gjH!Re(T1
z$&nL#F|#Ua1BVSQk$`(-o#C6rs#YBOd+p}z*(QhPY%vn?UB2Z0n|;go{cyfL(fr&N
zBfWr7DO0~P=R$?|lgs@?3-sC#AC%3#b9$@#6`in)LBUoomx@muk!DSeN}4q1onx=z
z?dK-1A{DPPR$Wiokz#rF<lFUcy_r3hFPO>La3^)K*}Bw75C10b6R97=WuHdsaoOkG
zxcK!c=a!rh2CfI9zU`&C+asn$-Oatku;9yVk9~*Dm+UfoP}ANzT}pJ(J-tQId)G_+
zoDgufAo7QLy8G$l3)rn{FY3hRNLr<Bt^GSOziHz>j>)%0+&?ZdKkhou=6Lz~logZj
zf6HucO8DgIWb!tOA*5AC%xn@*%&%o@_umHRL`!H5UR<05nreZaLW6cmIcQuxzbLb$
zGQOxdF}?_CQkCxwJcqKrH)vvgZP3Jg8Ja`GwrQR<*;DZiIq*Rv>W#=3zJvzDhSWKD
zSVK}P5{qHuDeOG#9{HukCHZ-V5(Z+BOw1n~?4#hEUsRA^1U|qJbP^#*hM7k%IM@f|
z1Msmm`S~T_<zt95sX*iHU>_(11v@GPfsa%MX*M=Av@kRQ-#rOB#t?M(3z&;~;mbfd
zl28w?-z?SP;Wgg_*SEZMyOsUQ*!`@}&)V93dv$F;+^%@ow)EyM&hU)4;dToya5y$U
z*Kkyke_SMbfl=yrT!HeY)AKDKpFiq%Y*Mb;vFhEMZ>i7aYJ1se&id~|Vd0y@GB1-C
ziHppAFP(n5HI#|zn&-(gQ4cqM&o`QX@``nb<BB<ZPp`h6Tg@rI$fsz+Ep3iJ=WRmH
zrSq>iA3IHw`^e*>*K04<%BsJg^jctl^lR(&=Ns-Gyflp^x~gu;N*jx^B}sh?EaP64
zpO0mT>`&9NV_&qGRZTE+`m5IM{L{F-PdGdb*rnHX`aAzDrRVjt%!SW>@)gcjym;V@
z(x-)P-&`{1oJurhXUM;n$RYS@*N$&5Hzz#x-T7v|NZQHph}&n|Gk<io2{F6xPZKU%
zQ(kML(%O9X`l>k-q~<H?)K_dz*>U5=vM&{zLr=F{GCESRZgGF&-E$nlYu|MI5q&a?
z_t|`@@^e1@J48fnljgKpurZ_wJ&7!f3O>LzW08P%hD&u{<vC-ovQ^QIV$xf?Zd_of
zj!W9Yd95v(ZyD=U&s`eb9g{bi$lO>Gnzvo%!o8WH*2-U$9{kiyQ+uNjP=4EsyMNzP
zri22=xGU=dER{smPH(a<E(vvKuWYnjVIb`Cl%;FkG+|XI{++=`X8$?+MCP8&uhrMs
zyyVlD%`lL;t8@E~#MJP#WB+5i!@ib7%16)$JVp->d5HaI!tN`NubO<@@s+JXb$Rh^
zx6BpukZw`HDverzV%;zjwz=;#*IduO{Y#Ea+?^)Q8aSi$_tOBKs(BwpeyzUTW%qxg
zW`A<`jV&uf7<u<iZqxtim3utyYxvJop)x}I-1*Ip-p|^8yY!H|YW>cS$v-l5Ls>3<
z>fNy9{2rS)`HJUD7bp~LU^%+|d(rZHO1yiGRo!}0CaFEP(@UOqYj%(A4++le%x7xb
znjV~DVGj(r{(sU{p7*!f=FhzTdi(l}N0w?+c4che-+cL1Rl03b`a0F8MK2ybd9zOF
zo42;j{FfUXK3jxr{<}Tn#I0lffi|0dPrM`ZeD>Uj+j)!nA1yhuvf}4!ku}GhSr4UJ
zYDh30ZrU`Lbzkb+Y4NEgHorMd^{VFx|CQ#CJ)YZW6~=$Y`r&#eeWf*Sr`&87$oO1y
z*%GH0BbvtfP)+mSv7p3V8;k!R=9%*}Cu@qm$SDW0sV$!)SFVZoNt~Q}(fZ7ysXR){
z($ih^cHX?y<+wSGJL-3>^3qRI8~)#$-8@C_qW%3z+b6DPwN5?0AZO#*B%#9-q#vuE
zGue}0Uba!-@OM_J1J~A<BzcIJPs*H-D06RWLrF-#gv{a3%op}AaV~8OmZ;*=<CHO*
zKk;u<my-8Iz5vy`r<r-gPc}1f_?h~4b-(?<G$l>PrT+9(^=aa3IStlqD-_S`7XK#0
zc}3TH#?r#eA;LEkK7aL2^Z)hnoq|yBmNnrUU6U8CDO-8yH@E_UEd)avfk(U22YFO)
zCcL&_d}`3d_|Tw<u^m!d2x?g@k(tKDa?fd##!~JVCNr3j))X-jdBKi}p)mMTO%^WX
z+k0Sww7AlT6dNNAgxT1&+C0wLGBL7ofEmn;?95IKEIW=>UhdCP<(sc(DJjFeWZkT%
zmh7Bjr;<1BZ2Qp_elYx;)34%%-&39b%N=Cclvm96|G45)i6yIU7TT}4vh!SzEO-eQ
zYK~>YY!e~cP$3(t*ShX_<WT>cEARI{<C8XvTdpDpH?s$Wfh&_D!<|VB7YHvq&%EK;
z5yj~feu;$ZGQW9eb2;zSikz}Ni|*}aQcz#fs%|<v?AYQ@?w7XbNi#8suS#DgI`Q7G
zDQ~K|f6Q+IrxE<O@*uY+lHlosd6GdBbDu#IQyC<E2ryfHe70P0<$~QBDH~-ue?3KS
zRnYua97vl1-=HrYoIt3@u-p8s$(`!#lbbRoto17W@3u>ki=+3eWXQ?i9k)NP`()KQ
z(WdIzYBs6t^J{cp#Br*)>`IzdcWv>Cx(6Yp3ao1aw$DkH$}zZeOI~v0b-8<guRl0F
zrP+Ml8+m8HyVW|E_UbLwf3kANTB|EFmuypgIXjynVN$|>e??D;@97g(C$i1y|FrAn
zmY0)^vbTN?e-SHvwnujLRF<ippG|eAJ@(AKTmJaBr}vgMq3kRBr*7V&yxS+&^~1N7
zo2D9U`RfzfqwW<hQqwf|Z1JSaVqR=KJpmW{<v90=FMOtW>TmN?fj!MjxsIf3d@B|a
zv2`mu+%D3oXyUt`-<4;X=fYjP=N#Q=+^pFOsS!av28<dJHGd$FdHN}ZC`e3w_Bihu
z|F2&=h2FA>_oHuG1NRsb(lw^!^LZq{HoW^PUE*qIt<BMHulkq!ZflF*-w<D1u4N=_
z*_iIsqWsA<-Skbz{vZ7t5_wFPtW)r5Id=Pp>BF*{_m?^CKJLQNR&Q3K5_KzwS0vJO
z?<dc@+vHDf=5^PyovFV&X7|=B3J+(-2fK;h&Y1n-v%yt6!$-X>^B#BIx;4$tRCsCp
zho1!j1@4Z5;gWs_`q!}?nJO%<FRePi^wY+^nG5rUH#!#n>(DykFQ5>5{j-Sc(+4hJ
zUbRm(n#}hv*zK3j-2dH5JH2mmx-Pl5WXG(CyVA8m^ZO#5I~teFQ@fhK_Ac)+^V+w}
zlcb-P$Ctgc={*t~7QN_ZTHa<;^QT7Jz?m6#9eq+_PDy5Neo<<Ca%EC#5u_6jntVm-
zzUv{fbG1PebGbniQ#>R)voJ9*>_pDOpb<Xg&3T@#hC&7cpte1iFsBpDE?7~{EzIQ%
zvK7*sS29olDP$Iwgez1)NQ38WKplDm&@iBpp@oSVWY*ObG=c{@4;nP<N=v&5W!l9o
zyOmbYunm8qRy1pC<rU3G4_{1e*tp?wbf327td#o;W8ZGzWX-*;p?5B6QPRIH9k+yD
zTfA1Bd%#hfF{rwu{IX2{@m)JRwq|iYFMc8Du>9hgQ%SwLPy4x-1zcJYa9HEj*VU@+
zU9+aitW4iw&vW(r&mdv_L(*3Z3O@875IV(nde+06r;Mx0ul;zl^J9jKlZWu71BaHZ
zi%a;oZ5ivIEqB=?nXW`i%t-#aH2J{<p4!+=Y*n9IU%kG<ye_WAF8;sh+sr*bEzOEb
z&zA@Jem*%tXQ%Dclgh#N@+vbFW7ubE?mcGp=6PP5Rrd6fWaGUV5{4ftddv3znb#Mq
z)wbMs!X0%fOGu`5HE>31ls=ssY0%^zac0dgju5l9YOAd*z8}CtIkLixjQ?3U4A>YM
z|1&W%V=Q9CGUnFG6WjMBKQP0Ib-~@;{_3hN%zMA5{MEf~@OX)U`0HDmn%gSv%f3kp
zEAJ5C`Wdn0N@BrYmc%TfF7c~edynohsJZr%N42-j!T-&f#dQ|P%mw}5-pw%V^SQK{
zvE<#p(l~YxsrrKdVlgcTDqDB3{;l7aD!7>c0MnKqLFSe$S63QVN$g*s^+jmr_r<PF
zk8R?<&YidQ#Jn246HDg#afo>5{w>JOmP+26@=SjFxeuS_>+P1_{wbiNc+#OqkHvat
z88NNyleqg*K=56i>FNpV?F^<=T`;y?p349APv5+x^X@J>jIq0Aw;Ek?zht3z;a}q&
zqb#|t?`*FAdEO{1d055iRkGzuaK44Dl>;9N4eH7#=jY~@<{__@OHM?ti=X1myqH_S
zVhs^jxOxS^t~KHkmI-!s_V<OHwx9sJE(v}n1N4{}Zecm_$<Uc4l?u+tjsoXgXGd_w
zYhY<$YGi3(YG7b&3EI_*%r&5~^@Q^81yReOjX|4t9gS={5*xJ6$~m>c`}n76dv2Re
zzqTx;XGPqH$6PYs?@zb&UiU5bjpA0v)n|9smCfJx)6UFff%U;}hJvmolWoHrj{fYN
zdFtuvtSeh@IZhBbc<q`~=b`;yEQF@|gs^@$d*a$$Es}ce4v+7}dv!dkt&fQAvkF@l
zm0y+_w6bdFiPu@PVuLQ|a%G!}aSF6t$U0@k#$fLLq%PdwzWa6hj*eAF_XUS;ns}sk
z=Z02EwhF!5iBi8>zj{qv_+0F2-y+NVQ+5={YuI=HafnN9wrSRqnwfq6USyW_pM0_F
z@_)SqUi&qPS*=m$3I4eDs>+6J=758`Hez>OOw^@He?#&wsM19=F}Ye-mZ!4LsBvig
z!9QKc;v?4^oAVfX6{C(u%DmupUW|+kK30oe*6eiMczkl*32rW@`zfzv-bLnc?COlq
zI^{KWUR6K)(Oa%XO@(|`m(Jub-?C77_cxXKr^WyEEIW7T((N<7e+vIFYaYyrHI7f&
zmTKLZFHu(U_0A#>c}e@e$*({D5`TBr?=g!|=(VR$?*6u8t$8FHcWn8d>HZm3Utj8R
zId5AZ9+Q+&v;FVlu9gLBlJ;qHwwrv&V%$AjGtA~6gZX*ooR5C1ww1UE<xG5Ma`nxu
ziO*g3O)xCF>dEwt>FF2w*EKh%g|7Vnrt9ZS_y49*OsiN<cSW}sYEIm{WJ?wA-dSJ6
zl^NI-#qGT;FS2@aFW+X~xHPtBm2q67M$PhC_16sRdLj2(%0Y+ez_n~<aeP_<WaB2v
z<Ql&uBFAPMG%=?eG%@)@s#^hR`L){=eyUtH%l>}+W6y#}^s3htDFeGZ!3W%g`N1`8
zX0d`#W^QIlY6|Q$cWz-}n2cLMFgT;arp1g6jf{*9jSNi;z_%Hh7=Y)+jLl3<q70~H
z4WSHqG@yE(wdsZXM|#fo&3?Q1fZ5D1POp~RH8k@tTOQeda)PUK9mA`(N-gHSw&pWC
z)3!hD3TvA@C&N2~rDyVFCOd;m=2l9HoieR{wf$GuSDSvT({S%Jyu(+SB0uv|^sayP
z3H#T+er{u-nWg`9B6sNjH~A4)bx+>&Nh|E<xz2Kn{h6G^<Gq?pD}Kp5jNaM2!qH=o
zRAKM)q^G)@Uf-`de|vS*DZ`IGN}pMUzc>9XuH@Nw-CO3sMNyl{jwu(P?Nb(4V(5&M
z&tAGFZ@G8R+r>rC)+hVww_Xx4ou%j3^U7$3M%%)PoQ_so9zOo`>%&Q|MUHn@K4w1N
zA!;piMQY0R`6-b?xsVJQY=Gq;5ae;8UB3!dE4#xTRTbN~3tw+a;p<jRN2-FcN+ab^
z*pyaX#Q(phlC^Ur{O4`Z-qY73@?U4cE%)fd?;Ca3v%V_vi2iKn$9_Eb=;q1il}ux{
z*_W!vb51+E;NLz6o*1FfACsF-X}*lJ4-4<MF#GN*<)d+Sp5u<UVLmNO98T=muv9y<
zfF<kjk1Ik(Klu)CykpejqLY8xjsI1eBftO0h^5PTdHECXEu9xzo4U|O{P~JdzxNA{
zzdhzsAM$nagZ>XSp-TOl+Zq=?%=OceZb*N#R$)F*QsUL=|DE6J9=sK+snu$~CiPt#
zKWp!V`1|kXf7$;|_V<h@^%JyPDg^j)JcHkhMyI-Y#jfA=+p0+R>^Id8x#?#V=V&tW
zroIlp`8j;rZjZB#;ObQrnnO$TGV@YPN_3MGq3z)Ol~uoxu0=04Xky7XXkreBWK2$m
z35vUSR+aHDN6(R7NIBBa-w-jd5$fmZ=Nb~C;23PEW}pIT_{zcrL7S!_qu!~At<#{!
zuc3i~k%1X#O3T;)RDXiFCQz;cHSHplH`ngF9r09U&zuYmg_i~yzjS}|xvr0H6}&gw
z`z(V%jdY*q=Yux+#c`6$FWWybO@Eog!{Vp9?^eqlk2U{e=CbsMyUthXjgUN>zv^7_
z#??ODPh3CTUb<X>(fC92mGnK*7DwfG`6PQ6cHBAP`B?nv-P_kDo~eH==H$LQ%jeaW
zpKMd+ICp;K+fa7;q0RMFW!{d$4=WFUol*C>Ml-wG$EDBnTit<Os}A~!>^Sz^iSdxP
zvG#UNLv^+(KCa*M!Zq*O8pZu^jagoLuxp+vo6fEGWv-s5dU(R$Ogy{Tzx3)|n|~MB
zb(`lc`!Qp++jW8Blm74e&%Y48?3N^7S$2G9-G5d^JH|pt-fUtFGiYKALdtEb#}@Q;
zbja7Q<C(fiWRZcH6U%2mgDTK`v@%PvL1BXkHU$g)miSOJ_L`8=BWRz4tS}3!0W%}x
ze*@(E&Qppq(@GqmDP1ow-@pRoOnDYV1APPC1=<TV+tf2kN<i0}B`4}3l<7m6y2**U
z$wfJ!{9#}W+XuwR$f9nbYM>0`8!)zsLk-DKE-pYe2I3YW$ldE0ZoyJO@z>wp`DDY(
zn)2Nnx)02|^j^$r4)c6gk<#uh|3huBZrqm}<EsDbSyj<hmHGLZzRE|}f0W5x{gF3t
zPtRAYh0{M)MW2z6QIKuy@8nQ_qws6u>jm|RvxHLWBMgmZ<Q7i)&Ysl3c-HauwwM;D
zq?(|-J^ME_35bQsDjk-{n?A{}!SG9AjlQ|YMKzP^ORrxBr>VIK=gnIY@=CnsOYzO6
zI<r?#y7Ij~=}F0QF9w~JoP8eJB@913&4TJrPZc|I!0+ptO$FVPWH(P_nJ+oF@WXwT
zIXR6=i&h`VF!FVDIeYl<^ZDPiUVgtUu%UJHKLM6Ezq9^w9J9PPv%BdWtK`i6Gwj5;
zqMw5cDA*tz(m*Y!w+`7SS%h@rEZ+h|Ga}ibi8<b&iOC&OT0z%KD@Fu!EJ7}?K(l&2
zu$!&9g~c&fJ%cV>H%2PN5Gr7T7^AZWpxf0g48cdff=Vo8t^svzBUEOcQ7xNL$yT8x
z_VqyXww6;G^Zv4y2_9YBQS`@+$@%!EuDLAnDyQ|lA0{-pJq%jS)97B1b2sJU>#sVC
z`I~HcwAW3)zD=Y}pmMjha6@?y$3xFcSxNfxalfWz-0xJMYB8Vfy4}gsYLUFf_cok(
zsm9kVdhC64_a&BuQ=ZE-zGYf}JAFc9;?ucZiQ(pJN<{9IJg|CKq^~#U_l4d2zuGc9
zWHWxzq`fY9nUz>^&s|481*-#FmM?s{$$x^LQNqjc(>qxvWn?_HP)jJ?G{5}+M3MLF
z6g>Z|brAKq$Yhu(8MkBl`?clUQ)X4|k3T5<es<Dt-kb*^nPMxMZ{@vgo?KXVEVH#q
z98zY18u+M#Xm|&i`#*Tsuh4T<S?3$@D|uG;y+?PY_n;*j@Ti)%!|ekBtNxwfdH;P{
zh^y!BX$+i>Yc>nFwP~;$pUQq#vU3-M?z$yhm%o1e$ltZUINhuHxJz}#gY|hi`OKPq
z#+I&!`=0C!&sp_HXxf|LW4cdNa&}Hh{(UDnBR$NndB=HE#lt5v{++vZD0tPG30*Hg
z#JcrNy;~KbA*C;S?<|A4WB*&1-0Q&_)9XH`v&e~F@0zyd@;x8*B|g%{#bsZ_XC9KT
z;(M&iv6f3l=fBPBP(J>Nb!M**hkNdOsHa<#(0$l3P*{2Hx$j2VQy5pwe6C|GZ)L4|
zsm<Y>wN6{b$wYmTUGHv(=HG95$I9uuSK~&}xywlbsdBF;O>Z{5xq0g;_XzuVaPEX%
z9S-iDr^4<Dgf}7zoL=!gKxE4U22IR+44RmhK(eI(dzjLa7gxGEeZL5w`0(S^QsiJ}
zWo1CAAwq*;8I?;|9Nh0t1-Il;rq!YM*E0(XKvcl)0fcN(GcYqWG%z=`G%+%=0Ow5b
zIf<60Mh0e4RJDsxzFcprcVkUXXeL|XQ{fDi&HgveD7ydnm|)S_$^3Hft2nn{&O0$*
zqh5S>)na;Wn0Q^&*yr5w8ZPrX{#`~h9?DK%-+%nhNsDQpZ%h3Ne4BCXLf(=Zm5b|~
zPD~3()_d@;^xur-@t%59A6puy^vNxWpKvMNX4B1ojypq_bM_Un%5~p$X>D@4;CVnc
z;lo97ovE+CEj>7C@zF!eITCmiSOlh3&J#0vwsPAqRaeUsa;ZNje_i!4=+4X;woBWj
zcub9dc`s#Q6O}P+c)v;_`%v}uTjzcnD_s4$H_KSJk>&S>m@9J@KZ=okywa&OuKG&(
zd&`hrC%Gh~g=Tu{cX<B|NV-`3yuZpBk}n(Q8Z^!_5QbkSD8j_TCdb0y%;0E1?0UBK
zE-Z%}>pYro`&lx*dDBw$?A*yE1}2bNUDrU{Ky!im0@XHUXoU=_yden{+#dxkyU-7I
zcXkAykBWJzA(k3BS&GA<c1c_?Z~2X?b@II2fnv<>C2CGQUY`{)StMcNrj|P$e)}xD
ztUf<$>WpPH-@IC7i74MB(<m>OIKS{;rRU^5&ZT{^aZsByBS-q3iW`sk=Afmwmrk5`
z-u!a@b9D|YKS_D3<q<LB=PT{IpDe$uraV`TKO*ywd)=lBz1@@dYx+B9mXxJ?pJ(rR
z#`Jyb!!6ERy>&(A|GcBdyMLK`3EPd1i&mNjE$1#-HY7=}I3Dh~Co42CUDRuzDf^SF
zr8CSc4Mc8h&doWRdB#0-k-_&fG4+QI&ydOX6Ki-~Rgvnth(T&S4{vCSiN}sfJ3np-
z(EQ}DEPpF!jl9dlyUG=T(Z|KWc^-ECQ)Y2dI`|l-_zL9v*>=G5J8Ql{6Kl3X6LT;m
zzY8)n37p?>$>DLNOY(!=$xYoDM>6>%bsj>44K)qaLHz_SVFgdnRpoi9B?{nt4H|KS
zAHL*XlwVo^JK}&@n8!0X$Q{zLj{slOW@u_)W?%xkg4`IC>y44Q22{7OiAf2$6k`P6
zu)xn?(8R>W1iETr?F*ISFCyljXV23P*N|!7cW3*3iwQk>HqXKrRD3TzwCLa0th{dw
z{u;OMWwhnEOy0IJ`LBpj_I~+GuMB4^)?GBV+2!%|Zsq;WJN^rORGj5~u&b>w(<?14
zr@zjoVE<Z8CAQB`4m@jE_sF|{`^>s2%=0h1Pp_Hjp&b0eVx2!%ezV?1&+wjxl5My2
zFIe<eGZ!dImwqy^`PIMf?ycn2uf_Zi^$B{{o#%e>e`~qkmrd1P4}64Fc?x=&H5WV#
zR(T_Q^PS{=fz4h$_MM9p1MjVAXP@#Vx$uqNqx|R@jSo9xOe%BA-dj&ds(f~P$t-=f
zqZb4o^4+^B&?okL`}Y;!k3VH%pV4o|G4=T)^J%<hrSpFC6>XHAy@&ayC+m&IyR2KZ
zt~tJ3!&o+zi~q*`t9ymyP4zXzb1uy|xPmjKJkQ;H*SR&3aT#;#i>`GZWpmWDi?q9|
z_EqJi;PR-&J`VD33ukU!ZWWl<W<9UAXt@w;MdVw%zzR`r=KkIb`mCGms=Z{qi&=&K
z9DDU3K)A+va>?dXCC~fh896Q(T!}6;+rqx<pn*Y*$Mz=c8Ov%Dx)v?gY&x@RZ!?SZ
zqGo2th1Xa=N*~(xVMR@wwc830t&Tfov&#0%XDzjr?0;?XIpy97ZC);o|KD#v5_P(w
zbU{7#VdX!G=LH>W{hr<IwmNoKJuvV8o|Lb~&i;_1kHjWP<(9~2)!UvvVJvRo=r|!2
z@$Kd8Jmgdc9&==3WC)dySh;7@ihv6|8*fNuDyVC6tVt}5>B{@j^fXid>bEfOojZyJ
zA}=dWuY2xO_<Pf(gte9{xL=7YhP8eS;EQ~H?m^_sT_;7~x6SQuY54Z!<-`eh#Ahc-
zyM9QUdZ{M=&@1cr^5;)qTc`eU<%SdM{?^vb`lZD3`v1-PR};0BHj4B0f9f)cj=1rM
z@np!(9cpK~I*dDgbX#ni?!TKB&bmuy_xB^)kNa6S?K3=~R9rmi;-Q8mmX-p>%1u5t
z^V>Fs&XC=w+18^pd)}jL>u{^40^d8F$2(7RvHRw{i0wQ1{@m*0ySHllxnA?SpmyeI
z(J79srBfe^F8sda?Ma>ZrN95L(O}ZscfES|<HG6*Vwc(D+=6S&*`0bWADK4i>ddWL
z52i{rc&ziWWIuPteM!(%?Oi*5uf1d(T>DhkH}~qojmMqxpE;<T#w^y@&ffdH*LcEn
z<@vt@=2YgmUELzOd0JlGY@TUWJA!oWuSGxn&2gyZpUR5GowwFxJ(SSexWYLx`m+2T
z>)x_Yx-WW5?~5Df*arWuKJ6I)|IVTdi53s1?N}4rZGOG<s_}uDg6rlw9xN(t*~jGQ
z6rZl*G3DZH^?mI2J9qdumIOYm+WvN~@}qqZu4=Fd+ZZy>yIYmhe~ew?Sp7ZsK6{OM
zENthOhM1J^ebYJnrMUC`=-cuC`sBhFopqR7m!x#-o`gEMc!qVDl1eKJ5{rxDlc5*M
zLwil2?kfWWBdBF&f+(qD4VqXZ4Vsu8Atf~<6I${z@Ixw@{rnAO!JSzaE*=plh&2k1
z!Mc_f#)f9b#zy9_mKrmUI7}LR4Y-0aq+o_L#|#Y&4UEhTEQ~C`C+M3XbE$40p>lcY
zEv~6z0gtDCikn+z$YxYE`=dbF4u)A<gUrsVxNn#*k+Nsjw_jH)Z%jz?QPRI>VSDYt
zikC7vw<`o+_GJW$79Ia=-2P-iEO*R<aCR+&uV;^#muvV+OnkQgYS7<8-2%Jk$BuM8
z{-DAArEJE+?)K14R>FU_+o_xPDLr1{uk}7*x9xVz!+ebHGh>DPZ#(}AU-<Ut+<k)X
zYSF?oR>z8UZ7`P!pX>U+W189i-KW^A^V^fJUogtL7MsKKadV#KqijPxO9pk3dlm=Y
zNT#(3y_j1hCY%y<e5JX}-zI~%EfTU{*2VlU5N3G2@vCu__qEU;ti9fu8@_JVFpCj6
z5?Jh;&Hd4Y{kFK}^*b8X*<a^>);s7gt|jpK%&8Zz|7Ne&n>AmzDUan!5aVQB+qOS-
zf9}6`l3kYley75*?|T<4pZa(Cvrd&8XL?L>9x3bJ6p~Wh89Fhadt#*|&sv8L?t({E
zm-udEc<gQxwiJkXc|(i+n9%Kr+n20E1>9Lh)065Xl9##JbMl24#qH-!s#1U7@Z$DO
zZ?-7&DAfxbLgiQTIRmEKo{&9!zsJ=e?AYa$)oGs(#7&!X_{jUiHQC)(mGzrF&)Yug
zoWH=pyLIQBDJqrywb?6OGx)VHe7q%dI&;S<&!pTF7m}0iCh$kB>R-5rb!pn7^U`IT
zT2eOpSOy(1*!7{un`y%~;_g>+-*NW;)BJZoHoejJ<NK+)q0c7!umO74l9!EBtIebB
zJ1-+6tXyVLP<AwBnQ+J<DdGJiQ=jYhYaW?Q*s(Cb?3b9>5)X5omlF<sviZR^|3>4}
z-O;yHb(Sm-EmSf3c7prUo~$2}*KA@x6hHs=nG;>B_GRTi^b|N_c)elw?h`i_@uh^n
zTJ-hMN<-003R!RdC^2fBZ`;uzxAKhOQkzd=o89OBxzwO|<n#si0>_1?nk6}OazDkE
z&*>5ozG5ab>BCbt^E=C)O_*)bACoQZ*5>RKZ^y_U91@#a`@O4p;jEA-c}-^#^+T=v
zTRW<ytfy?3O<2Bl&U4Mo@Tl37tDFs_nXf0Ea9FnLPs$Uo>l1?+S15Gk&53u}c{-ud
z<W2tN+FKs+ueVItqq|audyUN1MHvbWEZ6>Q?APDzWytH*CiD7{nWoy;TQ`n;Dos3J
zx2`PNtI8pDa{CXthMu;kZP)tw{sikJybw#2T4d*3ebzD|B<t&^PBq4iW{*Y2FHW*d
z+$3lsX!q)Zv!p!p<Ow|g18u{<IOaV(y<p$#lgVdu&pi2Iwkl)p+r6>V3tV`&@tNLv
z$P>GJLEx0rbz-jt^%qZaJ>gS$bI-|{LE&!t0q6IcW`401J;%0Ghu`j7<E|;Y5AWWe
zT5+kZ^1r9GR5Q<qdlhd^eDd{?y4R%n<6zXSx9^^*$Gvd9FjppUMaF8E#}~S@9{;f3
zeaH8D%BR46&sMFDdTIEMZBOxj;Uup4$9GN#m&@?YBPl81?niuTMM-K=USbZo4UJSR
zOTvp~7Au1$7Bhn;W;tlF%!phpv$8T6<RcZ!!LIOKBf{K{DJhWdv7-}gxSd;A7B1=v
zwOb)1BmlO5#1OF_1yh}~Be>`W4atMnqks+{HL(CUsErH^OyOMmJBUzUd;51O<7b~3
zSadBP_(i{!-;=|CcIz+YZRhUI7Brr|MAN5s^8CGCdnUhSmU`TO{%LMN)V1lFQ=%F+
zcvjukoBDUhsr}{_x^i|C9oH6w9sl5O|H5cq$*B_)LS7z==dYMM%fW_kP2#FJk^Xt@
z3$p_5T%YB)o^|uG!YOkKHwPqe9T%Q!!QRHS;^m4=HHitUeKz<jueS1UxpDv8{D+zO
zyRSQ4&vtooeC@kj$M~YCLJsrIm8nZ27fdn#&Y;hGXj0Lw3l>GUMOL^TiPfszzUA7H
zcWcfHyKFzHeb<>m^;hD~%&Z7y!R^b9`@>2jzn;~+?zWvvJ9XP-r+m>(JF0)be;FHm
z)g($C(%@{oW6*dLY1Dr0-WgRUThzY)I-(Zxo_X&BmD3?o$h~eh%w?F3GeP}oWtPT?
z2913UBG^n=SiGc=?kS)N<JxcV@Z5&k4_Z|ZT~mI<KaFkDT*n!6Znji5-js_LVOKUw
z?cZ>teD@m19QTCgzzsi*Y@h%6rY3y6L2T*%s6XxJD=Iq`XFc*^=V~+E^XXpTkxSFI
z->LI^SMXQH@-+`rponhYUa<!U@4J;gS6Tb!i_@0Y$pr%GyXLZ)dP!W?t~wLww6H4q
z;<Mcgk7^$>+b7KXY;SU1W%Y7SUWe6Lcl)~zfBV)W<-{6z#r5m_<w=Seq6*G7GoRP&
zRk^WpqIhwKeVDYNg~XOZ{#j>F@XhPflYZDUqxrPF;YSyrV=Tp<WeNPpf9w@+$kuy#
z#)mIzRwcgzm)_NR$!c<;lcwBg5|66Bu;+NcUmNIz5GDp~=<Hr{Mq+MKYEf}~ep)<e
z{Y+|6aw@pkiPw!cGBB_}Dt)}+r4M_sK@+>bK@+Pvr1arrSbWQ=Zpp@Vx6n(W#&t-=
zkZY)+vw<V1-_9;<<(rsNl$oNSQJk8pkX%|+l$uwfkeHHElv-S@kXWKnUS6)3oS2(h
z1lmuR2p*7u%4))v(Xk41I$9W+n;08em>WWO%5n({IXWvi!!;@d>pAMdMhlpQ6`Y~o
zRme{Rugn2?7hHTP=z=!YT7XM2(9O`G<Eku8K@*F{76#_VFs{Ln^AMrt?RtjO1?Jif
zQC?O#6;o;#*GtKNGrhX^_Gw<1B0IHB6M}XnTWdt*FWsCwW!dMuDLkRyzCHh>q|^}i
zFzMJf&4-OSpY}hkHOdNEU?ds&Prm!QZ9-eCO8#TP&E<9q(@Yh!H*?%9&`bH=GAZ~P
z--ZcYU60#)*)H#$!1rk8Lg_ZXTeG-!b0-F{1$~@XU-srS{{=bT^D_->WsbNCM69`X
z`Nj38uZ}XZmtPBf#$4a!vD7!Cbmz-G^ZX<WzZ!YZ$xV>t{(WX{>7D&*XZt5tSXLIt
zsq&qQd0j5Vemcd`y=e04fWxmj%Ti1(S#B>A<m4@LJ+gA0ZPxm&wW<13A_U&V)U2<2
zv`ymXh1q^lp7&R#ai6g{R#CHjj_l)eeZl)!?<MeOKb5*||M;QeNzH>FU$f5%l4f)X
zw5e9Te&lITNUSRRDKUi|Yo9p2tK#@KGrxJ+M5YZnW}#WnYrjr=cB=8(^p8`TU%uV2
zF<U58Zq4u5l}Bg1+!7s8wa<2ui&b*u6>img(*Ap&GR`}DN%QJ_aY?TH{X7#cbH?9%
z++}*EGRjxdeA4zK2iLCuQmHa)6C?M=^)b^vHyHhnv7Pa8fxXwgee0*_-3*;2o|iB;
zIcG=m$#sn}5~dF(?A~YNZ?3en?)CY3<%-K}EgFA&+%mM)e%$%>!q&ZY4+4$|b#7Lk
zC1BWkdtLr}3uB2gK}apo#F%5y#F&9)Jt7ZM-SAUo4gaRCKPnIWO6ZV2a?_V-p17nz
z<6~&)f7_t(MuP}8H47WJENR?0<nm4vQn`lSmbV3YT7kvPz{J3ajU`l8fx$q_Km#_{
z%fu)q107l}$j`}4u0$)#(27a$`4ba_)+?DFT5S12@7~L;FDq(1_Sx6EPKtYZYop{J
zF`M~YqSNMOJwLoNw&Ml=+Vjf%_f)Oo&iF4qxK($J%B2YQdyCFzwj>z85a1PFseGaJ
zX<zlSdA3EuMaExO)gDWh=lJrEv0ml8woVA=y+_))la5*Xi@ma`t8%;In&r0Qb!k)B
z^3@A!GK7u4%{BOtuWqTLtTo~91WnUVlkb}>J@);_`yT!zubOq2zlQwi-8L(%U98E<
zcy*K#$M>dPuk;?c&)Txpbup{;%{zLo4%V;k)W5KPeesRj4bvqCN3GU`&)ZzKRH6E(
zoEK{n<1&rXgz1xb^Xz=hop~pT&XG_$8#r@;rj$*5myvO_!SPOg_Zj?)nU8(@xaPjm
zhntO3Pv-3X)*$lXqR!6NuQwKNJh4>qsf_UScYJ&AYp#565*&T`NtSR6+cqPnBSGtw
zF5TIr=p=Q^;e+PMH(We1k1p&w<8j%X>x>XrSLFs<=K4(UFD44Ln@wKzd8d4}`@2~=
zU6hw)#|PbmoPjo*azsBYRleR_^5m)B$$vA{osO+OHgCg)Xp5z@1MbyH%-HH`{jGA#
zi|<m^Y|Xzfbl=*2e6Pf6j(nSjYzKQu$z7>k&-Pu7xomd*y+e>nf<-!u;hX-?O~>x-
z4E=0vI5FzZRu0j%WvX1f)q3rZc$Ts4Q4`2DpZn%+MNdt`(GNGvJuZN|0`jnGIkl)H
zGcP|kvp8NCQXMD5mfwKJXKdhAG3zvgCRWhSk}615jN0S@O=Bak19uC8O-^$ObAeaZ
zfbB38HxLC?%iO|z1_lO33MR(JmX;Qv>1pU_4zsWbLN#dS8@wMCa=N3jp@EU1fu*6j
zA$SlSnTv8c4YlniRIyz-!^x#%Kj~Y&$UN>jv$A9z3{w8Cy3Z%a7Ck?p_0`$l)z0bn
zHvFn<m^QDaVv@(T$CmHTJ&BB%{!~wW#;eII%4d6hcwf?>``SQ$>&@d0bCT32c6{*a
zynCnPnaIzp%=-VQ-rhU^jm|F-(a5P>$J}c&C3Y@n{&}iw<@w|JTjE&%y*n7Rsnn?b
z&0Ebh>(5?dP2aA~x?MEm<-HF_eU`4?`ik*Uk6ucBO8(!)s*}4<EaLO*HTfX_Cc;(E
zWK~PR-shXVgm-M<UuO}!VWsr5;*(JeZ>Bk{TIsvYglTO{-6rLOzqO8~e=*s%VQQAK
zf1%6PwFfGVJ09$RyLf@fmN}doxE?3$`|%^K<81WDa@Gf1i}McFy6N?Kt1mli%JuiD
zZ|y3r#hS;XGFV<by*7DC(xIczzW5*eIbW)`$y2iHRHU=j3tppxUwnj_^YfP3Pb@xt
zsyJUrq5Iu|riy#sdWSp@%f1!+rt(EyIwsukPUyQ8a``!H9=V<g5AP}smwd1_Vy35=
zp^Y(Pu9(-^9a_yTZL@zST$0b7$b30r*;U(FcgrW(nl72oANMuLC3EM2U3bpc-mkfN
zWKElr(Vpt;iSMg^h-Ykg6danMyWZ|l^NpLF+8++2+-~olcxK{jmcM0Nrp|gM!X|yy
zM0Vee|0OcPtur4)26-jE?U<MC+38lN5Owpp*VC+bmr@0xQ;DFhr08Wg#v)zBBH#BD
zeZDR|Z16&#<JILtr6rRxDoSpmoC=Ip0hWQCI@^$2O0iNAcGe;4yLO#9@mMPBmEBLF
z*J1It0p}jP@=#MdUl~?6QD&z7g@qGkbol*eOpOfQdqL?&N9-K)KfhBBR`hhwO5l8T
z^_OD&g_6|g0Y~@i?d0ZOyLE&3GNGO;NfoccvfglAayV?mYGCI(W&3<D=F7F}-rN4U
zockqdES0;&>EhipCr(@!3u^W^ow8XdwD##Er`J#BOy)e`6V1N*c&^}r0P!ixE4Fe?
z;@?ztFhR%SjMTE||DSjsuacL!vtz+z^?S*W>lNo)J)QUKfpAvo>uE7b6Q}g02XE{A
zA;ft)KPZ~Hs4ZYB$CcjpHc|PhDmRwo&pNkc?(E!4o66YQj)id?ea(5x?2vS{<Gw_#
z#|6)JEc>x7>d0Qj@BdfDFU%>kOuP2VC-fnM@oeE4$tUwKFe-4G2R-NUw>!J%Yy33z
z<qAwwALzYccVv|p&AYbYiR1%*rpXNIMMt|YhRDZy9d?*r7rLzGpfQUGqpYVwCb#6|
zxp@&v-yL||c$AYrTVAR!3tax?#KMm}WlG9!L7KXc7CW+sWzM+7%DE@=cvRxq{>B7R
z--f#r9@QQR_|#*a=XLzpvj%OO#yx@!Vgl;dKb*C%JX5T7xGs3&wY(o+KOesk=-cPL
zH2RsOxb?M0&O1tX-u3M~(jWXVeYf$B4pF!BZ!=B*m-4!OK3DkgXm*<u+fGMtX%1WD
zoCrRs12VQ#P?VaRS(=N~uaZX;=3WL(tZoKP%zBW*oFlhK#BJj;u6M}o1s+xg14pD@
z70x3;WDKN0g*r2jF!GTg0TBB^9Uaj9)1dP}3=NDy3!6=#=YfE^)Ubk334KK9{>u1&
zj(6{Vo!|BN+nR?q6|?r-_)uT9z*y@}uR`=X-Tdd1Z<-ZkWt{H|T-+L+&ayy2B|lc9
z>EQJ68y=d%+aB(l=zG7FCs<;ZoXR5q{tt^<xle!5tiQA*;+>lB$yF<=XWjf|anB`O
z^y!bD6E{5`@rtR-%AII#Ro%X8RjA_`W+iXkiM`#=I@hNifB9egrOldKmo^`Mm@%jG
zM-@ZZy)U6tbAInixtr8|pS#@Xb<!ENS+jSqN^17m!d7K)LUaFHHs9$xWsVqXUya`r
zEF?Z>X1Hcrd7`2ryPm4&T!~NbK5G~DY~5wa?pgllz22k=ti8JW<<;+<_nYpXb>nC8
za-B~X!ry85sm1qC$l%o9@#7BLOTAfkfy*x{9pPGT;gPfX=l|N(ZQ+l1U2Cl<-{t(u
zqyF2Ceag9V`!Aa1M8tf2w?r~T>MQf5vS$x__S$T|?BV_B#E<$(E6UvFIHlSxkvquF
z9Ob6FWBTXqS2u+!zTb7nhhh3}k*Vs&`(HS_yIta#DVAV8tM1aXw-&G7Fv{6@gn4ov
z_c3Rf*THw7_+ft9%OZCJJAtR%%qM3#G2|SbQkQt7>wbNc6nEs2NTc%2dlE9kEdOp{
ztJb-eVs>+{$J-Y9x}{3}T05M+G;O~UJfXr*SL$zLzRPuM#*%4H4;UWlWxqQ5u4v8f
z{r_IATJht~w@sB@+tMLj573M!q5z(IAblB+(oMCmuB(@&1_`R)a9xv(IpTy~q9YZ+
zJm7hCMuyGdz5+>pR!`Qv+99*vNcqHO&#1sTWg5MetHRyHuYL{sw%z3ghs%D6mP_0X
zXO9Z~We8<WY<Ik~Rb`&dksBv|7tGVInAWUdcCUs%Q@CSkso4yUWykKXIrli?+IG8p
zyFR}*ak#Ol@oR;>{?(;_ZZ5hK$HFJR_MhX2r<;m?xilF&z0i&L9@dj&zsqUE9G;ju
zy;QZBV1I^96?F@FXX^IuknLM^WW(Qt3kFO2POv1cJo47`Ue)xsd=_z&^d}cAT{$Oz
zd9AQ)-7yZ2jdAI(136S*K2yyO(wsQwl4UVR_`R8ITcYO*usuA)uwsXd7ZaDrg@cZ#
ze)pIv);3vuS{X7?(sc5a+$^i3n=b6`Y@7UI_DO!L<yAWteyDK!^~YTQX;;hV`~O&O
zF3eb<ukwg<D%;hmryi<IdtLKwGVAWQ#V>U)mReqau5$Z^U%YewybB_h`$G#nW`-MX
zne)zT2J<un`2@Ci(#roD6O^UglUkRaku+(@-@HcZ@%#_f9&4{M-b~-NvS{)v-L$Qn
zc094Q+4SD0=hbWW{i{u9g|_XHShjUV+?M8?>`aHt^Y45-oSD7zVJ_#FkE;U8xT<Qa
z#21E6bDC+$c{f3@m(`%|S)bd*xgxiYi$7tV)^kK<tMqvh_Dv2y7SD5R+rx4pd)f)D
z29v-0-?J^g8*#MN)~^5GJk1B&c5r4$%1Aha3t(MnbGo>Mz~zs~+r+*h%HwkeO{}L3
znwU31%3~IW8Pj@@%VPBQHFYn4glrSDFfcYUGX$OLVh&oGW?*1!WNK(=U~FhW%gY~)
z3<#CpM<bu-m#(t&p0jnwnt9w$e%?H_I<|kSr9jj5^??tpA2N7koxk;v%~^2fDiKwo
zwMs7-a-EN?-0@Vt(>r}{qR0EcmmVZ^Jl!dgpmDfdd+i4ERp$3nBDLJYpLp;5VP139
z?0Lh%ZJ)2C&z|<;-1TEz!56YUr+r?`&06m9UG-_f8Uqmp)yMUvQBOU7_*FBrv;1mG
zY|r~(ePqe;3tvm@mc~kPe44F#>Dw9>HM>x&B#oujn+(?fFh6v0*ENg3U*3Bfn9o#G
z^k`*V`Bd!roe81$`CnL^ooTM<ANy4)KkKNFSb})yr_{7%%MB)49JG*aV`<qXrCJd;
zcm0`wglod>L2r}gb5m;%iAt25dRUjD*;8~wOt_ZY)9a&#v_eVtQQNy4R(WvR>NQO{
zE0uavyJObOJrZ^E-_@qo*zKLNqw(C?83q*x^V2Wvi+_;u_THn7Cv_q#Cat=!osj(L
zY241or+(E3wAn2(k>KIX&=8b)@^EL2o%=2$dx<mAEnh!pmmDc7dHA?{f!E&NH2qg=
zO>Ze&?r2K<Af&Wy&xNZ?-mDMlP*t&6p1ZL~)7~z8S$*jGJhfy0o}Y1u33O@Xs<`KM
zE_A=_)tlSH-hU|j&t187{odazGbg%D&u9=aligguTXTllQiWel2}#CF-dx+ozC7>f
zd68w$uT3(!(fIX`Z0xESxo?Yot#^Ef?s09LZqPUdvw#kQ43BslcpA7vhezxUY>|dX
z457m#pmE-U?9BYK)S`^k%oM%69DVSJNoH!XK4@KnE|^!T>u!WGor<V5CT1A5i^_IB
z+WK*gnTAO(cTG~qYqV?%9%5PH=#{QDsj(>_@8R_un=P$BGl_Br1ishZt5V(3X8m)^
zo=Ke3c78jsS~-EOvPaM_@KR-i@$b1F``$P@H_F$!JIFk(;yAUcyL7F{kwY)iY?|1Y
zKT~gtmUzaWcQe4Q%Sl4>*p{$AVFC+S#rN_k*MFJ(c8*lwzPqlD`zNYwk?(mKf4*9A
z=KQJiEv?*Sa(<qzo-^UB#>(R>LwB!9GD$KO_7<@UZQj||J89XmFYKxzXT-vVyqYRb
zh};x!Qqzr9kgr_#?@ED~*wp45rk4MMVoPPjjtYmKcRy2_8sv5F!-nNgxTbOcUVG?~
zYRjg(PxjVD=FI-^;l}e*pI%P4sO#K!=C`GIqJ7bAtBE&K86{=c1}q8Zs`1`4r?6Pd
zHBhqkOy6Jk<t0;PS6p20C%!RL?a-=<@aUty%b(6;6`yiyQ~Ux?iC&YJYB?Tqt1>3B
zK5QzEntg{onj^P%?)6^9n}0+URvmJ^Z~vTOQ{a<BKUjBGO7)n0o)`VZJUZL!zD{_T
zLzLOByQMB1=1v7X|L(*oE?C@kV8Wb?TLI5p1>7sP`CUpqdD#5^L#N~o;pVQo)m?M;
zv%X3VHU4fXa8yG}u}Zq@h{{iU(G#;o6~2ZhO?#U=IbhF|RTXP*p5{tzUzT?8NaNyi
zs|Y#ncg@{%<t_y+IU}3DVMgv0!>vCGx$f-zQ)`s)?DhICMsS^=0Id_!Q}ZD$^3uG_
zvecsD#2l2phkR2I)j*Cx6KjS+6LSEh8bBRm0Zq0d?*a@BHWV`u0kyojgn8Xl^C6S1
zo_Wc7u#172g+<}wp)ku~n+;72j15dcyMiHG`Yn;T22`?!P|3bbG<3n@V-Mte<|+nU
zKe$gjdh3#T3vU)h>}8Pl*`Ih)MAo%w^)cCoYqqZi=2)%IRr#@}kZ~T{*P3{_gM6W<
znrB5Ctdl%#;4$^Bl6mhJuUSQDc59~|cp%2`KtNvGknj4GkjqZS3ru9?T+8nIpOP?t
z(<)je$?@mv@i`wpt<)1(Iq8{ggzZYP3>*DYMTvTi@}&<G#kVhe`9p5z?c%&IT#FQQ
z-rZW&Iw@`ax2o)>Tf3AvO!?0{eKh@*^{!4^^^BF^lic;io62O@Uf5KTF15r`CXhQl
ztog4+EbqCyA9ia`lfPGO6!cei_g1!rn-t@gUYnXx|6%65JFXmd&o6QEnohaf;1@jo
z`c_UCg%mMyW+tCt-i&)!R~7kA&TZnmJ!kLvEuUjzL#i@4r(L@(c(Av0#g_AyC(haI
zQK@;Bbn4;W+U0x0Q@Nk~Q+>NFQ{aw<l-piL*$dORKAd5Fz&z!e?UZ-i55H=x;||+j
z*sZMT*w=Q{JE;0b;cEFV(Ph@nQP(3F1CRMQ-mJgjm|nC<<9<T(%6TWM{{$BoMSh)J
zC0@pN?)%f2o7|x$i&jN%%?f!gd@B6S^xQ9TZ2GR<5m%JOCOr|$(@2gqxF5hcC%IE<
z{%!FoO$FwMRp!ldzZP}MZ$)Njk^ID*+jaA#*B+NIzN_OenfkYWvV(x$r4Mgy=ILqJ
zWvUq;t%kJAK_e%4MoMn&)?2lKXGe!xU`b3a^W_6K`m3&?jFezifZA|JIfM(m`I3o|
z!LZ`l@vZlFOmR3_cw~j?8#mcQt)Dd_+BR_i>Dy%4?-IH?r6neF<%L-mHou<An?7}U
z+)z0sW6AC#^KBoRoHcOk4$+>v^!<1HnJs@!pPe^6b|-89^6SbR4`;+3j^Zd=xomy8
z{`Q2uE^b-xr~faWda&=s<llb{x4#J&6m*?!@KLJ6@}R%Xa)ztN|E$h!P%2o;^B|T*
zlj-;A1rsmUTsvGBaCL6PK1Yk!J4<auZ_YmH)f{=?R`6fr-DVQATlq!rzSCV(HhJew
z#$FGB6~Dh)w0*qIb!>0TVr9pB*UIx-ue8bpJXjalwX4^z?9t9s>Yw80zt4;0WxJs*
zzT{F(_U?EQDUW_BpXZz1W%_(vwH4lZ+<$(Tvrl5hEr;GoYJ$Ou#j&sVK0o5CX`c9c
zjiqk7p4hdo49%?z&(xP4seQ8DJMBHQYeMEWo}g)yTH=;1-nzt2`{tP&((bE1x!m&q
z$^7Dj$Z7k}&G#-G40*i$1(&&Rw?ZVdf#gD+6MF^a@2@-Qb@a1(T3XwhjEVnmJ`0xN
z?~ch#<x)E#XL2|;u=@JSIcy8f?q2PjvghU#U7k439FFNVi*0Kr|F>T#vi$tk*w?pj
z%N!}Y-?4MAE9+G0b${HleAatBKDUnlQr+ukIdl9Qv#L_o?6$l5{B)V#(d8ZoV<zyQ
zK4JgsnbE^u>HH<n`fmKx^yoTQ{7(m5NE30k18Qmg99~*8#~Cy+M;SCRIYCQnl(pob
z(mDWX^u#LwX=^yr*$#SnsU?O)9_IjFOm1LoU}<b%U}9uoVhL)eBXbR?ZzG|_Et@z0
ztG}GP@x540_)?zSvMzn^{VBhF-gSNWtXcE*|2wS*FJJD8PEndQD__S-Ei;gHrrMpW
zGFgSkX4T5gy<3xWtS3F)%kD?v21)gmoIJ~>?)UED`4u|D`o;^Th2Di0m20L?%G}&p
z_ewE?ZHCCS_DhLodvevo=7qmIa3Jij(fK7e`wl5z?_KfvhU%K>PYNu)Y_r-j*Lu2|
z^WuejJR^&IlnvS$Bfk0VlgS86TYuIu_QYmitx&hs^0(w3IoRGlTf1{o!yNOwJkwI<
z-ckCV(tSVip6HYy(FL_ZC%soFo;<ek?dii)6E5<9SY7br{%PO3H`jixzPYzP<kQlZ
zmA`IYD^t-ZhLmBTd)g4q#0ABkGc)eAMyEcWt)U-2f3NW#b`JteTaX48z~vJoBSVJ6
z$`!kx_{UamX5A{jIYIdKu}QHHE?&<1_j}*$-2KN{b0Zaw$b8s-t0jUd`Im>-d;g`}
z-@RshvY#it);&A<9EbbsAp43r>wVY#xaxm?)(kBHN6VlicW=(-dq0_R-6p+L8BQur
zIU6=x*`0lP%j1aX>6bs*`6mT<cHK3c9)I$s`6}zk)ag@<PHvuWXO$Fj)N^eTU*S@t
zRr<#|%bXpAh0|>pg{TUg{%G~-=C9kHVY`?8TkdFj_(4bF$&Taq%><NYM84YK^*c<g
zIB$*bccq2?Yh|l+UDcl&9E|&POZc>^Q{Ys0=AInIGbK)MgZ~?M_w$D{is_$U_U>eX
zlE~h_`*OIM!TD1M+K9?bNzH?_q6$irax#<Si&K+J@{3?oR`JN&KeocNC~KBM6Kk45
z6SE&AiwbZtIyEpbFuE$AcdG%JkJflM@I}h8p~0{PAY8(no++t$;0Bf<X!eykl!aMX
z5iX_>0Cp2-XGlqY5oDQ%v!enyyBeAp7#f-xnwuIMgD)jR=2F`_LhY?>N>lzU@mT-D
zJ)7&ddfAgt_FdLhUOI+aJ-r)N9yZKgQC`-fwrx$L6EDZ>(1_htKlY^7ep-;*y~6!v
zQkk6KI}VYHn_R@cyt?p9PCxGU>0-xqdl)u&X*+CM^U&J+knY?k3unKPvXcA2vH8Li
z6;t;4bGDoe%Dv5gs()+rhvv`z$90#USbKV^!V*J`@QA1<z0$K*&*SC!#AR%$WXUyM
z?{jeZP8Zj|EvL;C8Y6XQ<>z{MB%boQAAE6r&>olhtM#*+i{6(u++s79jy-WJ`Izt7
zHED)tFW$3j7chIcb4k_vgn&(_Pb~|3V7`8}iLj;W3(K@8Gpbez&6pFJ)@HZ%<Azgq
zZ2Z+91ij4{xa3x!UeQzd<?7anW@kQ#9@D-TD86yJPk`;lsgX6TwYrK|8TK=#FN&*P
z7W3)5(#HwBlW(tb2~0avTgLo4YlW7D<n%J$?5@P0d%nFZ`&*!WSJUPPmt3@yOm~=m
zsI<&Ny{*T^p8Z&5GpR3g8{@&PZF4*Mxh<xIym)nIo~`PhV70ebS6i++>fjTydefGh
zH-B6&x-GLOcW-L^`wmmBH2rtqHm80t?yZ^OnCZsvER*?b_SOrDS!Yjq-}IT_wpuiD
zp?ip?Ub9BL%%MfAi^Lh&`dr_1KQgwhza{DNB&q1|eWhcc!miwnpIY=bH~zZ^bM)V%
zS_{4vE4K(pGd_ouRiJTD)aDVErFMwI>~Z0Pc{i3j-Mn2mF?-77*M}Eh6j_XxZNPnA
z_g{CpHV96%SnC`6{VCt{5XmNw_K==cDKl?G{p(;n8nJZdM&%IY?OC!4;ZGTp9K|nl
z-Yz|z7c!yrpVa(Du0waPf9JdqT_pNMjx)>F__N}yXQFj$1F!N5ysdRQ(EskhERL&=
z*JAh-GxHh}`9u%wIDgbrDCo>St20;hELiWE{*}+)(U392)_1`vhtx~OHD9}La!s|r
zVXvGkbx})2@@DI1@%I&ZD<du{Up_AUwn();c4KkDg?hH>oGqFSiL$@q{ui%V@VIk_
zOrhwpdxrHwcOK@>UjO{X{L%`a)o#|a&h2NFi1ih<5t}6$z%pyoto+pOpm>`I77f({
zX^Dn)J0Fzplv>evtw?<HQD#F^!HSAS4_+Gd)HmFZxNoydecGc2libHME~luk@u<@%
zk2$8AsQROoC-v76BmJc_SfBjhP8Sn9*0jS&^5@T;m3QRNzFxnY@2>Q1*C$oanI27z
z{ge42I5Tl-X(e}D=raqMDJvt5=bb1lsjLs|+;$>shrx*~i^F;I9-522Vomai7IJ^P
ze9PvDu;ZSe>xD8n4GTZy{_u1EeXaG~(Fh00C9=zZdOMrn$%yhl|N2l$$-OP2H@}30
zNa@R5pI#U;q3@=`++gkc)%}lN8SDu#fB(^aYi*4V%bSe3TRdF^z7%=Oq&)xgEPKM;
z%-YPq3}H*Rui3VC`zbrd_j5qSDFbXGs-!$Q5w;Z<G`fP)hT>O56ws~)O{|UvP0X5*
z0-A|uA6nWn2t+E9L&A}Y<Pb;Ca7RB~XGhqv*GSih!KS2yg+s!f9btQLk?s*QG%_$V
zGB+?YvM@G|66ZBG0B^)KHMKOgjG~2=go@@3thZ0R?m3dzrTD(jcTORfd{DvL+@?9x
zk6!ojbM-v!;Ivi9BuDa4$r8i(R;KB1oQ=7HFU{%c+rFdnw)WMmPkm`e-f1(kPr9=C
z0@M9~Z=vhc_)b4?PteykvNR2{(rErsEp|*|N76NS)rsdmNDBF`P5ye>zBFF*!$JcY
ztpzidiSB*(SJLdmqlwP_zfN5fQ1|qCfA`?W)`HomUag37{*&95U;NVCb>#=M<7YZb
z<#y+={hys}C;ldJRbkCB*+t(yUy5$ExwbIztKfImeA&N(`z{!;AJW{w>8Ez*@uC$I
zv*Zs=bnS?FI%7xSQc=m1HKl@Q3QGKSXUk4>`5UIO;NR}HtP{UtxFhZy^DaBFTIpsn
z|I#l}Or7@r^OTz2Eh-7tvJF<xl+Ecg(n(=ZOHMTNTkN*ozIL<jn%oJCrY<^n{#Mg-
zb`!~IFLx-e(yUu%v9C|lOEIlde)Hk2oay(jU14|otaa;|l6k`E#%=ry_+OrwTE9PZ
zB5T!oThRmg_c*68HeWZ9KI5?T!;abMS7%JLUfxnMRc%QW#}Dn2EetF+_jic&y|}-!
zHz$3PvFw5Em)=Y|v5#}VjwWk9Q}(>~d-iMXi9Qg}?^saSzR7nx%gUC;M(fwT%NFn6
zwDDig!wEedE2ev#JK=l!Gu!$2EH0;wa&qPReG8sV;$!>6s&q;1p<!UH(H(wB(X4Es
zXh5)NMrta;c6Y>^G?u-eCVTbi)|*VpEn)}PEhq?F{@usj^aS^H4cpGbo2!f+Ux`TP
zC^8(#agwZ?pBb&-bbryMTSsc9d-ra5vF60PrI{=<xh5@Jt*$5K+ql2wN`c&3_kVxA
z<{CfvwDX87ha%Ul%*^5<-hC$jrgX18EN6OsQS<w!7RQ&i%CA0e^2T1{AJ50|Houdh
z-({}cSX#?gm4EfV!2L!)#ng@49*S2^b!9sjf98%`XL5#1@8mBj1q*EFYOo%*EZC7$
zt?>8B?Ux)2cg(ZpJnsKn=f~tS$9q8!9)@3<%e<$2-oJU8ao-OHCdl8r#l1<lbi1?1
z<mcZikF~@$L?%r6Q!%68W^&+LhY9TWQ<7Cq`xUY-ygo&$!|0<@iPE~I%Weo|`Xnr7
zdZ+#7O7bM`xPAI%*^9TS?dfN}!S%@}#ci);($i_LO_BvQ&P@Hd_Wk=i4G|tMy?4Ay
zUGwr!!`7`QTz{@PIREC(S4kaxM?QKt3$1<D-EwW-q1Vk4^RsqKt0Wi~oO$!z=yS}?
z%G&qymi#-Zd|2h3=%kId6aCfN_NEo92)|mgF8Scv+7@OTfr>Wi%Ew1Oe`1-cuui$@
z$Yv{sr2Ws#R33)!IxaV%^lH5Q)I{xr)@Pq?&PcrArnXWsC{y>f-tpJv=ayM*Wj6LN
zyZAgNgfaGX#g~&j`_BvYiR&t7OnJWg-^xweY!_J0g3Dgmcw=E{epzBlW-+{NY!si4
zd`QVvMCqGi(8QWx(8TNkDSbs;!cA178#`y4emb{9+d6u=+J{mN^zzsPsXTV_HIy_E
zhYUdq1eWH9f$W7JcqV5c1CnAE7KKYeOJD^f1$Sfc$^at+Lqj7&3sXyQ>(~UDYd}4l
z2$jAI*Qst|l(-Y#Vej_(=lVyll?xxux|o=z7{6-0df?MMX|XH1wE-J~%lB4TB|J)D
znqAX2`<hhW+W+#R^;f6L37vi>(!z4^zS(B6`CX4s-kxD{?uN0rhTEUzCqG=;a@Ci!
z$n)o?_Qxx4)h?{f-eje^GB?O&&5wO~zwaz7o;V?K8MBDOr|0d9JJzmU(DQ#8w`!2;
zb1}xNr+1h(@+`Lg@bKZEsMvE2g}FaGSKC?d+Ht*s@%Pf#(VLIPC1@EgSa1G9!D{{r
zBORVIoU)ha^~LV-nepzZR7Uli;AJmGOc&oj+c2NU<G0M0kNdrL{JPpx=yhCv?LWs^
zo10@lwS>K28t!~fb8XM+(EUe#M>F14R$Lgt(0BMkmhfBQ$3of-cha9t-E>w?DNpN%
z<CRaRMA&<~LWPcHe%;ZQp&uN#;nFI_gEO8PJWdZiK09xX<ciQ`u51^St!}?gjnxtq
z{9x^WD))=Yk-{hc8KS<$tW!>CE&ljKV591~tCMyMALMypd25Sh_}0~?tBMq@n@yh^
z-mg;3+hN2}D{C}S)GMjz{NwV4d#(yfmocVuJaFVb{8}{c#}dh#i&n3Hq#hKe&D5nM
zqVjXU6VraR6UX`=<XO}P>pp!uWAoJHjQXFZU+#AtO)#Bwpe9o$ajMvb*Y~*B+p!3^
zrbYx<toQg7xlQbo4etb|V+DGQYi&fYLrPyz!x&>A61_M^G>qRq&o7JGpYX;r`q<L)
z-9=)Bvya%KWfpM5c;fvAduPtN!b9I*Z|>-S7`SPVZRt;q*b{qZ&aRGK_4L$3uJ124
zU7mk8-LP&K<ErCXj@A>daKvm%$eQrs#5v}qpWSbN=V{$x^R?0B?-c8b@bTb((USPe
zrf6CD6Q^|@i=87X>(-rG8qB-WwqUP<Wa5$>i$Bgr4-dNk|MBLdppwzFIfuSQXHKhD
z;Bj`G75yzzvg2N8hj}1(MGTkRVyC~y=XUTP_*B895;A#xXM4v<uLjvy7xL^9^~`pg
z@~Kbzn`UC2SXBH`EXJKJ#FL>aLTCfm`_{i3cNmvuO_mXQmJpXOTYpks`E*O-e7Po<
zpYdyxLRDr3&3GI5d|};mt7rQ1g13SjbXw=FHWj$76rXi8ZhG)1BPLFR#StHP8Lt){
z+gOuXefX=H>zTy7IG-s;<JP_4i|gM1{p^Fc3;Cpt--Ss0<KOqbt|i;~alwq+v89`M
zBiUO;l`XG*yuVV7|C-0~&C8U&8k<K=b)R3oOF}gN|22`6X3tAp>58}cO_LKelpb%K
z+I+Tk*<F49=jlOtyY*XZzIqiuKWcYiuc8pE{h#g3o=njvRG&QxvG`iq-Xj~l$*;AV
z&EmMuj~^R~dR3p62Yq3d@mLlR-=ScT_o>Nwwe9ql=fS@f5Bl>f&1%~bsrAj>R<c9)
zMeD<PZ(2FBHs+X|lzro&ZC&v;?MPo`X7j!J9&q6dJM15Re`jKGacNO%N_=KYJh*|J
zj=VA;7G6X%&oXFYo@UU*R0k=d1-K{6SY5MBf0eGh|M2=*Ur=sL1+5ZDMJk>{gJFkK
za0&CcWTt0=*48R`<|V^QZEj%!(7Y(jQJ~!~hAIY1kWyP3uEP=HRs~NN$k>KEc)@@n
zz60Iq<P1WilQ*Ah=m*)G6?t|{Hu?M`OU^K)VgA|>$F1)7r>(fMzCm{<*ZI=Fol9#~
zemz#=(cUvvoZEQ6q^~2}1ctplz5@T)w?3E2QwlXqoxb<7_$9fd&$nOY1oYUq@Ju_u
z{WSA~Q@IO8e55<?zGc`DRI`3!&PEI2i!X&Z4lrzx(H6W_USKwR-MPy4J52@8I7<pb
zGuJQ9n7{w-w#v<)<`!s%ep&s0YU1aU4*9Yd_f6h?xkGFB-2FvSVTIQAS3Y0l`ls=J
z@w=Nd*E3)4PuTux(!z~<J3HkK&K_Q-mt?$7jH%ou>UkrV&2ksL${qGBdtw%}Ka^e{
z*mw4g&aWT;az9wrtm=M}KGm?7=z^^cY4^ps!(KaQhJM;{J7NFIy1ijrr<*OmhEcFF
zGBTW68rt*tgkxT&`tnl2_cm>2`IqJ%tFVyGoVI9Erk+L4>{^y9ol7?wns=R4JhM9I
zY`4s;Yx_Me8KoWUI`CQF>ivPoS0=Vy40z0ZySO~x%QE=wJ+<RoYu9T#T`Wy{?4`|g
zJiz-w=A&sjd@gAMF8ym+U;n6FvrPJhxyjt%lZmSq1+Dig5NkVRbz-A%f!U4o@4j%E
zT#fem%RXn(uA7WSF`s=8-sRgU!+Ruo-`X!CzdPS7a^&+lb0XZ~LLT#~vpjvBGiT;}
zurXL~aX)|0;(eM5>Z?os3oBLJn;sM@*Ss}Ef%)CK1O8$6%+DOIU&W%n`*Qh?q}$>(
zb2OBMi*wGaeeKeO91aINy)v^ZHLoBQl!K5~T<(VFW7e+*O{^acnwW1w^D)DQ?NMSL
z@%ta1{@Q(A@>wlf02^2!<zrXm%h)`lT>S!EA^XjsM_V%UaCyS52Q{k<%ngkUjX@a{
ze9RR1f<<Ek3nOzQ(<ll|Ce(~NdAaHozucPTZ7;-9vo;=*b~P%Tdh?$^^qKX~msT?N
zcOE|VDYWo=`M&ZgpNp30xZIdGX|{;f!sjXzxVXalj^0q4^6;j|LtVRDTt#;m&lJ7Y
zxTyV0b)H&zXT;iTuX#2(Ru$*v-ma=}e96%vRM)PTCYYQP^4n%^(SbdB{|{}y%Ukx?
z>iYLB8T%G}ecYIL&@Df<_kr)RkkC#kV?(Zu;X4<1%{ctV+T`d|$IQCYLpBOW6L$r=
zFHo2;dEo@_&we$nt|7B7vZ^_5*y<~5yzdC}3Duf|1-GrgaO#Grd#uracw~*;iPMvO
zf-TLJ-&|(=`GC{K*Ei+BL*A%%r9Eq<7ynb+D*Ac(pBBlNZx(iJamj3H{@i)7gl**+
z?rVqcska8Gof6-1vZ_5yM~YD{XP@v|fi+uIzFJINc+LCP$K99ixo`crr}0~4_Ib(R
zm%XB=y-u&pcX=x9c>ZDA@>3VG=I`<8WiyUi)cSOS>4KyfF~1Lw7yV+E+M-jqIYQ@N
zHTP{P{@3>u<=M*Fm^Yk!Kl9Ilo&MZy8vicseD(O&(!=hVLJw|#_$Jx?wz}Xt)3vwl
z5*j)zDn8{;Ji4TgS<kw{f9hB1B}Rv+-pc*m=e^Ib5<58c$y%Q-JMoEEHYPo7dfLFU
zgt@MF|E>B({L}q;F7y7re(`Bhoy>{y|IxGfx36P$d-`#O*c<mH(8KN;zZo=sHfY=c
zTA3rr(zwE)acLueW?ovp10s(sX#{QIHFP&{1=TfNJa$N_T0vLA+0#wI(ZJBy*xbm>
zKsU%YwJ2FHEVCrPC^J#lJ+ZhXHM2?~#L&RhRKd;6NFmq)w%wDH$I7uRB~c+IHAlfW
zH6^nowWugDFEwAmwIshNDKjNCQNhqeL07>5bnu4)nu(Z;i*UF7WMxwMR(w*e-ZJt0
zlZ_jn?F}u-VMWWq;I?1IG9EFn`92+12Tt=X6|0@U(<5G@pEt?u+gZu%HLI_Fn^?Q9
z@U#79zKYh_Q<tbKx;uH*cvyXPt=Y`e7g(`os_?yIe`|M0P4HPgiTU_jC&qL9H#YuS
zH0fbN?z*aM&Q-@W-(`5F8#Jg?8H!m(*L{@HyPLzg_LJekCcmA#f9~6_)oOphVX;-@
zpGa>T4VBwlL`&E4cI?tCKCm~U{i)NZ*KzOU43uV`Hotg8F{km(zFf6uGEbZo=DBZJ
z(;Qi#V|s19naP&3)<29^ynkHL`McLu=hmDZbq+F#&+QgX(((Ru_ScMUn*Tq4s$MCt
zw_tL(_Pti-pPA;T=T&5}ZaHdL(fOuodF#WS)i(F`$yK(Tn_s{edB{|6f|lXUC$3eF
zOZ0?ioA9Mod#+BIe!=Z<<=mox<YhCW+4g$m-mq*gcwzd1_2Q~Mk8ht~dR6nc>DHm>
zAk%d-tk&)_ovgfE-s7&R+l);D8BdlP9^#77lWY_?8BqG?Rg~B{!Rznd2XyEr{<n83
zW}V`Ewa><n(MocuyqjP7h1jQ!N{a3Orqs6Fn7sB{hO@_}+pmjNo=>a~S+cFcZth|m
zpQ1zIM;2T;W1)WTD%-q89yedkKi5=XHhGry{b`DiBe(P1nrQyvZ)DWwnI|%HoYfdj
zlM_NanXO81?DD!9^8ekvh8wyUEw0Ata?hx>%ennWt>ZYj?Pm;~!zzZ}6bNqbC4)9z
zrNQnHK)EImsRH?ks6ZYXG_l?_XktDJsX#cYb!J}{YcQILmh22_kSY!eZ{IUC&<ABt
zW*!aL6@ifcJF?RiQ0@l=RX&Dh21bTPhUUhW;QIzlK-;!p+yQnSp$hCL|J}vfwWlv=
z{d<$%y6m~0^se%UkH4;8^5&OU?8GDC?%5LM*=3*pPJUv`e@JW|ciQ2wDf7geThE2P
z|0MR8A?d3UXUL0GaX-hM5B%MxuaZ8oBQGf~b7TB%EvC9ZIj255-gtZA#UJ}bkGC6`
zMPvo|yd@v(_IuNo`rqtxTsjl?+_uofzf~4*|2>jq*q*;IAgQ#(X2Gu$s*|?lRVf|+
zA-C}Hrn?gjS8L0%{9o$DV*avqiLv(IN7q74Y9yC<WgOqM;_~)W3nzEHJ~(|(&rjK#
zN-ZiS$60K%R%%W@^Lj`0!+-Irt4tzJ98?aOD?LN-u*IA@+qRsg{0?n3OkZM{{54Lm
zE1b`7b;9_cpsMMsKf8`5*xsy>xVmZO<<bh~BBfJShvnbvJk?wIYo5-wK)1i^nXkP{
z$avK%W|rOhQtrU!yGK;+G-x$C=1#FY@!({mBg4G7{q;vVW-OA>adO!FGv7kp+ppn^
zZKL~xj+$38=eCx{1nS9X*Gm;?JZIQ?vE<nGC-c{`Pu>=6YWm0g$>DFYV*3<}?@i+R
zu^>5X&$LNdc0cx{hR(kCmA6xk<&Ub=GS$q}hjLHVJc^8;zUK9Ny%T$`OGnyhpZO$t
zVsf^6vgG+cFV%jWDx6(E`JYL8i{H%Ge>PWe8W-$JTUPc~y7;x!Qr;s<!U|Kuxcqc-
z{5JkQKZkSIBICF1kmfRIK@y^yf0u=mebLvd+Mr;eNmJihG^p|}i^QxdkPnB)sspty
zL0OOl8^u+S5S*g<TWzk4oLoWT$Eih=3su%;OpfR?S}(o1fccNAc1i05+ls6&JG+-o
zx85o-akt#^pAOLze}>LnFDG~*Ms|7H<Be0;d5kQVy^`Kgc|&$ify?8ryGMRbmG81}
zwr6Zz>b~68ZPT8oN*Uj)=iJb-<5E1KYrJOv(Z-pEB?n6jkM7&}LD}`o-0VM+$#WO)
zVL2wjt-3q7lYetVz&+P@F7>OYRHV$f{7vI-`;CIslHYtgg<mh{Ph4p<?aaO1Z<Bo_
zcCU2!z91w|p`)-=;#JialcER8>g6%pCcJ7>by)r0nE&+rrhSVPet+AlEA{M9>&6oP
z-zQR;mIN`n-}O{Fxc|oM>@{`w-Xt4~Zdc~$KgQqd7<ISr=+6G9uJ#qTcU_Wp*!Zu|
z*Zx7{qFr%Y-iSV!e3wJM?qTRmZpC|(=W+dhw%Bv8nZdv3<(n3iPT#8A*dd;(@cq^V
zhWRIh&KR9Ct@&!pe?$BFSGAmzY$nshUKK=28C6ztZ|kV%5Av|xpL1i8i{3@Q?L`rn
zJB6qIb6Nf4dbf1moIN@VqOWE#tdBQ;c=eY6_l!Ah&(-?ReRz}C70%u8*l*K;1<8pM
zc7<k`mt<|5bbJ27Hl=N;>U?ju&38(8l749GEl2Jnm%9_C_xzHdsD0gqJ#Lrgnwv*o
zz7O_@dfo6*BSP`)2DZ@O>h{4C3Rbeng{$vGsVvg-<5Ln-QYs;%1BlupH6Bq{=*FXr
z8Z3ub7R)C>6@@_)(^^PnfqCsrV>4<sApo9tVBrvEcPz@R%Fj!L?cZe=<_b>EFDWTb
zNz6$#lroS2)d*a|g6{b)Am@QPJUXBu1wBJpZ6U1Tp05CwR0slZ--TBfNC)dH=qf-)
z5ezI1EDaz>Rf7+~Fb7S<fv%P^wTv<t9IhlZ$gsaKiR0t1NR#i<CnXktZ}5zGsnjgI
z?5Kh>qjk&2XRV&|)n9#Uk@j1#<#xf0<3@}dS?$>U-hKJyuODfk^nA5sSoWg^_CKG+
zN*gQ#tDpWf-B#kavbRb2$u|3y%+0?R?duZFs=vp5c$=gM>#0|VSFlX6cB?Vs{mhW2
zbfPyi*Q`fSV*BMyG6`EOelhi&yL{J;{T`Ry>)4tTHNQ7#2QQhFlo_bXnkePc*rT)3
zd7AS5HCBzY_%x5otb7?Ow{6}$11`&RA3GX;d&izJdefTZtZKp(rp`EVi*<pPecr|w
zb2=Dn=U@4GJ2*FC?tY!;5vzB^yZt$LM4H)#^R=g8Os3oB2kuPFj0}w6ixf#1J++$E
z$}W(uvF-i0y{wLT3J0g$;=hO1lmQ>2GxK(A<<+0lBh#4^Kh{~Z8J6lUROs_hZQt^J
z*_=H$Ug}@C9rf;fNl)<>3#VJG)jya@cl=$t@%p-N*Y63R4i>2Ea=SSF*LFQ^!POHs
zs5kt4F+b|1`TW&S?&oZ76`yN+Q^mh>qUp7Gme&o<t7kFkZWZ`)W5RKkVu!aystZ=m
ze=~1&hS1FLWBo!_oJ;n){ACk0KREk|(c-rjFK(oK)~OTu!}MzY+5hYr;<uG1Sm;*u
zUJUt|`8eMARF!Qt*W*+5@s>{?mF_xPCSiO|=Yzh_+V2~mpYvaFWVTlb+tK>ks~r4~
zWd7BO?^qM}?TXkYXHFj9Z_Bf{%xp<LRn_t6k;}fA@2_OOf(r%MDyY<g>`e3mAu~S@
zQ6wNW9UI`K0qYinCe{rGP0TYOrGbFxiM^@rG3$3sXNY^kc4^OC<ZuVATZ}_08$!Yj
zl?@cZnVv_=IioZ$J)=BPAtW^?H90?5!8u<~N5Q8gMGv+tikn9<HNe{wJ?CfU=OG%3
zphlvBiJ_5^fq{{+p%G}ekufsYfY$aCY6d=3<$u?EyTiCN{p?!#S}VWYxtH}tJ|~x)
zW>m~Ff7KGe?yVNh>71iDFYClr=C28v{bxQXJ&}L@Jxj@OyN>9m2mctdod36{9@{E)
zaJf&eQh{QZ;iu^(ot#2yGV@N|6k0UZ=GM#f{TvHY9$$0X?)rZEmv3LMZ}k#oim06t
z;hnJO>~-E*!p6ZD6Mt4+y<V|-mhpFnwsW$+Q!Li6cvBHr&=n)l9H{tR(AK0a?y1Mw
z>5WaMK9X-zzhxg~UHHyj_}XSg^(g{eH&v{6?Q;=!Gq9g-bL0B;tasKHkF~E%=i4d$
zoZYkDT<d3f#rcr8(Qb1WH}Fk#K6ouUUS!w&WxXoy4w3tdEH;_tnE#)7F_tfqYjx)L
z1DjY}t3nvo?F;_4_4&geHj51}t^B7LlyY=g`iD|>wkaZwp~uvpF!qZd%qqOT&-?e3
zh}t?q<Bd+=lX4`ko#)K3tIzo+*Ppa@Y4UB(<?>2Sj&k`kyX>z2w0Eeg+_02!(xth!
z9HL7F7<D%rm93b{ySZxCZ+3wS!Tg8)$9M6oN|k6mm6_o<^S)yHi>Yi`T${7p%Tm8t
zo$pT)m#pT}I4gCjSx)h|&i;M>6En7_OYg4m?LC+N^vS`#?aFD7=1wRznX%GLyKB~z
zopaxu>Du^1wKFDan|_acZl%idpp3&UrjOEkllfGAuS#xuR%yOmX>N!iq(I9u$Uqtt
zmE-xoE&bEONot&~2SP3N%I%%J78#&k^kK=ylCH(hzyiL^gNc#BfRl|?n~#}Eij~2D
zosBhJi<yCeMZ|T(q2pX(HSeM;c&7f82tK$>=7s=T1_TcsaBgl6j%2i(>bdh{<F21&
z3d&p66H2aR%`}P2VF<oC|I@OKD(o&<TE~|5RS3OszZoGdtQA)|dp?&|`Z85}w#=~N
z!(C|}zcm}fOW01$d8P5fB3(`U<JGP9sgr-0#rE~~Iw-VDzIv~Iz;=rzziM?xKuPEv
zp2*rLTgNG?K^za<bwmv%ukL3LJ+@nD>+~=2&8@o%58lja6fEQ7+OWTA`uA71zka>Z
zU8ym}I_&PHK)rPb_Hu~!ln0qiyEc2xW!b(&e$(pN>nt<5lM);h%=*{=HhZVb;U&9c
z|Lm9_ua-(LC|-8sN8STtmiUZS>g{iD9-J`e?cT>(rt6dMua>yE>)A`MR{>r8iIe3X
z=}JB_m|{99mTw#TddY@<_X&aCdcJpCA6?=K;u4?rM`}X=(^JO9$>xeaE=Ohu&J^S;
zp2OB3qPJWl&c(7lOxJvGtIL#!Jl;BU4o_+|Nj%NJW44!b&_5Ha+8r-7@06`PVemtw
zu;G}TnMa9|V@!L~3yH#R$4-~$brI1kcJvCrT%L2-{q1I{xk>AKn_f+scQ;bt@Y=hN
zd><QLJ^tp!rw#um$%%1E{ki%1hx)dY`((G|q)e#)^5jVLb@O#je0P^f<=1qC92LuZ
zSe2po!)ib85}QuzisgRE%`A!>>AjztJTFB5-FTM2x#fzTLhE-gTkSc2wYWHaUp4*^
zgsi8Mh7KJhCdU^gW>&?g<>i*>79}I^>K8_o^X&#rtjz{Z%-N7~o<DYSuR*%m2{u`&
z;~_1X?8vDMG*x7cRLr{u8w!GZH7r~_9BzKTA-X}%@X38{9sx&Zg&;@IC<T}lxD2;2
zG%&I>1TC5ZZR<BSFaQm!8Gt~P0Y!!rDxh~2HdOhv<<*}M&OLCfR)%4EzYdS`Zh=`2
zE2Xx#cl?+gmi7Btbzk?SzU8X1k%G6)^tK0z%dg~+XAxJ4SY_@dasR31mGHmU59&;0
zocKuT3iE-8KjrRk`t3@bcdaq$^|dHV@7r)9-@rJcFlNiw?7S<C0Xu~2a=aFMUR02L
zx95PSMC$T;|K8u_nxObxDt(fZz>Ii*gFSXKu3H4IXE=x)aQOAST)gTTcYkWM&COXs
zx3}({=XT!q^+Z;t1JgE@`S=P<v!3*8PCft3`}>qlUFDc!{%u_`d#38GxX((5Ex$g|
z(z|?2{z%TMqcT~HtX}$;jvicLq86LB^b(WePl@epU;Sq0uUPF9_~Lwk#L@B-mYh1C
zlZ<Ar*exzzxgqN4v&BauQ{7FQ<5s>f<(|3w$ytSCv%T0Xw`TlN+Vw89N89h!=Z%m5
zY@0djs?)DRUyk$ba#@A7KQC{2xwNpc`jDUdw58w5S{G~dzih~B3|^WWzr*9_p`T{U
z^gRFXn0Ba#ee>*&h(E8TW$x(~JeoeqU}5LuJ)tYquX(?nu(tbGvTCI63e&r%rW@~h
zdiMC-i*Me?@p(;PQ%hdE^QNgT`>wK7oi*Y8wO`n$TyJEW7Q2|;^J>+F@SoDpgWXD3
zZK!lQol(f~GGVV}=D9EH4~ID%UmLWD^GSZ2dzbuc4fWV&h4m~abHZkIyM2We(2dOo
zjSb*L3%S`8dfyUiPn!*?4F6tx^zV@uv!u&YmVcF9aAtpd!mL~aJJ2|_0*kqUsev(c
z2dTD!CejX4S)?7LpnjMhC==?X7VD=JBp2(WWh!vd%|5~F{%2*s4~ORjrp}(Dw5W@x
z^>eXiw(md2M=N=f8TYfKFP%Fh{x75OuQ#)jUbg+)mUJo4XUgvbrLHxpJU=#>pI^g&
zzBm7;<oEtJa-Rz3eK@t_{r3N5=4H{}@;W}RPcl-P%xjg^Cz8ga8(b2eDtC3$UFAmW
zrD@9Q>74x!%U3y{O%3FD8yNBLndQ&Z?k!71KbGxY@@|Rsk@)wUjHd}oY(JU0PvYU?
zC3k*F{JgwJc(!Gg$*#+ezkeBZX>HeT<IZfh*mt%|kGo)PuiB({a$gy>xo%#YK0EKh
z3P~9&#cm!shqcVl@21s#-KoIK{9@YACf6&L4;C=QUZ3%-c3yh%;aOVWS9dS85_xa3
zCy1|e#w-?x7TG%2%*o;BUZ49BP~$I?$KpKu=QV3(iI=bXF8aFlezbm)b!yjd<?XY7
z&1BS!iipyE{PRjKpW51kc_w>|e(<pVN?m;0+Pqom<+VFS#(!f!DeNt?QNE?|{ipQn
z$ds#h;*07O{+#XHIw9RRsmk7Ot?XgTe^p;J#O^zO^Jrkb&L3F0Mqu@oH_U0zvNr58
zoaE$?wa@Bu(ZekB&^>Epr*6+o{Ny~b<k^DDTq<r0Io4mh<tjPtO0aBnOXY_H-`(GL
z_a9|jH`ga=?teFyAD2&V6Hs+1{U^5Sq*p?l{;u~1<xfH$?P!@9(XdLmJJ8DC<6HN(
z&EPgW>_~v*{M`JM{P?2c#CTBZfm|_%tI-~cD9rB|G_l?=XktD9Da-|YR{cD6J30S>
z{CB?_(adcqjdsvcEsd>6#kso^?4U{xVIlXT)Wnk1A_d>XyyT43;*!)N*os+pVfNs}
zoV5I+6r`TLv%jyui@$=iBYYtjC_jL=JSaisf`T0tKx+x$o<VKggU)*~v;@@y;Ju~B
z76yif7Vtj(AaN(5I%eXFkV%)g!ZxnqRk?fgyi0n?Ol|YUwaNtyg?obUANi#v)bCv{
z5Vm)ILDBZa`jg)L;>&FxZ(vD$_g`@O@h@$5T)*sMeolU7Qgu@#`}v&BtqYo}%GMW7
zxc=rZ@2@#IzwU2n`XW;IbKj9=`u_DZ>$m<%cP`q?!*H$hb+*psxBW9@L{`^5eVq5_
z#)>DCRBkzEC+!IR`|9AHoNe8o`FdwPnVpk4^GAh;f$P<^4|#1|6aE-Y3sm2ee)yE$
zw(M7K$B!#4*eIWR&x2#v62Fz7n%&G>UcWfg=;561SEMyNX0MO5Mpukd^_JB$ZoYdE
z*nF7N%`ew(=C7&Zw`z>T9c_98-*Rt@S+A2UbwB)s{hpVxM`o{go%v{Sl**P}E5mHh
z=db$j8L{ufivM4BtbJ+zd)JOH+*UtdI6KL8-e@^3{PE`Qhn)#KdNjh;h{(?2dS3YY
zJl|d0mD3h_?6vv6ek-q%&jG>4H(}P_E-!i%y?qmlQqa_f$(b+ud{RG7WY#SxVS3e_
zE~=Rs#I*bR{eY}cxBUwiYb4eeTsXXFm5$;n_j4L^*j&r@H%X{(xw>x4>40b1UwqmM
z4PGw0FV^<p#(#&qzb`m-)Gs!+(u<LE6l_dBCsCNK{bpI$cEcE}EcXY8D<iKdNUi^r
zHDguLo^Y>A-g9>g{Mq2+`1Gx;ZJfs3IcN574!pJ8{b@@uq>cft2}6tp?_OWWWczE`
zN1K+uweKuuyt!#)bOk(cCd&`HTAPKLi4n_Q3Zw<QutQ_GK3;We*}g7tcg`kXM-hg}
zK66e#JrHt!fodPq&%YZM@qSg9VI!=&CT!7$YjuK?Uh3_dr#Gu;<6cRZoJ7+_v$lu{
zWk&Tpyl%Hd>V-b@mvxD<0@7Mbx~q=<V_o*}z_k<q=B?}3-eo)U$Bkmn2)DdtbG}?x
zzdZGpd2^A><>Cj6+-EXd#9sBRWYCm3{${p<47*BZc*Q2mKUOUZw$7>P-LE$}NqxKJ
zEpdr;du=!~{<qAwxq6M8`EmF>k?$8@`=8j`uDpGlr*ma%%&ymyxECIKk+H%@Y@^gn
zt{1^NlXfrUlqls%T~U2ndArmhjn>1`|1W4Ky<bwzIdMjMj|k)047RLf#Zu;mj;_4M
zW38W7F42AdWvPmQd-JKYUwSJeHnPorE~RyIF5~qnwQrfdPJOujVkM*9*RYu<<@!8r
zcR%Ia`M}?ElC4;i!<jRY$DUce71GPJ$(g$G?<(2q`nG*?d`51+e+&1Q*86mOyCwf)
zFmWh2czEZ+yUPk5v21qS^Ri*$tCTra50#i#&dJN?OZCrbZ;$(&x8P^#(%B9#f;Xwp
z_1bx$T(S3m`=@(*dftoQ-|oqM@l&1ww-ldW*;~OsUtfl8s@;D)muqs*(hCQ+$?miA
zo3iM7UJm!6u9{y8pN~9wdX{&^>4}pz*0jFaDw3JT*Yy1Cxf8m}0_znIng+MBdBx6O
zyIVTG1YAS7K^ylOsW~~Rd6~)aiOGp6sktCVUP^pXYH?~}QF2CnW?pegW=UyDW`16A
zd}?wscmOClG2Y0)&=hIBXC=JqU^;Hl#B|u8iOCC6bucm*aItY{wRxPgWnpGAXk3L{
zQ3M(C8}NdLci4s597{4%^NI~!44gm$T*B5KP?sq<LS3ein3tjezxT)!$z|aBKo3z5
zz)WE#%@kK>XYkmOv!epYf1qxLp{aqnfw`dpXcbG8IIoF;ff?wqcQAKod8W)jfQ=m-
z4@`_~tlEt%3`)#N3@notIKJ?1YKeLD!%%Q$TZ$j2s{UL@eXez;{v}g41*T;8W<Rqp
znEHX$#eG?kML^k9rl`Jk8uNbY`ptZ=<B{*9s`=t#Vf203gQezMuK%j8a+;IH6&6*K
z$-Sz9QzfVFpc|<}vs;w7n`Wvo^3B=(gzxYE-_sQ)&(uOrLCon41}RJi>F30fEEcUv
za$UZ1s>%T=^*Kh?2M%1_wetB77U$sBcR`Bx=6+Rewwo8>t$#gTm`{<(fc0T1<GqZx
zTJpX=oE*Gwyw|3PYdkMK=bBoiD1KVWk*`O1hQ+Lq+}Wod)x2VgP?`wNC9un6u;0Fk
zylQeDJO?oEGiYMoWzfX52$BQ1L1&ROF!HylJ>x}gu!9CW3Ezil1e*)t66PZ2_DwTG
zBSTXI3sCz9v_TuRz#YaV;`U8aY$G%?vFyAG-#)#3jhU`aM^@V@hRo)^T;EdgOK9`y
z{q6C`>f0`FGKjhMckRdOJ5PTkOyis+@byCQz2DV!#T{#cI;y>vo$_23w_<rul;EDK
zrq}y=UT$79O_hDR*Gw&T{Vj6k`@8tJGSx^=+i`TKmCl}PLOWka);_wx))pV<nYGn2
zuEXTbo(dk087(<0&U$ZIP|H*4`(cOfX~k1lbE0b>F3@aQ`1A4<&(kVN6BYK{<-U6J
z%+FWqT-wDGkIj`{bK>-i2MfOFPw4jjy}?ZSn`Bk%gWOMv!W}X5A57*7oZc06ZvE=3
z-&b+2O4xhnX8ir4l?lRe42&nee%UX1#m=nA)Yo*1`OxfsNFCld$Dna0;c6OD&Ch<s
z9-b~EcOZ-HUgVZpy7%u$w&@v|f%=K^Ecynz2HFcW7pS+XLi>fFJN*!e6SSXSAGE?l
zx5x;5s~_^rFjj++ng_70-!mJ7+hsDQw@rNWz-xyK_v*$q>i*Xb?vQb=*vvEQ&nq39
zyhLeVZ_TgsS!LA@?s(bEkmR~;CCB8QD~-J+W*z#`-r;xqZlQ_P!H`>S_75&=t<DWm
z`f8PQRv~|vX6N<06W?8qS!A~`+VSiCrzy_5FRxmzzO?B6_U;P@8YE?059s#1_@TR`
zB+T<D>sEi!dwDJumhCI*c7Lvvn7I2({@jBfdQ5v_8Gj$n-TB@nx6;k9j_cpbri1_A
zug+6A5^yqpuJ3H|9-gO+Cl@$o6$k%X8n7i#mH)So#FxK8H~TU-z7XWU*Ky;wtmpSt
z_okj#s5q1$bX(P-C+kn0lZ8Wy(D!+b4=3w^Gd^rDA$%qja*dP`%3eagrSMG8!eY?G
z0=nkz1tim>PI`i}dNNYQ7aDA+2tG!Hg-ci>BqLP;K56L=y3G%DPLmsHP7`vClo7bT
z!_ogSFflMQvNQy3F9gqNB6AJs;)o_j1>|xLd<P&SFM~l7BL`CxBO}ATxz}HXOL#7f
zetkXOqwUqcyZ@iOPnY?Unz1>&a6w%8?zgi&UlugjhDjuI<lp*q=7N1aQ;1TCz>Q6f
zR}Pfgde<K>KWtaAT8eqALbiUE_Qs<fbw_r~Z8&(tRXu-|dBpd2wd*%@zpWJCE?;Ek
zw@lnVb;hLIT6wXH{&hUyzE}UWSM=fQ(^gj>2`v)Vz0tQmUdVO<2P?<6n5C%}EUq)<
z7AGW>9Cch;lq8*WR6ajm%4r`{VCsr>$`V<BDwtRL);ApfwL0q0LWd=%B*p%1I`KZP
znD<@z-dW!&XYAR?p1w$w_wIs-V=mQPc1arXyByhrBhCxfS(F_8@qcUPg#MP2SJS1}
zGchtRZaiSnxEE=3=+co5mnL5E5iH!Cc-nU1zq>24t~@qq>;+|eWtPTPgT|%?5o~G}
zrY}jQORP3AGN8>kU@1C`ygzR`WjFDU(6NQ=J$>a1jM+qDCdf&A=U8UTCHb?xK`<}#
z$ux0;|0WZYi!9!qkzrgcJ4IuO;kT+IA=ke>HH=_hbmm;r?J2IsTlc%3RM~p9iD|8J
zWoGY=ZNBHu`<yaXej(GbYHqh<p4dr+r=9c8THh-8UN=)sK_o<VbzX7nv)PJsxpJEL
zR{S``^GiT3XWILA-Xr{p-D}@9Yft^rH>st_^0mUN=C{pfr{{6(dF`jRtyufX<!?U!
z)CwOZ3YK{N50`4^FZIwnADAh=fJrEE>eY)5n*@B`9a$sbylm+_uB%g%X7QfyXgX@d
z^F({T>oeZ@8gn-8)QSpUYtFx3w*L0s`QW0%1=_MsECsC@O-W3NPf10Lz9fT2U%=OW
z6cpvBr50!AgRVeI&P<C>G&3?YHZd?mzKui&Ucj(P7&Nho7&I~effO(t!EdbJ{odpe
zkDS#&<qYzcW!GRsCj$pidzzWY(h=q!g_Kl80RnQ5f?H-$ZX%L<AZuV@?g6!f4J-{z
zK{ursTNs+cw=5f2fVn7JmZ@YVp#hRp)3W<s{rLTHk?DhapIZ+O2VJk-CUAl&ZnLx2
z5&x`Br(|L^W>pAEWk!at->TsBq?`ZQ{pe-Plk~p|K1sT6RA_ONg{N?}ZD1Wg`~76r
zn3wyf<R8>*I<Vzd;D&=XyVsg~#hm)+ZN{gvdjH{;^1mwrzHEGcO#hN@WN#Ih-?Ypi
zrd4J$-u(F`(#&Hne{zy}{q;uOr$=@^urv9W{>3is;^i+6=i`!0_zT$V6eOa~eJ_$$
z&6!*xGI??FM!r?;0?Lu`3apauZ!`KP37v}lb4`2GBpZeE598M>>|0P)U-tBkR9m94
z-Sg@#_6zv?7VXT+-`TE~@0ioEEZ}ceGWXZXV$zcRo8HczeR9HAMxOhUw)}P$$|v>v
zc`h>jlMcP+ccIs2z5kNW|JG|=W}REfvG6qLP}36=Hl=@&5SwiE$Nk2|ifM-OyR>=Y
zV`r{S?u=4VD7$h0?`pqgN~`9^JyY+h&Cp!@ylclT!QJAzGv^AcxP3qR=*IlM`s4j2
zxlx;56n$OuPDNm?zR0cry0hF0-S;`&-_3aYOZ{bye#6M<%O{zZZ3#M+H~qKsQ4Y2I
zt}na)&evGQd)4)`u$AnM0~P&_={9mxQr1;-AANC?vBOeodRvO)RqJ-1ykGps_Iily
zxAeU-&v9G-G}+{7lW$ICt1!%%XU=Bb(CM0JseD}8WwGc}nIDr3c0(Ii?+qH?V7bnN
z5u?F{XkVqCeZAULj=`?(YRLhaEyeD9QYrcdjmtnKtpZEqJcGvB28}bIWATms2Kq>Y
z@vw`O%gf94(6caTEs}n6L9sy$TmzFqfSeyg07D`}F+(atK7#^73PUP`0z(c%B7*{h
z6GJ{j9z!BS9z#Au8Cb-G!5l1}$WX+P%#g~E1685GV8CF(V8CF=V2+mA!2|x{wF`c3
zxqI~J>$To0TNg5|zPq%;YZHH{w|01s^;5&U|Be`ad>)-L&CE#R%~GTC>yKTw9T3!N
z*lC-US2O$a+CPV{Eq<1wS#$BBg<O;NfA!S$zr{q4=oPj+-TMF668F6+M!UbMwk%S2
z`l_(ukg$N@Spm^qP7|~)xjdYv_S(=x=&#nTlWgZp<W_oLZP)l&X)?)9&*jCpe*b<`
zd)3XBcapUxWGloU2@>*~uA{YP?(};epBAUxK6I&h>aw)u^Hlj?avM)f<%&9dGeqd_
z`on&F@@jFscQ*IFx!PE8?~=a?>*pN5uRfk>y%+yq;#PI^_!ro6%xQfC%lQj+DV|S0
z-Cy)(qt5{?+2>m}rY<_N=i`hos|whYx9qrO?eoh)$sk&A*#}m>V@%8*tJ`L`-o1VI
z)uOV7;@YosSdO^%KHn+RJ@3`^(u+kK@0GedcdC69o?Uxq<{sN-jaLnmdyo309xQ0w
zVe!Y=aML$t6ZcJPek-w^mb)wNE)$=&^Rm>UTY?*x>`^}XWMBLLol~~`h*j{q690T}
zMs?~ZQMpT2D|KJq$W~c1J;KF(ZKT9U#ngg(=S&h-IDGtUv*fUba?d|?V`qm2;x?~e
zS#Ky>ws@zPcbu5VmrZ+4^h`QBcmA3pvppsaCfO^yCmq-!{`O5-@K+Vap3O=xylX;_
z&Hc4lWOr(7UY@^D9hc4Aso+Y-0$S;mlqO}CBxc8FC+3#M7w5(o7w5!h=V!+kL)O7%
zCl+VM>&6$C7M12AA6vwaIG&v)-Jppj*`SHp8&c7ro&yP*x^29K)RYYgf*mc!F3j(q
znpBmlpsV1WpPZPQlL@PQxP&c3N{g~HD^nGmGIKI>i&JwH%2E|VQnT~&bMmt?vlSeR
z5{pYfm5_or$Z4etx(XqoPM#r--iEpc+Mo)ITUf<AF}GA9819kE{5%EU)S~Rvs!WiT
zU`by?Gw}WAEX=~XPy-Yo+I$s)gMAdd^Rtmm0O<<`*#|u>33LILsey%&sVS(AGXY)l
z0pl7BOHUK(!mlqiFkZDg`|?a3A@i1-z17njF6TY}KRaNm-Gr%OPS+)C)LMEc{bH20
z;(wH4vAt){i;kb&Dy#Jte>H#N&?li<*<31b{Xb{L(PLphw!H0fS-d*O=a1}#JMT00
zo`16H+=tNbi%hOGXPei^9QwDF`Azt_JzKUOeapZfY_8?|#h<77ciZ{X|9brPw*Oq-
ztr$M1>OOONr_S8ziOU6cgifgE(^a=9x&Qp{EkB{hzM@J@CmuZb!@suc`pJ-hGuHg4
z#2Q*I1cn{%3#;!`GS+|A%C&dt3Td-@m+$E0S|1nQ8>y`G?CFy4H@M%vn&9BFV(RY6
zS1&Y}Y;&vNlV_Oh_VC@ypKtu3dx}tp;ZyC8ceNd}xoZ;=WBSADZ4i%p_z8^ah96X&
z2!n>@q4UB>jb-qPYeq%}E&GQbjr!I-oDt(4cRpJ#i}RAwN}=O%;kCtKDGe=Elb>+z
z6gWFyOZ_23`96;mrYjofKiQ#kvYv0lC2#ZCS39qA$C>Q?QmlFSt(xeZI*#D3h~5j{
z8ut%wzOV54=i|p#_s`6ka>LL6aJKmN??o@xrWtQl4PO1=htJBne?Rf=TDSA&s$<zd
zC+}XjddGAdW~p7y$ENLcEwb3WeBm_PiPd!n6oY-*-+tl_nHo6xs?t*4u8))X>_Yf9
z+&JlX=aZpP*sGMEueQz=OLHpvTz`3^q4S?5ec~T;l~+$m`?2;nKS!RLZoN1==cb<D
z0SD$!>pj2iFT>m@ky-nhT)rMWG+!xh5&y!+;BpIXq7pR1oD9j~$%&vrXRNCW1L3V=
zre1?4rcQ$<CVog^B_Qv<epM1fK|qKP<Gk6)C_{(L2K1bz1dS!*nWZ$aFfcYS1C7!R
z@GK=hcj6c_W_GXEFFn~L+WNcn$waX$tCMDawF}~AJLkwyKm8$>ij6EI%RAdky`0l|
z9+W=$^}D=F>nn4Dw^_HCve;VA!Y^K5Gy=B#>yXK_&(YWCjEr6y&22pM(P7)ppIJKZ
zH(h3X2_7;=G}uZDmrHs`?wLFHm81LpDMviYXI`!(oZ%3Y4$RCM3<jx8h79kSqpQ|z
zuiz@$-f{o`RyPq&u3rnD)p8t@YTqldqIj>`sRW+6=Vs17AH#3(aG!|bD<%VxFOzLN
zmm612aC6_BTq``=Z+pIkc|-8Oy9y6XXPI3*&bag0ox7j^%j#H(h2NZHc@3PTm7!HJ
zbnZPdF%eYzmSrZVLQX|Nnl|x+CuGnyw=6~mP0Uh|gp6A2g8FsUNR=+q3_B0L8Fn6w
z8Fn5)=ltCKlzikFcIZ$PGmnI$Bl6UGDyXUiyBpjCG(lQnCC+PPfxK3JKpjV@7Tf1A
z_e<WxS7q%ozOF8P``k`6v&}uI^-n^+?+Med&#Pkty2K2*XR%#4TA*~+Q#T~}%(lD?
zH}2q9r+rio>?!hl^-*-)mylUPT!*VR87Dlt)fxI(DdO|JJLlgww=L?K;y*v*(~Jpj
zE$YY1_CG#js?#0Eo|4*hz+=OTi9ZwPmnj6Sn0P#G>+6an=CBW4Qo^qc7t1Y}`Pbsx
zH+7?keD<%|JAR93uiw7v%(dkB;+|WqGgnxwI4xdb7P#i+ye}12z32IFIz5`fvs!;X
zALG6E^JjW~)V;r^#8-O8R`;V%H81|0AaOit&c5d3YSngKs>cu9o%_r*LqK6}|BZW>
z4!6wVjeDVg653Zn8*y47$fayI?IZh}N9#4;H!ZEdV6bEh;cQh6s@UXNN(_n&EEbq8
zFljSF8i<CZ_~b-zU&ztX5mEl72B#K*QxbSo+H8Tz0;4tq44vTNYdrdpDpA;AHAmPV
zrVq1U{9p3xTJ<rPhI9T$j(%f^IJ0cq9udzBma-Sm-o?IQ;!n8N8zAAY=EwN>*@mU>
z_U|bPaoqp+kI;_e{!w2#6IkmLwzGPD{`T?E{v$g}+P3M|W}mtA+3l|Wu?Ja)51TOS
z)K0q_b%<{{*UW>g-K%-@KgU>|&oK|>Y`+)mkQ4F#&$iX6c`V<g@7O$u5<NEW=Eq16
z1I1M4oHs8Oi{H#<UiiR#?E+DW{$IP8&MntjDIlzK<tc~SYNhE3KPJSLTv;?Lc<-l`
z84nia9lD;gaWVhA{jW2ghkaW2>9Mwj6=&nt?AGi1bl=)bZQqpq=xdTr)0Hd+$AFKP
z&GV<eG@CXf4_xAyK}#Ii9?#S=@H8!A&<V9B1<m6k6+*Azg%HyWgC?da22D)RLWo00
zb569_Th^(_6L1FgNCi=7upyrTXdyBS2M=pVYDHo(e02{GyGMR$aY=q2tbf48!w+hL
zJLeY_<QIV}cSF#%lAyIcJle25o~~iw8CV5G(m`3hui)zJ3@VJE+dM4{O^rY&=s~x6
zLbwC(KpgevDk1j?Go*jNKkUHXtl;<2plK1?#ZQyk5<h)Y%s9nx<oGLRhLE;9f93Bp
z>~Ktqxl<r!bWeWfl`}`#PjJX5im?aU*2b_0KQ^`Kxqo*4O+8+(ZIXIX1yO8o_kCEn
z;nW3A&BdsD2cu8LJ-v6San;!sx+#I%ZWhg+{>&e9!6Nbu5mp_jD;nF7lLD+_?Rw_W
zY5w}<RpFbbu4Jox-eBAA79sU!<Nf^KVY>>lk6WC1v9ZUW|NF=EGQQ>ua)JF!2Daan
zHPn2LCA3dgo4v_YZr8Q%HWy{i{Zh4ACe<h!{aJ`V=Ur;o$@UdL*&ig$>WT3JCv*6E
z<lMxn{5)t9PmDJ~O3Ui-w9NR;po#I5K@(#Iq(T*D%b9=u;BEmQP3NbD)zvyDqz>{S
z`GwiQ5;a*v7bb8CvpIsTGn9m!HO4F~01<$uQ%408aDp^7Ff~H7=S&QcxRe-;BPm^4
z-DU2-IGFd}!LDlW71eIu$s3Zs=}O<`C{(<}@FIEdEcM?XEc0St*)BcVxN32<!VK3~
zvD<%N2;@GV^WgE`_?D#41u4c0POIn_?CMykwV?Dz<GLiaBaOE$^E5Ze{nCp8H^DGE
zG3ZGF(MG%c=D1aA-kFED%4UWAp7XgaH~eWMa_B-*ih)(P;>W#pf@?3lkC>)^?e*Nc
z3BB6q(?SpHJl0rQz~#>O!8}svzwXQ_8h%>-roP5eOoj}vN*VmDk629+ns_q8ZLXql
z(ejQtT~B<xZcn?iraL>^Qz+PY?e!=7RQ_z`D!a0Dj{rEOzz#eDbtMXNN{i!Rvv&nW
znYoEYm8i3LcJM?4I_!vfl0g$w6(rFJGPLgX{(R%s<IHbUuE!r<>Y|J`0B2x}lxp09
z;LF&BIY0#%$ZFV9NM>On*yLRR#1YWDFf1*>D@;I3fI;(hh9IsPY`r3d#uI88-3gd>
zLFk9+C60=!Z9xTp^WUA{DR?@z{NbCIbu7Kt&g2(6hbOEt=5l$%952(LGV$q(iD5!b
z-ydjyxxFq?uT!8mJ7?EsroC6qj(V6YKl%`59%L*o^yp%O?>>D;!N=dkRe8E69*~|{
zJu{4V{kuzh+`}JNdRCiss;jiz+xX^Xgx^2E`%(KG*RJ6>D#7>uQt-Q+3v-1Sg?sNb
zBz>Q{(xt<z&@Ul$-fd;c$}n~w`(*Bz4UhKKiT;^l9N}nDa^zuu_kFcB@>{#Dw>w8>
zZ%|p5JE8kX(W_YF8QV|ai>rP=<)gISsgsHakIrCPwdh-P`RuQC(?U&T(lZZybb9Q*
z=8uL<S}3$-)ML=t2`w2}I1Jbr8UHgea-p7?j!5c{i*@gx=F{N0cX#uWQ<XdVcE2#_
zG!SItOlb39Z2RHF$jAa&iDwRJDH#~(8R#s~TA<OU25s+vMvq|$6WmgA4)W0lCs4?o
zJ(gC^@{sc#E|RD3U#VxfA7-4i^?M-Wgx81dFLt=RREd56Tx74p_E|Oz|8nQwo^a>-
zm!xam1+mYcvUse_s5$x3>2pr~(W)BRz>Zy)xa`zp@975mT^3Hse4_XG^7Gl8GnYM>
zI{Tc|_4<7_=Ylp1iXP+_Kg+y(j;iRcMP;3T*gi^JnC#70)3kl*mv8a^-a0Is+frh=
z^Nw7r*ey-zHf4sByF2Uh8am|kMYb@jtT4)Fp5?A%urKV`awnz&=~oUncCj)SurHbR
z|F4HJ*TXwY8z;>6y<7YI`KGfmC$gsgSo*E^NNfeizG}8>p64aa0+jVQp3P(Rb(gp*
z_HyI3Z30(!Pv5_&Z%YU`Q^SgXP}mh`ro$@$y@J$S1_nmZjlm9xoNQyz#B5>E#H0Yp
z$!rR2tYQUB=-JmADf<TbBV}KZCBdHVez0PnTUY=lq!8rq9|Fz124)841}28)Mg|5Z
zplLBfBreJ>6p{@mly$co@2oqa>eaXP_7)B4RpAp}TvWQ8vg`8X7gyG_B|2m!glB}b
z`0mLHVPgG%fA%b`b+PRIUWYa6-~ZPBRr&Gw+7AN3DigZXPOj)!y*_F&!^?fU+}=eO
zSL=v3HO3|BEM!XEy!WU!L*0=-%*NroZy)_S7wdY>;;iYmO$RT`Y4lq4WD{eIY=8XB
zBOBM=?ofO^fupJ6v%zBLXA_#%g=%=djlRB8z=H2zzfbgRw^xo|H*l03zR+R3t>${k
z{W~oeo%u>F7pgjFys9|Or=w>%x2HQ#Oh#X=N#N1r)G1sn2jafRM*k3abYWMO_wRe=
z3=C4y8jml{DYi3epRw>{p#JrHYm7JhL$WStXpTTNbqr~i{Xx&{+p3<MKi0He+vL>F
zeIa|n%_nF{0=)0n?vhNWp6Q<-rFWmzr*?cP@;Rw<-N^6rUCB!Ky?xfvllcQYRfMxe
z*oxkBUS7EHu|vzr=MqLGHXeEW^S!Tpm%BW<EhS`na#6t5(DT0(CNnLXeOP(2pIB(w
zf`ZE2vx@TP^>z11KJGC55h>Nkd1CsqlH&<SqR)i)Z7TgM&BS>-GQVhY=66HKYaJH*
z+c)hMtNgj@$-WNNyNT+`GFuJVS<JRbP1w7jq%fc}caO+p{<d`=SKA$5z<Fk|$HfP?
zQ=U)SdVYP8b3ymd!!0(#tLi4r4iBFEtKiT?KEt20(_>#wvxtk|T<q5&ntpFynLv`l
zzR=96&J32m-`;JA^7C{FiHLV<2In^^Sg)cgF)b5**#Xj;H-0umb}KVzVlFahVv2%f
zHxaw8SoSxemyE7%f4nW8@wM)qC)ZFy8Z?i9JX0OuW2j-E1{&z+;*s|*O3cbHPgL-%
zN=j4+%CE}FOs-1J%LEAp>pAMdIuy)2{J~L<Zk|D~90@rY(A3ZXREe4x8-waoV`MJM
zOf{9PB$!e6*afWcKI^dcT;lU-r?xD-#iO+0*VgJXhVmZn^R+A5&Zq@GQLt_0xfb#G
z`4=sTxwkH^Q+xM1_|BIJ*Mz-zCfFSQa_dqb?<A``8#n&9xOaG$ZhXT|roCQsrTMoU
zK6Egh`R*O*IkuZO++&biVdB1f*6V-VB74nRZt*JY{}p|DrI^B6%Y=9OrQ4oQpYzl1
zZ=G+xum1ZE-mG7DKicLgEL|Y9#kXMRx$8yNos*Y0w8*G?7I|*{Z#{M1!80cq-@M@K
z;+pn+^Ro7**M72U^G<gtu-UbyG-}RO-?>a&m%L}EdAqTTr>>o!)4^~@sq?|Zlq>0b
z3@a0DcAs)Q8<WLw!p5R6Vm;9r6?wCip4dt+iLIy4e9aH|tQ`L%_W7C*Cy+BLYz%#C
z@ek%Zk<qecFBfZ7Pte%pd%)O#)vS$Ic05u4zjE5lb8ZiEYkU@2EMY77@WoN^jlFxX
zeNp>Q>%U9#wSyTR{I}eh#m@IyR_5EHq6w#)Yz3RTFYTVMwO;XAa@*WW$@kxP^O#OJ
z-1XL<|LYl{n@j9=FZiP{HQrxMUr@Q(uaupC|LlufWM2xf{5zG<zsP6D+Vc-5@Sk1B
zbv(9ud%&eDiNCIj-o8G+Juu|;(#Nk)wk}XrF#p|mj>n|sp-tnaazE##9r11H3vHim
ziAmgMcl+OVjiZa$*KIv@s#i<s{q(no43?bKs`~xeS6O<dvB?6xuPeFjuf#q)-!lJ^
z<e~VkYYK9Yi?@R_Dy+3zl95<mk{S<d<AT-!#wRDn>!O^%%r5}Xv@CiCO)OdlP0T`&
zOe>JUIDNa@@>g57%(~{S|9!%5v=BFFT!&O$qMYvuu^PH=4Vsa;h2@=*hw|a0i3%>6
zWtpIbFNPN2g^euS!ulG?nhK!xB?`zUDd;M=<rgVH&m5^rO;IQ<PF2Xy%c(><C={YW
z0oJGv0-yTf2s+{ee8{tbg@K8I5n`a-+|bCt5Z1gNavma7*lgObuJil$jp(}-)zb6I
z(;83P?WtM!d71hwlf@Z^g%-w1Pd*o>Rc>6Fx_D{#)&2xsd#5w2vW*TXpVo1_`{e$g
z#5s?OHz`dObe4!evQ0ibhl@2r>4ce&Rn5|i=iAnIEO%iNE-5VLa*Aa7AuW>abU#0S
zS9a5)xzW$P_R299-S#edVO?KeE6=h;ZT5pLQES|7Lw8)?pcbUTXy}l3<EF~qZ(29r
zD0;@s{#Ny}KGd{sT6XW`$?B&k?S8e!;lTVuKN`-*eu=tsuB2_5T@H8fslAiVNwO6^
z<B74zJkD}$PtLjMZ{IWK+))+v=ver2<&PP29(=xPsF5g`lRmB2a^~qnt}4*$I*Di%
zAQv`kb5>1BnDh3@|6g`oCECf%-?v5XM@#zPR)Lhmjj5??I45-;v-~3PbR}O}aBRiB
zUn&!KKX(bde@x7T>wT6>;45wRF6OGkukE>Xg2WbRJMUDTU|+D(ST)yGO2b<H{Hnv6
zPSW?SeGV9#L_2ou&(=;|ukn7<*TbvQ&Q*uK+kWD7`oWWPq$GA6Iqb>&F@Z1OtlQDg
z<(1#Ji9WEneOzB-0grvTTFFgSp<9Nxq~z{sI!;uw$y~mh>C?6tb>_}5Y_DcNDQbGW
zkn`Y62Fc5IR|>Ls6)sy9vF^+6mpR+sx1X84`@iM0u*Az;%a6qPBviAOt5xm4!5*ZO
z^t~YYrsbY|nM0L#$~4!XJF1hy64zmtXL!XyD#^sm-js3On&buG!Uom~M?dHtsTF<?
zUc#_mF=%4FV9>;}15(1USZxdFMh;rg#0K(sBK|YoRSlFuEd*|18AvWiDP7=4!5Qiq
z=zx?l3#$ggPKC#(9yEMoU}#`$XlZC+Yz)4U!wAGRhjLNI69>eBgmV4<#H~|<cZL7?
z^(md(O6tB~L(0@G7x$d4I{!^`nx0CCgNns>sn$CYKBt$cJ59eZzq#x16E@~(hNXdW
z1uP|x4qmZZeSNJpy98_B-{v*1(r!vfXLNlHmzuHb>)SHhnw$5gWLbNQAH3SXH`T&w
z>IK_SGr#+l;f7jrHzHF#BNS%Tt&Xpo|MHseo92?0$8&DH)AVZ9ViWlp^6c`hRQB#<
zbD`@O-W;x0aCBMx_VfbrhlQ!<WYY}4moZA7sAZ1WHq}#hnULCxV?1RK9;cmt6}wFB
z-P1Gid()RQs`D*66>@ZA)l}I+IWNsF<~v!g2bW03<(r*7ylBJre=!!1g7*Ayaeg)d
zx)`j9DafFS$q#V>FC!!5Gz{2+ECa?iMNl8S*h*hNKe@O-50-}W)6$AF@{7O+=t9Q<
zkf!dN7^Og6c?FgxMnQunMqYy^Mou<PZ8k<0#(fbCj0TOr4H~b&>|kOtXgn^}cqAw_
zCo?fGIaMJ)PoX3uRRLE@OjSs#R7lLLR47O+DydWe9n77ZTC9+moSa%v0x=*BYyfC?
zltN-bK~83JVp2}3LUBoAUP@w7ib6?hQEoAKYgBT6UP>ltsJ~btKMhn>>L`HvtcZ2u
z1x1O;C7^jo9k6;7cOk0kRE2>2oXq4(Jp(1UuNcL|Kp|(PuMZl%fQ6f0QZ7>Gs@psF
z?PblKY?5y*EmwY+-ja3t{e6SRb)c|QW@%hz(73ok1e=<LjV((W8wWg>H9-m|)G<yr
zw89Ep4|H7-+4}FxtVzoyuPmu6lIXvgQ4^$cH$C67>d2}%+eZ-_d<$l@B)*V-oGHO~
z?zelu0>A$sROI(=I`>um&l~;VRmIiJwk3Jb#OA$Ts&{06n0kPA(yo2pGB%+xj<PEI
zniSk)ue#J#iDlfc^$jej2$waM`^z+Q4$oOGR{!I>`<9gc^2*)V(8n3JbB<KPzu1G<
ztL_L^T(}l{aQoG@Ml+eMy3T~CS{gQ13o8Zga?4q`d)_aW98a~9{!7KL&loIv_9{}T
z{m1mLe1Bh^nY2XgNRY%U#d8}!K5J=wx@%>d#wX{fSfROV<ZiBb%9XXeenGqD`A?m`
zSKb_b^sMTFnR1s`iP=wZJzxUu9l~zLgS0l0OJu~-4Nwylso%&~3$GwpoD7;+><pTi
z)u0uGS8$I8a+q_oG8i=OLv3~<E*^G;T+4^i?hH;%RRASasN=x%iaDw2i8;F9+yd$z
zf@%nEVFPHp(^3J&C<R@GG#m|2BLf4FR%T&Ms1E2n0J6^!8xcXxP;jr*05q&?ZfI^~
zY6>1GGB7kUFgG+e1#ySI2MJYByIQst-JZvj{b=S(1IFcLuZ(s~b(A`JE732a=={HL
zO_lqL6WO?ys^8cgf7#Vfrs$fV(Wjy={_o9_7qS`}7+mEx9DhD*zfick%;F4vuJ*lI
z*?e)SpJmFgUTN(uP~5WF=y~^|t8JD{8+TlCKlkLM=Mn4W_kM@ehVT3EBJWV;CM)jH
zM*%a$jD%zKE5Z&QnzH#*)D!ht^Hr`Ndvjs7YSZI0hmN=&?U`Q1maQc?e<fF*hjsq#
zD}s_v-}~A3e+`bGWA{Z|=UL_&KO>){@>knmJl$=wN3wg}oWSSX>$V1OG*)_=d%nO%
z>er*$>D!vW^e$bW<m3AwVoi#P5c7|1y;G7^mJ}lT!05#b#^4oVpgF5Zt?Gi@``YK$
znSobwdgo6NN?VPVHNeGD<$T#`$F^14EA_TtZf9mm$jY9j7ui`XxW@V7SK<G?mf8nC
z?e#C{S*ia@{0Mi*yerbvW*FP7Sevwnp=@<zW*(bt-I1Lxy))JeT}iynCF$n=`SthY
zgAS|?OD}EzvUQf({*@hN9W0?N+H>0LrOa*WbeBrqxY8MSYVR7`oEy38uYNA$KWp7#
zp)@yV@~k7a`<tXw?U(V#uKM$Iljy0fYme=*z0mUF6<g5;UrVEk{dR(LxR=bGrTF>7
zY;J>!+XwHoJOA60JnPiaLoz3i_x`sQir{#*&Gt=|j^FR*Y3F!sGTTFnmlPkG{6A1&
zjc5qtjX$g#I~UfMG|%$9e#fu6%Ok(r^&7Z2f~_Ni-6j#Ak(r(m52{X!K(%N*d`dhK
zsiB$*FNe_2tQ25c6Qh>J?J&EayYkaIH`Q|FfCn{Nb5M&UQ3GL6slX*n^i3Dq2AUup
z%)(0Wn=U*u(=!yn*Ij^|tN@=1cLcXk%?u5pCsl%nwG5HC2K03eq1=A#%+um$zpw0m
zs;g_X?Ece6`;%u?J+~EV9lkonBz+N=%!c^PWeyvUY~R#>VaAe`j*(WE?@YO7bGyW1
ziPsrl)u!)WOM`_h-hKAWEu2`FylwTe_`^$De)uN^?)!1{&25WGkJ+AbOyoJD;TZb+
zbX2EkUEvGU{k}z<w)?Cs0;0<erF%CYS8<)Sd`&KcNEFNVUBa&exn?*zD*2@*wl_Kk
zEUS#^yeH`uepT;TtW2;@-HfwRY+_3?iZ7V32*)feyc|^%dOI%Vp?SMO7|T<^Et(BN
zA1f_87BLCdsHbi3*k1AJ6xRxi)m$lu_NT>8Z8^A5Rjxf&Du7!-=#1m;Jnle?9p0yz
zz(-PoCgV|admCok5|P_C+8xeh{;}Vk@yZM}DGsLh$tl{0!CM4nm02VV#2Q4fD!?*V
zBqPN({m%6{^KClP*f_!!Z!5b0&`MvmU&5%&K_L8K*XOF6f~kF`zvlgM-8%24kD>RD
zi7%XW`ZiabyZt!0vhdnd#VL%pLfdDlq<rg2J9BT2`PmgF8#8AspO{ynq+Q_rIMm%R
zQSyDn(N=vwgKrBA#gtDxf0Qa_e0sl>^a9%-r{cN|yAwD%b$Qrgg0>&|$u;AmX#9Mk
zeKlsu7JFTm)IU+v<~lMxllNuMqXPorJ5H1dO$`0yk$Gc}7E?68%M}H~+h2ASsKri5
zn77AUoKt_xX*uVNlkDmTFU5R+rMNRgXpYUC{qz1b#LP}U`^J5hs(ShY^Un-TwISD6
z{&=Y;ytw>@JY=bWBD8gqT$z+w1i895JtsdYF$cVA0I3KFM-%}|4Vsu2f|ip)nj)}m
z+pVi~J<xN%HEal)OPJpoZUwj*Vki%860<N1iy>r??|_76X5729DKeZ;-u!W5&t8#$
zG~xdrE?2%${<K}{cwg&Bq2gtds|0S(S(I85Rc;qp8}{vv^0q5)<0Cej`(E|r%ln$u
ze(h4vCG}&E{+rF8k-9+G@0eD~?5h)m&Wo^pv3`6-W8VwDAFKU5rsVcbH57<>yGVEM
zRjb@hGP@HFxOp>v^;}oy)^(wzcOehcxp#k__wUF~`&{qBus=;zMEkCQfh_wpd*5%_
zJNma*^DMP^eb4>&)mY0v9m_vo*DCq=B5INK{D57{dR$Ep1*A^Blic+F?*4M$IY}pz
zi^VQz@_VlI_^^4^_MD^34J;jE*ByBjs}}s>oQyI@;)*GfyI7JO-pE@Nlnb#HE;o>f
zRaIXK$(xN!4H_2_UhIa*o!dC7d8^K>QSfOCGm1OEI<Hl?Al$$n)U}aku`n<*Fj-)<
zz@SYJ(MK}UgIpD@3r>9CY2M_b9R1`H{p1o*QyIJt4tebjRvWNn@38k=$_qmLrcOWk
zqw|*Q!7GayRKLgzuin16H6rtn!P*<5UAm7?o^6c!QLG%byoUAjUnOh4i)=@3oB0&8
z^gZ36^yKJgy`?vmAMfz<QdpkHq%vPAA-%d=wutknVa&_Q`3>&2YZr2}i`csVXU>%3
z;dXhRth&5@)5#rWEpL^-)v~X4t-E}G^Zu7z+s>|7l&&3gb$jXuOP}Ng6DubN@rT@P
z-aY?f|MKAC!>9inys2T?al=J^a(p4D()K*NS2E0gbEOm#e>a-HiTlIly88Na@z4tk
zUM0+4_U&;`wB{kU1d+MA(|uM>7M+`TgfZUZTEyNkLm@xG6N(Qu3r<YEy=7U4#ko)~
Y=@*wKIvCkTCVbfa*z(*fktX&k0Bhq^;s5{u

literal 0
HcmV?d00001

diff --git a/roles/nifi/files/dsoclab-nifi-1.p12 b/roles/nifi/files/dsoclab-nifi-1.p12
deleted file mode 100644
index 0076ad1207c243f877de929e2424ed953f60469c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/nifi/files/dsoclab-nifi-2.p12 b/roles/nifi/files/dsoclab-nifi-2.p12
deleted file mode 100644
index fdbd25a1e50851b8ea865781bc903dcc78a1cc8f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/nifi/files/dsoclab-nifi-3.p12 b/roles/nifi/files/dsoclab-nifi-3.p12
deleted file mode 100644
index 4d4b23daaa41114bb1ab95eea974f0c2618dbbeb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/nifi/files/haproxy.groklib b/roles/nifi/files/haproxy.groklib
new file mode 100644
index 0000000..37517af
--- /dev/null
+++ b/roles/nifi/files/haproxy.groklib
@@ -0,0 +1,39 @@
+## These patterns were tested w/ haproxy-1.4.15
+
+## Documentation of the haproxy log formats can be found at the following links:
+## http://code.google.com/p/haproxy-docs/wiki/HTTPLogFormat
+## http://code.google.com/p/haproxy-docs/wiki/TCPLogFormat
+
+HAPROXYTIME (?!<[0-9])%{HOUR:haproxy_hour}:%{MINUTE:haproxy_minute}(?::%{SECOND:haproxy_second})(?![0-9])
+HAPROXYDATE %{MONTHDAY:haproxy_monthday}/%{MONTH:haproxy_month}/%{YEAR:haproxy_year}:%{HAPROXYTIME:haproxy_time}.%{INT:haproxy_milliseconds}
+
+# Override these default patterns to parse out what is captured in your haproxy.cfg
+HAPROXYCAPTUREDREQUESTHEADERS %{DATA:captured_request_headers}
+HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:captured_response_headers}
+
+# Example:
+#  These haproxy config lines will add data to the logs that are captured
+#  by the patterns below. Place them in your custom patterns directory to
+#  override the defaults.
+#
+#  capture request header Host len 40
+#  capture request header X-Forwarded-For len 50
+#  capture request header Accept-Language len 50
+#  capture request header Referer len 200
+#  capture request header User-Agent len 200
+#
+#  capture response header Content-Type len 30
+#  capture response header Content-Encoding len 10
+#  capture response header Cache-Control len 200
+#  capture response header Last-Modified len 200
+#
+# HAPROXYCAPTUREDREQUESTHEADERS %{DATA:request_header_host}\|%{DATA:request_header_x_forwarded_for}\|%{DATA:request_header_accept_language}\|%{DATA:request_header_referer}\|%{DATA:request_header_user_agent}
+# HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:response_header_content_type}\|%{DATA:response_header_content_encoding}\|%{DATA:response_header_cache_control}\|%{DATA:response_header_last_modified}
+
+# parse a haproxy 'httplog' line
+HAPROXYHTTPBASE %{IP:client.ip}:%{INT:client.port} \[%{HAPROXYDATE:timestamp}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server.domain} %{INT:time_request}/%{INT:time_queue}/%{INT:time_backend_connect}/%{INT:time_backend_response}/%{NOTSPACE:time_duration} %{INT:http_status_code} %{NOTSPACE:bytes_read} %{DATA:captured_request_cookie} %{DATA:captured_response_cookie} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue} (\{%{HAPROXYCAPTUREDREQUESTHEADERS}\})?( )?(\{%{HAPROXYCAPTUREDRESPONSEHEADERS}\})?( )?"(<BADREQ>|(%{WORD:http_verb} (%{URIPROTO:http_proto}://)?(?:%{USER:http_user}(?::[^@]*)?@)?(?:%{URIHOST:http_host})?(?:%{URIPATHPARAM:http_request})?( HTTP/%{NUMBER:http_version})?))?"
+
+HAPROXYHTTP (?:%{SYSLOGTIMESTAMP:syslog_timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{HAPROXYHTTPBASE}
+
+# parse a haproxy 'tcplog' line
+HAPROXYTCP (?:%{SYSLOGTIMESTAMP:syslog_timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client.ip}:%{INT:client.port} \[%{HAPROXYDATE:timestamp}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_queue}/%{INT:time_backend_connect}/%{NOTSPACE:time_duration} %{NOTSPACE:bytes_read} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue}
\ No newline at end of file
diff --git a/roles/nifi/files/nifisecret b/roles/nifi/files/nifisecret
deleted file mode 100644
index cbbcd4a..0000000
--- a/roles/nifi/files/nifisecret
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "value" : "ccfda830-defc-4fec-85fc-9b2b7c98e8ba"
-}
\ No newline at end of file
diff --git a/roles/nifi/tasks/main.yml b/roles/nifi/tasks/main.yml
index ec0249c..d4ab3ad 100644
--- a/roles/nifi/tasks/main.yml
+++ b/roles/nifi/tasks/main.yml
@@ -1,151 +1,17 @@
 ---
 
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "files/{{ca_cn}}.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
-  tags:
-    - start
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-  tags:
-    - start
-
-- name: Copy certificates in NiFi conf dir
-  copy:
-    src:  "{{ item }}"
-    dest: "conf/{{ item }}"
-  with_items:
-    - "{{ inventory_hostname }}.p12"
-    - cacerts.jks
-  tags:
-    - start
-
-- name: Configure flow.xml
-  template:
-    src:  "flow.xml.j2"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-  tags:
-    - start
-
-- name: Gzip flow.xml
-  archive:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
-    format: gz
-  tags:
-    - start
-
-- name: Get openid authkey
-  set_fact:
-    nifisecret: "{{lookup('file', 'files/nifisecret',convert_data=False) | from_json }}"
-  tags:
-    - start
-
-- name: Configure NiFi boostrap properties
-  template:
-    src: bootstrap.conf.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/bootstrap.conf"
-  tags:
-    - start
-
-- name: Configure NiFi properties for secure servers
-  template:
-    src: nifi.properties.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/nifi.properties"
-  tags:
-    - start
-
-- name: Copy authorizations.xml
-  copy:
-    src: "authorizations.xml"
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizations.xml"
-  tags:
-    - start
-
-- name: Configure users
-  template:
-    src: users.xml.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/users.xml"
-  tags:
-    - start
-
-- name: Configure NiFi authorizers for secure servers
-  template:
-    src: authorizers.xml.j2
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizers.xml"
-  tags:
-    - start
-
-- name: Create conf/enrich dir
-  file: path={{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich state=directory
-  tags:
-   - start
-
-- name: Copy empty GeoLite2-City database
-  copy:
-    src: GeoLite2-City.mmdb
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/GeoLite2-City.mmdb"
-  tags:
-    - start
-
-- name: Download list of Tor exist nodes
-  get_url:
-    url: https://check.torproject.org/torbulkexitlist
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
-  tags:
-   - start
-
-- name: Add header to tornodes.csv
-  lineinfile:
-    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
-    line: 'ip_addr'
-    insertbefore: BOF
+- include: start.yml
   tags:
    - start
-
-- name: Download umbrella-top-1m.csv
-  get_url:
-    url: http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/umbrella-top-1m.csv"
+- include: stop.yml
   tags:
-   - start
-
-- name: Download alexa-top-1m.csv
-  get_url:
-    url: http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
-    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/alexa-top-1m.csv"
-  tags:
-   - start
-
-- name: Start NiFi
-  command: "{{ ansible_facts.env['NIFI_HOME'] }}/bin/nifi.sh start"
+   - stop
+   - stop-nifi
+- include: update-config.yml
   tags:
-    - start
-
-#- name: check reachable hosts
-#  gather_facts: no
-#  tasks:
-#    - command: ping -c1 {{ inventory_hostname }}
-#      delegate_to: localhost
-#      register: ping_result
-#      ignore_errors: yes
-#    - group_by: key=reachable
-#      when: ping_result|success
-
-- name: Stop NiFi
-  command: "{{ ansible_facts.env['NIFI_HOME'] }}/bin/nifi.sh stop"
+   - update-config
+   - update-nifi-config
+- include: restart.yml
   tags:
-    - stop
-
-#- name: Copy flow from NiFi
-#  fetch:
-#    src: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
-#    dest: "{{ role_path }}/files/flow-{{ inventory_hostname }}.xml.gz"
-#    flat: yes
-#  tags:
-#    - stop
-
+   - restart
+   - restart-nifi
diff --git a/roles/nifi/tasks/restart.yml b/roles/nifi/tasks/restart.yml
new file mode 100644
index 0000000..d5434f2
--- /dev/null
+++ b/roles/nifi/tasks/restart.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Restart NiFi
+  remote_user: root
+  command: "supervisorctl restart nifi"
+
diff --git a/roles/nifi/tasks/start.yml b/roles/nifi/tasks/start.yml
new file mode 100644
index 0000000..99420a5
--- /dev/null
+++ b/roles/nifi/tasks/start.yml
@@ -0,0 +1,204 @@
+---
+
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "{{playbook_dir}}/secrets/CA/ca.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+
+- name: Copy certificates in NiFi conf dir
+  remote_user: nifi
+  copy:
+    src:  "{{ item }}"
+    dest: "conf/"
+  with_items:
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
+    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
+    - common-cacerts.jks
+
+- name: Check if flow.xml already exists
+  remote_user: nifi
+  stat:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+  register: flowfile
+
+- name: Configure flow.xml
+  remote_user: nifi
+  template:
+    src:  "flow.xml.j2"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+  when: not flowfile.stat.exists
+
+- name: Gzip flow.xml
+  remote_user: nifi
+  archive:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
+    format: gz
+  when: not flowfile.stat.exists
+
+- name: Get openid authkey
+  remote_user: nifi
+  set_fact:
+    nifisecret: "{{lookup('file', '{{playbook_dir}}/secrets/tokens/nifisecret',convert_data=False)}}"
+
+- name: Configure NiFi boostrap properties
+  remote_user: nifi
+  template:
+    src: bootstrap.conf.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/bootstrap.conf"
+
+- name: Configure NiFi properties for secure servers
+  remote_user: nifi
+  template:
+    src: nifi.properties.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/nifi.properties"
+
+- name: Copy authorizations.xml
+  remote_user: nifi
+  copy:
+    src: "authorizations.xml"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizations.xml"
+
+- name: Configure users
+  remote_user: nifi
+  template:
+    src: users.xml.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/users.xml"
+
+- name: Configure NiFi authorizers for secure servers
+  remote_user: nifi
+  template:
+    src: authorizers.xml.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizers.xml"
+
+- name: Create conf/enrich dir
+  remote_user: nifi
+  file: path={{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich state=directory
+
+- name: Create conf/enrich/freq dir
+  remote_user: nifi
+  file: path={{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/freq state=directory
+
+- name: Download freq processor
+  remote_user: nifi
+  get_url:
+    url: 'https://scm.uninett.no/geant-wp8-t3.1/nifi-processors/-/raw/master/scripts/freq/{{ item }}'
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/freq/"
+  with_items:
+   - alexa.json
+   - freq.py
+   - freqProcessor.py
+
+- name: Copy empty GeoLite2-City database
+  remote_user: nifi
+  copy:
+    src: GeoLite2-City.mmdb
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/GeoLite2-City.mmdb"
+
+- name: Copy CountriesWithRegionalCodes.csv
+  remote_user: nifi
+  copy:
+    src: CountriesWithRegionalCodes.csv
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/CountriesWithRegionalCodes.csv"
+
+- name: Copy grok libraries
+  copy:
+   src: haproxy.groklib
+   dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/haproxy.groklib"
+
+- name: Create empty list of Tor nodes
+  remote_user: nifi
+  copy:
+    content: "ip_addr,value"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
+    force: no
+
+- name: Download umbrella-top-1m.csv.zip
+  remote_user: nifi
+  local_action:
+    module: get_url
+    url: http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip
+    dest: "/tmp/umbrella-top-1m.csv.zip"
+  run_once: True
+
+- name: Unzip umbrella-top-1m.csv.zip
+  remote_user: nifi
+  local_action:
+    module: unarchive
+    src: "/tmp/umbrella-top-1m.csv.zip"
+    dest: "/tmp"
+  run_once: True
+
+- name: Copy umbrella-top-1m.csv
+  remote_user: nifi
+  copy:
+    src: "/tmp/top-1m.csv"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/umbrella-top-1m.csv"
+
+- name: Add header to umbrella-top-1m.csv
+  remote_user: nifi
+  lineinfile:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/umbrella-top-1m.csv"
+    line: 'index,domain'
+    insertbefore: BOF
+
+- name: Download alexa-top-1m.csv.zip
+  remote_user: nifi
+  local_action:
+    module: get_url
+    url: http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
+    dest: "/tmp/alexa-top-1m.csv.zip"
+  run_once: True
+
+- name: Unzip alexa-top-1m.csv.zip
+  remote_user: nifi
+  local_action:
+    module: unarchive
+    src: "/tmp/alexa-top-1m.csv.zip"
+    dest: "/tmp"
+  run_once: True
+
+- name: Copy alexa-top-1m.csv
+  remote_user: nifi
+  copy:
+    src: "/tmp/top-1m.csv"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/alexa-top-1m.csv"
+
+- name: Add header to alexa-top-1m.csv
+  remote_user: nifi
+  lineinfile:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/alexa-top-1m.csv"
+    line: 'index,domain'
+    insertbefore: BOF
+
+- name: Start NiFi
+  remote_user: root
+  command: "supervisorctl start nifi"
+
+#- name: check reachable hosts
+#  gather_facts: no
+#  tasks:
+#    - command: ping -c1 {{ inventory_hostname }}
+#      delegate_to: localhost
+#      register: ping_result
+#      ignore_errors: yes
+#    - group_by: key=reachable
+#      when: ping_result|success
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
+#- name: Copy flow from NiFi
+#  fetch:
+#    src: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
+#    dest: "{{ role_path }}/files/flow-{{ inventory_hostname }}.xml.gz"
+#    flat: yes
+
diff --git a/roles/nifi/tasks/stop.yml b/roles/nifi/tasks/stop.yml
new file mode 100644
index 0000000..d6abd9a
--- /dev/null
+++ b/roles/nifi/tasks/stop.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Stop NiFi
+  remote_user: root
+  command: "supervisorctl stop nifi"
+
diff --git a/roles/nifi/tasks/update-config.yml b/roles/nifi/tasks/update-config.yml
new file mode 100644
index 0000000..ddadbd3
--- /dev/null
+++ b/roles/nifi/tasks/update-config.yml
@@ -0,0 +1,77 @@
+---
+
+- name: Check if flow.xml already exists
+  remote_user: nifi
+  stat:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+  register: flowfile
+
+- name: Configure flow.xml
+  remote_user: nifi
+  template:
+    src:  "flow.xml.j2"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+  when: not flowfile.stat.exists
+
+- name: Gzip flow.xml
+  remote_user: nifi
+  archive:
+    path: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/flow.xml.gz"
+    format: gz
+  when: not flowfile.stat.exists
+
+- name: Configure NiFi boostrap properties
+  remote_user: nifi
+  template:
+    src: bootstrap.conf.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/bootstrap.conf"
+
+- name: Configure NiFi properties for secure servers
+  remote_user: nifi
+  template:
+    src: nifi.properties.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/nifi.properties"
+
+- name: Copy authorizations.xml
+  remote_user: nifi
+  copy:
+    src: "authorizations.xml"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizations.xml"
+
+- name: Configure users
+  remote_user: nifi
+  template:
+    src: users.xml.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/users.xml"
+
+- name: Configure NiFi authorizers for secure servers
+  remote_user: nifi
+  template:
+    src: authorizers.xml.j2
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/authorizers.xml"
+
+- name: Copy empty GeoLite2-City database
+  remote_user: nifi
+  copy:
+    src: GeoLite2-City.mmdb
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/GeoLite2-City.mmdb"
+
+- name: Copy CountriesWithRegionalCodes.csv
+  remote_user: nifi
+  copy:
+    src: CountriesWithRegionalCodes.csv
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/CountriesWithRegionalCodes.csv"
+
+- name: Copy grok libraries
+  copy:
+   src: haproxy.groklib
+   dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/haproxy.groklib"
+
+- name: Create empty list of Tor nodes
+  remote_user: nifi
+  copy:
+    content: "ip_addr,value"
+    dest: "{{ ansible_facts.env['NIFI_HOME'] }}/conf/enrich/tornodes.csv"
+    force: no
+
diff --git a/roles/nifi/templates/flow.xml.j2 b/roles/nifi/templates/flow.xml.j2
index 2051718..ec45218 100644
--- a/roles/nifi/templates/flow.xml.j2
+++ b/roles/nifi/templates/flow.xml.j2
@@ -8,16 +8,22 @@
     <name>NiFi Flow</name>
     <position x="0.0" y="0.0" />
     <comment />
+    <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+    <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
     <processGroup>
       <id>41088add-955b-3611-a0de-2c18b79b678c</id>
       <name>Data processing</name>
       <position x="1216.0" y="256.0" />
       <comment />
+      <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+      <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
       <processGroup>
         <id>fcbcacd1-542d-3a15-a5aa-9c1302328954</id>
         <name>Enrichment</name>
         <position x="384.0" y="720.0" />
         <comment />
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <processor>
           <id>01b66126-695a-3059-b179-f1bf85e8ca91</id>
           <name>Check fqdn enrichment</name>
@@ -28,7 +34,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>8</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -59,7 +65,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>8</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -90,7 +96,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>8</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -130,6 +136,8 @@
           <name>fqdn enrichment</name>
           <position x="-202.47354083453774" y="596.1945491887745" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>2703fe3e-7e6a-310e-a010-b30898befa9b</id>
             <name>Check fqdn2 enrichment</name>
@@ -140,7 +148,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
+              <version>1.12.1</version>
             </bundle>
             <maxConcurrentTasks>8</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -180,6 +188,8 @@
             <name>Enrich fqdn2</name>
             <position x="368.0" y="416.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>0cdf1224-a6d5-3ac4-a4f5-27a7588f1d98</id>
               <name>Input</name>
@@ -190,7 +200,7 @@
             <outputPort>
               <id>58b0935e-1c5b-3ad1-a2cc-7de4826170a6</id>
               <name>Output</name>
-              <position x="432.0" y="536.0" />
+              <position x="1096.0" y="528.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
@@ -199,6 +209,8 @@
               <name>Umbrella</name>
               <position x="379.1725199638772" y="224.3012562119061" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>0306116f-b13d-30fc-94b1-34f3c8ba95da</id>
                 <name>Umbrella fqdn1</name>
@@ -209,7 +221,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -333,14 +345,155 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
             </processGroup>
+            <processGroup>
+              <id>f2263bf3-7929-182a-8971-2ac159d0cca9</id>
+              <name>Misp lookup</name>
+              <position x="1024.0" y="224.0" />
+              <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</id>
+                <name>Misp fqdn2</name>
+                <position x="480.99999953064577" y="197.99999761468263" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.LookupRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>lookup-service</name>
+                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
+                </property>
+                <property>
+                  <name>result-record-path</name>
+                  <value>${enrich_fqdn2}_misp</value>
+                </property>
+                <property>
+                  <name>routing-strategy</name>
+                  <value>route-to-success</value>
+                </property>
+                <property>
+                  <name>result-contents</name>
+                  <value>insert-entire-record</value>
+                </property>
+                <property>
+                  <name>record-update-strategy</name>
+                  <value>use-property</value>
+                </property>
+                <property>
+                  <name>key</name>
+                  <value>${enrich_fqdn2}</value>
+                </property>
+              </processor>
+              <inputPort>
+                <id>dca538c3-e563-1b63-8de2-edf46a599279</id>
+                <name>Input</name>
+                <position x="536.0" y="16.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </inputPort>
+              <outputPort>
+                <id>a4ef3d87-6241-14a5-b543-1824b197991c</id>
+                <name>Output</name>
+                <position x="536.0" y="456.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </outputPort>
+              <funnel>
+                <id>263b3963-3c73-1efc-8286-4e57645eefc2</id>
+                <position x="152.0" y="248.0" />
+              </funnel>
+              <connection>
+                <id>e47137a6-8c07-12bf-9d69-0e0c10b05088</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</sourceId>
+                <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>a4ef3d87-6241-14a5-b543-1824b197991c</destinationId>
+                <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>b4723c4d-5ed2-1f9e-bd7c-04076aa149cf</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</sourceId>
+                <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>263b3963-3c73-1efc-8286-4e57645eefc2</destinationId>
+                <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
+                <destinationType>FUNNEL</destinationType>
+                <relationship>failure</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>60 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>edab3c6f-d21b-12a1-8b73-10c8012a3bd2</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>dca538c3-e563-1b63-8de2-edf46a599279</sourceId>
+                <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>cadc3f2e-8e08-195c-898e-1b5fbcdf56e0</destinationId>
+                <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+            </processGroup>
             <connection>
-              <id>fae5d513-1604-3fed-9adb-8ad19b5ab3c0</id>
+              <id>934921df-0175-1000-ffff-ffffeabcba7a</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>c8994201-98f4-31d2-a604-11c3b454df00</sourceId>
-              <sourceGroupId>363fd695-1466-3404-ada3-036133ff8d15</sourceGroupId>
+              <sourceId>a4ef3d87-6241-14a5-b543-1824b197991c</sourceId>
+              <sourceGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
               <destinationId>58b0935e-1c5b-3ad1-a2cc-7de4826170a6</destinationId>
               <destinationGroupId>f9d9877a-de02-3374-9241-d3ca1939678b</destinationGroupId>
@@ -353,6 +506,26 @@
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
+            <connection>
+              <id>fae5d513-1604-3fed-9adb-8ad19b5ab3c0</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>c8994201-98f4-31d2-a604-11c3b454df00</sourceId>
+              <sourceGroupId>363fd695-1466-3404-ada3-036133ff8d15</sourceGroupId>
+              <sourceType>OUTPUT_PORT</sourceType>
+              <destinationId>dca538c3-e563-1b63-8de2-edf46a599279</destinationId>
+              <destinationGroupId>f2263bf3-7929-182a-8971-2ac159d0cca9</destinationGroupId>
+              <destinationType>INPUT_PORT</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
             <connection>
               <id>0e265607-1619-3a73-ab02-79b296ea5cb4</id>
               <name />
@@ -379,6 +552,8 @@
             <name>Enrich fqdn1</name>
             <position x="376.0" y="200.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>f2cc04f8-56bc-3adb-8d72-6ad7f6e6e48c</id>
               <name>Input</name>
@@ -389,7 +564,7 @@
             <outputPort>
               <id>12745a98-f547-38d2-9c50-a471e8cf6fc7</id>
               <name>Output</name>
-              <position x="432.0" y="536.0" />
+              <position x="1112.0" y="528.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
@@ -398,6 +573,8 @@
               <name>Umbrella</name>
               <position x="379.1725199638772" y="224.3012562119061" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>ce84ada1-58b8-3c28-bc5a-64fc4f39e008</id>
                 <name>Umbrella fqdn1</name>
@@ -408,7 +585,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -452,6 +629,7 @@
                   <name>key</name>
                   <value>${enrich_fqdn1}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>c31f9f4a-becc-35c3-b9c0-b836d061e364</id>
@@ -467,10 +645,6 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>8811d4ff-bf71-38a6-8cf0-e5732840e1de</id>
-                <position x="-1204.5503424650574" y="470.375701251353" />
-              </funnel>
               <connection>
                 <id>99b11d95-dfb3-34cf-8657-0c141d1e9f63</id>
                 <name />
@@ -511,19 +685,117 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
+            </processGroup>
+            <processGroup>
+              <id>1de23f54-e22a-19df-8dd2-9235ae248d29</id>
+              <name>Misp lookup</name>
+              <position x="1056.0" y="216.0" />
+              <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>16d53f41-fc96-1292-b434-9a157e27eaf3</id>
+                <name>Misp fqdn1</name>
+                <position x="480.99999953064577" y="197.99999761468263" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.LookupRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>lookup-service</name>
+                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
+                </property>
+                <property>
+                  <name>result-record-path</name>
+                  <value>${enrich_fqdn1}_misp</value>
+                </property>
+                <property>
+                  <name>routing-strategy</name>
+                  <value>route-to-success</value>
+                </property>
+                <property>
+                  <name>result-contents</name>
+                  <value>insert-entire-record</value>
+                </property>
+                <property>
+                  <name>record-update-strategy</name>
+                  <value>use-property</value>
+                </property>
+                <property>
+                  <name>key</name>
+                  <value>${enrich_fqdn1}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <inputPort>
+                <id>844331e5-cd55-1c55-889b-d447dfba57a2</id>
+                <name>Input</name>
+                <position x="536.0" y="16.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </inputPort>
+              <outputPort>
+                <id>e13e32a5-f5d5-1f5e-a38e-c1e19453fd31</id>
+                <name>Output</name>
+                <position x="536.0" y="456.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </outputPort>
               <connection>
-                <id>badc00ed-f022-3045-bcfd-8a4839fef4bf</id>
+                <id>6153303e-0c09-1d36-9b87-6c2d0a5ed15a</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>ce84ada1-58b8-3c28-bc5a-64fc4f39e008</sourceId>
-                <sourceGroupId>c763d1fd-ae0f-3297-bab7-abf22759310d</sourceGroupId>
+                <sourceId>16d53f41-fc96-1292-b434-9a157e27eaf3</sourceId>
+                <sourceGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>8811d4ff-bf71-38a6-8cf0-e5732840e1de</destinationId>
-                <destinationGroupId>c763d1fd-ae0f-3297-bab7-abf22759310d</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
+                <destinationId>e13e32a5-f5d5-1f5e-a38e-c1e19453fd31</destinationId>
+                <destinationGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>3a4133c4-bc18-1bb7-84a0-06b25aba73f4</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>844331e5-cd55-1c55-889b-d447dfba57a2</sourceId>
+                <sourceGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>16d53f41-fc96-1292-b434-9a157e27eaf3</destinationId>
+                <destinationGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -561,6 +833,26 @@
               <sourceId>9b6cb318-b9e8-36f1-bd8a-17b2aa38343a</sourceId>
               <sourceGroupId>c763d1fd-ae0f-3297-bab7-abf22759310d</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
+              <destinationId>844331e5-cd55-1c55-889b-d447dfba57a2</destinationId>
+              <destinationGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</destinationGroupId>
+              <destinationType>INPUT_PORT</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>4f303cda-ab21-1acd-ffff-ffffcdd40e4b</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e13e32a5-f5d5-1f5e-a38e-c1e19453fd31</sourceId>
+              <sourceGroupId>1de23f54-e22a-19df-8dd2-9235ae248d29</sourceGroupId>
+              <sourceType>OUTPUT_PORT</sourceType>
               <destinationId>12745a98-f547-38d2-9c50-a471e8cf6fc7</destinationId>
               <destinationGroupId>11b67527-3401-3961-97ba-425f721de3e0</destinationGroupId>
               <destinationType>OUTPUT_PORT</destinationType>
@@ -679,6 +971,8 @@
           <name>Custom enrichment</name>
           <position x="-536.0" y="944.0" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <inputPort>
             <id>2ba9db29-0172-1000-ffff-ffffc1aa6db2</id>
             <name>Input</name>
@@ -719,6 +1013,8 @@
           <name>IP enrichment</name>
           <position x="-216.0" y="16.0" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>be9226d7-777f-3820-bf10-49e97e9b73cc</id>
             <name>Check IP2 enrichment</name>
@@ -729,7 +1025,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
+              <version>1.12.1</version>
             </bundle>
             <maxConcurrentTasks>8</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -769,6 +1065,8 @@
             <name>Enrich IP1</name>
             <position x="-48.0" y="312.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>ff302e29-64bb-3e10-b76e-91a13d2470d8</id>
               <name>Input</name>
@@ -788,6 +1086,8 @@
               <name>Misp lookup</name>
               <position x="1160.0" y="136.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>68dc57d7-2016-3e27-ac1f-092c63909a63</id>
                 <name>Misp ip1</name>
@@ -798,7 +1098,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>16</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -842,6 +1142,7 @@
                   <name>key</name>
                   <value>${enrich_ip1}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>57c1773b-65c7-3cdb-b161-a44fa977291a</id>
@@ -857,10 +1158,6 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>3f92a75f-ec3e-3f4c-9467-e5c0e981f032</id>
-                <position x="-1312.0" y="792.0" />
-              </funnel>
               <connection>
                 <id>7f5a13cb-a049-385d-9ebc-3ef4aa8ff541</id>
                 <name />
@@ -901,32 +1198,14 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
-                <id>d6c427a3-f4fb-39a5-b399-ebd9b0482039</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>68dc57d7-2016-3e27-ac1f-092c63909a63</sourceId>
-                <sourceGroupId>9b3b9cc7-49bf-3b66-b213-09f2f5df634e</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>3f92a75f-ec3e-3f4c-9467-e5c0e981f032</destinationId>
-                <destinationGroupId>9b3b9cc7-49bf-3b66-b213-09f2f5df634e</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
             </processGroup>
             <processGroup>
               <id>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</id>
               <name>GeoIP</name>
               <position x="480.0" y="144.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>fb1a97b2-5e15-3bca-9284-f23a9cc90eed</id>
                 <name>Add GeoIP fields</name>
@@ -937,7 +1216,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -985,18 +1264,19 @@
                   <name>pretty_print</name>
                   <value>false</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <processor>
                 <id>11668896-2c3e-3712-905a-eb406bf33c2a</id>
                 <name>GeoIP IP</name>
-                <position x="-1192.0" y="424.0" />
+                <position x="-568.0" y="160.0" />
                 <styles />
                 <comment />
                 <class>org.apache.nifi.processors.GeoEnrichIPRecord</class>
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-enrich-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>12</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1057,7 +1337,63 @@
                 </property>
                 <autoTerminatedRelationship>original</autoTerminatedRelationship>
               </processor>
-              <inputPort>
+              <processor>
+                <id>349b3525-a821-1197-0000-00006e02758e</id>
+                <name>Contry code to region</name>
+                <position x="-1216.0" y="368.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.LookupRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>lookup-service</name>
+                  <value>349b34c7-a821-1197-ffff-ffff85d82877</value>
+                </property>
+                <property>
+                  <name>result-record-path</name>
+                  <value>${enrich_ip1:substring(1):contains('/'):ifElse('${enrich_ip1:substringBeforeLast(\"/\")}',${enrich_ip1:append('_')}):append("/geo/region")}</value>
+                </property>
+                <property>
+                  <name>routing-strategy</name>
+                  <value>route-to-success</value>
+                </property>
+                <property>
+                  <name>result-contents</name>
+                  <value>insert-entire-record</value>
+                </property>
+                <property>
+                  <name>record-update-strategy</name>
+                  <value>use-property</value>
+                </property>
+                <property>
+                  <name>key</name>
+                  <value>${enrich_ip1:substring(1):contains('/'):ifElse('${enrich_ip1:substringBeforeLast(\"/\")}',${enrich_ip1:append('_')}):append("/geo/country_iso_code")}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <inputPort>
                 <id>e6d573f8-a297-3611-a1ff-f1918a2cbabc</id>
                 <name>Data Input</name>
                 <position x="-1192.0" y="-32.0" />
@@ -1067,14 +1403,10 @@
               <outputPort>
                 <id>17c34a1f-8048-366b-8ef4-107ce16a100e</id>
                 <name>Data output</name>
-                <position x="-1160.0" y="752.0" />
+                <position x="-1168.0" y="656.0" />
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>b68c4522-cddb-30bf-8545-73a2644cd35e</id>
-                <position x="-1560.0" y="336.0" />
-              </funnel>
               <connection>
                 <id>790863c1-3cfc-383f-ab9f-5d7ead5c0fe1</id>
                 <name />
@@ -1124,9 +1456,9 @@
                 <sourceId>11668896-2c3e-3712-905a-eb406bf33c2a</sourceId>
                 <sourceGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>17c34a1f-8048-366b-8ef4-107ce16a100e</destinationId>
+                <destinationId>349b3525-a821-1197-0000-00006e02758e</destinationId>
                 <destinationGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
+                <destinationType>PROCESSOR</destinationType>
                 <relationship>found</relationship>
                 <relationship>not found</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -1137,18 +1469,18 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>c831c34b-2a1a-3d24-963b-079b00961407</id>
+                <id>349b3542-a821-1197-0000-000059777de4</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>fb1a97b2-5e15-3bca-9284-f23a9cc90eed</sourceId>
+                <sourceId>349b3525-a821-1197-0000-00006e02758e</sourceId>
                 <sourceGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>b68c4522-cddb-30bf-8545-73a2644cd35e</destinationId>
+                <destinationId>17c34a1f-8048-366b-8ef4-107ce16a100e</destinationId>
                 <destinationGroupId>88a2dcc1-ccce-3396-9f4d-bc1e31c70063</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -1162,6 +1494,8 @@
               <name>Tor nodes lookup</name>
               <position x="480.0" y="384.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>fd52d735-a256-3c52-9b90-fbe71f010fbe</id>
                 <name>Tor src IP</name>
@@ -1172,7 +1506,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>12</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1194,7 +1528,7 @@
                 </property>
                 <property>
                   <name>lookup-service</name>
-                  <value>bf81debc-0171-1000-0000-00002936ae5a</value>
+                  <value>bbd4d3a2-0175-1000-0000-00000b0fb8bd</value>
                 </property>
                 <property>
                   <name>result-record-path</name>
@@ -1216,6 +1550,7 @@
                   <name>key</name>
                   <value>${enrich_ip1}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>eb136a03-4809-3d2f-a85e-e739ffa665cd</id>
@@ -1231,10 +1566,6 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>44794379-111e-3f28-bf84-bf5850f42587</id>
-                <position x="-1412.2104124778762" y="829.0775745939713" />
-              </funnel>
               <connection>
                 <id>c681313a-f2c8-3439-8c00-70f9783fea67</id>
                 <name />
@@ -1275,26 +1606,6 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
-                <id>ad32e629-d5a2-38b7-a50e-9acf0ad9d768</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>fd52d735-a256-3c52-9b90-fbe71f010fbe</sourceId>
-                <sourceGroupId>3cb64c25-8af7-361d-b6e7-e002defe7411</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>44794379-111e-3f28-bf84-bf5850f42587</destinationId>
-                <destinationGroupId>3cb64c25-8af7-361d-b6e7-e002defe7411</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
             </processGroup>
             <connection>
               <id>3831c5df-c2a8-3a1b-9d67-8f37abf05365</id>
@@ -1382,6 +1693,8 @@
             <name>Enrich IP2</name>
             <position x="-56.0" y="584.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>742a8211-a5e6-347d-9e79-25facc6b181e</id>
               <name>Input</name>
@@ -1401,17 +1714,75 @@
               <name>GeoIP and IPreg</name>
               <position x="480.0" y="144.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>9ed935e9-7bd4-150a-913d-e6a4dedb2939</id>
+                <name>Contry code to region</name>
+                <position x="-1224.0" y="368.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.LookupRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>lookup-service</name>
+                  <value>349b34c7-a821-1197-ffff-ffff85d82877</value>
+                </property>
+                <property>
+                  <name>result-record-path</name>
+                  <value>${enrich_ip2:substring(1):contains('/'):ifElse('${enrich_ip2:substringBeforeLast(\"/\")}',${enrich_ip2:append('_')}):append("/geo/region")}</value>
+                </property>
+                <property>
+                  <name>routing-strategy</name>
+                  <value>route-to-success</value>
+                </property>
+                <property>
+                  <name>result-contents</name>
+                  <value>insert-entire-record</value>
+                </property>
+                <property>
+                  <name>record-update-strategy</name>
+                  <value>use-property</value>
+                </property>
+                <property>
+                  <name>key</name>
+                  <value>${enrich_ip2:substring(1):contains('/'):ifElse('${enrich_ip2:substringBeforeLast(\"/\")}',${enrich_ip2:append('_')}):append("/geo/country_iso_code")}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
               <processor>
                 <id>e16581ea-ff17-3cec-bd39-b1fe52797bd2</id>
                 <name>GeoIP IP</name>
-                <position x="-1232.0" y="432.0" />
+                <position x="-592.0" y="168.0" />
                 <styles />
                 <comment />
                 <class>org.apache.nifi.processors.GeoEnrichIPRecord</class>
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-enrich-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>16</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1482,7 +1853,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1530,6 +1901,7 @@
                   <name>pretty_print</name>
                   <value>false</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>aa73b938-03ee-3d90-ba6f-0998b568ac36</id>
@@ -1545,23 +1917,19 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>8e8abe4a-9ed6-3ec8-9e9d-719242be1a2b</id>
-                <position x="-1560.0" y="336.0" />
-              </funnel>
               <connection>
-                <id>a4870f06-f96b-328a-83d8-4eeb6db5cc93</id>
+                <id>9ed935f0-7bd4-150a-ffff-ffffaed76b62</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>d467bca6-15df-38bb-8f9b-65ae1f9dceaa</sourceId>
+                <sourceId>9ed935e9-7bd4-150a-913d-e6a4dedb2939</sourceId>
                 <sourceGroupId>a8873c56-d149-34d1-8344-a35b339e6187</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>8e8abe4a-9ed6-3ec8-9e9d-719242be1a2b</destinationId>
+                <destinationId>0dbb2fcb-c11b-396e-8918-24d7121f7653</destinationId>
                 <destinationGroupId>a8873c56-d149-34d1-8344-a35b339e6187</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -1598,9 +1966,9 @@
                 <sourceId>e16581ea-ff17-3cec-bd39-b1fe52797bd2</sourceId>
                 <sourceGroupId>a8873c56-d149-34d1-8344-a35b339e6187</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>0dbb2fcb-c11b-396e-8918-24d7121f7653</destinationId>
+                <destinationId>9ed935e9-7bd4-150a-913d-e6a4dedb2939</destinationId>
                 <destinationGroupId>a8873c56-d149-34d1-8344-a35b339e6187</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
+                <destinationType>PROCESSOR</destinationType>
                 <relationship>found</relationship>
                 <relationship>not found</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -1636,6 +2004,8 @@
               <name>Tor nodes lookup</name>
               <position x="480.0" y="384.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>adae2d07-ad4f-38f2-9a8c-b7638863cac7</id>
                 <name>Tor src IP</name>
@@ -1646,7 +2016,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>16</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1668,7 +2038,7 @@
                 </property>
                 <property>
                   <name>lookup-service</name>
-                  <value>bf81debc-0171-1000-0000-00002936ae5a</value>
+                  <value>bbd4d3a2-0175-1000-0000-00000b0fb8bd</value>
                 </property>
                 <property>
                   <name>result-record-path</name>
@@ -1690,6 +2060,7 @@
                   <name>key</name>
                   <value>${enrich_ip2}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>1c42374a-61ad-3d92-9f86-1f1ae9bae6d0</id>
@@ -1705,10 +2076,6 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>4bad43e2-bfed-3e45-a9d1-fdabb2ab85ea</id>
-                <position x="-1403.592919640183" y="819.7224736847786" />
-              </funnel>
               <connection>
                 <id>0b2f9272-06fe-3a8c-a322-9972ac5c0466</id>
                 <name />
@@ -1749,34 +2116,14 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
-                <id>fe67c36a-4ae0-3e30-8aad-a988a481df4b</id>
-                <name />
-                <bendPoints>
-                  <bendPoint x="-1088.0" y="832.0" />
-                </bendPoints>
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>adae2d07-ad4f-38f2-9a8c-b7638863cac7</sourceId>
-                <sourceGroupId>33258978-2057-3612-be77-0a763431ee29</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>4bad43e2-bfed-3e45-a9d1-fdabb2ab85ea</destinationId>
-                <destinationGroupId>33258978-2057-3612-be77-0a763431ee29</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
             </processGroup>
             <processGroup>
               <id>de2bc05d-fbd2-35bc-9192-b82041176492</id>
               <name>Misp lookup</name>
               <position x="1160.0" y="136.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>2cd2029e-53ae-3575-bf35-785203683c7f</id>
                 <name>Misp ip</name>
@@ -1787,7 +2134,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>12</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -1831,6 +2178,7 @@
                   <name>key</name>
                   <value>${enrich_ip2}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>d6490898-79c0-3eb5-a102-718ff8ab68e6</id>
@@ -1846,10 +2194,6 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>d259fdb6-aa03-35b1-b439-b5baccc57a1e</id>
-                <position x="-1264.0" y="784.0" />
-              </funnel>
               <connection>
                 <id>d2bfc9ce-5c85-3dc2-a0c5-83bbf0c77277</id>
                 <name />
@@ -1871,7 +2215,7 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>2475c41e-5711-3de0-bbec-2e977cd1f40a</id>
+                <id>2a95cb88-0177-1000-ffff-ffffc8a50166</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
@@ -1890,26 +2234,6 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
-                <id>a7505eac-df84-3e17-8c40-687c159877a7</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>2cd2029e-53ae-3575-bf35-785203683c7f</sourceId>
-                <sourceGroupId>de2bc05d-fbd2-35bc-9192-b82041176492</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>d259fdb6-aa03-35b1-b439-b5baccc57a1e</destinationId>
-                <destinationGroupId>de2bc05d-fbd2-35bc-9192-b82041176492</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
             </processGroup>
             <connection>
               <id>2ba90add-0172-1000-ffff-ffffb69e0af7</id>
@@ -2098,6 +2422,8 @@
           <name>Domain enrichment</name>
           <position x="-213.29739929099082" y="283.59665734060223" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>1957f5c3-b6cb-3c80-b527-1858c61ed111</id>
             <name>Check domain2 enrichment</name>
@@ -2108,7 +2434,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
+              <version>1.12.1</version>
             </bundle>
             <maxConcurrentTasks>8</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -2148,6 +2474,8 @@
             <name>Enrich domain1</name>
             <position x="448.0" y="248.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>bf74c1ba-45ad-3c0d-84c6-ec7ea7bdcdea</id>
               <name>Input</name>
@@ -2158,7 +2486,7 @@
             <outputPort>
               <id>f270695c-edf6-3a9f-bc3a-10804f26f56f</id>
               <name>Output</name>
-              <position x="1232.0" y="600.0" />
+              <position x="528.0" y="864.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
@@ -2167,6 +2495,8 @@
               <name>Entropy</name>
               <position x="1152.0" y="288.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>bf907759-0171-1000-0000-0000022727cd</id>
                 <name>Calculate entropy on domain1</name>
@@ -2177,15 +2507,15 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-scripting-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>1</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
                 <penalizationPeriod>30 sec</penalizationPeriod>
                 <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
+                <bulletinLevel>ERROR</bulletinLevel>
                 <lossTolerant>false</lossTolerant>
-                <scheduledState>STOPPED</scheduledState>
+                <scheduledState>RUNNING</scheduledState>
                 <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
                 <executionNode>ALL</executionNode>
                 <runDurationNanos>0</runDurationNanos>
@@ -2195,18 +2525,18 @@
                 </property>
                 <property>
                   <name>Script File</name>
-                  <value>/opt/nifi/nifi-current/conf/freq/freqProcessor.py</value>
+                  <value>/opt/nifi/nifi-current/conf/enrich/freq/freqProcessor.py</value>
                 </property>
                 <property>
                   <name>Script Body</name>
                 </property>
                 <property>
                   <name>Module Directory</name>
-                  <value>/opt/nifi/nifi-current/conf/freq</value>
+                  <value>/opt/nifi/nifi-current/conf/enrich/freq</value>
                 </property>
                 <property>
-                  <name>Frequency File</name>
-                  <value>/opt/nifi/nifi-current/conf/freq/alexa.json</value>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
                 </property>
                 <property>
                   <name>record-writer</name>
@@ -2217,17 +2547,18 @@
                   <value>${enrich_domain1}</value>
                 </property>
                 <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                  <name>Result Field 1</name>
+                  <value>${enrich_domain1}_freq1</value>
                 </property>
                 <property>
                   <name>Result Field 2</name>
                   <value>${enrich_domain1}_freq2</value>
                 </property>
                 <property>
-                  <name>Result Field 1</name>
-                  <value>${enrich_domain1}_freq1</value>
+                  <name>Frequency File</name>
+                  <value>/opt/nifi/nifi-current/conf/enrich/freq/alexa.json</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>84dfe3a1-a6f4-3b80-9161-93a59b88ad8b</id>
@@ -2243,10 +2574,6 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>7297c375-d15a-36a2-a115-6b2680fbef2b</id>
-                <position x="128.0" y="360.0" />
-              </funnel>
               <connection>
                 <id>2bea3770-0172-1000-ffff-ffff9cd568b2</id>
                 <name />
@@ -2267,38 +2594,18 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
-                <id>bf938168-0171-1000-0000-00003e6fd9c5</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>bf907759-0171-1000-0000-0000022727cd</sourceId>
-                <sourceGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>7297c375-d15a-36a2-a115-6b2680fbef2b</destinationId>
-                <destinationGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
               <connection>
                 <id>27f7d6f4-0172-1000-ffff-ffffc65ffd5e</id>
                 <name />
                 <bendPoints />
-                <labelIndex>1</labelIndex>
+                <labelIndex>0</labelIndex>
                 <zIndex>0</zIndex>
                 <sourceId>84dfe3a1-a6f4-3b80-9161-93a59b88ad8b</sourceId>
                 <sourceGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</sourceGroupId>
                 <sourceType>INPUT_PORT</sourceType>
-                <destinationId>2ef455b6-6c77-39ae-87bf-d21b988f4c52</destinationId>
+                <destinationId>bf907759-0171-1000-0000-0000022727cd</destinationId>
                 <destinationGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
+                <destinationType>PROCESSOR</destinationType>
                 <relationship />
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -2309,23 +2616,25 @@
               </connection>
             </processGroup>
             <processGroup>
-              <id>df54305f-551e-38ff-8e1c-a1c272c238c0</id>
-              <name>Alexa</name>
-              <position x="448.0" y="288.0" />
+              <id>9ed9363a-7bd4-150a-0000-00000cc58ac4</id>
+              <name>Misp lookup</name>
+              <position x="456.0" y="552.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
-                <id>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</id>
-                <name>Alexa domain1</name>
-                <position x="-726.6263417228297" y="457.36850568010186" />
+                <id>9ed93644-7bd4-150a-0000-00003c8c3388</id>
+                <name>Misp domain1</name>
+                <position x="480.99999953064577" y="197.99999761468263" />
                 <styles />
                 <comment />
                 <class>org.apache.nifi.processors.standard.LookupRecord</class>
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
-                <maxConcurrentTasks>8</maxConcurrentTasks>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
                 <penalizationPeriod>30 sec</penalizationPeriod>
                 <yieldPeriod>1 sec</yieldPeriod>
@@ -2334,7 +2643,7 @@
                 <scheduledState>RUNNING</scheduledState>
                 <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
                 <executionNode>ALL</executionNode>
-                <runDurationNanos>25000000</runDurationNanos>
+                <runDurationNanos>0</runDurationNanos>
                 <property>
                   <name>record-reader</name>
                   <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
@@ -2345,11 +2654,11 @@
                 </property>
                 <property>
                   <name>lookup-service</name>
-                  <value>282db77b-3118-3b3c-bbd1-e4260b1c6395</value>
+                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
                 </property>
                 <property>
                   <name>result-record-path</name>
-                  <value>${enrich_domain1}_alexa</value>
+                  <value>${enrich_domain1}_misp</value>
                 </property>
                 <property>
                   <name>routing-strategy</name>
@@ -2367,36 +2676,33 @@
                   <name>key</name>
                   <value>${enrich_domain1}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
-                <id>c7b3b6c4-6418-3dbe-a037-387e3c85cb19</id>
-                <name>Input data</name>
-                <position x="-673.6437977775172" y="241.37341901017993" />
+                <id>9ed93645-7bd4-150a-ffff-fffff6fa372f</id>
+                <name>Input</name>
+                <position x="536.0" y="16.0" />
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </inputPort>
               <outputPort>
-                <id>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</id>
-                <name>Output data</name>
-                <position x="-704.0" y="736.0" />
+                <id>9ed9364e-7bd4-150a-ffff-ffffa5012b2a</id>
+                <name>Output</name>
+                <position x="536.0" y="456.0" />
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>85764070-cd41-38a1-a352-929737e563c6</id>
-                <position x="-1152.0" y="512.0" />
-              </funnel>
               <connection>
-                <id>002d4937-dcb5-3cf1-8075-8d5533667510</id>
+                <id>9ed9364f-7bd4-150a-0000-000019b6beab</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</sourceId>
-                <sourceGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</sourceGroupId>
+                <sourceId>9ed93644-7bd4-150a-0000-00003c8c3388</sourceId>
+                <sourceGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</sourceGroupId>
                 <sourceType>PROCESSOR</sourceType>
-                <destinationId>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</destinationId>
-                <destinationGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</destinationGroupId>
+                <destinationId>9ed9364e-7bd4-150a-ffff-ffffa5012b2a</destinationId>
+                <destinationGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</destinationGroupId>
                 <destinationType>OUTPUT_PORT</destinationType>
                 <relationship>success</relationship>
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -2407,18 +2713,18 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
               <connection>
-                <id>1af92349-7a45-30ec-b6fc-6d881dcd8b26</id>
+                <id>9ed93647-7bd4-150a-0000-00000e5782ec</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</sourceId>
-                <sourceGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>85764070-cd41-38a1-a352-929737e563c6</destinationId>
-                <destinationGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
+                <sourceId>9ed93645-7bd4-150a-ffff-fffff6fa372f</sourceId>
+                <sourceGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>9ed93644-7bd4-150a-0000-00003c8c3388</destinationId>
+                <destinationGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
                 <flowFileExpiration>0 sec</flowFileExpiration>
@@ -2426,7 +2732,105 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
+            </processGroup>
+            <processGroup>
+              <id>df54305f-551e-38ff-8e1c-a1c272c238c0</id>
+              <name>Alexa</name>
+              <position x="448.0" y="288.0" />
+              <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</id>
+                <name>Alexa domain1</name>
+                <position x="-726.6263417228297" y="457.36850568010186" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.LookupRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>8</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>25000000</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>lookup-service</name>
+                  <value>282db77b-3118-3b3c-bbd1-e4260b1c6395</value>
+                </property>
+                <property>
+                  <name>result-record-path</name>
+                  <value>${enrich_domain1}_alexa</value>
+                </property>
+                <property>
+                  <name>routing-strategy</name>
+                  <value>route-to-success</value>
+                </property>
+                <property>
+                  <name>result-contents</name>
+                  <value>insert-entire-record</value>
+                </property>
+                <property>
+                  <name>record-update-strategy</name>
+                  <value>use-property</value>
+                </property>
+                <property>
+                  <name>key</name>
+                  <value>${enrich_domain1}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <inputPort>
+                <id>c7b3b6c4-6418-3dbe-a037-387e3c85cb19</id>
+                <name>Input data</name>
+                <position x="-673.6437977775172" y="241.37341901017993" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </inputPort>
+              <outputPort>
+                <id>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</id>
+                <name>Output data</name>
+                <position x="-704.0" y="736.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </outputPort>
+              <connection>
+                <id>002d4937-dcb5-3cf1-8075-8d5533667510</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>ccab62e9-53cd-3d5e-aca3-6fa2e1b95597</sourceId>
+                <sourceGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>ff4ada2c-5f6f-33bc-ae0c-8cdb24dd2357</destinationId>
+                <destinationGroupId>df54305f-551e-38ff-8e1c-a1c272c238c0</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
                 <id>8d7da7f5-2a03-32fd-9bd6-a3eec6e8351a</id>
                 <name />
                 <bendPoints />
@@ -2447,6 +2851,26 @@
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
             </processGroup>
+            <connection>
+              <id>9ed93675-7bd4-150a-0000-000017d6cf1e</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>9ed9364e-7bd4-150a-ffff-ffffa5012b2a</sourceId>
+              <sourceGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</sourceGroupId>
+              <sourceType>OUTPUT_PORT</sourceType>
+              <destinationId>f270695c-edf6-3a9f-bc3a-10804f26f56f</destinationId>
+              <destinationGroupId>309911c5-0f97-37e4-8511-3c5639f5db10</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
             <connection>
               <id>ff7df1ed-63be-3637-aa15-094355c9711f</id>
               <name />
@@ -2476,9 +2900,9 @@
               <sourceId>2ef455b6-6c77-39ae-87bf-d21b988f4c52</sourceId>
               <sourceGroupId>89e761fa-669e-30c2-9590-ab8f806ffaff</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
-              <destinationId>f270695c-edf6-3a9f-bc3a-10804f26f56f</destinationId>
-              <destinationGroupId>309911c5-0f97-37e4-8511-3c5639f5db10</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
+              <destinationId>9ed93645-7bd4-150a-ffff-fffff6fa372f</destinationId>
+              <destinationGroupId>9ed9363a-7bd4-150a-0000-00000cc58ac4</destinationGroupId>
+              <destinationType>INPUT_PORT</destinationType>
               <relationship />
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -2513,6 +2937,8 @@
             <name>Enrich domain2</name>
             <position x="440.0" y="496.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <inputPort>
               <id>0097ae66-e4c5-316c-b301-c8fd4481cbf4</id>
               <name>Input</name>
@@ -2523,15 +2949,135 @@
             <outputPort>
               <id>1464f185-b2d5-3347-8aaa-89cfc91566f5</id>
               <name>Output</name>
-              <position x="1232.0" y="600.0" />
+              <position x="528.0" y="816.0" />
               <comments />
               <scheduledState>RUNNING</scheduledState>
             </outputPort>
+            <processGroup>
+              <id>3514302f-5e74-1185-b5c5-edc034d911a6</id>
+              <name>Misp lookup</name>
+              <position x="448.0" y="520.0" />
+              <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>2a1b3c82-c06f-1184-b6ec-245bb0032b5a</id>
+                <name>Misp domain1</name>
+                <position x="480.99999953064577" y="197.99999761468263" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.LookupRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>lookup-service</name>
+                  <value>fa06ec39-7782-3ae3-8dfe-71d28c5240c3</value>
+                </property>
+                <property>
+                  <name>result-record-path</name>
+                  <value>${enrich_domain2}_misp</value>
+                </property>
+                <property>
+                  <name>routing-strategy</name>
+                  <value>route-to-success</value>
+                </property>
+                <property>
+                  <name>result-contents</name>
+                  <value>insert-entire-record</value>
+                </property>
+                <property>
+                  <name>record-update-strategy</name>
+                  <value>use-property</value>
+                </property>
+                <property>
+                  <name>key</name>
+                  <value>${enrich_domain2}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <inputPort>
+                <id>7f5c3719-3707-1577-ad0d-945c5da3a77b</id>
+                <name>Input</name>
+                <position x="536.0" y="16.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </inputPort>
+              <outputPort>
+                <id>af083d3d-f063-1506-a7fe-2c6f0864de22</id>
+                <name>Output</name>
+                <position x="536.0" y="456.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </outputPort>
+              <connection>
+                <id>9cf430ed-a82c-1272-853f-4eeb68c144e2</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>2a1b3c82-c06f-1184-b6ec-245bb0032b5a</sourceId>
+                <sourceGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>af083d3d-f063-1506-a7fe-2c6f0864de22</destinationId>
+                <destinationGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>96023b7a-7902-1e45-91b0-0396e8bf647b</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>7f5c3719-3707-1577-ad0d-945c5da3a77b</sourceId>
+                <sourceGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>2a1b3c82-c06f-1184-b6ec-245bb0032b5a</destinationId>
+                <destinationGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+            </processGroup>
             <processGroup>
               <id>db261d6a-ab4a-3a2e-854a-cd42492788c5</id>
               <name>Entropy</name>
               <position x="1152.0" y="288.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>eff73930-f310-1a2e-b248-812b172b7415</id>
                 <name>Calculate entropy on domain2</name>
@@ -2542,13 +3088,13 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-scripting-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>1</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
                 <penalizationPeriod>30 sec</penalizationPeriod>
                 <yieldPeriod>1 sec</yieldPeriod>
-                <bulletinLevel>WARN</bulletinLevel>
+                <bulletinLevel>ERROR</bulletinLevel>
                 <lossTolerant>false</lossTolerant>
                 <scheduledState>RUNNING</scheduledState>
                 <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
@@ -2560,18 +3106,18 @@
                 </property>
                 <property>
                   <name>Script File</name>
-                  <value>/opt/nifi/nifi-current/conf/freq/freqProcessor.py</value>
+                  <value>/opt/nifi/nifi-current/conf/enrich/freq/freqProcessor.py</value>
                 </property>
                 <property>
                   <name>Script Body</name>
                 </property>
                 <property>
                   <name>Module Directory</name>
-                  <value>/opt/nifi/nifi-current/conf/freq</value>
+                  <value>/opt/nifi/nifi-current/conf/enrich/freq</value>
                 </property>
                 <property>
-                  <name>Frequency File</name>
-                  <value>/opt/nifi/nifi-current/conf/freq/alexa.json</value>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
                 </property>
                 <property>
                   <name>record-writer</name>
@@ -2582,17 +3128,18 @@
                   <value>${enrich_domain2}</value>
                 </property>
                 <property>
-                  <name>record-reader</name>
-                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                  <name>Result Field 1</name>
+                  <value>${enrich_domain2}_freq1</value>
                 </property>
                 <property>
                   <name>Result Field 2</name>
                   <value>${enrich_domain2}_freq2</value>
                 </property>
                 <property>
-                  <name>Result Field 1</name>
-                  <value>${enrich_domain2}_freq1</value>
+                  <name>Frequency File</name>
+                  <value>/opt/nifi/nifi-current/conf/enrich/freq/alexa.json</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>ecc214d7-667d-3d81-affa-93e712a87abe</id>
@@ -2608,22 +3155,18 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>1667ea62-481a-3dfb-8745-8033f80ab5a7</id>
-                <position x="144.0" y="352.0" />
-              </funnel>
               <connection>
                 <id>bf99e121-0171-1000-0000-0000487c681e</id>
                 <name />
                 <bendPoints />
-                <labelIndex>1</labelIndex>
+                <labelIndex>0</labelIndex>
                 <zIndex>0</zIndex>
                 <sourceId>ecc214d7-667d-3d81-affa-93e712a87abe</sourceId>
                 <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
                 <sourceType>INPUT_PORT</sourceType>
-                <destinationId>10c439ea-f35c-3171-836c-d83af1403698</destinationId>
+                <destinationId>eff73930-f310-1a2e-b248-812b172b7415</destinationId>
                 <destinationGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</destinationGroupId>
-                <destinationType>OUTPUT_PORT</destinationType>
+                <destinationType>PROCESSOR</destinationType>
                 <relationship />
                 <maxWorkQueueSize>10000</maxWorkQueueSize>
                 <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -2652,32 +3195,14 @@
                 <partitioningAttribute />
                 <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
               </connection>
-              <connection>
-                <id>bf9a2f76-0171-1000-ffff-fffffcafce73</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>eff73930-f310-1a2e-b248-812b172b7415</sourceId>
-                <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>1667ea62-481a-3dfb-8745-8033f80ab5a7</destinationId>
-                <destinationGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
             </processGroup>
             <processGroup>
               <id>bd4c02d9-77f7-3984-8aa0-ad78099693a7</id>
               <name>Alexa</name>
               <position x="448.0" y="288.0" />
               <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
               <processor>
                 <id>4598e8b8-b54a-3855-b6b7-5ac2721745a2</id>
                 <name>Alexa domain1</name>
@@ -2688,7 +3213,7 @@
                 <bundle>
                   <group>org.apache.nifi</group>
                   <artifact>nifi-standard-nar</artifact>
-                  <version>1.11.4</version>
+                  <version>1.12.1</version>
                 </bundle>
                 <maxConcurrentTasks>8</maxConcurrentTasks>
                 <schedulingPeriod>0 sec</schedulingPeriod>
@@ -2732,6 +3257,7 @@
                   <name>key</name>
                   <value>${enrich_domain2}</value>
                 </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
               </processor>
               <inputPort>
                 <id>a7e674e2-60b2-3417-ad31-d69248774c3f</id>
@@ -2747,40 +3273,16 @@
                 <comments />
                 <scheduledState>RUNNING</scheduledState>
               </outputPort>
-              <funnel>
-                <id>bf17534a-3723-3f7d-9ca1-dc1b61022e90</id>
-                <position x="-1152.0" y="512.0" />
-              </funnel>
               <connection>
-                <id>3264d31c-6569-3dde-b174-ddff9f7d3835</id>
+                <id>6580ec44-ce8d-3aaf-b7ba-ee4c4d67321b</id>
                 <name />
                 <bendPoints />
                 <labelIndex>1</labelIndex>
                 <zIndex>0</zIndex>
-                <sourceId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</sourceId>
+                <sourceId>a7e674e2-60b2-3417-ad31-d69248774c3f</sourceId>
                 <sourceGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</sourceGroupId>
-                <sourceType>PROCESSOR</sourceType>
-                <destinationId>bf17534a-3723-3f7d-9ca1-dc1b61022e90</destinationId>
-                <destinationGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</destinationGroupId>
-                <destinationType>FUNNEL</destinationType>
-                <relationship>failure</relationship>
-                <maxWorkQueueSize>10000</maxWorkQueueSize>
-                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-                <flowFileExpiration>0 sec</flowFileExpiration>
-                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-                <partitioningAttribute />
-                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-              </connection>
-              <connection>
-                <id>6580ec44-ce8d-3aaf-b7ba-ee4c4d67321b</id>
-                <name />
-                <bendPoints />
-                <labelIndex>1</labelIndex>
-                <zIndex>0</zIndex>
-                <sourceId>a7e674e2-60b2-3417-ad31-d69248774c3f</sourceId>
-                <sourceGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</sourceGroupId>
-                <sourceType>INPUT_PORT</sourceType>
-                <destinationId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</destinationId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>4598e8b8-b54a-3855-b6b7-5ac2721745a2</destinationId>
                 <destinationGroupId>bd4c02d9-77f7-3984-8aa0-ad78099693a7</destinationGroupId>
                 <destinationType>PROCESSOR</destinationType>
                 <relationship />
@@ -2853,13 +3355,13 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>7fcacebd-9235-37f8-9160-496d27d96a2d</id>
+              <id>96023b92-7902-1e45-0000-000012465abe</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>10c439ea-f35c-3171-836c-d83af1403698</sourceId>
-              <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
+              <sourceId>af083d3d-f063-1506-a7fe-2c6f0864de22</sourceId>
+              <sourceGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</sourceGroupId>
               <sourceType>OUTPUT_PORT</sourceType>
               <destinationId>1464f185-b2d5-3347-8aaa-89cfc91566f5</destinationId>
               <destinationGroupId>464af303-e93a-32ed-a7ef-d3d553054447</destinationGroupId>
@@ -2872,6 +3374,26 @@
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
+            <connection>
+              <id>7fcacebd-9235-37f8-9160-496d27d96a2d</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>10c439ea-f35c-3171-836c-d83af1403698</sourceId>
+              <sourceGroupId>db261d6a-ab4a-3a2e-854a-cd42492788c5</sourceGroupId>
+              <sourceType>OUTPUT_PORT</sourceType>
+              <destinationId>7f5c3719-3707-1577-ad0d-945c5da3a77b</destinationId>
+              <destinationGroupId>3514302f-5e74-1185-b5c5-edc034d911a6</destinationGroupId>
+              <destinationType>INPUT_PORT</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
           </processGroup>
           <connection>
             <id>74a800f3-16dd-3368-8b95-b2f06c0e039e</id>
@@ -3202,16 +3724,16 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-lookup-services-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <enabled>true</enabled>
           <property>
             <name>csv-file</name>
-            <value>/opt/nifi/nifi-current/conf/alexa-top-1m.csv</value>
+            <value>/opt/nifi/nifi-current/conf/enrich/alexa-top-1m.csv</value>
           </property>
           <property>
             <name>CSV Format</name>
-            <value>Default</value>
+            <value>default</value>
           </property>
           <property>
             <name>Character Set</name>
@@ -3222,13 +3744,36 @@
             <value>domain</value>
           </property>
           <property>
-            <name>lookup-value-column</name>
-            <value>index</value>
+            <name>ignore-duplicates</name>
+            <value>true</value>
           </property>
           <property>
-            <name>ignore-duplicates</name>
+            <name>Value Separator</name>
+            <value>,</value>
+          </property>
+          <property>
+            <name>Quote Character</name>
+            <value>"</value>
+          </property>
+          <property>
+            <name>Quote Mode</name>
+            <value>MINIMAL</value>
+          </property>
+          <property>
+            <name>Comment Marker</name>
+          </property>
+          <property>
+            <name>Escape Character</name>
+            <value>\</value>
+          </property>
+          <property>
+            <name>Trim Fields</name>
             <value>true</value>
           </property>
+          <property>
+            <name>lookup-value-column</name>
+            <value>index</value>
+          </property>
         </controllerService>
         <controllerService>
           <id>67289e27-a14d-3fa6-bcf9-91f7d2ae8d59</id>
@@ -3238,16 +3783,16 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-lookup-services-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <enabled>true</enabled>
           <property>
             <name>csv-file</name>
-            <value>/opt/nifi/nifi-current/conf/umbrella-top-1m.csv</value>
+            <value>/opt/nifi/nifi-current/conf/enrich/umbrella-top-1m.csv</value>
           </property>
           <property>
             <name>CSV Format</name>
-            <value>Excel</value>
+            <value>default</value>
           </property>
           <property>
             <name>Character Set</name>
@@ -3258,13 +3803,36 @@
             <value>domain</value>
           </property>
           <property>
-            <name>lookup-value-column</name>
-            <value>index</value>
+            <name>ignore-duplicates</name>
+            <value>true</value>
           </property>
           <property>
-            <name>ignore-duplicates</name>
+            <name>Value Separator</name>
+            <value>,</value>
+          </property>
+          <property>
+            <name>Quote Character</name>
+            <value>"</value>
+          </property>
+          <property>
+            <name>Quote Mode</name>
+            <value>MINIMAL</value>
+          </property>
+          <property>
+            <name>Comment Marker</name>
+          </property>
+          <property>
+            <name>Escape Character</name>
+            <value>\</value>
+          </property>
+          <property>
+            <name>Trim Fields</name>
             <value>true</value>
           </property>
+          <property>
+            <name>lookup-value-column</name>
+            <value>index</value>
+          </property>
         </controllerService>
       </processGroup>
       <processGroup>
@@ -3272,6 +3840,8 @@
         <name>Data input</name>
         <position x="830.4597621124223" y="407.3463126314215" />
         <comment />
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <outputPort>
           <id>21a9e277-2d80-359a-9c57-cb76d8962e6d</id>
           <name>To data output</name>
@@ -3282,7 +3852,7 @@
         <outputPort>
           <id>20b01ab3-3a8d-3573-b95d-a4a45494050f</id>
           <name>To enrichment</name>
-          <position x="480.0" y="504.0" />
+          <position x="480.0" y="392.0" />
           <comments />
           <scheduledState>RUNNING</scheduledState>
         </outputPort>
@@ -3291,6 +3861,8 @@
           <name>Custom data inputs</name>
           <position x="-504.0" y="952.0" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <outputPort>
             <id>27d5dab2-0172-1000-ffff-ffffab5c50be</id>
             <name>To data output</name>
@@ -3307,148 +3879,23 @@
           </outputPort>
         </processGroup>
         <processGroup>
-          <id>84607b52-9748-3d38-b519-b0a05cddd097</id>
-          <name>Nifi logs</name>
-          <position x="-496.0" y="136.0" />
+          <id>0c790562-0175-1000-ffff-ffffeaaeafc3</id>
+          <name>FileBeat</name>
+          <position x="-496.0" y="344.0" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
-            <id>c1318ad1-0c35-3896-b32a-1ccd6c09864a</id>
-            <name>Add source fields and fix timestamp</name>
-            <position x="-2192.0" y="560.0" />
-            <styles />
-            <comment />
-            <class>org.apache.nifi.processors.standard.UpdateRecord</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
-            </bundle>
-            <maxConcurrentTasks>1</maxConcurrentTasks>
-            <schedulingPeriod>0 sec</schedulingPeriod>
-            <penalizationPeriod>30 sec</penalizationPeriod>
-            <yieldPeriod>1 sec</yieldPeriod>
-            <bulletinLevel>WARN</bulletinLevel>
-            <lossTolerant>false</lossTolerant>
-            <scheduledState>RUNNING</scheduledState>
-            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-            <executionNode>ALL</executionNode>
-            <runDurationNanos>0</runDurationNanos>
-            <property>
-              <name>record-reader</name>
-              <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-            </property>
-            <property>
-              <name>record-writer</name>
-              <value>94600c6c-704e-3ff8-a2a4-f2f25c71dc3b</value>
-            </property>
-            <property>
-              <name>replacement-value-strategy</name>
-              <value>literal-value</value>
-            </property>
-            <property>
-              <name>/labels/source</name>
-              <value>${tailfile.original.path}</value>
-            </property>
-            <property>
-              <name>/labels/source_host</name>
-              <value>${hostname()}</value>
-            </property>
-            <property>
-              <name>/timestamp</name>
-              <value>${field.value:toDate('yyyy-MM-dd HH:mm:ss,SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
-            </property>
-          </processor>
-          <processor>
-            <id>68663f14-f470-32ee-9cb3-224344d5ad6a</id>
-            <name>UpdateAttribute</name>
-            <position x="-2184.0" y="824.0" />
-            <styles />
-            <comment />
-            <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-update-attribute-nar</artifact>
-              <version>1.11.4</version>
-            </bundle>
-            <maxConcurrentTasks>1</maxConcurrentTasks>
-            <schedulingPeriod>0 sec</schedulingPeriod>
-            <penalizationPeriod>30 sec</penalizationPeriod>
-            <yieldPeriod>1 sec</yieldPeriod>
-            <bulletinLevel>WARN</bulletinLevel>
-            <lossTolerant>false</lossTolerant>
-            <scheduledState>RUNNING</scheduledState>
-            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-            <executionNode>ALL</executionNode>
-            <runDurationNanos>0</runDurationNanos>
-            <property>
-              <name>Delete Attributes Expression</name>
-            </property>
-            <property>
-              <name>Store State</name>
-              <value>Do not store state</value>
-            </property>
-            <property>
-              <name>Stateful Variables Initial Value</name>
-            </property>
-            <property>
-              <name>canonical-value-lookup-cache-size</name>
-              <value>100</value>
-            </property>
-            <property>
-              <name>data_index</name>
-              <value>nifi-logs</value>
-            </property>
-            <property>
-              <name>Authorization</name>
-              <value>Bearer 874rPdPJ6qOSL6HvWcH8xxChqTJxiFtHp94puxh4MygY</value>
-            </property>
-          </processor>
-          <processor>
-            <id>716d22cb-8b81-342f-abe4-7cdfe2a980ff</id>
-            <name>ConvertRecord</name>
-            <position x="-2200.0" y="264.0" />
-            <styles />
-            <comment />
-            <class>org.apache.nifi.processors.standard.ConvertRecord</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
-            </bundle>
-            <maxConcurrentTasks>1</maxConcurrentTasks>
-            <schedulingPeriod>0 sec</schedulingPeriod>
-            <penalizationPeriod>30 sec</penalizationPeriod>
-            <yieldPeriod>1 sec</yieldPeriod>
-            <bulletinLevel>WARN</bulletinLevel>
-            <lossTolerant>false</lossTolerant>
-            <scheduledState>RUNNING</scheduledState>
-            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-            <executionNode>ALL</executionNode>
-            <runDurationNanos>0</runDurationNanos>
-            <property>
-              <name>record-reader</name>
-              <value>e3e44ca0-6653-328b-9d3f-b8225312914b</value>
-            </property>
-            <property>
-              <name>record-writer</name>
-              <value>94600c6c-704e-3ff8-a2a4-f2f25c71dc3b</value>
-            </property>
-            <property>
-              <name>include-zero-record-flowfiles</name>
-              <value>true</value>
-            </property>
-          </processor>
-          <processor>
-            <id>609a3835-5317-1c94-ad8f-1d9940869db4</id>
-            <name>TailFile</name>
-            <position x="-2200.0" y="8.0" />
+            <id>8962ad5a-0175-1000-ffff-ffffde6db5a6</id>
+            <name>RouteOnAttribute</name>
+            <position x="-1080.0" y="280.0" />
             <styles />
             <comment />
-            <class>org.apache.nifi.processors.standard.TailFile</class>
+            <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
+              <version>1.12.1</version>
             </bundle>
             <maxConcurrentTasks>1</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -3461,457 +3908,181 @@
             <executionNode>ALL</executionNode>
             <runDurationNanos>0</runDurationNanos>
             <property>
-              <name>tail-mode</name>
-              <value>Single file</value>
-            </property>
-            <property>
-              <name>File to Tail</name>
-              <value>/opt/nifi/nifi-current/logs/nifi-user.log</value>
-            </property>
-            <property>
-              <name>Rolling Filename Pattern</name>
-            </property>
-            <property>
-              <name>tail-base-directory</name>
-            </property>
-            <property>
-              <name>Initial Start Position</name>
-              <value>Beginning of File</value>
-            </property>
-            <property>
-              <name>File Location</name>
-              <value>Local</value>
-            </property>
-            <property>
-              <name>tailfile-recursive-lookup</name>
-              <value>false</value>
-            </property>
-            <property>
-              <name>tailfile-lookup-frequency</name>
-              <value>10 minutes</value>
-            </property>
-            <property>
-              <name>tailfile-maximum-age</name>
-              <value>24 hours</value>
+              <name>Routing Strategy</name>
+              <value>Route to Property name</value>
             </property>
-          </processor>
-          <processor>
-            <id>9ecf3ce4-ae3c-1b06-96f9-5e9c59e51690</id>
-            <name>TailFile</name>
-            <position x="-1784.0" y="8.0" />
-            <styles />
-            <comment />
-            <class>org.apache.nifi.processors.standard.TailFile</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
-            </bundle>
-            <maxConcurrentTasks>1</maxConcurrentTasks>
-            <schedulingPeriod>0 sec</schedulingPeriod>
-            <penalizationPeriod>30 sec</penalizationPeriod>
-            <yieldPeriod>1 sec</yieldPeriod>
-            <bulletinLevel>WARN</bulletinLevel>
-            <lossTolerant>false</lossTolerant>
-            <scheduledState>RUNNING</scheduledState>
-            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-            <executionNode>ALL</executionNode>
-            <runDurationNanos>0</runDurationNanos>
             <property>
-              <name>tail-mode</name>
-              <value>Single file</value>
+              <name>keycloak</name>
+              <value>${log_type:equals("keycloak")}</value>
             </property>
             <property>
-              <name>File to Tail</name>
-              <value>/opt/nifi/nifi-current/logs/nifi-bootstrap.log</value>
+              <name>kibana</name>
+              <value>${log_type:equals("kibana")}</value>
             </property>
             <property>
-              <name>Rolling Filename Pattern</name>
+              <name>elasticsearch</name>
+              <value>${log_type:equals("elasticsearch")}</value>
             </property>
             <property>
-              <name>tail-base-directory</name>
+              <name>suricata</name>
+              <value>${log_type:equals("suricata")}</value>
             </property>
             <property>
-              <name>Initial Start Position</name>
-              <value>Beginning of File</value>
+              <name>haproxy</name>
+              <value>${log_type:equals("haproxy")}</value>
             </property>
             <property>
-              <name>File Location</name>
-              <value>Local</value>
+              <name>mysql</name>
+              <value>${log_type:equals("mysql")}</value>
             </property>
             <property>
-              <name>tailfile-recursive-lookup</name>
-              <value>false</value>
+              <name>zeek</name>
+              <value>${log_type:equals("zeek")}</value>
             </property>
             <property>
-              <name>tailfile-lookup-frequency</name>
-              <value>10 minutes</value>
+              <name>nifi</name>
+              <value>${log_type:equals("nifi")}</value>
             </property>
             <property>
-              <name>tailfile-maximum-age</name>
-              <value>24 hours</value>
+              <name>zookeeper</name>
+              <value>${log_type:equals("zookeeper")}</value>
             </property>
           </processor>
-          <processor>
-            <id>1e796098-c064-371a-8147-d60b5d41a316</id>
-            <name>TailFile</name>
-            <position x="-2648.0" y="16.0" />
-            <styles />
-            <comment />
-            <class>org.apache.nifi.processors.standard.TailFile</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-standard-nar</artifact>
-              <version>1.11.4</version>
-            </bundle>
-            <maxConcurrentTasks>1</maxConcurrentTasks>
-            <schedulingPeriod>0 sec</schedulingPeriod>
-            <penalizationPeriod>30 sec</penalizationPeriod>
-            <yieldPeriod>1 sec</yieldPeriod>
-            <bulletinLevel>WARN</bulletinLevel>
-            <lossTolerant>false</lossTolerant>
+          <outputPort>
+            <id>bcb879d5-0175-1000-0000-000070879ad0</id>
+            <name>To data output</name>
+            <position x="-2480.0" y="336.0" />
+            <comments />
             <scheduledState>RUNNING</scheduledState>
-            <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-            <executionNode>ALL</executionNode>
-            <runDurationNanos>0</runDurationNanos>
-            <property>
-              <name>tail-mode</name>
-              <value>Single file</value>
-            </property>
-            <property>
-              <name>File to Tail</name>
-              <value>/opt/nifi/nifi-current/logs/nifi-app.log</value>
-            </property>
-            <property>
-              <name>Rolling Filename Pattern</name>
-            </property>
-            <property>
-              <name>tail-base-directory</name>
-            </property>
-            <property>
-              <name>Initial Start Position</name>
-              <value>Beginning of File</value>
-            </property>
-            <property>
-              <name>File Location</name>
-              <value>Local</value>
-            </property>
-            <property>
-              <name>tailfile-recursive-lookup</name>
-              <value>false</value>
-            </property>
-            <property>
-              <name>tailfile-lookup-frequency</name>
-              <value>10 minutes</value>
-            </property>
-            <property>
-              <name>tailfile-maximum-age</name>
-              <value>24 hours</value>
-            </property>
-          </processor>
+          </outputPort>
           <outputPort>
-            <id>1ef39440-1985-3bbb-8e03-859a1c5ee4b1</id>
-            <name>To storage</name>
-            <position x="-2120.0" y="1064.0" />
+            <id>349b32fe-a821-1197-0000-00003a0b6fe5</id>
+            <name>To enrichment</name>
+            <position x="744.0" y="920.0" />
             <comments />
             <scheduledState>RUNNING</scheduledState>
           </outputPort>
-          <funnel>
-            <id>beabd3be-6f95-3369-9aa5-4631e6207ec5</id>
-            <position x="-1572.2279720213353" y="320.16022816068823" />
-          </funnel>
-          <connection>
-            <id>0261c39c-d823-3ab3-b680-2d0c2fa152e5</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>c1318ad1-0c35-3896-b32a-1ccd6c09864a</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>68663f14-f470-32ee-9cb3-224344d5ad6a</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship>success</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>214adcbf-0175-1000-ffff-ffffaedeecef</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>9ecf3ce4-ae3c-1b06-96f9-5e9c59e51690</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship>success</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>0a34d026-0761-3a6d-b261-377d20a40b5d</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>c1318ad1-0c35-3896-b32a-1ccd6c09864a</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>beabd3be-6f95-3369-9aa5-4631e6207ec5</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>FUNNEL</destinationType>
-            <relationship>failure</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>266ad4f3-c827-337a-b3b5-28bccc8917fc</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>beabd3be-6f95-3369-9aa5-4631e6207ec5</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>FUNNEL</destinationType>
-            <relationship>failure</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>0dc021fb-a375-3e48-a5fd-1b9d5c3ad9bd</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>1e796098-c064-371a-8147-d60b5d41a316</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship>success</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>5bc3c82f-bfb5-3e6c-a7bf-141748391beb</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>c1318ad1-0c35-3896-b32a-1ccd6c09864a</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship>success</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>32df885e-4eb1-38fd-bf6b-219725264cf4</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>68663f14-f470-32ee-9cb3-224344d5ad6a</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>1ef39440-1985-3bbb-8e03-859a1c5ee4b1</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>OUTPUT_PORT</destinationType>
-            <relationship>success</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <connection>
-            <id>609a3840-5317-1c94-0000-00002897f5ab</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>609a3835-5317-1c94-ad8f-1d9940869db4</sourceId>
-            <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>716d22cb-8b81-342f-abe4-7cdfe2a980ff</destinationId>
-            <destinationGroupId>84607b52-9748-3d38-b519-b0a05cddd097</destinationGroupId>
-            <destinationType>PROCESSOR</destinationType>
-            <relationship>success</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>0 sec</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
-          <controllerService>
-            <id>e3e44ca0-6653-328b-9d3f-b8225312914b</id>
-            <name>Nifi logs GrokReader</name>
-            <comment />
-            <class>org.apache.nifi.grok.GrokReader</class>
-            <bundle>
-              <group>org.apache.nifi</group>
-              <artifact>nifi-record-serialization-services-nar</artifact>
-              <version>1.11.4</version>
-            </bundle>
-            <enabled>true</enabled>
-            <property>
-              <name>schema-access-strategy</name>
-              <value>string-fields-from-grok-expression</value>
-            </property>
-            <property>
-              <name>schema-registry</name>
-            </property>
-            <property>
-              <name>schema-name</name>
-              <value>${schema.name}</value>
-            </property>
-            <property>
-              <name>schema-version</name>
-            </property>
-            <property>
-              <name>schema-branch</name>
-            </property>
-            <property>
-              <name>schema-text</name>
-              <value>${avro.schema}</value>
-            </property>
-            <property>
-              <name>Grok Pattern File</name>
-            </property>
-            <property>
-              <name>Grok Expression</name>
-              <value>%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} \[%{DATA:thread}\] %{DATA:class} %{GREEDYDATA:message}</value>
-            </property>
-            <property>
-              <name>no-match-behavior</name>
-              <value>append-to-previous-message</value>
-            </property>
-          </controllerService>
-        </processGroup>
-        <processGroup>
-          <id>0c790562-0175-1000-ffff-ffffeaaeafc3</id>
-          <name>FileBeat</name>
-          <position x="-496.0" y="344.0" />
-          <comment />
           <processGroup>
-            <id>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</id>
-            <name>Suricata</name>
-            <position x="-504.0" y="352.0" />
+            <id>89636688-0175-1000-ffff-ffffb1b28a38</id>
+            <name>Unknown data</name>
+            <position x="-448.0" y="64.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <processor>
-              <id>19336e9e-3581-3d83-bb51-b9af2f5a6005</id>
-              <name>Filter out DNS events</name>
-              <position x="-371.62446124181497" y="672.8156960893323" />
+              <id>8963d0f9-0175-1000-0000-000054fbe086</id>
+              <name>UpdateAttribute</name>
+              <position x="392.0" y="248.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
-              <maxConcurrentTasks>3</maxConcurrentTasks>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
               <penalizationPeriod>30 sec</penalizationPeriod>
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Routing Strategy</name>
-                <value>Route to Property name</value>
-              </property>
-              <property>
-                <name>dns</name>
-                <value>${event_type:contains("dns")}</value>
-              </property>
-              <property>
-                <name>flow</name>
-                <value>${event_type:contains("flow")}</value>
-              </property>
-              <property>
-                <name>alert</name>
-                <value>${event_type:contains("alert")}</value>
-              </property>
-              <property>
-                <name>ssh</name>
-                <value>${event_type:contains("ssh")}</value>
-              </property>
-              <property>
-                <name>tls</name>
-                <value>${event_type:contains("tls")}</value>
+                <name>Delete Attributes Expression</name>
               </property>
               <property>
-                <name>http</name>
-                <value>${event_type:contains("http")}</value>
+                <name>Store State</name>
+                <value>Do not store state</value>
               </property>
               <property>
-                <name>stats</name>
-                <value>${event_type:contains("stats")}</value>
+                <name>Stateful Variables Initial Value</name>
               </property>
               <property>
-                <name>files</name>
-                <value>${event_type:contains("file")}</value>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
               </property>
               <property>
-                <name>smtp</name>
-                <value>${event_type:contains("smtp")}</value>
+                <name>data_index</name>
+                <value>logs-filebeat-unknown</value>
               </property>
-              <autoTerminatedRelationship>smtp</autoTerminatedRelationship>
-              <autoTerminatedRelationship>stats</autoTerminatedRelationship>
-              <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
             </processor>
+            <inputPort>
+              <id>89639d3d-0175-1000-ffff-ffffb446c257</id>
+              <name>Input</name>
+              <position x="444.0000243687773" y="80.00000220501622" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>8963b202-0175-1000-0000-000022d64ba2</id>
+              <name>Output</name>
+              <position x="456.0" y="504.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>8963e649-0175-1000-ffff-fffff03ab629</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>89639d3d-0175-1000-ffff-ffffb446c257</sourceId>
+              <sourceGroupId>89636688-0175-1000-ffff-ffffb1b28a38</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>8963d0f9-0175-1000-0000-000054fbe086</destinationId>
+              <destinationGroupId>89636688-0175-1000-ffff-ffffb1b28a38</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8963f112-0175-1000-0000-00000dfa15b5</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8963d0f9-0175-1000-0000-000054fbe086</sourceId>
+              <sourceGroupId>89636688-0175-1000-ffff-ffffb1b28a38</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>8963b202-0175-1000-0000-000022d64ba2</destinationId>
+              <destinationGroupId>89636688-0175-1000-ffff-ffffb1b28a38</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>bc6be78f-0175-1000-ffff-ffffbcd0f569</id>
+            <name>NiFi logs</name>
+            <position x="-1904.0" y="264.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <processor>
-              <id>d59eabae-f47a-3d88-a1c9-e15c156202d6</id>
-              <name>Extract rrname</name>
-              <position x="-369.29872149802804" y="897.6180433395261" />
+              <id>bc903708-0175-1000-0000-0000642abebf</id>
+              <name>Extract message</name>
+              <position x="352.0" y="280.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -3919,7 +4090,7 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
@@ -3929,36 +4100,25 @@
               </property>
               <property>
                 <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>replacement-value-strategy</name>
-                <value>record-path-value</value>
-              </property>
-              <property>
-                <name>/rrname_length</name>
-                <value>/dns/rrname</value>
+                <value>bc8e5957-0175-1000-0000-00003346421d</value>
               </property>
               <property>
-                <name>/rrname_domain</name>
-                <value>/dns/rrname</value>
-              </property>
-              <property>
-                <name>/rrname_domain_length</name>
-                <value>/dns/rrname</value>
+                <name>include-zero-record-flowfiles</name>
+                <value>true</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>24e1d8ed-10f4-3b46-958c-f2fb676e3192</id>
-              <name>Remove unnecessary  filebeat fields</name>
-              <position x="-987.5658863682004" y="234.96963460665665" />
+              <id>bc91c66f-0175-1000-0000-00005c7f88ce</id>
+              <name>Convert to json</name>
+              <position x="1064.0" y="272.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.JoltTransformJSON</class>
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -3966,59 +4126,35 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>jolt-transform</name>
-                <value>jolt-transform-chain</value>
-              </property>
-              <property>
-                <name>jolt-custom-class</name>
-              </property>
-              <property>
-                <name>jolt-custom-modules</name>
-              </property>
-              <property>
-                <name>jolt-spec</name>
-                <value>[{
-	"operation": "shift",
-	"spec": {
-		"*": {
-			"json": {
-				"*": {
-					"@": "[#4].&amp;"
-				}
-			},
-			"host": {
-				"name": "[#3].beat_host"
-			},
-			"source": "[#2].source"
-		}
-	}
-}]</value>
+                <name>record-reader</name>
+                <value>bc97858d-0175-1000-0000-0000130a84f8</value>
               </property>
               <property>
-                <name>Transform Cache Size</name>
-                <value>1</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>pretty_print</name>
-                <value>false</value>
+                <name>include-zero-record-flowfiles</name>
+                <value>true</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>47757d9f-c23d-33ca-9c88-3c8722bd00a5</id>
-              <name>Add rrname_domain++</name>
-              <position x="-368.27336608185624" y="1138.9635842383886" />
+              <id>bcabbf11-0175-1000-0000-000037f4e3d3</id>
+              <name>UpdateAttribute</name>
+              <position x="1072.0" y="472.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4026,62 +4162,210 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>Delete Attributes Expression</name>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                <name>Store State</name>
+                <value>Do not store state</value>
               </property>
               <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
               </property>
               <property>
-                <name>/rrname_length</name>
-                <value>${field.value:length():toNumber()}</value>
+                <name>data_index</name>
+                <value>logs-nifi</value>
               </property>
+            </processor>
+            <processor>
+              <id>bc9ffeb0-0175-1000-0000-00000a88d684</id>
+              <name>UpdateRecord</name>
+              <position x="352.0" y="472.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>/ip_src_addr</name>
-                <value>0.0.0.0</value>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>/src_ip</name>
-                <value>0.0.0.0</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>/ip_dst_addr</name>
-                <value>0.0.0.0</value>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
               </property>
               <property>
-                <name>/rrname_domain</name>
-                <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')})}</value>
+                <name>/labels/source_file</name>
+                <value>${source_file}</value>
               </property>
               <property>
-                <name>/dest_ip</name>
-                <value>0.0.0.0</value>
+                <name>/labels/source_host</name>
+                <value>${source_host}</value>
               </property>
               <property>
-                <name>/rrname_domain_length</name>
-                <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')}):length():toNumber()}</value>
+                <name>/timestamp</name>
+                <value>${field.value:toDate('yyyy-MM-dd HH:mm:ss,SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
+            <inputPort>
+              <id>bc6c2159-0175-1000-ffff-ffffb4de4d47</id>
+              <name>Input</name>
+              <position x="397.9999517774115" y="110.99999315685733" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>bca9636a-0175-1000-0000-000013fa95aa</id>
+              <name>Output</name>
+              <position x="1120.0" y="808.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>bc90c7ac-0175-1000-ffff-fffffa80b534</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>bc903708-0175-1000-0000-0000642abebf</sourceId>
+              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>bc91c66f-0175-1000-0000-00005c7f88ce</destinationId>
+              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>bc924694-0175-1000-0000-00005b0604b6</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>bc91c66f-0175-1000-0000-00005c7f88ce</sourceId>
+              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>bc9ffeb0-0175-1000-0000-00000a88d684</destinationId>
+              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>bc6e1b20-0175-1000-ffff-ffff9e7dcb75</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>bc6c2159-0175-1000-ffff-ffffb4de4d47</sourceId>
+              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>bc903708-0175-1000-0000-0000642abebf</destinationId>
+              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>bcad2e36-0175-1000-0000-00002b6e8fe7</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>bcabbf11-0175-1000-0000-000037f4e3d3</sourceId>
+              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>bca9636a-0175-1000-0000-000013fa95aa</destinationId>
+              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>bca97855-0175-1000-ffff-ffffbd18cb66</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>bc9ffeb0-0175-1000-0000-00000a88d684</sourceId>
+              <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>bcabbf11-0175-1000-0000-000037f4e3d3</destinationId>
+              <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>895eab20-0175-1000-0000-00007e13267d</id>
+            <name>Common ListenBeats</name>
+            <position x="-1096.0" y="0.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <processor>
-              <id>e89b0470-bff2-323c-92e5-5fb2d3949070</id>
+              <id>71be315f-7e16-1cce-89f1-d5bd502f889f</id>
               <name>Prepend [</name>
-              <position x="-996.7179797450688" y="47.535499055489254" />
+              <position x="-1086.1517800521056" y="160.65881341602864" />
               <styles />
               <comment />
               <class>org.apache.nifi.processors.standard.ReplaceText</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4089,7 +4373,7 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
@@ -4107,7 +4391,7 @@
               </property>
               <property>
                 <name>Maximum Buffer Size</name>
-                <value>1 MB</value>
+                <value>2 MB</value>
               </property>
               <property>
                 <name>Replacement Strategy</name>
@@ -4121,18 +4405,19 @@
                 <name>Line-by-Line Evaluation Mode</name>
                 <value>All</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>fd6b6513-51f8-3a96-a764-13bd39ec7f84</id>
-              <name>Partition records based on event_type</name>
-              <position x="-382.59400260581754" y="446.9900134408068" />
+              <id>d3e43667-10ef-1528-b935-47c2f077f2c9</id>
+              <name>ListenBeats</name>
+              <position x="-616.0" y="-56.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.PartitionRecord</class>
+              <class>org.apache.nifi.processors.beats.ListenBeats</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-beats-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4140,35 +4425,65 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>Local Network Interface</name>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                <name>Port</name>
+                <value>6001</value>
               </property>
               <property>
-                <name>event_type</name>
-                <value>/event_type</value>
+                <name>Receive Buffer Size</name>
+                <value>65507 B</value>
+              </property>
+              <property>
+                <name>Max Size of Message Queue</name>
+                <value>10000</value>
+              </property>
+              <property>
+                <name>Max Size of Socket Buffer</name>
+                <value>2 MB</value>
+              </property>
+              <property>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Max Batch Size</name>
+                <value>10000</value>
+              </property>
+              <property>
+                <name>Message Delimiter</name>
+                <value>,\n</value>
+              </property>
+              <property>
+                <name>Max Number of TCP Connections</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>SSL_CONTEXT_SERVICE</name>
+                <value>83443c00-b286-366a-b8e0-2f51527ab8e5</value>
+              </property>
+              <property>
+                <name>Client Auth</name>
+                <value>NONE</value>
               </property>
-              <autoTerminatedRelationship>original</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>a88dab36-f543-32fc-8f45-aa11b99c0ff4</id>
-              <name>Add standardized fields</name>
-              <position x="-982.3277701858627" y="433.7665258942376" />
+              <id>6b9a3cb4-e697-1540-a5fb-ea71cfce8f41</id>
+              <name>Append ]</name>
+              <position x="-424.0" y="160.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <class>org.apache.nifi.processors.standard.ReplaceText</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4176,50 +4491,51 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>Regular Expression</name>
+                <value>(?s)(^.*$)</value>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                <name>Replacement Value</name>
+                <value>]</value>
               </property>
               <property>
-                <name>replacement-value-strategy</name>
-                <value>record-path-value</value>
+                <name>Character Set</name>
+                <value>UTF-8</value>
               </property>
               <property>
-                <name>/ip_dst_port</name>
-                <value>/dest_port</value>
+                <name>Maximum Buffer Size</name>
+                <value>2 MB</value>
               </property>
               <property>
-                <name>/ip_src_addr</name>
-                <value>/src_ip</value>
+                <name>Replacement Strategy</name>
+                <value>Append</value>
               </property>
               <property>
-                <name>/ip_dst_addr</name>
-                <value>/dest_ip</value>
+                <name>Evaluation Mode</name>
+                <value>Entire text</value>
               </property>
               <property>
-                <name>/ip_src_port</name>
-                <value>/src_port</value>
+                <name>Line-by-Line Evaluation Mode</name>
+                <value>All</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>1a038948-9e9a-3523-b899-990077bfd575</id>
-              <name>Convert timestamp</name>
-              <position x="-385.7461824498648" y="233.13395543765722" />
+              <id>d64f3acd-54a6-1b39-b1af-cc0a26156d5b</id>
+              <name>ListenBeats</name>
+              <position x="-1076.9243538376497" y="-51.550721133258094" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <class>org.apache.nifi.processors.beats.ListenBeats</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-beats-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4227,46 +4543,64 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                <name>Local Network Interface</name>
               </property>
               <property>
-                <name>record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                <name>Port</name>
+                <value>6000</value>
               </property>
               <property>
-                <name>replacement-value-strategy</name>
-                <value>literal-value</value>
+                <name>Receive Buffer Size</name>
+                <value>1024kb</value>
               </property>
               <property>
-                <name>/TLP</name>
-                <value>AMBER</value>
+                <name>Max Size of Message Queue</name>
+                <value>10000</value>
               </property>
               <property>
-                <name>/mime.type</name>
-                <value>application/json</value>
+                <name>Max Size of Socket Buffer</name>
+                <value>4 MB</value>
               </property>
               <property>
-                <name>/timestamp</name>
-                <value>${field.value:replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Max Batch Size</name>
+                <value>500</value>
+              </property>
+              <property>
+                <name>Message Delimiter</name>
+                <value>,\n</value>
+              </property>
+              <property>
+                <name>Max Number of TCP Connections</name>
+                <value>200</value>
+              </property>
+              <property>
+                <name>SSL_CONTEXT_SERVICE</name>
+              </property>
+              <property>
+                <name>Client Auth</name>
+                <value>NONE</value>
               </property>
             </processor>
             <processor>
-              <id>7eeb23aa-b112-3cc8-bb56-2ca20b456907</id>
-              <name>Add enrichment attributes</name>
-              <position x="-381.71987132795925" y="1362.5536493927905" />
+              <id>bb719fee-0175-1000-ffff-ffffb73dd31a</id>
+              <name>Rename @ fields</name>
+              <position x="-1080.0" y="360.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <class>org.apache.nifi.processors.standard.JoltTransformJSON</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4274,170 +4608,54 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Delete Attributes Expression</name>
+                <name>jolt-transform</name>
+                <value>jolt-transform-chain</value>
               </property>
               <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
+                <name>jolt-custom-class</name>
               </property>
               <property>
-                <name>Stateful Variables Initial Value</name>
+                <name>jolt-custom-modules</name>
               </property>
               <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>enrich_domain1</name>
-                <value>/rrname_domain</value>
-              </property>
-              <property>
-                <name>enrich_fqdn1</name>
-                <value>/dns/rrname</value>
-              </property>
-            </processor>
-            <processor>
-              <id>46cdd7aa-91f0-307c-90aa-65747e558f25</id>
-              <name>Add attributes</name>
-              <position x="-990.1194195007834" y="665.1839855126569" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.11.4</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_id</name>
-                <value>suricata-${event_type}</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-${beats.sender:substringBeforeLast('/'):substringBeforeLast('.'):substringAfterLast('.')}-suricata-${event_type}</value>
-              </property>
-              <property>
-                <name>data_type</name>
-                <value>suricata</value>
-              </property>
-              <property>
-                <name>enrich_ip2</name>
-                <value>/ip_dst_addr</value>
-              </property>
-              <property>
-                <name>enrich_ip1</name>
-                <value>/ip_src_addr</value>
-              </property>
-              <property>
-                <name>TLP</name>
-                <value>AMBER</value>
-              </property>
-            </processor>
-            <processor>
-              <id>2b0f0d27-a69e-30c9-b3a6-1499ff955a30</id>
-              <name>ListenBeats</name>
-              <position x="-987.897149146032" y="-167.11494242687536" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.beats.ListenBeats</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-beats-nar</artifact>
-                <version>1.11.4</version>
-              </bundle>
-              <maxConcurrentTasks>2</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>NONE</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
-              <property>
-                <name>Local Network Interface</name>
-              </property>
-              <property>
-                <name>Port</name>
-                <value>6101</value>
-              </property>
-              <property>
-                <name>Receive Buffer Size</name>
-                <value>65507 B</value>
-              </property>
-              <property>
-                <name>Max Size of Message Queue</name>
-                <value>100000</value>
-              </property>
-              <property>
-                <name>Max Size of Socket Buffer</name>
-                <value>10 MB</value>
-              </property>
-              <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
-              </property>
-              <property>
-                <name>Max Batch Size</name>
-                <value>5000</value>
-              </property>
-              <property>
-                <name>Message Delimiter</name>
-                <value>,\n</value>
-              </property>
-              <property>
-                <name>Max Number of TCP Connections</name>
-                <value>90</value>
+                <name>jolt-spec</name>
+                <value>[{
+	"operation": "shift",
+	"spec": {
+		"*": {
+            "\\@timestamp":"[&amp;1].timestamp",
+            "\\@metadata":"[&amp;1].metadata",
+			"*": "[&amp;1].&amp;"
+		}
+	}
+}]</value>
               </property>
               <property>
-                <name>SSL_CONTEXT_SERVICE</name>
+                <name>Transform Cache Size</name>
+                <value>1</value>
               </property>
               <property>
-                <name>Client Auth</name>
-                <value>REQUIRED</value>
+                <name>pretty_print</name>
+                <value>false</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>be18c77e-5e4e-3552-ac9b-892ab69a9d49</id>
-              <name>Append ]</name>
-              <position x="-396.7049152015222" y="50.4274414148523" />
+              <id>896047e7-0175-1000-ffff-ffffc69204e4</id>
+              <name>PartitionRecord</name>
+              <position x="-424.0" y="368.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.ReplaceText</class>
+              <class>org.apache.nifi.processors.standard.PartitionRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4445,70 +4663,52 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Regular Expression</name>
-                <value>(?s)(^.*$)</value>
-              </property>
-              <property>
-                <name>Replacement Value</name>
-                <value>]</value>
-              </property>
-              <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>Maximum Buffer Size</name>
-                <value>1 MB</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>Replacement Strategy</name>
-                <value>Append</value>
+                <name>log_type</name>
+                <value>/fields/log_type</value>
               </property>
               <property>
-                <name>Evaluation Mode</name>
-                <value>Entire text</value>
+                <name>source_host</name>
+                <value>/host/name</value>
               </property>
               <property>
-                <name>Line-by-Line Evaluation Mode</name>
-                <value>All</value>
+                <name>source_file</name>
+                <value>/log/file/path</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              <autoTerminatedRelationship>original</autoTerminatedRelationship>
             </processor>
             <outputPort>
-              <id>055308a4-d020-39a9-9da4-b165796ef717</id>
-              <name>To enrichment</name>
-              <position x="-900.0911671813442" y="1418.3104443450675" />
+              <id>89620b1a-0175-1000-0000-000078566f34</id>
+              <name>Output</name>
+              <position x="-360.0" y="704.0" />
               <comments />
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
             </outputPort>
-            <funnel>
-              <id>d8f19295-5666-31a8-b701-52214c4db51d</id>
-              <position x="-1500.995244929405" y="257.20806784146276" />
-            </funnel>
-            <funnel>
-              <id>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</id>
-              <position x="283.72871497338747" y="273.4623850295515" />
-            </funnel>
-            <funnel>
-              <id>c4afa3d5-0170-1000-ffff-ffffe437a306</id>
-              <position x="396.10723355029654" y="1188.222598705122" />
-            </funnel>
             <connection>
-              <id>d39ff93b-85e9-3c56-9f44-1916d1abcd9d</id>
+              <id>bb8aafca-0175-1000-0000-000038f8e9fc</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>a88dab36-f543-32fc-8f45-aa11b99c0ff4</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceId>896047e7-0175-1000-ffff-ffffc69204e4</sourceId>
+              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
+              <destinationId>89620b1a-0175-1000-0000-000078566f34</destinationId>
+              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -4518,18 +4718,18 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>c4ae2f82-0170-1000-ffff-ffff91d33f16</id>
+              <id>895f18a7-0175-1000-ffff-ffffbc2237fd</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>19336e9e-3581-3d83-bb51-b9af2f5a6005</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceId>71be315f-7e16-1cce-89f1-d5bd502f889f</sourceId>
+              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>d59eabae-f47a-3d88-a1c9-e15c156202d6</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationId>6b9a3cb4-e697-1540-a5fb-ea71cfce8f41</destinationId>
+              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
-              <relationship>dns</relationship>
+              <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
@@ -4538,16 +4738,16 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>a4471b0c-c924-31e0-9aa1-7cf56b1be0ed</id>
+              <id>895ee440-0175-1000-ffff-ffffd3ff3143</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>be18c77e-5e4e-3552-ac9b-892ab69a9d49</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceId>d64f3acd-54a6-1b39-b1af-cc0a26156d5b</sourceId>
+              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationId>71be315f-7e16-1cce-89f1-d5bd502f889f</destinationId>
+              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -4558,16 +4758,16 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>f9a8aee6-502f-3eb9-8806-8964276d4ca0</id>
+              <id>ac7a988a-0175-1000-ffff-ffff86c66751</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceId>d3e43667-10ef-1528-b935-47c2f077f2c9</sourceId>
+              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>1a038948-9e9a-3523-b899-990077bfd575</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationId>71be315f-7e16-1cce-89f1-d5bd502f889f</destinationId>
+              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -4578,343 +4778,36 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>e8ad07a6-cd62-3473-9b16-833cf43026a6</id>
+              <id>bb8a6c6c-0175-1000-0000-00000abdc8f9</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>2b0f0d27-a69e-30c9-b3a6-1499ff955a30</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceId>bb719fee-0175-1000-ffff-ffffb73dd31a</sourceId>
+              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>e89b0470-bff2-323c-92e5-5fb2d3949070</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationId>896047e7-0175-1000-ffff-ffffc69204e4</destinationId>
+              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>1 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>33baee02-9354-3b7f-a910-6220a5f6108f</id>
-              <name />
-              <bendPoints>
-                <bendPoint x="-775.4788208007812" y="947.9116821289062" />
-              </bendPoints>
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>19336e9e-3581-3d83-bb51-b9af2f5a6005</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>alert</relationship>
-              <relationship>files</relationship>
-              <relationship>http</relationship>
-              <relationship>ssh</relationship>
-              <relationship>tls</relationship>
-              <relationship>flow</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
               <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>c010a48c-a3af-3cfc-9693-9885925e763e</id>
+              <id>8961779d-0175-1000-0000-00003ef237de</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceId>6b9a3cb4-e697-1540-a5fb-ea71cfce8f41</sourceId>
+              <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>46cdd7aa-91f0-307c-90aa-65747e558f25</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>3a82b9ea-a974-3750-ad78-275da67285e6</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>be18c77e-5e4e-3552-ac9b-892ab69a9d49</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>c4afb718-0170-1000-0000-000061284251</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>d59eabae-f47a-3d88-a1c9-e15c156202d6</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>c4afa3d5-0170-1000-ffff-ffffe437a306</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>67789d5d-ebdc-390c-adc8-f2111f467ad4</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>c4afc7bc-0170-1000-ffff-ffffae3762dd</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>47757d9f-c23d-33ca-9c88-3c8722bd00a5</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>c4afa3d5-0170-1000-ffff-ffffe437a306</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>f4bd2bed-88a1-396f-974b-19dcb5f40101</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e89b0470-bff2-323c-92e5-5fb2d3949070</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>d8f19295-5666-31a8-b701-52214c4db51d</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>9b860d17-8918-3956-a8b2-54ec49231c37</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>47757d9f-c23d-33ca-9c88-3c8722bd00a5</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>7eeb23aa-b112-3cc8-bb56-2ca20b456907</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>98594ca0-2fce-349c-8432-94f4d021d1fe</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>e89b0470-bff2-323c-92e5-5fb2d3949070</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>be18c77e-5e4e-3552-ac9b-892ab69a9d49</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>d7ef534a-9fb6-3973-b2fa-2738705db47a</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>d8f19295-5666-31a8-b701-52214c4db51d</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>c31d92b9-0e34-387d-86df-9536bf2ed9c9</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>1a038948-9e9a-3523-b899-990077bfd575</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>a88dab36-f543-32fc-8f45-aa11b99c0ff4</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>7417695b-cbde-3637-bb24-2e265bb2817c</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>46cdd7aa-91f0-307c-90aa-65747e558f25</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>19336e9e-3581-3d83-bb51-b9af2f5a6005</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>3e181820-b214-399d-a0df-474d15e2f146</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>1a038948-9e9a-3523-b899-990077bfd575</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>9e3adb6e-2266-390c-995d-76bc3aa5c3d8</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>e9962c43-9689-39b9-a1ba-cd2eac598802</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>a88dab36-f543-32fc-8f45-aa11b99c0ff4</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>d8f19295-5666-31a8-b701-52214c4db51d</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>1f219054-ea65-3700-a503-2d24acf2c754</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>7eeb23aa-b112-3cc8-bb56-2ca20b456907</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>8c6c7a60-0856-3a39-8ed6-6e7d0b98c0ae</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>d59eabae-f47a-3d88-a1c9-e15c156202d6</sourceId>
-              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>47757d9f-c23d-33ca-9c88-3c8722bd00a5</destinationId>
-              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationId>bb719fee-0175-1000-ffff-ffffb73dd31a</destinationId>
+              <destinationGroupId>895eab20-0175-1000-0000-00007e13267d</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -4926,21 +4819,23 @@
             </connection>
           </processGroup>
           <processGroup>
-            <id>83691174-683f-3c7c-8526-8fc00397aee1</id>
-            <name>Zeek</name>
-            <position x="-504.0" y="152.0" />
+            <id>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</id>
+            <name>Suricata</name>
+            <position x="-448.0" y="264.0" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <processor>
-              <id>39492e6c-faf0-3bfa-bd16-51a1f8be4c71</id>
-              <name>ListenBeats</name>
-              <position x="-1114.9155421491096" y="263.01449694104195" />
+              <id>8d1bef35-0175-1000-0000-0000746fa33d</id>
+              <name>RouteOnAttribute</name>
+              <position x="-984.0" y="640.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.beats.ListenBeats</class>
+              <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-beats-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -4948,64 +4843,34 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Local Network Interface</name>
-              </property>
-              <property>
-                <name>Port</name>
-                <value>6100</value>
-              </property>
-              <property>
-                <name>Receive Buffer Size</name>
-                <value>65507 B</value>
-              </property>
-              <property>
-                <name>Max Size of Message Queue</name>
-                <value>10000</value>
-              </property>
-              <property>
-                <name>Max Size of Socket Buffer</name>
-                <value>2 MB</value>
-              </property>
-              <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
-              </property>
-              <property>
-                <name>Max Batch Size</name>
-                <value>10000</value>
-              </property>
-              <property>
-                <name>Message Delimiter</name>
-                <value>,\n</value>
-              </property>
-              <property>
-                <name>Max Number of TCP Connections</name>
-                <value>100</value>
+                <name>Routing Strategy</name>
+                <value>Route to Property name</value>
               </property>
               <property>
-                <name>SSL_CONTEXT_SERVICE</name>
+                <name>dns</name>
+                <value>${event_type:equals("dns")}</value>
               </property>
               <property>
-                <name>Client Auth</name>
-                <value>REQUIRED</value>
+                <name>tls</name>
+                <value>${event_type:equals("tls")}</value>
               </property>
             </processor>
             <processor>
-              <id>ac17155e-32f1-3be8-843e-00877c210519</id>
-              <name>Prepend [</name>
-              <position x="-1124.1429683635654" y="475.2240314903287" />
+              <id>24e1d8ed-10f4-3b46-958c-f2fb676e3192</id>
+              <name>Normalize fields</name>
+              <position x="-987.5658863682004" y="234.96963460665665" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.standard.ReplaceText</class>
+              <class>org.apache.nifi.processors.standard.JoltTransformJSON</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -5013,50 +4878,69 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Regular Expression</name>
-                <value>(?s)(^.*$)</value>
+                <name>jolt-transform</name>
+                <value>jolt-transform-chain</value>
               </property>
               <property>
-                <name>Replacement Value</name>
-                <value>[</value>
+                <name>jolt-custom-class</name>
               </property>
               <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
+                <name>jolt-custom-modules</name>
               </property>
               <property>
-                <name>Maximum Buffer Size</name>
-                <value>1 MB</value>
+                <name>jolt-spec</name>
+                <value>[{
+	"operation": "shift",
+	"spec": {
+		"*": {
+			"json": {
+				"*": "[&amp;2].&amp;"
+			},
+			"host": {
+				"name": "[&amp;2].labels.source_host"
+			},
+			"source": "[&amp;1].labels.source"
+		}
+	}
+}, {
+	"operation": "shift",
+	"spec": {
+		"*": {
+            "dest_ip":"[&amp;1].destination.ip",
+            "dest_port":"[&amp;1].destination.port",
+            "src_ip":"[&amp;1].source.ip",
+            "src_port":"[&amp;1].source.port",
+			"*": "[&amp;1].&amp;"
+		}
+	}
+}]</value>
               </property>
               <property>
-                <name>Replacement Strategy</name>
-                <value>Prepend</value>
+                <name>Transform Cache Size</name>
+                <value>1</value>
               </property>
               <property>
-                <name>Evaluation Mode</name>
-                <value>Entire text</value>
-              </property>
-              <property>
-                <name>Line-by-Line Evaluation Mode</name>
-                <value>All</value>
+                <name>pretty_print</name>
+                <value>false</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>fec43039-de5d-1e3b-850a-5e25d7b93c76</id>
-              <name>UpdateAttribute</name>
-              <position x="-1121.584644408096" y="913.629598069974" />
+              <id>fd6b6513-51f8-3a96-a764-13bd39ec7f84</id>
+              <name>Partition records based on event_type</name>
+              <position x="-382.59400260581754" y="446.9900134408068" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <class>org.apache.nifi.processors.standard.PartitionRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-update-attribute-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -5064,56 +4948,36 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Delete Attributes Expression</name>
-              </property>
-              <property>
-                <name>Store State</name>
-                <value>Do not store state</value>
-              </property>
-              <property>
-                <name>Stateful Variables Initial Value</name>
-              </property>
-              <property>
-                <name>canonical-value-lookup-cache-size</name>
-                <value>100</value>
-              </property>
-              <property>
-                <name>data_index</name>
-                <value>logs-uninett-darknet</value>
-              </property>
-              <property>
-                <name>mime.type</name>
-                <value>application/json</value>
-              </property>
-              <property>
-                <name>enrich_ip2</name>
-                <value>/ip_dst_addr</value>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
               </property>
               <property>
-                <name>enrich_ip1</name>
-                <value>/ip_src_addr</value>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
               </property>
               <property>
-                <name>TLP</name>
-                <value>GREEN</value>
+                <name>event_type</name>
+                <value>/event_type</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              <autoTerminatedRelationship>original</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>9027e415-c8cd-355e-af16-0c635f43832f</id>
-              <name>Convert timestamp and add fields</name>
-              <position x="-472.77987807459795" y="696.7530680701591" />
+              <id>1a038948-9e9a-3523-b899-990077bfd575</id>
+              <name>Convert timestamp</name>
+              <position x="-385.7461824498648" y="233.13395543765722" />
               <styles />
               <comment />
               <class>org.apache.nifi.processors.standard.UpdateRecord</class>
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -5121,7 +4985,7 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
@@ -5139,40 +5003,29 @@
               </property>
               <property>
                 <name>/TLP</name>
-                <value>GREEN</value>
-              </property>
-              <property>
-                <name>/data_type</name>
-                <value>zeek</value>
-              </property>
-              <property>
-                <name>/data_index</name>
-                <value>logs-zeek-conn</value>
+                <value>AMBER</value>
               </property>
               <property>
                 <name>/mime.type</name>
                 <value>application/json</value>
               </property>
-              <property>
-                <name>/data_id</name>
-                <value>zeek_conn</value>
-              </property>
               <property>
                 <name>/timestamp</name>
-                <value>${field.value:multiply(1000):format('yyyy-MM-dd HH:mm:ss.SSSZ'):replace(' ','T'):replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
+                <value>${field.value:replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
               </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
             </processor>
             <processor>
-              <id>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</id>
-              <name>Remove filebeat fields</name>
-              <position x="-1121.1565561587029" y="706.9002449806696" />
+              <id>46cdd7aa-91f0-307c-90aa-65747e558f25</id>
+              <name>Add attributes</name>
+              <position x="-984.0" y="456.0" />
               <styles />
               <comment />
-              <class>org.apache.nifi.processors.jolt.record.JoltTransformRecord</class>
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
               <bundle>
                 <group>org.apache.nifi</group>
-                <artifact>nifi-jolt-record-nar</artifact>
-                <version>1.11.4</version>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>0 sec</schedulingPeriod>
@@ -5180,239 +5033,2517 @@
               <yieldPeriod>1 sec</yieldPeriod>
               <bulletinLevel>WARN</bulletinLevel>
               <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
               <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
               <executionNode>ALL</executionNode>
               <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>jolt-record-record-reader</name>
-                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
-              </property>
-              <property>
-                <name>jolt-record-record-writer</name>
-                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
-              </property>
-              <property>
-                <name>jolt-record-transform</name>
-                <value>jolt-transform-chain</value>
-              </property>
-              <property>
-                <name>jolt-record-custom-class</name>
-              </property>
-              <property>
-                <name>jolt-record-custom-modules</name>
+                <name>Delete Attributes Expression</name>
               </property>
               <property>
-                <name>jolt-record-spec</name>
-                <value>[
-  {
-    "operation": "shift",
-    "spec": {
-      "json": {
-        "ts": "timestamp",
-        "*": {
-          "@": "&amp;"
-        }
-      },
-      "host": {
-        "name": "host"
-      },
-      "source": "source"
-    }
-  },{
-    "operation" : "modify-overwrite-beta",
-    "spec" :
-    {
-      "timestamp": "=toString"
-    }
-  }
-]</value>
+                <name>Store State</name>
+                <value>Do not store state</value>
               </property>
               <property>
-                <name>jolt-record-transform-cache-size</name>
-                <value>1</value>
+                <name>Stateful Variables Initial Value</name>
               </property>
-              <autoTerminatedRelationship>original</autoTerminatedRelationship>
-            </processor>
-            <processor>
-              <id>06501f48-82c7-3c36-b99c-7368a322608b</id>
-              <name>Append ]</name>
-              <position x="-465.8393574027825" y="478.1159738496917" />
-              <styles />
-              <comment />
-              <class>org.apache.nifi.processors.standard.ReplaceText</class>
-              <bundle>
-                <group>org.apache.nifi</group>
-                <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
-              </bundle>
-              <maxConcurrentTasks>1</maxConcurrentTasks>
-              <schedulingPeriod>0 sec</schedulingPeriod>
-              <penalizationPeriod>30 sec</penalizationPeriod>
-              <yieldPeriod>1 sec</yieldPeriod>
-              <bulletinLevel>WARN</bulletinLevel>
-              <lossTolerant>false</lossTolerant>
-              <scheduledState>STOPPED</scheduledState>
-              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
-              <executionNode>ALL</executionNode>
-              <runDurationNanos>0</runDurationNanos>
               <property>
-                <name>Regular Expression</name>
-                <value>(?s)(^.*$)</value>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
               </property>
               <property>
-                <name>Replacement Value</name>
-                <value>]</value>
+                <name>data_id</name>
+                <value>suricata-${event_type}</value>
               </property>
               <property>
-                <name>Character Set</name>
-                <value>UTF-8</value>
+                <name>data_index</name>
+                <value>logs-${beats.sender:substringBeforeLast('/'):substringBeforeLast('.'):substringAfterLast('.')}-suricata-${event_type}</value>
               </property>
               <property>
-                <name>Maximum Buffer Size</name>
-                <value>1 MB</value>
+                <name>data_type</name>
+                <value>suricata</value>
               </property>
               <property>
-                <name>Replacement Strategy</name>
-                <value>Append</value>
+                <name>enrich_ip2</name>
+                <value>/destination/ip</value>
               </property>
               <property>
-                <name>Evaluation Mode</name>
-                <value>Entire text</value>
+                <name>enrich_ip1</name>
+                <value>/source/ip</value>
               </property>
               <property>
-                <name>Line-by-Line Evaluation Mode</name>
-                <value>All</value>
+                <name>TLP</name>
+                <value>AMBER</value>
               </property>
             </processor>
+            <inputPort>
+              <id>8d13c952-0175-1000-0000-00007e8f4cae</id>
+              <name>Input</name>
+              <position x="-928.0" y="16.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
             <outputPort>
-              <id>a28a9e95-1003-3ea6-9af6-a334c1aec07c</id>
+              <id>055308a4-d020-39a9-9da4-b165796ef717</id>
               <name>To enrichment</name>
-              <position x="-1065.7090714972117" y="1164.8389289189608" />
+              <position x="-928.0" y="1208.0" />
               <comments />
-              <scheduledState>STOPPED</scheduledState>
+              <scheduledState>RUNNING</scheduledState>
             </outputPort>
-            <funnel>
-              <id>06521038-335b-3139-839d-ab43a013ce03</id>
-              <position x="-1557.869726298236" y="758.8984861527665" />
-            </funnel>
-            <funnel>
-              <id>c8c0a13d-0170-1000-ffff-ffff874141fa</id>
-              <position x="248.5321508445502" y="703.4412774751572" />
-            </funnel>
-            <connection>
-              <id>216d4dcf-f425-33d0-a5c1-5cdf1402162e</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>06501f48-82c7-3c36-b99c-7368a322608b</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>3c739604-b69c-3e86-ba4c-a4739078837c</id>
-              <name />
-              <bendPoints />
-              <labelIndex>0</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>9027e415-c8cd-355e-af16-0c635f43832f</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>c8c0a13d-0170-1000-ffff-ffff874141fa</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>295b97b9-1291-3a83-8191-78a300d0feaa</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>39492e6c-faf0-3bfa-bd16-51a1f8be4c71</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>ac17155e-32f1-3be8-843e-00877c210519</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>c8be8213-0170-1000-0000-0000695bc36c</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>fec43039-de5d-1e3b-850a-5e25d7b93c76</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>a28a9e95-1003-3ea6-9af6-a334c1aec07c</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>OUTPUT_PORT</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-              <flowFileExpiration>0 sec</flowFileExpiration>
-              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-              <partitioningAttribute />
-              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-            </connection>
-            <connection>
-              <id>a056b363-8398-3877-8750-1bc9dcb9b1cd</id>
-              <name />
-              <bendPoints />
-              <labelIndex>1</labelIndex>
-              <zIndex>0</zIndex>
-              <sourceId>ac17155e-32f1-3be8-843e-00877c210519</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>06501f48-82c7-3c36-b99c-7368a322608b</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
-              <relationship>success</relationship>
-              <maxWorkQueueSize>10000</maxWorkQueueSize>
-              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <processGroup>
+              <id>8d1afcd0-0175-1000-ffff-ffffb3690a74</id>
+              <name>TLS events</name>
+              <position x="-384.0" y="872.0" />
+              <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>9279850b-0175-1000-0000-00001e74d182</id>
+                <name>Copy SNI</name>
+                <position x="504.0" y="320.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>replacement-value-strategy</name>
+                  <value>record-path-value</value>
+                </property>
+                <property>
+                  <name>/tls/sni_length</name>
+                  <value>/tls/sni</value>
+                </property>
+                <property>
+                  <name>/tls/sni_domain_length</name>
+                  <value>/tls/sni</value>
+                </property>
+                <property>
+                  <name>/tls/sni_domain</name>
+                  <value>/tls/sni</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <processor>
+                <id>349b3279-a821-1197-aaa6-7e5472dccbef</id>
+                <name>Add sni_domain ++</name>
+                <position x="504.0" y="544.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>replacement-value-strategy</name>
+                  <value>literal-value</value>
+                </property>
+                <property>
+                  <name>/tls/sni_length</name>
+                  <value>${field.value:length():toNumber()}</value>
+                </property>
+                <property>
+                  <name>/tls/sni_domain_length</name>
+                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')}):length():toNumber()}</value>
+                </property>
+                <property>
+                  <name>/tls/sni_domain</name>
+                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')})}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <processor>
+                <id>349b3291-a821-1197-0000-000032560c6a</id>
+                <name>Specify enrichment fields</name>
+                <position x="504.0" y="752.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-update-attribute-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>Delete Attributes Expression</name>
+                </property>
+                <property>
+                  <name>Store State</name>
+                  <value>Do not store state</value>
+                </property>
+                <property>
+                  <name>Stateful Variables Initial Value</name>
+                </property>
+                <property>
+                  <name>canonical-value-lookup-cache-size</name>
+                  <value>100</value>
+                </property>
+                <property>
+                  <name>enrich_domain1</name>
+                  <value>/tls/sni_domain</value>
+                </property>
+                <property>
+                  <name>enrich_fqdn1</name>
+                  <value>/tls/sni</value>
+                </property>
+              </processor>
+              <inputPort>
+                <id>92795a59-0175-1000-ffff-ffff89bc5f21</id>
+                <name>Input</name>
+                <position x="552.9999060626994" y="144.00001181679164" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </inputPort>
+              <outputPort>
+                <id>349b32d8-a821-1197-0000-000025a75a3b</id>
+                <name>Output</name>
+                <position x="552.0" y="976.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </outputPort>
+              <connection>
+                <id>9279996e-0175-1000-0000-000037fbed8b</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>92795a59-0175-1000-ffff-ffff89bc5f21</sourceId>
+                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>9279850b-0175-1000-0000-00001e74d182</destinationId>
+                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>349b3297-a821-1197-0000-0000717807b6</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>349b3279-a821-1197-aaa6-7e5472dccbef</sourceId>
+                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>349b3291-a821-1197-0000-000032560c6a</destinationId>
+                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>349b327f-a821-1197-ffff-ffff8946a863</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>9279850b-0175-1000-0000-00001e74d182</sourceId>
+                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>349b3279-a821-1197-aaa6-7e5472dccbef</destinationId>
+                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>349b32da-a821-1197-0000-000047979e25</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>349b3291-a821-1197-0000-000032560c6a</sourceId>
+                <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>349b32d8-a821-1197-0000-000025a75a3b</destinationId>
+                <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+            </processGroup>
+            <processGroup>
+              <id>8d1ad21f-0175-1000-0000-00003c540411</id>
+              <name>DNS events</name>
+              <position x="-1000.0" y="872.0" />
+              <comment />
+              <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+              <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+              <processor>
+                <id>8d37fe91-0175-1000-ffff-ffffb5c4de34</id>
+                <name>Add rrname_domain++</name>
+                <position x="1056.0" y="568.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>replacement-value-strategy</name>
+                  <value>literal-value</value>
+                </property>
+                <property>
+                  <name>/dns/rrname_domain</name>
+                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')})}</value>
+                </property>
+                <property>
+                  <name>/dns/rrname_length</name>
+                  <value>${field.value:length():toNumber()}</value>
+                </property>
+                <property>
+                  <name>/dns/rrname_domain_length</name>
+                  <value>${field.value:substringBeforeLast('.'):substringAfterLast('.'):append(${field.value:substringAfterLast('.'):prepend('.')}):length():toNumber()}</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <processor>
+                <id>8d312ef9-0175-1000-ffff-fffff23bbb0c</id>
+                <name>Route on DNS type</name>
+                <position x="1056.0" y="128.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>Routing Strategy</name>
+                  <value>Route to Property name</value>
+                </property>
+                <property>
+                  <name>answer</name>
+                  <value>${type:contains("answer")}</value>
+                </property>
+              </processor>
+              <processor>
+                <id>8d2262f6-0175-1000-0000-000029eaa6ef</id>
+                <name>Partition on dns message type</name>
+                <position x="432.0" y="136.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.PartitionRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>type</name>
+                  <value>/dns/type</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+                <autoTerminatedRelationship>original</autoTerminatedRelationship>
+              </processor>
+              <processor>
+                <id>8d36474f-0175-1000-0000-00003a8dd2d0</id>
+                <name>UpdateAttribute</name>
+                <position x="1056.0" y="768.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-update-attribute-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>Delete Attributes Expression</name>
+                </property>
+                <property>
+                  <name>Store State</name>
+                  <value>Do not store state</value>
+                </property>
+                <property>
+                  <name>Stateful Variables Initial Value</name>
+                </property>
+                <property>
+                  <name>canonical-value-lookup-cache-size</name>
+                  <value>100</value>
+                </property>
+                <property>
+                  <name>enrich_domain1</name>
+                  <value>/dns/rrname_domain</value>
+                </property>
+                <property>
+                  <name>enrich_fqdn1</name>
+                  <value>/dns/rrname</value>
+                </property>
+              </processor>
+              <processor>
+                <id>8d34409e-0175-1000-ffff-ffff99eb371d</id>
+                <name>Extract rrname_domain++</name>
+                <position x="1056.0" y="368.0" />
+                <styles />
+                <comment />
+                <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+                <bundle>
+                  <group>org.apache.nifi</group>
+                  <artifact>nifi-standard-nar</artifact>
+                  <version>1.12.1</version>
+                </bundle>
+                <maxConcurrentTasks>1</maxConcurrentTasks>
+                <schedulingPeriod>0 sec</schedulingPeriod>
+                <penalizationPeriod>30 sec</penalizationPeriod>
+                <yieldPeriod>1 sec</yieldPeriod>
+                <bulletinLevel>WARN</bulletinLevel>
+                <lossTolerant>false</lossTolerant>
+                <scheduledState>RUNNING</scheduledState>
+                <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+                <executionNode>ALL</executionNode>
+                <runDurationNanos>0</runDurationNanos>
+                <property>
+                  <name>record-reader</name>
+                  <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+                </property>
+                <property>
+                  <name>record-writer</name>
+                  <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+                </property>
+                <property>
+                  <name>replacement-value-strategy</name>
+                  <value>literal-value</value>
+                </property>
+                <property>
+                  <name>/dns/rrname_domain</name>
+                  <value>/dns/rrname</value>
+                </property>
+                <property>
+                  <name>/dns/rrname_length</name>
+                  <value>/dns/rrname</value>
+                </property>
+                <property>
+                  <name>/dns/rrname_domain_length</name>
+                  <value>/dns/rrname</value>
+                </property>
+                <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              </processor>
+              <inputPort>
+                <id>8d212c22-0175-1000-ffff-fffffbc39157</id>
+                <name>Input</name>
+                <position x="488.0" y="0.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </inputPort>
+              <outputPort>
+                <id>8d211b58-0175-1000-0000-000003eb5f3b</id>
+                <name>Output</name>
+                <position x="448.0" y="808.0" />
+                <comments />
+                <scheduledState>RUNNING</scheduledState>
+              </outputPort>
+              <connection>
+                <id>8d3979b7-0175-1000-ffff-ffffe2efe898</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d37fe91-0175-1000-ffff-ffffb5c4de34</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>8d36474f-0175-1000-0000-00003a8dd2d0</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>8d3afc9a-0175-1000-ffff-ffffe1ef144c</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d36474f-0175-1000-0000-00003a8dd2d0</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>8d211b58-0175-1000-0000-000003eb5f3b</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>8d30f240-0175-1000-ffff-ffffa4cc8a58</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d212c22-0175-1000-ffff-fffffbc39157</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>INPUT_PORT</sourceType>
+                <destinationId>8d2262f6-0175-1000-0000-000029eaa6ef</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship />
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>8d3b1d93-0175-1000-ffff-ffffe953d6b9</id>
+                <name />
+                <bendPoints>
+                  <bendPoint x="568.0" y="400.0" />
+                </bendPoints>
+                <labelIndex>0</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d312ef9-0175-1000-ffff-fffff23bbb0c</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>8d211b58-0175-1000-0000-000003eb5f3b</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>OUTPUT_PORT</destinationType>
+                <relationship>unmatched</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>8d3821ce-0175-1000-0000-000046a72d11</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d34409e-0175-1000-ffff-ffff99eb371d</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>8d37fe91-0175-1000-ffff-ffffb5c4de34</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>8d3281c3-0175-1000-ffff-ffffed50fa50</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d2262f6-0175-1000-0000-000029eaa6ef</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>8d312ef9-0175-1000-ffff-fffff23bbb0c</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship>success</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+              <connection>
+                <id>8d3485f4-0175-1000-0000-0000175959ff</id>
+                <name />
+                <bendPoints />
+                <labelIndex>1</labelIndex>
+                <zIndex>0</zIndex>
+                <sourceId>8d312ef9-0175-1000-ffff-fffff23bbb0c</sourceId>
+                <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+                <sourceType>PROCESSOR</sourceType>
+                <destinationId>8d34409e-0175-1000-ffff-ffff99eb371d</destinationId>
+                <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+                <destinationType>PROCESSOR</destinationType>
+                <relationship>answer</relationship>
+                <maxWorkQueueSize>10000</maxWorkQueueSize>
+                <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+                <flowFileExpiration>0 sec</flowFileExpiration>
+                <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+                <partitioningAttribute />
+                <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+              </connection>
+            </processGroup>
+            <connection>
+              <id>349b32bb-a821-1197-ffff-ffff81dc7ff2</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8d1bef35-0175-1000-0000-0000746fa33d</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>92795a59-0175-1000-ffff-ffff89bc5f21</destinationId>
+              <destinationGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</destinationGroupId>
+              <destinationType>INPUT_PORT</destinationType>
+              <relationship>tls</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8d19c8d7-0175-1000-ffff-ffffe3aa385d</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>1a038948-9e9a-3523-b899-990077bfd575</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>46cdd7aa-91f0-307c-90aa-65747e558f25</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8d13df9c-0175-1000-0000-0000562b802e</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8d13c952-0175-1000-0000-00007e8f4cae</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>f9a8aee6-502f-3eb9-8806-8964276d4ca0</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>24e1d8ed-10f4-3b46-958c-f2fb676e3192</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>1a038948-9e9a-3523-b899-990077bfd575</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8d2364b0-0175-1000-ffff-ffffa2a4601f</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8d1bef35-0175-1000-0000-0000746fa33d</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>8d212c22-0175-1000-ffff-fffffbc39157</destinationId>
+              <destinationGroupId>8d1ad21f-0175-1000-0000-00003c540411</destinationGroupId>
+              <destinationType>INPUT_PORT</destinationType>
+              <relationship>dns</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8d1a6818-0175-1000-ffff-ffffeebd7e98</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>46cdd7aa-91f0-307c-90aa-65747e558f25</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>349b32e1-a821-1197-0000-00000d7cca30</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>349b32d8-a821-1197-0000-000025a75a3b</sourceId>
+              <sourceGroupId>8d1afcd0-0175-1000-ffff-ffffb3690a74</sourceGroupId>
+              <sourceType>OUTPUT_PORT</sourceType>
+              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>8d1c1701-0175-1000-ffff-fffff7364622</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>fd6b6513-51f8-3a96-a764-13bd39ec7f84</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>8d1bef35-0175-1000-0000-0000746fa33d</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>9266feff-0175-1000-ffff-ffff8c7d68c1</id>
+              <name />
+              <bendPoints>
+                <bendPoint x="-1208.0" y="952.0" />
+              </bendPoints>
+              <labelIndex>0</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8d1bef35-0175-1000-0000-0000746fa33d</sourceId>
+              <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>unmatched</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>9266e0c5-0175-1000-0000-00006aafc0f8</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8d211b58-0175-1000-0000-000003eb5f3b</sourceId>
+              <sourceGroupId>8d1ad21f-0175-1000-0000-00003c540411</sourceGroupId>
+              <sourceType>OUTPUT_PORT</sourceType>
+              <destinationId>055308a4-d020-39a9-9da4-b165796ef717</destinationId>
+              <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</id>
+            <name>Mysql</name>
+            <position x="-440.0" y="1272.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>14453e90-7646-1485-ffff-ffff81f3c683</id>
+              <name>Add header</name>
+              <position x="344.0" y="-8.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ReplaceText</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Regular Expression</name>
+                <value>(?s)(^.*$)</value>
+              </property>
+              <property>
+                <name>Replacement Value</name>
+                <value>timestamp,serverhost,username,host,connectionid,queryid,operation,database,object,retcode
+</value>
+              </property>
+              <property>
+                <name>Character Set</name>
+                <value>UTF-8</value>
+              </property>
+              <property>
+                <name>Maximum Buffer Size</name>
+                <value>1 MB</value>
+              </property>
+              <property>
+                <name>Replacement Strategy</name>
+                <value>Prepend</value>
+              </property>
+              <property>
+                <name>Evaluation Mode</name>
+                <value>Entire text</value>
+              </property>
+              <property>
+                <name>Line-by-Line Evaluation Mode</name>
+                <value>All</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>e0bd3907-2d13-1407-b2dd-48591e65e59d</id>
+              <name>UpdateRecord</name>
+              <position x="-336.0" y="416.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
+              </property>
+              <property>
+                <name>/event_type</name>
+                <value>log</value>
+              </property>
+              <property>
+                <name>/labels/source_host</name>
+                <value>${source_host}</value>
+              </property>
+              <property>
+                <name>/timestamp</name>
+                <value>${field.value:toDate('yyMMdd HH:mm:ss'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>50813f6b-a5f6-1a98-8ae4-115134714332</id>
+              <name>UpdateRecord</name>
+              <position x="352.0" y="472.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
+              </property>
+              <property>
+                <name>/event_type</name>
+                <value>audit</value>
+              </property>
+              <property>
+                <name>/labels/source_host</name>
+                <value>${source_host}</value>
+              </property>
+              <property>
+                <name>/timestamp</name>
+                <value>${field.value:toDate('yyyyMMdd HH:mm:ss'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>e4353681-23e9-15af-0000-000032ea35e3</id>
+              <name>RouteOnAttribute</name>
+              <position x="-352.0" y="0.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.RouteOnAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Routing Strategy</name>
+                <value>Route to Property name</value>
+              </property>
+              <property>
+                <name>audit</name>
+                <value>${source_file:contains("audit")}</value>
+              </property>
+            </processor>
+            <processor>
+              <id>f92d3f77-958a-1344-bd3b-7c93457e5c12</id>
+              <name>Extract message</name>
+              <position x="-360.0" y="-216.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>bc8e5957-0175-1000-0000-00003346421d</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>true</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>92693a34-99da-1004-adfb-bdf4aa7e1c30</id>
+              <name>Convert to json</name>
+              <position x="352.0" y="240.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>14453a95-7646-1485-0000-00002c675762</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>false</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>48723b8e-fae0-14e6-afdc-85c239646dc0</id>
+              <name>UpdateAttribute</name>
+              <position x="-320.0" y="648.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-mysql</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/client.ip</value>
+              </property>
+            </processor>
+            <processor>
+              <id>14453a41-7646-1485-b398-28f819de4a45</id>
+              <name>Convert to json</name>
+              <position x="-336.0" y="200.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>70ea12d7-0176-1000-ffff-ffffee2ee306</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>false</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <inputPort>
+              <id>7f683020-779c-1bc9-85da-5bad079d5d9d</id>
+              <name>Input</name>
+              <position x="-312.0" y="-336.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>bcbb33ba-112e-1f53-8982-d5ae9f0e701f</id>
+              <name>Output</name>
+              <position x="-256.0" y="960.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>14453eaa-7646-1485-0000-000070b97065</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>14453e90-7646-1485-ffff-ffff81f3c683</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>92693a34-99da-1004-adfb-bdf4aa7e1c30</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>e43535a1-23e9-15af-9f98-2061dd6f97d6</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>92693a34-99da-1004-adfb-bdf4aa7e1c30</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>50813f6b-a5f6-1a98-8ae4-115134714332</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>70e77065-0176-1000-0000-00001479fdf4</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e0bd3907-2d13-1407-b2dd-48591e65e59d</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>48723b8e-fae0-14e6-afdc-85c239646dc0</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>cf95350a-de6c-1a4b-8183-8f9cfa11449a</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>7f683020-779c-1bc9-85da-5bad079d5d9d</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>f92d3f77-958a-1344-bd3b-7c93457e5c12</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>14453fcf-7646-1485-ffff-ffff952df142</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e4353681-23e9-15af-0000-000032ea35e3</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>14453e90-7646-1485-ffff-ffff81f3c683</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>audit</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>3e21311d-dc5c-143f-b39e-d8fb8c9fd36d</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>50813f6b-a5f6-1a98-8ae4-115134714332</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>48723b8e-fae0-14e6-afdc-85c239646dc0</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>14453a4b-7646-1485-ffff-fffffc8f5285</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e4353681-23e9-15af-0000-000032ea35e3</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>14453a41-7646-1485-b398-28f819de4a45</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>unmatched</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>7fe931b3-82b3-1699-b49a-d380dd14a5b8</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>48723b8e-fae0-14e6-afdc-85c239646dc0</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>bcbb33ba-112e-1f53-8982-d5ae9f0e701f</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>a35e3744-5906-1ee9-abc4-205356ca01d1</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>f92d3f77-958a-1344-bd3b-7c93457e5c12</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>e4353681-23e9-15af-0000-000032ea35e3</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>70e8f3cb-0176-1000-0000-00006d2cdbf5</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>14453a41-7646-1485-b398-28f819de4a45</sourceId>
+              <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>e0bd3907-2d13-1407-b2dd-48591e65e59d</destinationId>
+              <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>5d04357e-423c-1ab5-a7a4-44565abfed7f</id>
+            <name>Haproxy</name>
+            <position x="-448.0" y="664.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>c9763c4c-7186-1460-871a-b5fd00ca3241</id>
+              <name>UpdateRecord</name>
+              <position x="352.0" y="472.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
+              </property>
+              <property>
+                <name>/labels/source_host</name>
+                <value>${source_host}</value>
+              </property>
+              <property>
+                <name>/timestamp</name>
+                <value>${field.value:toDate('dd/MMM/yyyy:HH:mm:ss.SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>e4c8356d-54ad-15b5-94fe-799d9465aa51</id>
+              <name>Extract message</name>
+              <position x="352.0" y="280.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>bc8e5957-0175-1000-0000-00003346421d</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>true</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>f6e63fd3-6150-1d72-a58a-46b43bc5d5c2</id>
+              <name>Convert to json</name>
+              <position x="1064.0" y="272.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>56ebe0aa-0176-1000-ffff-ffffbd212f01</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>false</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>7fbd38e8-60a2-1503-8a6c-ffc6b156b3b0</id>
+              <name>UpdateAttribute</name>
+              <position x="1072.0" y="472.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-haproxy</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/client.ip</value>
+              </property>
+            </processor>
+            <inputPort>
+              <id>65a33e05-e157-1bfc-8741-adf11b3df720</id>
+              <name>Input</name>
+              <position x="397.9999517774115" y="110.99999315685733" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>328b35e2-eb52-1f47-b84d-52941eff8a07</id>
+              <name>Output</name>
+              <position x="1120.0" y="808.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>960f3ac9-95dc-103d-a70a-ca3b070851a4</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>7fbd38e8-60a2-1503-8a6c-ffc6b156b3b0</sourceId>
+              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>328b35e2-eb52-1f47-b84d-52941eff8a07</destinationId>
+              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>0ecb3e12-768e-1896-a850-2a2bec52eb95</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>c9763c4c-7186-1460-871a-b5fd00ca3241</sourceId>
+              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>7fbd38e8-60a2-1503-8a6c-ffc6b156b3b0</destinationId>
+              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>b5d43cea-5555-10b0-b75f-b88a95e9c6aa</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>65a33e05-e157-1bfc-8741-adf11b3df720</sourceId>
+              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>e4c8356d-54ad-15b5-94fe-799d9465aa51</destinationId>
+              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>484a3eab-4af3-11cd-abe2-d5ee6fc1a291</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>e4c8356d-54ad-15b5-94fe-799d9465aa51</sourceId>
+              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>f6e63fd3-6150-1d72-a58a-46b43bc5d5c2</destinationId>
+              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>39ef3a2d-874e-11a6-87be-0b3582fa43de</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>f6e63fd3-6150-1d72-a58a-46b43bc5d5c2</sourceId>
+              <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>c9763c4c-7186-1460-871a-b5fd00ca3241</destinationId>
+              <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>7263390f-914c-1f6e-9451-75f908ed8816</id>
+            <name>Elasticsearch</name>
+            <position x="-1904.0" y="488.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>295133bd-42e6-1b08-80c5-bea2e19921fc</id>
+              <name>UpdateAttribute</name>
+              <position x="360.0" y="600.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-elasticsearch</value>
+              </property>
+            </processor>
+            <inputPort>
+              <id>39ce3238-1ebd-1c2c-b724-01d18f147b6f</id>
+              <name>Input</name>
+              <position x="408.0" y="320.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>bbc63756-9681-13b9-8c07-20c82f62ceca</id>
+              <name>Output</name>
+              <position x="408.0" y="920.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>15e0341e-6dd3-172a-b2b5-8f1d5740fea1</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>39ce3238-1ebd-1c2c-b724-01d18f147b6f</sourceId>
+              <sourceGroupId>7263390f-914c-1f6e-9451-75f908ed8816</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>295133bd-42e6-1b08-80c5-bea2e19921fc</destinationId>
+              <destinationGroupId>7263390f-914c-1f6e-9451-75f908ed8816</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>af99379e-bf26-19c5-bd70-bd6d405fb0b7</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>295133bd-42e6-1b08-80c5-bea2e19921fc</sourceId>
+              <sourceGroupId>7263390f-914c-1f6e-9451-75f908ed8816</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>bbc63756-9681-13b9-8c07-20c82f62ceca</destinationId>
+              <destinationGroupId>7263390f-914c-1f6e-9451-75f908ed8816</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</id>
+            <name>Keycloak</name>
+            <position x="-440.0" y="1064.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>8e17350e-583e-1130-8ec7-bd2dc5d4f361</id>
+              <name>UpdateAttribute</name>
+              <position x="344.0" y="736.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-keycloak</value>
+              </property>
+            </processor>
+            <processor>
+              <id>fbbe3f9c-5336-11c9-0000-00003ab5dde5</id>
+              <name>Fix timestamp</name>
+              <position x="352.0" y="480.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.jolt.record.JoltTransformRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-jolt-record-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>jolt-record-record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>jolt-record-record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>jolt-record-transform</name>
+                <value>jolt-transform-chain</value>
+              </property>
+              <property>
+                <name>jolt-record-custom-class</name>
+              </property>
+              <property>
+                <name>jolt-record-custom-modules</name>
+              </property>
+              <property>
+                <name>jolt-record-spec</name>
+                <value>[
+  {
+    "operation": "shift",
+    "spec": {
+      "timestamp": {
+        "1": "timestamp"
+      },
+      "*": "&amp;"
+    }
+  }
+]</value>
+              </property>
+              <property>
+                <name>jolt-record-transform-cache-size</name>
+                <value>1</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              <autoTerminatedRelationship>original</autoTerminatedRelationship>
+            </processor>
+            <inputPort>
+              <id>10cb3b64-e867-1d81-bd59-eb9cf6883f24</id>
+              <name>Input</name>
+              <position x="408.0" y="320.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>84dc3511-1322-175b-8083-9729037f8edb</id>
+              <name>Output</name>
+              <position x="392.0" y="984.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>fbbe3fbf-5336-11c9-ffff-ffffb7c3576e</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>fbbe3f9c-5336-11c9-0000-00003ab5dde5</sourceId>
+              <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>8e17350e-583e-1130-8ec7-bd2dc5d4f361</destinationId>
+              <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>50c83129-28e1-1d45-bafe-912df3cdf284</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>10cb3b64-e867-1d81-bd59-eb9cf6883f24</sourceId>
+              <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>fbbe3f9c-5336-11c9-0000-00003ab5dde5</destinationId>
+              <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>fbbe3ede-5336-11c9-8870-deb7fffd14ae</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>8e17350e-583e-1130-8ec7-bd2dc5d4f361</sourceId>
+              <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>84dc3511-1322-175b-8083-9729037f8edb</destinationId>
+              <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>83691174-683f-3c7c-8526-8fc00397aee1</id>
+            <name>Zeek</name>
+            <position x="-448.0" y="464.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>fec43039-de5d-1e3b-850a-5e25d7b93c76</id>
+              <name>UpdateAttribute</name>
+              <position x="-1121.584644408096" y="913.629598069974" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-uninett-darknet</value>
+              </property>
+              <property>
+                <name>mime.type</name>
+                <value>application/json</value>
+              </property>
+              <property>
+                <name>enrich_ip2</name>
+                <value>/destination/ip</value>
+              </property>
+              <property>
+                <name>enrich_ip1</name>
+                <value>/source/ip</value>
+              </property>
+              <property>
+                <name>TLP</name>
+                <value>AMBER</value>
+              </property>
+            </processor>
+            <processor>
+              <id>9027e415-c8cd-355e-af16-0c635f43832f</id>
+              <name>Convert timestamp and add fields</name>
+              <position x="-472.77987807459795" y="696.7530680701591" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
+              </property>
+              <property>
+                <name>/data_type</name>
+                <value>zeek</value>
+              </property>
+              <property>
+                <name>/data_index</name>
+                <value>logs-zeek-conn</value>
+              </property>
+              <property>
+                <name>/data_id</name>
+                <value>zeek_conn</value>
+              </property>
+              <property>
+                <name>/timestamp</name>
+                <value>${field.value:multiply(1000):format('yyyy-MM-dd HH:mm:ss.SSSZ'):replace(' ','T'):replaceFirst('\+(\d\d)(\d\d)','+$1:$2')}</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</id>
+              <name>Normalize fields</name>
+              <position x="-1121.1565561587029" y="706.9002449806696" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.jolt.record.JoltTransformRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-jolt-record-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>jolt-record-record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>jolt-record-record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>jolt-record-transform</name>
+                <value>jolt-transform-chain</value>
+              </property>
+              <property>
+                <name>jolt-record-custom-class</name>
+              </property>
+              <property>
+                <name>jolt-record-custom-modules</name>
+              </property>
+              <property>
+                <name>jolt-record-spec</name>
+                <value>[{
+    "operation": "modify-overwrite-beta",
+    "spec": {
+      "*": "=recursivelySquashNulls"
+    }
+  },{
+	"operation": "shift",
+	"spec": {
+		"*": {
+			"json": {
+				"*": "[&amp;2].&amp;"
+			},
+			"host": {
+				"name": "[&amp;2].labels.source_host"
+			},
+			"source": "[&amp;1].labels.source"
+		}
+	}
+}, {
+	"operation": "shift",
+	"spec": {
+		"*": {
+			"ts": "[&amp;1].timestamp",
+            "id.resp_h":"[&amp;1].destination.ip",
+            "id.resp_p":"[&amp;1].destination.port",
+            "id.orig_h":"[&amp;1].source.ip",
+            "id.orig_p":"[&amp;1].source.port",
+			"*": "[&amp;1].&amp;"
+		}
+	}
+}, {
+	"operation": "modify-overwrite-beta",
+	"spec": {
+		"*": {
+			"timestamp": "=toString"
+		}
+	}
+}]</value>
+              </property>
+              <property>
+                <name>jolt-record-transform-cache-size</name>
+                <value>1</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+              <autoTerminatedRelationship>original</autoTerminatedRelationship>
+            </processor>
+            <inputPort>
+              <id>349b3362-a821-1197-ffff-ffff91d0e6c0</id>
+              <name>Input</name>
+              <position x="-1072.0" y="520.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>a28a9e95-1003-3ea6-9af6-a334c1aec07c</id>
+              <name>To enrichment</name>
+              <position x="-1065.7090714972117" y="1164.8389289189608" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>c8be8213-0170-1000-0000-0000695bc36c</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>fec43039-de5d-1e3b-850a-5e25d7b93c76</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>a28a9e95-1003-3ea6-9af6-a334c1aec07c</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>2d0f222e-d08e-31fd-b5e1-1ce178368e4c</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>9027e415-c8cd-355e-af16-0c635f43832f</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>c8be6e60-0170-1000-ffff-ffffe34d52ef</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>9027e415-c8cd-355e-af16-0c635f43832f</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>fec43039-de5d-1e3b-850a-5e25d7b93c76</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+            <connection>
+              <id>349b3364-a821-1197-0000-000063d0c208</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>349b3362-a821-1197-ffff-ffff91d0e6c0</sourceId>
+              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</destinationId>
+              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
+          </processGroup>
+          <processGroup>
+            <id>31b13b40-8e26-1798-9777-2272881c6031</id>
+            <name>Zookeeper</name>
+            <position x="-440.0" y="1488.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>b09b367b-060f-1e74-9a96-ca5ba5f88858</id>
+              <name>UpdateRecord</name>
+              <position x="352.0" y="472.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.UpdateRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>replacement-value-strategy</name>
+                <value>literal-value</value>
+              </property>
+              <property>
+                <name>/labels/source_host</name>
+                <value>${source_host}</value>
+              </property>
+              <property>
+                <name>/timestamp</name>
+                <value>${field.value:toDate('yyyy-MM-dd HH:mm:ss,SSS'):format("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")}</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>dd3b361c-4e9c-158c-ba31-61006a0b21b7</id>
+              <name>UpdateAttribute</name>
+              <position x="1072.0" y="472.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-zookeeper</value>
+              </property>
+            </processor>
+            <processor>
+              <id>4b1c38b7-8f98-1a81-96c9-17e3eccc45b2</id>
+              <name>Extract message</name>
+              <position x="352.0" y="280.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>179dd31f-89ed-3179-adb2-85a9c61869ce</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>bc8e5957-0175-1000-0000-00003346421d</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>true</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <processor>
+              <id>38f03e95-db26-1287-be1a-4218f647596a</id>
+              <name>Convert to json</name>
+              <position x="1064.0" y="272.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.standard.ConvertRecord</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-standard-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>record-reader</name>
+                <value>7504a565-0176-1000-ffff-ffff9c0f0741</value>
+              </property>
+              <property>
+                <name>record-writer</name>
+                <value>17b30955-5464-3709-8a32-69a459850cfa</value>
+              </property>
+              <property>
+                <name>include-zero-record-flowfiles</name>
+                <value>false</value>
+              </property>
+              <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+            </processor>
+            <inputPort>
+              <id>a77d3c33-9575-1926-b230-9cf1fca55e7e</id>
+              <name>Input</name>
+              <position x="397.9999517774115" y="110.99999315685733" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>f1e73393-065a-1450-9ad0-fd7cdb57853f</id>
+              <name>Output</name>
+              <position x="1120.0" y="808.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>4b353d86-8a69-1ca1-bc1c-8db0049f5886</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>38f03e95-db26-1287-be1a-4218f647596a</sourceId>
+              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
+              <sourceType>PROCESSOR</sourceType>
+              <destinationId>b09b367b-060f-1e74-9a96-ca5ba5f88858</destinationId>
+              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
               <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>ee8556df-9826-3d45-82de-5c1c876db435</id>
+              <id>b05339e8-7bbc-1975-a9b2-4bc789dda2df</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
-              <sourceType>PROCESSOR</sourceType>
-              <destinationId>06521038-335b-3139-839d-ab43a013ce03</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
+              <sourceId>a77d3c33-9575-1926-b230-9cf1fca55e7e</sourceId>
+              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>4b1c38b7-8f98-1a81-96c9-17e3eccc45b2</destinationId>
+              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
@@ -5421,16 +7552,16 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>2d0f222e-d08e-31fd-b5e1-1ce178368e4c</id>
+              <id>5d6f3995-2075-11db-ba4b-1b76e1ed6473</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>3bf497f2-3aed-3465-b91c-72ef6e53f0ea</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceId>b09b367b-060f-1e74-9a96-ca5ba5f88858</sourceId>
+              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>9027e415-c8cd-355e-af16-0c635f43832f</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+              <destinationId>dd3b361c-4e9c-158c-ba31-61006a0b21b7</destinationId>
+              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
               <destinationType>PROCESSOR</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
@@ -5441,18 +7572,18 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>ed8609a1-bd09-391e-831b-1ab5b53a5049</id>
+              <id>2a0131b7-9c0d-157d-a9ac-abd12398f2a8</id>
               <name />
               <bendPoints />
-              <labelIndex>0</labelIndex>
+              <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>06501f48-82c7-3c36-b99c-7368a322608b</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceId>4b1c38b7-8f98-1a81-96c9-17e3eccc45b2</sourceId>
+              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>c8c0a13d-0170-1000-ffff-ffff874141fa</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
+              <destinationId>38f03e95-db26-1287-be1a-4218f647596a</destinationId>
+              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
@@ -5461,17 +7592,17 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
             <connection>
-              <id>c8be6e60-0170-1000-ffff-ffffe34d52ef</id>
+              <id>5a2e3db4-49d3-187d-9db9-3f0b48a2c6af</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>9027e415-c8cd-355e-af16-0c635f43832f</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceId>dd3b361c-4e9c-158c-ba31-61006a0b21b7</sourceId>
+              <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>fec43039-de5d-1e3b-850a-5e25d7b93c76</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>PROCESSOR</destinationType>
+              <destinationId>f1e73393-065a-1450-9ad0-fd7cdb57853f</destinationId>
+              <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
               <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
@@ -5480,19 +7611,102 @@
               <partitioningAttribute />
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
+          </processGroup>
+          <processGroup>
+            <id>f0f934a9-853a-1a19-a9cc-f878a5606bce</id>
+            <name>Kibana</name>
+            <position x="-440.0" y="864.0" />
+            <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
+            <processor>
+              <id>992c3710-1c87-169c-ab17-d2597387a25e</id>
+              <name>UpdateAttribute</name>
+              <position x="360.0" y="512.0" />
+              <styles />
+              <comment />
+              <class>org.apache.nifi.processors.attributes.UpdateAttribute</class>
+              <bundle>
+                <group>org.apache.nifi</group>
+                <artifact>nifi-update-attribute-nar</artifact>
+                <version>1.12.1</version>
+              </bundle>
+              <maxConcurrentTasks>1</maxConcurrentTasks>
+              <schedulingPeriod>0 sec</schedulingPeriod>
+              <penalizationPeriod>30 sec</penalizationPeriod>
+              <yieldPeriod>1 sec</yieldPeriod>
+              <bulletinLevel>WARN</bulletinLevel>
+              <lossTolerant>false</lossTolerant>
+              <scheduledState>RUNNING</scheduledState>
+              <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+              <executionNode>ALL</executionNode>
+              <runDurationNanos>0</runDurationNanos>
+              <property>
+                <name>Delete Attributes Expression</name>
+              </property>
+              <property>
+                <name>Store State</name>
+                <value>Do not store state</value>
+              </property>
+              <property>
+                <name>Stateful Variables Initial Value</name>
+              </property>
+              <property>
+                <name>canonical-value-lookup-cache-size</name>
+                <value>100</value>
+              </property>
+              <property>
+                <name>data_index</name>
+                <value>logs-kibana</value>
+              </property>
+            </processor>
+            <inputPort>
+              <id>a22b30c4-53f8-19c0-bdbb-0632e99a17d9</id>
+              <name>Input</name>
+              <position x="408.0" y="320.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </inputPort>
+            <outputPort>
+              <id>887c36a6-39d6-1b60-8a83-d4d10ea7e03b</id>
+              <name>Output</name>
+              <position x="408.0" y="760.0" />
+              <comments />
+              <scheduledState>RUNNING</scheduledState>
+            </outputPort>
+            <connection>
+              <id>cc403fb4-8d68-1c68-82c3-b9af4affddaa</id>
+              <name />
+              <bendPoints />
+              <labelIndex>1</labelIndex>
+              <zIndex>0</zIndex>
+              <sourceId>a22b30c4-53f8-19c0-bdbb-0632e99a17d9</sourceId>
+              <sourceGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</sourceGroupId>
+              <sourceType>INPUT_PORT</sourceType>
+              <destinationId>992c3710-1c87-169c-ab17-d2597387a25e</destinationId>
+              <destinationGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</destinationGroupId>
+              <destinationType>PROCESSOR</destinationType>
+              <relationship />
+              <maxWorkQueueSize>10000</maxWorkQueueSize>
+              <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+              <flowFileExpiration>0 sec</flowFileExpiration>
+              <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+              <partitioningAttribute />
+              <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+            </connection>
             <connection>
-              <id>2a6e865b-4b36-3807-8bd7-eb2f39f95d4f</id>
+              <id>b9e33c29-910f-134a-8390-2970800d7fcf</id>
               <name />
               <bendPoints />
               <labelIndex>1</labelIndex>
               <zIndex>0</zIndex>
-              <sourceId>ac17155e-32f1-3be8-843e-00877c210519</sourceId>
-              <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+              <sourceId>992c3710-1c87-169c-ab17-d2597387a25e</sourceId>
+              <sourceGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</sourceGroupId>
               <sourceType>PROCESSOR</sourceType>
-              <destinationId>06521038-335b-3139-839d-ab43a013ce03</destinationId>
-              <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
-              <destinationType>FUNNEL</destinationType>
-              <relationship>failure</relationship>
+              <destinationId>887c36a6-39d6-1b60-8a83-d4d10ea7e03b</destinationId>
+              <destinationGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</destinationGroupId>
+              <destinationType>OUTPUT_PORT</destinationType>
+              <relationship>success</relationship>
               <maxWorkQueueSize>10000</maxWorkQueueSize>
               <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
               <flowFileExpiration>0 sec</flowFileExpiration>
@@ -5501,12 +7715,446 @@
               <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
             </connection>
           </processGroup>
+          <connection>
+            <id>fbbe3f1b-5336-11c9-ffff-ffffd29d2f5c</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>84dc3511-1322-175b-8083-9729037f8edb</sourceId>
+            <sourceGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>56e5f029-0176-1000-ffff-fffff7512a3b</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>328b35e2-eb52-1f47-b84d-52941eff8a07</sourceId>
+            <sourceGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>e43535d0-23e9-15af-ffff-ffffa44d6172</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>bcbb33ba-112e-1f53-8982-d5ae9f0e701f</sourceId>
+            <sourceGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>349b339b-a821-1197-0000-00002e648df6</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>a28a9e95-1003-3ea6-9af6-a334c1aec07c</sourceId>
+            <sourceGroupId>83691174-683f-3c7c-8526-8fc00397aee1</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>75109cc1-0176-1000-ffff-ffff86db235d</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>f1e73393-065a-1450-9ad0-fd7cdb57853f</sourceId>
+            <sourceGroupId>31b13b40-8e26-1798-9777-2272881c6031</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>8d0ea3d4-0175-1000-0000-0000471b8522</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>89639d3d-0175-1000-ffff-ffffb446c257</destinationId>
+            <destinationGroupId>89636688-0175-1000-ffff-ffffb1b28a38</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>unmatched</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>7558e6dd-0176-1000-ffff-ffffec9061a8</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>39ce3238-1ebd-1c2c-b724-01d18f147b6f</destinationId>
+            <destinationGroupId>7263390f-914c-1f6e-9451-75f908ed8816</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>elasticsearch</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>fbbe3ee1-5336-11c9-ffff-ffffa7c97811</id>
+            <name />
+            <bendPoints>
+              <bendPoint x="-720.0" y="1016.0" />
+              <bendPoint x="-584.0" y="1152.0" />
+            </bendPoints>
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>10cb3b64-e867-1d81-bd59-eb9cf6883f24</destinationId>
+            <destinationGroupId>f88732b0-d93f-1f6e-ba01-40b41ea20fe3</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>keycloak</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>8d1fe825-0175-1000-ffff-fffff0505cdc</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>8d13c952-0175-1000-0000-00007e8f4cae</destinationId>
+            <destinationGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>suricata</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>74ff448b-0176-1000-0000-00002e302e83</id>
+            <name />
+            <bendPoints>
+              <bendPoint x="-688.0" y="1576.0" />
+            </bendPoints>
+            <labelIndex>0</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>a77d3c33-9575-1926-b230-9cf1fca55e7e</destinationId>
+            <destinationGroupId>31b13b40-8e26-1798-9777-2272881c6031</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>zookeeper</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>349b3398-a821-1197-ffff-ffffc5ae6471</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>349b3362-a821-1197-ffff-ffff91d0e6c0</destinationId>
+            <destinationGroupId>83691174-683f-3c7c-8526-8fc00397aee1</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>zeek</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>61c51cd8-0176-1000-ffff-ffff9247ba7c</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>887c36a6-39d6-1b60-8a83-d4d10ea7e03b</sourceId>
+            <sourceGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>bc6e50cc-0175-1000-ffff-ffffbd982e0c</id>
+            <name />
+            <bendPoints />
+            <labelIndex>0</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>bc6c2159-0175-1000-ffff-ffffb4de4d47</destinationId>
+            <destinationGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>nifi</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>56e5add3-0176-1000-ffff-ffffd667d1f6</id>
+            <name />
+            <bendPoints>
+              <bendPoint x="-584.0" y="624.0" />
+            </bendPoints>
+            <labelIndex>0</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>65a33e05-e157-1bfc-8741-adf11b3df720</destinationId>
+            <destinationGroupId>5d04357e-423c-1ab5-a7a4-44565abfed7f</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>haproxy</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>6196cd03-0176-1000-ffff-ffffd39b8c82</id>
+            <name />
+            <bendPoints>
+              <bendPoint x="-576.0" y="896.0" />
+            </bendPoints>
+            <labelIndex>0</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>a22b30c4-53f8-19c0-bdbb-0632e99a17d9</destinationId>
+            <destinationGroupId>f0f934a9-853a-1a19-a9cc-f878a5606bce</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>kibana</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>89630460-0175-1000-0000-00006b5f18c8</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>89620b1a-0175-1000-0000-000078566f34</sourceId>
+            <sourceGroupId>895eab20-0175-1000-0000-00007e13267d</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>8962ad5a-0175-1000-ffff-ffffde6db5a6</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>PROCESSOR</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>349b3303-a821-1197-ffff-ffffa12b866d</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8963b202-0175-1000-0000-000022d64ba2</sourceId>
+            <sourceGroupId>89636688-0175-1000-ffff-ffffb1b28a38</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>bcadaf87-0175-1000-0000-000048464ec3</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>bca9636a-0175-1000-0000-000013fa95aa</sourceId>
+            <sourceGroupId>bc6be78f-0175-1000-ffff-ffffbcd0f569</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>bcb879d5-0175-1000-0000-000070879ad0</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>349b3301-a821-1197-0000-0000070259c4</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>055308a4-d020-39a9-9da4-b165796ef717</sourceId>
+            <sourceGroupId>bd12dc14-015e-3428-bfdf-b1219d2d6fdb</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>349b32fe-a821-1197-0000-00003a0b6fe5</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>e43535c9-23e9-15af-ffff-ffffcd7d888a</id>
+            <name />
+            <bendPoints>
+              <bendPoint x="-704.0" y="1256.0" />
+              <bendPoint x="-584.0" y="1368.0" />
+            </bendPoints>
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>8962ad5a-0175-1000-ffff-ffffde6db5a6</sourceId>
+            <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+            <sourceType>PROCESSOR</sourceType>
+            <destinationId>7f683020-779c-1bc9-85da-5bad079d5d9d</destinationId>
+            <destinationGroupId>48bc31b5-dbc5-116d-adbe-fe0f10314ac2</destinationGroupId>
+            <destinationType>INPUT_PORT</destinationType>
+            <relationship>mysql</relationship>
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
+          <connection>
+            <id>7575486d-0176-1000-0000-00002542d6de</id>
+            <name />
+            <bendPoints />
+            <labelIndex>1</labelIndex>
+            <zIndex>0</zIndex>
+            <sourceId>bbc63756-9681-13b9-8c07-20c82f62ceca</sourceId>
+            <sourceGroupId>7263390f-914c-1f6e-9451-75f908ed8816</sourceGroupId>
+            <sourceType>OUTPUT_PORT</sourceType>
+            <destinationId>bcb879d5-0175-1000-0000-000070879ad0</destinationId>
+            <destinationGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</destinationGroupId>
+            <destinationType>OUTPUT_PORT</destinationType>
+            <relationship />
+            <maxWorkQueueSize>10000</maxWorkQueueSize>
+            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+            <flowFileExpiration>0 sec</flowFileExpiration>
+            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+            <partitioningAttribute />
+            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+          </connection>
         </processGroup>
         <processGroup>
           <id>b3d57504-7c06-37a3-b59b-8723f60fa728</id>
           <name>Test data</name>
           <position x="-496.0" y="552.0" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <outputPort>
             <id>d30dc946-251a-307c-8e88-f2262b0bb194</id>
             <name>To enrichment</name>
@@ -5519,6 +8167,8 @@
             <name>Suricata</name>
             <position x="462.0553417896858" y="119.99261716112323" />
             <comment />
+            <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+            <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
             <processor>
               <id>bb7dc9ff-2d25-3134-9617-cca3cabe9179</id>
               <name>Alerts</name>
@@ -5529,7 +8179,7 @@
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>10 sec</schedulingPeriod>
@@ -5560,14 +8210,16 @@
               <property>
                 <name>generate-ff-custom-text</name>
                 <value>[{"stream": 0,"flow": {"bytes_toserver": 74,"bytes_toclient": 0,"start": "${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","pkts_toserver": 1,"pkts_toclient": 0},"vlan": 665,"ip_dst_port": 54323,"in_iface": "ens1f3","payload": "","timestamp": "${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","proto": "TCP","event_type": "alert","alert": {"category": "Not Suspicious Traffic","severity": 3,"action": "allowed","gid": 1,"signature_id": 29999991,"rev": 1,"signature": "SOC TEST1"},"payload_printable": "","ip_src_addr": "10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","ip_src_port": 43844,"ip_dst_addr": "10.0.0.${random():mod(254):plus(1)}","host":"nifi.soctools.geant.org","host_domain":"geant.org"},
-{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","alert":{"action":"allowed","category":"Potentially Bad Traffic","gid":1,"metadata":{"affected_product":["Any"],"attack_target":["Client_Endpoint"],"created_at":["2019_07_26"],"deployment":["Perimeter"],"former_category":["DNS"],"signature_severity":["Minor"],"updated_at":["2019_09_28"]},"rev":3,"severity":2,"signature":"ET DNS Query for .cc TLD","signature_id":2027758},"app_proto":"dns","destination":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":53},"dns":{"query":[{"id":37261,"rrname":"static.arduino.cc","rrtype":"A","tx_id":2,"type":"query"}]},"event_type":"alert","flow":{"bytes_toclient":1039,"bytes_toserver":343,"pkts_toclient":2,"pkts_toserver":3,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":1889254052511234,"in_iface":"if1","payload":"kY0BAAABAAAAAAABBnN0YXRpYwdhcmR1aW5vAmNjAAABAAEAACkPoAAAgAAAAA==","payload_printable":".............static.arduino.cc.......)........","proto":"UDP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":64164},"stream":0,"tx_id":2},
-{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","TLP":"AMBER","alert":{"action":"allowed","category":"Attempted Information Leak","gid":1,"metadata":{"created_at":["2014_10_15"],"former_category":["CURRENT_EVENTS"],"updated_at":["2014_10_15"]},"rev":6,"severity":2,"signature":"ET EXPLOIT SSL excessive fatal alerts (possible POODLE attack against server)","signature_id":2019418},"app_proto":"tls","destination":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":37220},"event_type":"alert","flow":{"bytes_toclient":247,"bytes_toserver":298,"pkts_toclient":4,"pkts_toserver":4,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":43047386649621,"payload":"FQMAAAICKA==","payload_printable":"......(","proto":"TCP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":443},"stream":1,"tls":{"ja3":{},"version":"SSLv3"},"tx_id":0}]
-</value>
+{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","alert":{"action":"allowed","category":"Potentially Bad Traffic","gid":1,"metadata":{"affected_product":["Any"],"attack_target":["Client_Endpoint"],"created_at":["2019_07_26"],"deployment":["Perimeter"],"former_category":["DNS"],"signature_severity":["Minor"],"updated_at":["2019_09_28"]},"rev":3,"severity":2,"signature":"ET DNS Query for .cc TLD","signature_id":2027758},"app_proto":"dns","destination":{"ip":"10.10.10.${random():mod(254):plus(1)}","port":53},"dns":{"query":[{"id":37261,"rrname":"example.evil","rrtype":"A","tx_id":2,"type":"query"}]},"event_type":"alert","flow":{"bytes_toclient":1039,"bytes_toserver":343,"pkts_toclient":2,"pkts_toserver":3,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":1889254052511234,"in_iface":"if1","payload":"kY0BAAABAAAAAAABBnN0YXRpYwdhcmR1aW5vAmNjAAABAAEAACkPoAAAgAAAAA==","payload_printable":".............example.evil.......)........","proto":"UDP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":64164},"stream":0,"tx_id":2},
+{"timestamp":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}","TLP":"AMBER","alert":{"action":"allowed","category":"Attempted Information Leak","gid":1,"metadata":{"created_at":["2014_10_15"],"former_category":["CURRENT_EVENTS"],"updated_at":["2014_10_15"]},"rev":6,"severity":2,"signature":"ET EXPLOIT SSL excessive fatal alerts (possible POODLE attack against server)","signature_id":2019418},"app_proto":"tls","destination":{"ip":"10.10.10.${random():mod(10):plus(1)}","port":37220},"event_type":"alert","flow":{"bytes_toclient":247,"bytes_toserver":298,"pkts_toclient":4,"pkts_toserver":4,"start":"${now():format('yyyy-MM-dd HH:mm:ss.SSS'):replaceFirst(' ','T')}"},"flow_id":43047386649621,"payload":"FQMAAAICKA==","payload_printable":"......(","proto":"TCP","source":{"ip":"10.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}.${random():mod(254):plus(1)}","port":443},"stream":1,"tls":{"ja3":{},"version":"SSLv3"},"tx_id":0}]</value>
               </property>
               <property>
                 <name>character-set</name>
                 <value>UTF-8</value>
               </property>
+              <property>
+                <name>mime-type</name>
+              </property>
               <property>
                 <name>mime.type</name>
                 <value>application/json</value>
@@ -5611,7 +8263,7 @@
               <bundle>
                 <group>org.apache.nifi</group>
                 <artifact>nifi-standard-nar</artifact>
-                <version>1.11.4</version>
+                <version>1.12.1</version>
               </bundle>
               <maxConcurrentTasks>1</maxConcurrentTasks>
               <schedulingPeriod>10 sec</schedulingPeriod>
@@ -5647,6 +8299,9 @@
                 <name>character-set</name>
                 <value>UTF-8</value>
               </property>
+              <property>
+                <name>mime-type</name>
+              </property>
               <property>
                 <name>mime.type</name>
                 <value>application/json</value>
@@ -5770,13 +8425,33 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>214d5013-0175-1000-ffff-ffff9b7dbebb</id>
+          <id>349b33a3-a821-1197-0000-00001ce4370e</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>349b32fe-a821-1197-0000-00003a0b6fe5</sourceId>
+          <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
+          <sourceType>OUTPUT_PORT</sourceType>
+          <destinationId>20b01ab3-3a8d-3573-b95d-a4a45494050f</destinationId>
+          <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
+          <destinationType>OUTPUT_PORT</destinationType>
+          <relationship />
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>0 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
+        <connection>
+          <id>bcb8ef9d-0175-1000-0000-000017e52ef1</id>
           <name />
           <bendPoints />
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>1ef39440-1985-3bbb-8e03-859a1c5ee4b1</sourceId>
-          <sourceGroupId>84607b52-9748-3d38-b519-b0a05cddd097</sourceGroupId>
+          <sourceId>bcb879d5-0175-1000-0000-000070879ad0</sourceId>
+          <sourceGroupId>0c790562-0175-1000-ffff-ffffeaaeafc3</sourceGroupId>
           <sourceType>OUTPUT_PORT</sourceType>
           <destinationId>21a9e277-2d80-359a-9c57-cb76d8962e6d</destinationId>
           <destinationGroupId>870d6d68-7a0a-3505-8c42-0d6064fe43f6</destinationGroupId>
@@ -5841,7 +8516,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-record-serialization-services-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <enabled>true</enabled>
           <property>
@@ -5851,6 +8526,10 @@
           <property>
             <name>schema-cache</name>
           </property>
+          <property>
+            <name>schema-protocol-version</name>
+            <value>1</value>
+          </property>
           <property>
             <name>schema-access-strategy</name>
             <value>inherit-record-schema</value>
@@ -5910,7 +8589,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-record-serialization-services-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <enabled>false</enabled>
           <property>
@@ -5924,6 +8603,8 @@
         <name>Data output</name>
         <position x="829.4446253936723" y="1015.2711478364996" />
         <comment />
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <inputPort>
           <id>e333b82d-7408-3747-8dd2-46473704e51b</id>
           <name>Data input</name>
@@ -5936,6 +8617,8 @@
           <name>Elastic odfe</name>
           <position x="-759.1319580078125" y="739.6137390136719" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <processor>
             <id>8b48f28f-2379-3f0f-81fe-4e1b93e72666</id>
             <name>PutElasticsearchHttpRecord</name>
@@ -5946,7 +8629,7 @@
             <bundle>
               <group>org.apache.nifi</group>
               <artifact>nifi-elasticsearch-nar</artifact>
-              <version>1.11.4</version>
+              <version>1.12.1</version>
             </bundle>
             <maxConcurrentTasks>1</maxConcurrentTasks>
             <schedulingPeriod>0 sec</schedulingPeriod>
@@ -5976,7 +8659,7 @@
             </property>
             <property>
               <name>Password</name>
-              <value>enc{aa0e200e6ad20acb3eb1e1f1c7ab08154fc11ccf55c6176c4c8b12fab9f339cba76c4cf1f567bb8aeb4802017cc50639}</value>
+              <value>enc{e3c6c99d66e95dfa569c6dab15f7bd5cb2142d215044a4c556aba0a2bed19ac85c899bd8837e09bb49300f0823011b45}</value>
             </property>
             <property>
               <name>elasticsearch-http-connect-timeout</name>
@@ -6041,6 +8724,7 @@
               <name>Timestamp Format</name>
             </property>
             <autoTerminatedRelationship>success</autoTerminatedRelationship>
+            <autoTerminatedRelationship>failure</autoTerminatedRelationship>
           </processor>
           <inputPort>
             <id>e7d34e01-babe-3022-ad9b-a7620e7c0f38</id>
@@ -6049,10 +8733,6 @@
             <comments />
             <scheduledState>RUNNING</scheduledState>
           </inputPort>
-          <funnel>
-            <id>a8cf8491-c2a7-3986-b803-58aff43326de</id>
-            <position x="-709.0761208187066" y="911.6861746431973" />
-          </funnel>
           <connection>
             <id>3280c550-2117-37a6-8b5e-3bc1953fa17e</id>
             <name />
@@ -6076,26 +8756,6 @@
             <partitioningAttribute />
             <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
           </connection>
-          <connection>
-            <id>02a9e341-0590-34a8-9f0c-9d6992869e59</id>
-            <name />
-            <bendPoints />
-            <labelIndex>1</labelIndex>
-            <zIndex>0</zIndex>
-            <sourceId>8b48f28f-2379-3f0f-81fe-4e1b93e72666</sourceId>
-            <sourceGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</sourceGroupId>
-            <sourceType>PROCESSOR</sourceType>
-            <destinationId>a8cf8491-c2a7-3986-b803-58aff43326de</destinationId>
-            <destinationGroupId>7ebf304b-4978-3adc-ac31-470fb76e5029</destinationGroupId>
-            <destinationType>FUNNEL</destinationType>
-            <relationship>failure</relationship>
-            <maxWorkQueueSize>10000</maxWorkQueueSize>
-            <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>1 min</flowFileExpiration>
-            <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-            <partitioningAttribute />
-            <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-          </connection>
           <connection>
             <id>5de8f98f-ce46-3565-b0ce-7f8ecf518c53</id>
             <name />
@@ -6111,7 +8771,7 @@
             <relationship />
             <maxWorkQueueSize>10000</maxWorkQueueSize>
             <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-            <flowFileExpiration>10 sec</flowFileExpiration>
+            <flowFileExpiration>60 sec</flowFileExpiration>
             <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
             <partitioningAttribute />
             <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
@@ -6120,8 +8780,10 @@
         <processGroup>
           <id>2bb2f914-0172-1000-0000-0000240c76e4</id>
           <name>Custom output</name>
-          <position x="-328.0" y="744.0" />
+          <position x="-160.0" y="736.0" />
           <comment />
+          <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+          <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
           <inputPort>
             <id>2bb31aa5-0172-1000-0000-00000869fb70</id>
             <name>Input</name>
@@ -6130,6 +8792,26 @@
             <scheduledState>STOPPED</scheduledState>
           </inputPort>
         </processGroup>
+        <connection>
+          <id>9349cb73-0175-1000-ffff-ffff90dc265d</id>
+          <name />
+          <bendPoints />
+          <labelIndex>1</labelIndex>
+          <zIndex>0</zIndex>
+          <sourceId>e333b82d-7408-3747-8dd2-46473704e51b</sourceId>
+          <sourceGroupId>e9c19adc-c8a4-327e-ad24-24e71fd3474e</sourceGroupId>
+          <sourceType>INPUT_PORT</sourceType>
+          <destinationId>2bb31aa5-0172-1000-0000-00000869fb70</destinationId>
+          <destinationGroupId>2bb2f914-0172-1000-0000-0000240c76e4</destinationGroupId>
+          <destinationType>INPUT_PORT</destinationType>
+          <relationship />
+          <maxWorkQueueSize>10000</maxWorkQueueSize>
+          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
+          <flowFileExpiration>1 sec</flowFileExpiration>
+          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+          <partitioningAttribute />
+          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+        </connection>
         <connection>
           <id>34772170-2400-3eb6-b9c5-c03b912a38f3</id>
           <name />
@@ -6219,9 +8901,9 @@
         <bundle>
           <group>org.apache.nifi</group>
           <artifact>nifi-distributed-cache-services-nar</artifact>
-          <version>1.11.4</version>
+          <version>1.12.1</version>
         </bundle>
-        <enabled>false</enabled>
+        <enabled>true</enabled>
         <property>
           <name>Server Hostname</name>
           <value>localhost</value>
@@ -6244,11 +8926,15 @@
       <name>Enrichment data</name>
       <position x="1720.0" y="248.0" />
       <comment />
+      <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+      <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
       <processGroup>
         <id>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</id>
         <name>Top domains</name>
         <position x="970.3727876614566" y="673.4981494769316" />
         <comment>Downloads CSV files containing top domains from Alexa and Umbrella</comment>
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <processor>
           <id>857cd537-4aeb-31fb-9740-0513e6cc46fe</id>
           <name>Unzip CSV files</name>
@@ -6259,7 +8945,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -6279,6 +8965,7 @@
             <name>File Filter</name>
             <value>.*</value>
           </property>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
           <autoTerminatedRelationship>original</autoTerminatedRelationship>
         </processor>
         <processor>
@@ -6291,7 +8978,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -6331,6 +9018,7 @@
             <name>Group</name>
           </property>
           <autoTerminatedRelationship>success</autoTerminatedRelationship>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
         </processor>
         <processor>
           <id>3c4d65a9-aa39-380f-b16b-2aea028a019b</id>
@@ -6342,7 +9030,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>1 day</schedulingPeriod>
@@ -6417,7 +9105,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>1 day</schedulingPeriod>
@@ -6492,7 +9180,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-update-attribute-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -6533,7 +9221,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -6574,6 +9262,7 @@
             <name>Line-by-Line Evaluation Mode</name>
             <value>All</value>
           </property>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
         </processor>
         <connection>
           <id>652026e5-0acd-3009-b45a-f68f3e37bef9</id>
@@ -6595,52 +9284,6 @@
           <partitioningAttribute />
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
-        <connection>
-          <id>b400d4e7-7106-3ea3-8b1a-0b9d2a8795b2</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="787.0441617531399" y="276.7074043335799" />
-            <bendPoint x="788.0441617531399" y="291.7074043335799" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>86fdf574-d86b-3f35-9aa0-3ada1867aff8</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>5d7b82fa-10f8-3a32-9ffa-ebce53eb6070</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="-414.74468712381326" y="221.65236588143148" />
-            <bendPoint x="-451.48125938943826" y="275.1232673706893" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>857cd537-4aeb-31fb-9740-0513e6cc46fe</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>857cd537-4aeb-31fb-9740-0513e6cc46fe</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
         <connection>
           <id>bfe27587-bb06-388c-a59a-8aad9830cda1</id>
           <name />
@@ -6721,35 +9364,14 @@
           <partitioningAttribute />
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
-        <connection>
-          <id>dea956ed-2b3b-39de-8cd8-a4d1f7a88aa2</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="790.1869840187649" y="473.4228279175642" />
-            <bendPoint x="789.1869840187649" y="482.42282791756406" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>937de5fc-7d4a-35af-a071-46f04d6ea4fa</sourceId>
-          <sourceGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>937de5fc-7d4a-35af-a071-46f04d6ea4fa</destinationId>
-          <destinationGroupId>a97a2cb2-e5b2-3c82-a365-ebe5139e2be6</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
       </processGroup>
       <processGroup>
         <id>b997e46b-7905-33e8-8bbc-f4d51b0cc735</id>
         <name>Tor Nodes</name>
         <position x="968.7335178760902" y="456.9915202898361" />
         <comment>Downloads a CSV file of IP addresses used as Tor nodes</comment>
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <processor>
           <id>ad366a87-89d6-38ff-affe-a1f3575faa8a</id>
           <name>Save to disk</name>
@@ -6760,7 +9382,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -6811,7 +9433,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>1 day</schedulingPeriod>
@@ -6819,13 +9441,13 @@
           <yieldPeriod>1 sec</yieldPeriod>
           <bulletinLevel>WARN</bulletinLevel>
           <lossTolerant>false</lossTolerant>
-          <scheduledState>STOPPED</scheduledState>
+          <scheduledState>RUNNING</scheduledState>
           <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
           <executionNode>ALL</executionNode>
           <runDurationNanos>0</runDurationNanos>
           <property>
             <name>URL</name>
-            <value>http://check.torproject.org/torbulkexitlist</value>
+            <value>https://check.torproject.org/torbulkexitlist</value>
           </property>
           <property>
             <name>Filename</name>
@@ -6833,6 +9455,7 @@
           </property>
           <property>
             <name>SSL Context Service</name>
+            <value>8972e39a-0176-1000-ffff-ffffb8dd96f4</value>
           </property>
           <property>
             <name>Username</name>
@@ -6882,7 +9505,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7036,6 +9659,8 @@
         <name>Misp</name>
         <position x="548.9658647769079" y="453.4916238226681" />
         <comment>Polls Misp database once every minute and places new IOCs in a NiFi memcache.</comment>
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <processor>
           <id>283bea4b-2774-3f2d-aabe-cf96989e9997</id>
           <name>Set timestamp as FlowFile content</name>
@@ -7046,7 +9671,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7086,6 +9711,7 @@
             <name>Line-by-Line Evaluation Mode</name>
             <value>All</value>
           </property>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
         </processor>
         <processor>
           <id>e1e2caef-8178-3c91-b3ca-99f05f619064</id>
@@ -7097,7 +9723,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7140,7 +9766,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7158,7 +9784,7 @@
           </property>
           <property>
             <name>Remote URL</name>
-            <value>${misp_url}/attributes/restSearch/returnFormat:json/type:ip-src||ip-dst</value>
+            <value>${misp_url}/attributes/restSearch/returnFormat:json/type:ip-src||ip-dst/last:${last}</value>
           </property>
           <property>
             <name>SSL Context Service</name>
@@ -7172,6 +9798,14 @@
             <name>Read Timeout</name>
             <value>15 secs</value>
           </property>
+          <property>
+            <name>idle-timeout</name>
+            <value>5 mins</value>
+          </property>
+          <property>
+            <name>max-idle-connections</name>
+            <value>5</value>
+          </property>
           <property>
             <name>Include Date Header</name>
             <value>True</value>
@@ -7183,6 +9817,9 @@
           <property>
             <name>Attributes to Send</name>
           </property>
+          <property>
+            <name>Useragent</name>
+          </property>
           <property>
             <name>Basic Authentication Username</name>
           </property>
@@ -7255,12 +9892,21 @@
             <name>ignore-response-content</name>
             <value>false</value>
           </property>
+          <property>
+            <name>form-body-form-name</name>
+          </property>
+          <property>
+            <name>set-form-filename</name>
+            <value>true</value>
+          </property>
           <property>
             <name>Authorization</name>
             <value>${misp_token}</value>
           </property>
           <autoTerminatedRelationship>Original</autoTerminatedRelationship>
+          <autoTerminatedRelationship>Failure</autoTerminatedRelationship>
           <autoTerminatedRelationship>Retry</autoTerminatedRelationship>
+          <autoTerminatedRelationship>No Retry</autoTerminatedRelationship>
         </processor>
         <processor>
           <id>671c4e42-604f-389d-9cee-27431ca36448</id>
@@ -7272,7 +9918,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7301,6 +9947,7 @@
             <value>1 MB</value>
           </property>
           <autoTerminatedRelationship>success</autoTerminatedRelationship>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
         </processor>
         <processor>
           <id>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</id>
@@ -7312,7 +9959,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7341,6 +9988,7 @@
             <value>1 MB</value>
           </property>
           <autoTerminatedRelationship>success</autoTerminatedRelationship>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
         </processor>
         <processor>
           <id>81ec71a0-719a-3205-9360-6a535072f7c6</id>
@@ -7352,7 +10000,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-update-attribute-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7380,7 +10028,7 @@
           </property>
           <property>
             <name>last</name>
-            <value>${misp_ip_first_interval}</value>
+            <value>${misp_first_interval}</value>
           </property>
           <property>
             <name>timestamp</name>
@@ -7397,7 +10045,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>1 minute</schedulingPeriod>
@@ -7405,7 +10053,7 @@
           <yieldPeriod>1 sec</yieldPeriod>
           <bulletinLevel>WARN</bulletinLevel>
           <lossTolerant>false</lossTolerant>
-          <scheduledState>STOPPED</scheduledState>
+          <scheduledState>RUNNING</scheduledState>
           <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
           <executionNode>ALL</executionNode>
           <runDurationNanos>0</runDurationNanos>
@@ -7432,6 +10080,9 @@
             <name>character-set</name>
             <value>UTF-8</value>
           </property>
+          <property>
+            <name>mime-type</name>
+          </property>
           <property>
             <name>lookup_id</name>
             <value>ip</value>
@@ -7447,7 +10098,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7479,6 +10130,8 @@
             <name>misp_ip</name>
             <value>$.value</value>
           </property>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+          <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
         </processor>
         <processor>
           <id>74d66e0e-0b65-36d2-96f1-4b836d2c4222</id>
@@ -7490,7 +10143,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-update-attribute-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7535,7 +10188,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7555,6 +10208,7 @@
             <name>Null Value Representation</name>
             <value>empty string</value>
           </property>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
           <autoTerminatedRelationship>original</autoTerminatedRelationship>
         </processor>
         <processor>
@@ -7567,7 +10221,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -7599,11 +10253,9 @@
             <name>event_id</name>
             <value>$.event_id</value>
           </property>
+          <autoTerminatedRelationship>failure</autoTerminatedRelationship>
+          <autoTerminatedRelationship>unmatched</autoTerminatedRelationship>
         </processor>
-        <funnel>
-          <id>c490b6b5-0170-1000-0000-000035bc685d</id>
-          <position x="601.9534533822577" y="371.9240905653907" />
-        </funnel>
         <connection>
           <id>39f7b787-0995-3721-8d50-700838b7a256</id>
           <name />
@@ -7684,26 +10336,6 @@
           <partitioningAttribute />
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
-        <connection>
-          <id>58cc41df-404e-309b-9df6-2ea67e1fe2b7</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>283bea4b-2774-3f2d-aabe-cf96989e9997</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>671c4e42-604f-389d-9cee-27431ca36448</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
         <connection>
           <id>5e84f4ae-bf61-37d8-b115-0af74b89a6aa</id>
           <name />
@@ -7725,102 +10357,18 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>a9d8c7a2-6b55-3684-9954-92934d5a69e8</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>74d66e0e-0b65-36d2-96f1-4b836d2c4222</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>c2a99429-58ab-325b-b755-dffeb30b0fc1</id>
-          <name />
-          <bendPoints />
-          <labelIndex>0</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c490b6b5-0170-1000-0000-000035bc685d</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>FUNNEL</destinationType>
-          <relationship>No Retry</relationship>
-          <relationship>Failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>a146ab21-f626-3fa5-a736-fdeec786eaf8</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="-312.47353014487453" y="970.3624699197178" />
-            <bendPoint x="-312.47353014487453" y="1020.3624699197178" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>c7cc4e24-7d9a-3a17-8af1-ca655f46595f</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>c022992b-534a-317a-943c-86142ee1cf81</id>
-          <name />
-          <bendPoints />
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>81ec71a0-719a-3205-9360-6a535072f7c6</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>success</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>424c08f5-1ad1-3a0a-923c-c3fd988f7d2e</id>
-          <name>Update timestamp</name>
+          <id>58cc41df-404e-309b-9df6-2ea67e1fe2b7</id>
+          <name />
           <bendPoints />
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
+          <sourceId>283bea4b-2774-3f2d-aabe-cf96989e9997</sourceId>
           <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
           <sourceType>PROCESSOR</sourceType>
-          <destinationId>283bea4b-2774-3f2d-aabe-cf96989e9997</destinationId>
+          <destinationId>671c4e42-604f-389d-9cee-27431ca36448</destinationId>
           <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
           <destinationType>PROCESSOR</destinationType>
-          <relationship>Response</relationship>
+          <relationship>success</relationship>
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -7829,22 +10377,18 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>5b9b78c7-890c-3fe0-a1b1-b2dc5bbd944b</id>
+          <id>a9d8c7a2-6b55-3684-9954-92934d5a69e8</id>
           <name />
-          <bendPoints>
-            <bendPoint x="306.30889441763816" y="583.7042207790005" />
-            <bendPoint x="306.30889441763816" y="633.7042207790005" />
-          </bendPoints>
+          <bendPoints />
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</sourceId>
+          <sourceId>74d66e0e-0b65-36d2-96f1-4b836d2c4222</sourceId>
           <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
           <sourceType>PROCESSOR</sourceType>
-          <destinationId>dbc236e3-8c68-3c6b-b1e9-d1fc8f57327d</destinationId>
+          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
           <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
           <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <relationship>unmatched</relationship>
+          <relationship>success</relationship>
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -7853,21 +10397,18 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>c98425f5-d4f3-36f7-b045-834923ca235a</id>
+          <id>c022992b-534a-317a-943c-86142ee1cf81</id>
           <name />
-          <bendPoints>
-            <bendPoint x="-911.4283280545671" y="539.9664353493931" />
-            <bendPoint x="-945.2909989530046" y="613.0546921853306" />
-          </bendPoints>
+          <bendPoints />
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</sourceId>
+          <sourceId>81ec71a0-719a-3205-9360-6a535072f7c6</sourceId>
           <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
           <sourceType>PROCESSOR</sourceType>
-          <destinationId>ba1b7e7e-a03c-3ace-9182-7f43569537e2</destinationId>
+          <destinationId>192802be-4416-3abc-ba03-90934f2df860</destinationId>
           <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
           <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
+          <relationship>success</relationship>
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -7876,21 +10417,18 @@
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
         <connection>
-          <id>d19c9d34-8896-39ff-9d2d-f29651b24c18</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="967.4604101497307" y="864.0677052542044" />
-            <bendPoint x="967.4604101497307" y="914.0677052542044" />
-          </bendPoints>
+          <id>424c08f5-1ad1-3a0a-923c-c3fd988f7d2e</id>
+          <name>Update timestamp</name>
+          <bendPoints />
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
-          <sourceId>671c4e42-604f-389d-9cee-27431ca36448</sourceId>
+          <sourceId>192802be-4416-3abc-ba03-90934f2df860</sourceId>
           <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
           <sourceType>PROCESSOR</sourceType>
-          <destinationId>671c4e42-604f-389d-9cee-27431ca36448</destinationId>
+          <destinationId>283bea4b-2774-3f2d-aabe-cf96989e9997</destinationId>
           <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
           <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
+          <relationship>Response</relationship>
           <maxWorkQueueSize>10000</maxWorkQueueSize>
           <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
           <flowFileExpiration>0 sec</flowFileExpiration>
@@ -7961,59 +10499,14 @@
           <partitioningAttribute />
           <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
         </connection>
-        <connection>
-          <id>8d3dfbef-370e-374b-a6c6-89e4cdf6216b</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="-320.5607955237681" y="759.2550630641567" />
-            <bendPoint x="-320.5607955237681" y="809.2550630641567" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>d850fc04-df9a-36b7-b53f-8b397a1be69a</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>d850fc04-df9a-36b7-b53f-8b397a1be69a</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <relationship>unmatched</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
-        <connection>
-          <id>536817e5-12a1-3a94-82ae-7638937a07e8</id>
-          <name />
-          <bendPoints>
-            <bendPoint x="969.4771541470864" y="627.6551663734834" />
-            <bendPoint x="969.4771541470864" y="677.6551663734834" />
-          </bendPoints>
-          <labelIndex>1</labelIndex>
-          <zIndex>0</zIndex>
-          <sourceId>283bea4b-2774-3f2d-aabe-cf96989e9997</sourceId>
-          <sourceGroupId>194a653f-0c92-3704-8bd4-ffa079643515</sourceGroupId>
-          <sourceType>PROCESSOR</sourceType>
-          <destinationId>283bea4b-2774-3f2d-aabe-cf96989e9997</destinationId>
-          <destinationGroupId>194a653f-0c92-3704-8bd4-ffa079643515</destinationGroupId>
-          <destinationType>PROCESSOR</destinationType>
-          <relationship>failure</relationship>
-          <maxWorkQueueSize>10000</maxWorkQueueSize>
-          <maxWorkQueueDataSize>1 GB</maxWorkQueueDataSize>
-          <flowFileExpiration>0 sec</flowFileExpiration>
-          <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
-          <partitioningAttribute />
-          <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
-        </connection>
       </processGroup>
       <processGroup>
         <id>c4a200ea-5317-332a-97a4-ff76f951ecde</id>
         <name>GeoIP</name>
         <position x="556.427978515625" y="673.0274658203125" />
         <comment />
+        <flowfileConcurrency>UNBOUNDED</flowfileConcurrency>
+        <flowfileOutboundPolicy>STREAM_WHEN_AVAILABLE</flowfileOutboundPolicy>
         <processor>
           <id>6292665b-f188-3551-b366-95476b5ac36f</id>
           <name>Save to disk</name>
@@ -8024,7 +10517,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -8075,7 +10568,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -8083,7 +10576,7 @@
           <yieldPeriod>1 sec</yieldPeriod>
           <bulletinLevel>WARN</bulletinLevel>
           <lossTolerant>false</lossTolerant>
-          <scheduledState>STOPPED</scheduledState>
+          <scheduledState>RUNNING</scheduledState>
           <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
           <executionNode>ALL</executionNode>
           <runDurationNanos>0</runDurationNanos>
@@ -8107,6 +10600,14 @@
             <name>Read Timeout</name>
             <value>15 secs</value>
           </property>
+          <property>
+            <name>idle-timeout</name>
+            <value>5 mins</value>
+          </property>
+          <property>
+            <name>max-idle-connections</name>
+            <value>5</value>
+          </property>
           <property>
             <name>Include Date Header</name>
             <value>True</value>
@@ -8118,6 +10619,9 @@
           <property>
             <name>Attributes to Send</name>
           </property>
+          <property>
+            <name>Useragent</name>
+          </property>
           <property>
             <name>Basic Authentication Username</name>
           </property>
@@ -8190,6 +10694,13 @@
             <name>ignore-response-content</name>
             <value>false</value>
           </property>
+          <property>
+            <name>form-body-form-name</name>
+          </property>
+          <property>
+            <name>set-form-filename</name>
+            <value>true</value>
+          </property>
           <autoTerminatedRelationship>Original</autoTerminatedRelationship>
         </processor>
         <processor>
@@ -8202,7 +10713,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -8241,7 +10752,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -8273,7 +10784,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>0 sec</schedulingPeriod>
@@ -8305,7 +10816,7 @@
           <bundle>
             <group>org.apache.nifi</group>
             <artifact>nifi-standard-nar</artifact>
-            <version>1.11.4</version>
+            <version>1.12.1</version>
           </bundle>
           <maxConcurrentTasks>1</maxConcurrentTasks>
           <schedulingPeriod>1 week</schedulingPeriod>
@@ -8313,7 +10824,7 @@
           <yieldPeriod>1 sec</yieldPeriod>
           <bulletinLevel>WARN</bulletinLevel>
           <lossTolerant>false</lossTolerant>
-          <scheduledState>STOPPED</scheduledState>
+          <scheduledState>RUNNING</scheduledState>
           <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
           <executionNode>ALL</executionNode>
           <runDurationNanos>0</runDurationNanos>
@@ -8340,6 +10851,9 @@
             <name>character-set</name>
             <value>UTF-8</value>
           </property>
+          <property>
+            <name>mime-type</name>
+          </property>
         </processor>
         <funnel>
           <id>c2cac6f3-c926-3038-b685-68f71f76fda3</id>
@@ -8470,7 +10984,7 @@
           <name />
           <bendPoints>
             <bendPoint x="108.66736791924166" y="38.38653496447381" />
-            <bendPoint x="108.66736791924166" y="88.38653496447381" />
+            <bendPoint x="136.0" y="88.0" />
           </bendPoints>
           <labelIndex>1</labelIndex>
           <zIndex>0</zIndex>
@@ -8552,35 +11066,433 @@
       </processGroup>
     </processGroup>
     <controllerService>
-      <id>bf81debc-0171-1000-0000-00002936ae5a</id>
-      <name>Tor node CSV</name>
+      <id>349b34c7-a821-1197-ffff-ffff85d82877</id>
+      <name>Contry code to region</name>
+      <comment />
+      <class>org.apache.nifi.lookup.SimpleCsvFileLookupService</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-lookup-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>csv-file</name>
+        <value>/opt/nifi/nifi-current/conf/enrich/CountriesWithRegionalCodes.csv</value>
+      </property>
+      <property>
+        <name>CSV Format</name>
+        <value>default</value>
+      </property>
+      <property>
+        <name>Character Set</name>
+        <value>UTF-8</value>
+      </property>
+      <property>
+        <name>lookup-key-column</name>
+        <value>alpha-2</value>
+      </property>
+      <property>
+        <name>ignore-duplicates</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>Value Separator</name>
+        <value>,</value>
+      </property>
+      <property>
+        <name>Quote Character</name>
+        <value>"</value>
+      </property>
+      <property>
+        <name>Quote Mode</name>
+        <value>MINIMAL</value>
+      </property>
+      <property>
+        <name>Comment Marker</name>
+      </property>
+      <property>
+        <name>Escape Character</name>
+        <value>\</value>
+      </property>
+      <property>
+        <name>Trim Fields</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>lookup-value-column</name>
+        <value>region</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>8972e39a-0176-1000-ffff-ffffb8dd96f4</id>
+      <name>Common CA</name>
+      <comment />
+      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-ssl-context-service-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>Keystore Filename</name>
+      </property>
+      <property>
+        <name>Keystore Password</name>
+      </property>
+      <property>
+        <name>key-password</name>
+      </property>
+      <property>
+        <name>Keystore Type</name>
+      </property>
+      <property>
+        <name>Truststore Filename</name>
+        <value>/opt/nifi/nifi-current/conf/common-cacerts.jks</value>
+      </property>
+      <property>
+        <name>Truststore Password</name>
+        <value>enc{2650a175fb2f75e2dcd038b4b506ac6368b7e025f6cb80fa6a82b187b0755443}</value>
+      </property>
+      <property>
+        <name>Truststore Type</name>
+        <value>JKS</value>
+      </property>
+      <property>
+        <name>SSL Protocol</name>
+        <value>TLS</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>bbd4d3a2-0175-1000-0000-00000b0fb8bd</id>
+      <name>Tor node CSV</name>
+      <comment />
+      <class>org.apache.nifi.lookup.SimpleCsvFileLookupService</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-lookup-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>csv-file</name>
+        <value>/opt/nifi/nifi-current/conf/enrich/tornodes.csv</value>
+      </property>
+      <property>
+        <name>CSV Format</name>
+        <value>default</value>
+      </property>
+      <property>
+        <name>Character Set</name>
+        <value>UTF-8</value>
+      </property>
+      <property>
+        <name>lookup-key-column</name>
+        <value>ip_addr</value>
+      </property>
+      <property>
+        <name>ignore-duplicates</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>Value Separator</name>
+        <value>,</value>
+      </property>
+      <property>
+        <name>Quote Character</name>
+        <value>"</value>
+      </property>
+      <property>
+        <name>Quote Mode</name>
+        <value>MINIMAL</value>
+      </property>
+      <property>
+        <name>Comment Marker</name>
+      </property>
+      <property>
+        <name>Escape Character</name>
+        <value>\</value>
+      </property>
+      <property>
+        <name>Trim Fields</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>lookup-value-column</name>
+        <value>ip_addr</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>14453a95-7646-1485-0000-00002c675762</id>
+      <name>Mysql audit log</name>
+      <comment />
+      <class>org.apache.nifi.csv.CSVReader</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-record-serialization-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>schema-access-strategy</name>
+        <value>infer-schema</value>
+      </property>
+      <property>
+        <name>schema-registry</name>
+      </property>
+      <property>
+        <name>schema-name</name>
+        <value>${schema.name}</value>
+      </property>
+      <property>
+        <name>schema-version</name>
+      </property>
+      <property>
+        <name>schema-branch</name>
+      </property>
+      <property>
+        <name>schema-text</name>
+        <value>${avro.schema}</value>
+      </property>
+      <property>
+        <name>csv-reader-csv-parser</name>
+        <value>commons-csv</value>
+      </property>
+      <property>
+        <name>Date Format</name>
+      </property>
+      <property>
+        <name>Time Format</name>
+      </property>
+      <property>
+        <name>Timestamp Format</name>
+      </property>
+      <property>
+        <name>CSV Format</name>
+        <value>custom</value>
+      </property>
+      <property>
+        <name>Value Separator</name>
+        <value>,</value>
+      </property>
+      <property>
+        <name>Record Separator</name>
+        <value>\n</value>
+      </property>
+      <property>
+        <name>Skip Header Line</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>ignore-csv-header</name>
+        <value>false</value>
+      </property>
+      <property>
+        <name>Quote Character</name>
+        <value>"</value>
+      </property>
+      <property>
+        <name>Escape Character</name>
+        <value>\</value>
+      </property>
+      <property>
+        <name>Comment Marker</name>
+      </property>
+      <property>
+        <name>Null String</name>
+      </property>
+      <property>
+        <name>Trim Fields</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>csvutils-character-set</name>
+        <value>UTF-8</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>7504a565-0176-1000-ffff-ffff9c0f0741</id>
+      <name>Zookeeper logs</name>
       <comment />
-      <class>org.apache.nifi.lookup.CSVRecordLookupService</class>
+      <class>org.apache.nifi.grok.GrokReader</class>
       <bundle>
         <group>org.apache.nifi</group>
-        <artifact>nifi-lookup-services-nar</artifact>
-        <version>1.11.4</version>
+        <artifact>nifi-record-serialization-services-nar</artifact>
+        <version>1.12.1</version>
       </bundle>
       <enabled>true</enabled>
       <property>
-        <name>csv-file</name>
-        <value>/opt/nifi/nifi-current/conf/enrich/tornodes.csv</value>
+        <name>schema-access-strategy</name>
+        <value>string-fields-from-grok-expression</value>
+      </property>
+      <property>
+        <name>schema-registry</name>
       </property>
       <property>
-        <name>csv-format</name>
-        <value>Default</value>
+        <name>schema-name</name>
+        <value>${schema.name}</value>
       </property>
       <property>
-        <name>Character Set</name>
-        <value>UTF-8</value>
+        <name>schema-version</name>
       </property>
       <property>
-        <name>lookup-key-column</name>
-        <value>ip_addr</value>
+        <name>schema-branch</name>
       </property>
       <property>
-        <name>ignore-duplicates</name>
-        <value>true</value>
+        <name>schema-text</name>
+        <value>${avro.schema}</value>
+      </property>
+      <property>
+        <name>Grok Pattern File</name>
+      </property>
+      <property>
+        <name>Grok Expression</name>
+        <value>%{GREEDYDATA:timestamp} \[%{DATA:id}\] - %{DATA:level} \[%{DATA:process}\] - %{GREEDYDATA:message}</value>
+      </property>
+      <property>
+        <name>no-match-behavior</name>
+        <value>append-to-previous-message</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>8b1dd8bb-0170-1000-0000-000007446e6a</id>
+      <name>Misp DistributedMapCacheServer</name>
+      <comment />
+      <class>org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-distributed-cache-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>Port</name>
+        <value>4557</value>
+      </property>
+      <property>
+        <name>Maximum Cache Entries</name>
+        <value>10000</value>
+      </property>
+      <property>
+        <name>Eviction Strategy</name>
+        <value>Least Frequently Used</value>
+      </property>
+      <property>
+        <name>Persistence Directory</name>
+        <value>/opt/nifi/nifi-current/conf/</value>
+      </property>
+      <property>
+        <name>SSL Context Service</name>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>56ebe0aa-0176-1000-ffff-ffffbd212f01</id>
+      <name>Haproxy GrokReader</name>
+      <comment />
+      <class>org.apache.nifi.grok.GrokReader</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-record-serialization-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>schema-access-strategy</name>
+        <value>string-fields-from-grok-expression</value>
+      </property>
+      <property>
+        <name>schema-registry</name>
+      </property>
+      <property>
+        <name>schema-name</name>
+        <value>${schema.name}</value>
+      </property>
+      <property>
+        <name>schema-version</name>
+      </property>
+      <property>
+        <name>schema-branch</name>
+      </property>
+      <property>
+        <name>schema-text</name>
+        <value>${avro.schema}</value>
+      </property>
+      <property>
+        <name>Grok Pattern File</name>
+        <value>/opt/nifi/nifi-current/conf/enrich/haproxy.groklib</value>
+      </property>
+      <property>
+        <name>Grok Expression</name>
+        <value>%{PROG:process.name}(?:\[%{POSINT:process.pid}\])?: %{HAPROXYHTTPBASE}</value>
+      </property>
+      <property>
+        <name>no-match-behavior</name>
+        <value>append-to-previous-message</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>bc97858d-0175-1000-0000-0000130a84f8</id>
+      <name>Nifi logs GrokReader</name>
+      <comment />
+      <class>org.apache.nifi.grok.GrokReader</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-record-serialization-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>schema-access-strategy</name>
+        <value>string-fields-from-grok-expression</value>
+      </property>
+      <property>
+        <name>schema-registry</name>
+      </property>
+      <property>
+        <name>schema-name</name>
+        <value>${schema.name}</value>
+      </property>
+      <property>
+        <name>schema-version</name>
+      </property>
+      <property>
+        <name>schema-branch</name>
+      </property>
+      <property>
+        <name>schema-text</name>
+        <value>${avro.schema}</value>
+      </property>
+      <property>
+        <name>Grok Pattern File</name>
+      </property>
+      <property>
+        <name>Grok Expression</name>
+        <value>%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} \[%{DATA:thread}\] %{DATA:class} %{GREEDYDATA:message}</value>
+      </property>
+      <property>
+        <name>no-match-behavior</name>
+        <value>append-to-previous-message</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>bc8e5957-0175-1000-0000-00003346421d</id>
+      <name>Extract message field</name>
+      <comment />
+      <class>org.apache.nifi.text.FreeFormTextRecordSetWriter</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-record-serialization-services-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>Text</name>
+        <value>${message}</value>
+      </property>
+      <property>
+        <name>Character Set</name>
+        <value>UTF-8</value>
       </property>
     </controllerService>
     <controllerService>
@@ -8591,7 +11503,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-lookup-services-nar</artifact>
-        <version>1.11.4</version>
+        <version>1.12.1</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -8611,7 +11523,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-distributed-cache-services-nar</artifact>
-        <version>1.11.4</version>
+        <version>1.12.1</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -8630,6 +11542,46 @@
         <value>30 secs</value>
       </property>
     </controllerService>
+    <controllerService>
+      <id>83443c00-b286-366a-b8e0-2f51527ab8e5</id>
+      <name>Soctools CA</name>
+      <comment />
+      <class>org.apache.nifi.ssl.StandardRestrictedSSLContextService</class>
+      <bundle>
+        <group>org.apache.nifi</group>
+        <artifact>nifi-ssl-context-service-nar</artifact>
+        <version>1.12.1</version>
+      </bundle>
+      <enabled>true</enabled>
+      <property>
+        <name>Keystore Filename</name>
+      </property>
+      <property>
+        <name>Keystore Password</name>
+      </property>
+      <property>
+        <name>key-password</name>
+      </property>
+      <property>
+        <name>Keystore Type</name>
+      </property>
+      <property>
+        <name>Truststore Filename</name>
+        <value>/opt/nifi/nifi-current/conf/cacerts.jks</value>
+      </property>
+      <property>
+        <name>Truststore Password</name>
+        <value>{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}</value>
+      </property>
+      <property>
+        <name>Truststore Type</name>
+        <value>JKS</value>
+      </property>
+      <property>
+        <name>SSL Protocol</name>
+        <value>TLS</value>
+      </property>
+    </controllerService>
     <controllerService>
       <id>17b30955-5464-3709-8a32-69a459850cfa</id>
       <name>Inferred JsonRecordSetWriter</name>
@@ -8638,7 +11590,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.11.4</version>
+        <version>1.12.1</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -8648,6 +11600,10 @@
       <property>
         <name>schema-cache</name>
       </property>
+      <property>
+        <name>schema-protocol-version</name>
+        <value>1</value>
+      </property>
       <property>
         <name>schema-access-strategy</name>
         <value>inherit-record-schema</value>
@@ -8700,74 +11656,47 @@
       </property>
     </controllerService>
     <controllerService>
-      <id>8b1dd8bb-0170-1000-0000-000007446e6a</id>
-      <name>Misp DistributedMapCacheServer</name>
+      <id>70ea12d7-0176-1000-ffff-ffffee2ee306</id>
+      <name>Mysql log GrokReader</name>
       <comment />
-      <class>org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer</class>
+      <class>org.apache.nifi.grok.GrokReader</class>
       <bundle>
         <group>org.apache.nifi</group>
-        <artifact>nifi-distributed-cache-services-nar</artifact>
-        <version>1.11.4</version>
+        <artifact>nifi-record-serialization-services-nar</artifact>
+        <version>1.12.1</version>
       </bundle>
       <enabled>true</enabled>
       <property>
-        <name>Port</name>
-        <value>4557</value>
-      </property>
-      <property>
-        <name>Maximum Cache Entries</name>
-        <value>10000</value>
-      </property>
-      <property>
-        <name>Eviction Strategy</name>
-        <value>Least Frequently Used</value>
-      </property>
-      <property>
-        <name>Persistence Directory</name>
-        <value>/opt/nifi/nifi-current/conf/</value>
-      </property>
-      <property>
-        <name>SSL Context Service</name>
+        <name>schema-access-strategy</name>
+        <value>string-fields-from-grok-expression</value>
       </property>
-    </controllerService>
-    <controllerService>
-      <id>83443c00-b286-366a-b8e0-2f51527ab8e5</id>
-      <name>Common CA</name>
-      <comment />
-      <class>org.apache.nifi.ssl.StandardRestrictedSSLContextService</class>
-      <bundle>
-        <group>org.apache.nifi</group>
-        <artifact>nifi-ssl-context-service-nar</artifact>
-        <version>1.11.4</version>
-      </bundle>
-      <enabled>true</enabled>
       <property>
-        <name>Keystore Filename</name>
+        <name>schema-registry</name>
       </property>
       <property>
-        <name>Keystore Password</name>
+        <name>schema-name</name>
+        <value>${schema.name}</value>
       </property>
       <property>
-        <name>key-password</name>
+        <name>schema-version</name>
       </property>
       <property>
-        <name>Keystore Type</name>
+        <name>schema-branch</name>
       </property>
       <property>
-        <name>Truststore Filename</name>
-        <value>/opt/nifi/nifi-current/conf/cacerts.jks</value>
+        <name>schema-text</name>
+        <value>${avro.schema}</value>
       </property>
       <property>
-        <name>Truststore Password</name>
-        <value>enc{a4ca3924cb58cb8c28fec2766ce1a66f9bec9ca13f5cb90008f3b0719d4777b2}</value>
+        <name>Grok Pattern File</name>
       </property>
       <property>
-        <name>Truststore Type</name>
-        <value>JKS</value>
+        <name>Grok Expression</name>
+        <value>%{GREEDYDATA:timestamp} %{DATA:process}: %{GREEDYDATA:message}</value>
       </property>
       <property>
-        <name>SSL Protocol</name>
-        <value>TLS</value>
+        <name>no-match-behavior</name>
+        <value>append-to-previous-message</value>
       </property>
     </controllerService>
     <controllerService>
@@ -8778,7 +11707,7 @@
       <bundle>
         <group>org.apache.nifi</group>
         <artifact>nifi-record-serialization-services-nar</artifact>
-        <version>1.11.4</version>
+        <version>1.12.1</version>
       </bundle>
       <enabled>true</enabled>
       <property>
@@ -8815,13 +11744,13 @@
         <name>Timestamp Format</name>
       </property>
     </controllerService>
-    <variable name="misp_token" value="{{ misp_token }}" />
+    <variable name="misp_token" value="{{lookup('file','{{playbook_dir}}/secrets/tokens/misp')}}" />
     <variable name="maxmind_key" value="{{ maxmind_key }}" />
-    <variable name="misp_ip_first_interval" value="60d" />
+    <variable name="misp_first_interval" value="60d" />
     <variable name="elastic_username" value="{{ elastic_username }}" />
     <variable name="misp_url" value="{{ misp_url }}" />
-    <variable name="elastic_url" value="https://{{ dslproxy }}:9200" />
-    <variable name="elastic_password" value="{{ odfees_adminpass }}" />
+    <variable name="elastic_url" value="https://{{ soctoolsproxy }}:9200" />
+    <variable name="elastic_password" value="{{lookup('password', '{{playbook_dir}}/secrets/passwords/odfees_adminpass')}}" />
   </rootGroup>
   <controllerServices />
   <reportingTasks />
diff --git a/roles/nifi/templates/nifi.properties.j2 b/roles/nifi/templates/nifi.properties.j2
index 426e5ce..c2dafaf 100644
--- a/roles/nifi/templates/nifi.properties.j2
+++ b/roles/nifi/templates/nifi.properties.j2
@@ -120,8 +120,8 @@ nifi.provenance.repository.buffer.size=100000
 
 # Component Status Repository
 nifi.components.status.repository.implementation=org.apache.nifi.controller.status.history.VolatileComponentStatusRepository
-nifi.components.status.repository.buffer.size=1440
-nifi.components.status.snapshot.frequency=1 min
+nifi.components.status.repository.buffer.size=288
+nifi.components.status.snapshot.frequency=5 min
 
 # Site to Site properties
 nifi.remote.input.host={{ inventory_hostname }}
@@ -143,7 +143,7 @@ nifi.web.jetty.working.directory=./work/jetty
 nifi.web.jetty.threads=200
 nifi.web.max.header.size=16 KB
 nifi.web.proxy.context.path=/nifi
-nifi.web.proxy.host={{ dslproxy }}:9443
+nifi.web.proxy.host={{ soctoolsproxy }}:9443
 
 # security properties #
 nifi.sensitive.props.key=
@@ -154,21 +154,21 @@ nifi.sensitive.props.additional.keys=
 
 nifi.security.keystore=./conf/{{ inventory_hostname }}.p12
 nifi.security.keystoreType=pkcs12
-nifi.security.keystorePasswd={{ kspass}}
+nifi.security.keystorePasswd={{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}
 #nifi.security.keyPasswd=IP7Jgn7amiAYi3LRSRk5LGg3t4zlfh0kEKcAaaoxHDo
 nifi.security.truststore=./conf/cacerts.jks
 nifi.security.truststoreType=jks
-nifi.security.truststorePasswd={{ tspass}}
+nifi.security.truststorePasswd={{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}
 nifi.security.user.authorizer=managed-authorizer
 nifi.security.user.login.identity.provider=
 nifi.security.ocsp.responder.url=
 nifi.security.ocsp.responder.certificate=
 
 # OpenId Connect SSO Properties #
-nifi.security.user.oidc.discovery.url=https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
-nifi.security.user.oidc.connect.timeout=5 secs
-nifi.security.user.oidc.read.timeout=5 secs
-nifi.security.user.oidc.client.id=dsoclab-nifi
+nifi.security.user.oidc.discovery.url=https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
+nifi.security.user.oidc.connect.timeout=10 secs
+nifi.security.user.oidc.read.timeout=10 secs
+nifi.security.user.oidc.client.id=soctools-nifi
 nifi.security.user.oidc.client.secret={{nifisecret.value}}
 nifi.security.user.oidc.preferred.jwsalgorithm=
 nifi.security.user.oidc.additional.scopes={{openid_scope}}
@@ -226,9 +226,9 @@ nifi.cluster.load.balance.max.thread.count=8
 nifi.cluster.load.balance.comms.timeout=30 sec
 
 # zookeeper properties, used for cluster management #
-nifi.zookeeper.connect.string=dsoclab-zookeeper:2181
-nifi.zookeeper.connect.timeout=3 secs
-nifi.zookeeper.session.timeout=3 secs
+nifi.zookeeper.connect.string=soctools-zookeeper:2181
+nifi.zookeeper.connect.timeout=60 secs
+nifi.zookeeper.session.timeout=60 secs
 nifi.zookeeper.root.node=/nifi
 
 # Zookeeper properties for the authentication scheme used when creating acls on znodes used for cluster management
diff --git a/roles/odfees/files/Arne Oslebo.p12 b/roles/odfees/files/Arne Oslebo.p12
deleted file mode 100644
index 273c8018b7bed8f691d9e9c24f5fa9d6425a0e79..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3325
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
SvT*onuj~K4uqy#nN&)~L2}KS7

diff --git a/roles/odfees/files/Bozidar Proevski.p12 b/roles/odfees/files/Bozidar Proevski.p12
deleted file mode 100644
index 24010a64063a960d554cd4e895e17b9e2e62362a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3325
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
MzLJB#K7&e00Bh$qdH?_b

diff --git a/roles/odfees/files/SOCTOOLS-CA.crt b/roles/odfees/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/odfees/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/odfees/files/cacerts.jks b/roles/odfees/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/odfees/files/dsoclab-odfe-1.p12 b/roles/odfees/files/dsoclab-odfe-1.p12
deleted file mode 100644
index ed4bd60a1d96595774f510ecfd8c864a09e8d338..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
zcmXqL;&o(VWHxBxWoP5mYV&CO&dbQoxS)yW2TK#r7lS6A4+c%_%Mns+3!2zx7&Ng@
zVPa%3Xkzb0$S@knuyH|6;9+Dl;A7!neEr7FF8!J!6B7qRLlb*KLgF=lr}DlvSH7<H
z)8`4|a(~+UXJ2EDNgVrSk@W4hOMBW5Ybm6DjO4yj`0^0D!G+cbAv640H&!^ePuF$n
zyAxo1*s$tNP^|WBeXqK_{DdQJ`%cZ^eZf9Oe9hS>HQo~IPh6PtuSqO5pzw9(91Fc`
z7Pj|hrS|22bT}KI&g-F`)a^LKZJG7fv_92(w@;pYj<uS~jX4kcy4a4Um<y`5)Hl{k
zE2U5DQ<gu}_WZ?e-L@Z+k)6)@YyB=hT4^(7)`ADNG8)_ML;vb|l%(ETnQhabpTl7M
z*j4QQoV_V-a~_JMW?#C|HnB!v_LI}DyuYXP@MUgNm>c9G?A7;i-ab{kcKy`nRsz#X
ztDCB|^TKi&bd58=B>ZXl`$VQC=bz4WJ655+cRS90|Hu5MbGnh#jb-K*?|Tv)OxIu2
zIym$BwIyva)<+I(FFE=|{Au&${17jRT)r3UyKV$sw)DPH<#~VN^+}V@X#{Wjwf*xZ
zk^A4TyevK!fBp}jpJ|s5XT&|---<_Kza}fJ>et-Mw@y@%XSKXgnW4~!v$eC?Ca*tH
zf6IEV$ikzye&4^HUYoz6{Xy(p?><92&b5v6_s2|r^;Y%oH#TSf@QdG>9~kmA_dek`
zf9Y_!)4BT|t0h<8IDKY8#ta5iC#}-17Wu1%QHgu>KQ^n~aM|JE6tQyYqJ6Eu9Bi2b
z)|)-Zw`xC<J1=X3etKxh)_<mpKSmu}zxm<L`t$ENPi!z<(xP$FjNdQ9t2;(%9+LyV
z=DO1h7O&WP&UODD!zW=0^8K18=QAYTY0rHUWnX)JiH?-cFRjD*3#MhS-RUydqW#SN
z<wi{A8&7&X%L`NvD9b))lzIB_8t3KP_I$Zp>ZH)H>$aiRxB31rJ5~qJ(=1#koyqU<
zuru$!4)f$yVtktYf6iPMnep&QRE3(vntKx(moTgkzjbBS(%Ayco5FY1-o7>QLz#T%
zx{LC2C3na#%ZkXgu6J$9+I8&V(Ja3TcK)oWq&@FuY-g4<N!+>C_V*d@!<|aIC+u6b
z)wt=`hd{5#C-+_sEGhc2uCm75B#dS10fBW!Oj&Wy1$bh1RUO~-B~s*~l%&yCA?YoT
za&21=R*F7lf0FucLC{6nDH~@mJt&f~=Y*M<SzWbM&$K4f$ugX~H9U+s@6XrJU~%Jp
zvN?O%E}NQw#%JylyM9G~Tea%X+VH0WlT_A6NiBHB=5bIvPvPB_tHrag`zL=)NJ}m}
zx_`sE->&aI%iLgoJ+Wc&+qs<ISrVr#+RWZ*UM4>)d%~}YH{5Ro2;7mJH+OTIvzx~5
z*RFg1H?KNzGf#EZ?K!F8b6$MoX!DysY4Z79GZGCh{mc8IV(dC;mv-I5?Qgour!Ts;
zO{&zdC}-cxUB6avd@KL_W?$HIpLMa>N^0g@M-H!#<Sv}^Z*shx-_@qsFRyhT-D2;<
z{=a<kX49OQ8TWtKJYTCOu}b*BX(_FHiro$eZ2qX~Ox!Eoaa2USWSYc<X%Tu>Hy4~u
z&=ZT@q1yIphrE*<i)OIvgt(>Edw4axOXn<mz_IH=p&!3}*u`D`OLj<xeOnQ}S4U^V
z4>jf()rR$*EShKK&x!J`&ga>~ovW(2I#cnaHIMuM=N->(N{6Ui7P@#&>fMQCz2(=U
zv~P?4>F0jCU7>TGSb;=W;@cXnq?Y*2dSYK+zuo)yh2NLdV+BWVF+csVI8iNn0{4x}
z)nbx0K9c@gB0dh@O_6nWSNnF>hN#v|_}rV|RCca%b(8vnJTVtFv0%qzOZquJr8{rn
zdOmMvYg$Bx(8Is?pB!3od+NNo#TV56{CiY7>uN;I`Tg?_oZiiOYi(KJTa`arTjt+B
z&ZJ*6XUbd0Cr5vNvPk<=Ah1j}t9*90Vo-b&UtI8)m51-Nh6fsmGkfrdMg6~5xMx;g
z>_!c@$jE-7BK086+_!4NK7~=6O|q5-J$S~Ouc+T>I(?qYtkzIhDba@=nr0I@Pneq@
zmXL2#VCej8yewYE!*A}Yya+kH$lnJuf2wkZ#J>LG+tkD09{F;A)SZnsiQz(vUL58V
z`!2pVtwyr+h_;fr(^D<Z^|RH!*M-0EeR--;x4(PCvDI&We36oSKPhv|{|zb8lCI5K
z?<f7T3I3)~n|}DJO6i7wJ&ztr9^ZUJj<J6FMdrEP|1L7N1_jMEn)hT&Q;ky@*V}XM
zn^w=#7yjk<?O}$^-0A%vyzOdN-T3RegY)He=B4@p-`2M=-|3wHNqNGfeG?<zP2c(O
z%$J`P7O!^v7FptTBaD0PO63(tA~zq={FC{Lt#IPRMc+*B^_-csRjA|QpBbktALo9G
z@SD*q^Jqoek?kM18e8u@BX924w$AD9tN<zTr&r|GeZF_s=Z>who^a`kg-mMKZ#pS=
zZ*RS%alNoga*y}a`G2k6bWgjs$7r7KKX!Xnv&21n=e@DGukW35c?L_3%$Kgedy9Jx
zpFFnkceayl&7!AQGqfI@ew^`D`PHr$%{u>jzi!#TSf25wMlS2kfXCOJA70A~mi%nK
zLhY%0>}mb)r3a)KUPPSSQL|G`Pe9N^X7_(DtNH7*UrzQH_}Ka8zSjPKd?kK8ZkriS
zW{NsA8Z@ywB2~x>npllknppJ=npm|AnpoA?xM9^Z7bDYxCYE;wO)RfaYHemvt^IV7
ztGU5lM|DuG&C<kjB9#51n~U#3{>vH?S@tqZL`|0II#2y8ao;;ku-B6(G)AkP@n#Qm
zP-u<ETGu?$n}?t9{(7L@>u%3^F+=T7NYoepIZS($UtRpVSVFpCUexxo;^3b~(rvyU
z`F_V9{u0qLz5ev6A`yGZpEm9CTxK&Yzr?mbX`7InW>^2xeY;OKmu+Oe{5|U$9o~cS
zf7Y2f-hVRPJ3%|zSYC6Ich+-;7r!P%cXbE+mlu`Xal%SY$nchFVWm7*yz1ZXn)8#s
zi}qeuuzXy+eD+<gGfFEDbF!%#PFK6I^Te$Oo&isrx-0(|&FVJE%v68OBc@+{t<FN@
z$R(ZMmM2a*K6sVVHg~)Cc9VqKsxuiczUJ*Yd4?nArr452JGQ;4EVNUNR{4{!AhM!9
zdU;xI)N(D}a~C(P_{T11%lzXI`|(b`S$|JXEX>Z{y>$7}yCPp=E9@(~+x=Is7JbcC
zb3$VBjaJEpO~2lSE^NIR`+HfadFIj^?Rl+{g-P!76)Jl^v)XN}J1k^(eoA71ozjD;
z0?{vTYX$$~JREEG_2VLD=`9Bv&zgKI_O?51pmoo9hiA%3&9W;&^{ZWzM1*R2^>tS_
z&YiV!g<7JKcZ1fQE$!Uj(#>`#FH%VB&AAaYU3-D!>-~#+t3%8$@~dy}oMY9Y^kl||
zrM5RjXV3D#axHpAy2F$FYN=@Vd(-wkv6MUPaqeMe;Jex+o(s{hf49AxWU$tTi{sA6
zE%m|o`Ooh9)$!!uIscv0m_-*X|K<{{G*S8fmh_pgW1^~4g}A<j+ip0^(tow(4F7}l
zgZmH9+bX>Gr{LTgS&x5i^Tqc3^yl-u_S<~-S;=bwZ(IxJBrcMeBQJbFIpEi_KcCoC
zmd(iTm$*F9FQP!8bn`sl(@$<~*S4y!3bVNXAw5G=Txa$Yu8`AG>`~^L7sD&g%v`@$
zu$?EmGKxD`K6CZ77PDfP1N=WM{(QK*xY>L1<mcD>1FXbc)_GdboqTA=?uGGIM#(cw
zr<8e}eph(0?ogq=q#V=yX=lY&J$-j~%M?qw+kHDc`z#OL%qW`G?)@=}eOJn_yXp<e
zTkQ82Jhx@$E8ccQFh#Sv>yFR#lBZ&l!CC4o(Pj@~3|oWMYS$S>`af7x^nJ%whOEc+
zRkxnR|JuFFUfd~rHt!C>pT<kmwx1}w`F?77ZV%6mHO|-U6;`iVbK}``)`Vxv`PV<a
zl3<-)-yA;ab=9Y~>qcsl_quP^9ekOW(POCOV|VKP&c+!{bNBGao$lCVqv@|JATWVb
z#>7m?Oa7kJ*~ODC1*U6EG}-*N#f`;{gEQ?ZlXZ>F2VOzl6-?7hC$Bhu@YUo0e|}eQ
zn%;S(KEYpS^RFd>9L`5se=qgvlUb1Hu;9YX*}We%Z|D?%l-g?fn0-Q|^wUF~Wzok=
zd|ojYEpo2?$i!UnUu2CrtIzdQst*-*s7L7ueyB;SQaHY?vVWTFthu)o-%cyH^in%~
zk*jraa*NWYpXb+IpERfG^0|+qa+Nbyos(ISrfn(~ve{+PvqLBLI~XcTsvNslqL-=Z
zP%WLJ(R|l&o4KgNY~9F{SG2B0YiNDr<uEp{y1nGF)$h{i?Sa~i{K8>JZr+OCxjsI;
zF{sltI>XAV+Of-Py8j8uOZQDa9BW!5P`zQFU-`R@dF!{W{Arunm|1=>(ENPkNh6+{
zhN=e2@Y0b})KH8?q~`pKQ}f>IO-(bHto10O^+~!+!F&Tl14RQ)HdbvuW+o|C1{RTn
m&03dMC`O3BTK~lJ=bx^%1@WHoEFAZom)ywXe)9xWN&*0g3sWxu

diff --git a/roles/odfees/files/dsoclab-odfe-2.p12 b/roles/odfees/files/dsoclab-odfe-2.p12
deleted file mode 100644
index 106170ff7a325bccade7cfecf2f60642e866a4a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/odfees/tasks/main.yml b/roles/odfees/tasks/main.yml
index ae6ae65..016e878 100644
--- a/roles/odfees/tasks/main.yml
+++ b/roles/odfees/tasks/main.yml
@@ -1,118 +1,17 @@
 ---
 
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "files/{{ca_cn}}.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+- include: start.yml
   tags:
-    - start
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-  tags:
-    - start
-
-- name: Copy certificates in odfe conf dir
-  copy:
-    src:  "{{ item }}"
-    dest: "config/{{ item }}"
-    mode: 0600
-  with_items:
-    - "{{ inventory_hostname }}.p12"
-    - cacerts.jks
-    - "{{soctools_users[0].CN}}.p12"
-  tags:
-    - start
-
-- name: Configure sysconfig
-  template:
-    src: sysconfig_elasticsearch.j2
-    dest: sysconfig_elasticsearch
-  tags:
-    - start
-
-- name: Copy sysconfig to /etc
-  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
-  tags: 
-    - start
-
-- name: Configure odfe properties
-  template:
-    src: "config/{{item}}.j2"
-    dest: "config/{{item}}"
-  with_items:
-    - elasticsearch.yml
-    - jvm.options
-    - log4j2.properties
-  tags:
-    - start
-
-- name: Change password for admin
-  command: "bash plugins/opendistro_security/tools/hash.sh -p {{odfees_adminpass}}"
-  register: adminhash
-  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
-  tags:
-    - start
-
-- set_fact:
-    adminhashpwd: "{{ adminhash.stdout }}"
-    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
-  tags:
-    - start
-
-- name: Change password for cortex
-  command: "bash plugins/opendistro_security/tools/hash.sh -p {{cortex_odfe_pass}}"
-  register: cortexhash
-  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
+   - start
+- include: stop.yml
   tags:
-    - start
-
-- set_fact:
-    cortexhashpwd: "{{ cortexhash.stdout }}"
-    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
+   - stop
+   - stop-odfees
+- include: update-config.yml
   tags:
-    - start
-
-- name: Configure opendistro_security properties
-  template:
-    src: "securityconfig/{{item}}.j2"
-    dest: "plugins/opendistro_security/securityconfig/{{item}}"
-  with_items:
-    - internal_users.yml
-    - config.yml
-    - roles_mapping.yml
+   - update-config
+   - update-odfees-config
+- include: restart.yml
   tags:
-    - start
-
-#- name: Exit here to test ODFE
-#  meta: end_play
-#  tags:
-#    - start
-
-- name: Start OpenDistro for Elasticsearch
-  command: "/usr/share/elasticsearch/bin/elasticsearch -p {{ inventory_hostname }}.pid -d"
-  tags:
-    - start
-
-- name: Wait for ElasticSearch
-  wait_for:
-    host: "{{groups['odfeescontainers'][0]}}"
-    port: 9200
-    state: started
-    delay: 5
-  tags:
-    - start
-
-- name: Configure OpenDistro security
-  command: "bash ./plugins/opendistro_security/tools/securityadmin.sh -h {{groups['odfeescontainers'][0]}} -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -ks '/usr/share/elasticsearch/config/{{soctools_users[0].CN}}.p12' -kspass {{soctools_users[0].password}} -ts /usr/share/elasticsearch/config/cacerts.jks -tspass {{tspass}} -cn dsoclab-cluster"
-  when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
-  tags:
-    - start
-
-- name: Stop OpenDistro for Elasticsearch
-  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
-  tags:
-    - stop
-
+   - restart
+   - restart-odfees
diff --git a/roles/odfees/tasks/restart.yml b/roles/odfees/tasks/restart.yml
new file mode 100644
index 0000000..130f200
--- /dev/null
+++ b/roles/odfees/tasks/restart.yml
@@ -0,0 +1,14 @@
+---
+
+- name: Restart OpenDistro for Elasticsearch
+  remote_user: root
+  command: "supervisorctl restart odfe"
+
+- name: Wait for ElasticSearch
+  remote_user: root
+  wait_for:
+    host: "{{groups['odfeescontainers'][0]}}"
+    port: 9200
+    state: started
+    delay: 5
+
diff --git a/roles/odfees/tasks/start.yml b/roles/odfees/tasks/start.yml
new file mode 100644
index 0000000..622a1cd
--- /dev/null
+++ b/roles/odfees/tasks/start.yml
@@ -0,0 +1,102 @@
+---
+
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "{{playbook_dir}}/secrets/CA/ca.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+
+- name: Copy certificates in odfe conf dir
+  remote_user: elasticsearch
+  copy:
+    src:  "{{ item }}"
+    dest: "config/"
+    mode: 0600
+  with_items:
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
+    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
+    - "{{playbook_dir}}/secrets/CA/private/{{soctools_users[0].CN}}.p12"
+
+- name: Configure sysconfig
+  remote_user: elasticsearch
+  template:
+    src: sysconfig_elasticsearch.j2
+    dest: sysconfig_elasticsearch
+
+- name: Copy sysconfig to /etc
+  remote_user: elasticsearch
+  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
+
+- name: Configure odfe properties
+  remote_user: elasticsearch
+  template:
+    src: "config/{{item}}.j2"
+    dest: "config/{{item}}"
+  with_items:
+    - elasticsearch.yml
+    - jvm.options
+    - log4j2.properties
+
+- name: Change password for admin
+  remote_user: elasticsearch
+  command: "bash plugins/opendistro_security/tools/hash.sh -p {{lookup('password', '{{playbook_dir}}/secrets/passwords/odfees_adminpass')}}"
+  register: adminhash
+  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
+
+- set_fact:
+    adminhashpwd: "{{ adminhash.stdout }}"
+    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
+  remote_user: elasticsearch
+
+- name: Change password for cortex
+  remote_user: elasticsearch
+  command: "bash plugins/opendistro_security/tools/hash.sh -p {{lookup('password', '{{playbook_dir}}/secrets/passwords/cortex_odfe')}}"
+  register: cortexhash
+  # when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
+
+- set_fact:
+    cortexhashpwd: "{{ cortexhash.stdout }}"
+    #adminhashpwd: "{{ hostvars[groups['odfeescontainers'][0]]['adminhash.stdout'] }}"
+  remote_user: elasticsearch
+
+- name: Configure opendistro_security properties
+  remote_user: elasticsearch
+  template:
+    src: "securityconfig/{{item}}.j2"
+    dest: "plugins/opendistro_security/securityconfig/{{item}}"
+  with_items:
+    - internal_users.yml
+    - config.yml
+    - roles_mapping.yml
+
+#- name: Exit here to test ODFE
+#  meta: end_play
+
+- name: Start OpenDistro for Elasticsearch
+  remote_user: root
+  command: "supervisorctl start odfe"
+
+- name: Wait for ElasticSearch
+  remote_user: root
+  wait_for:
+    host: "{{groups['odfeescontainers'][0]}}"
+    port: 9200
+    state: started
+    delay: 5
+
+- name: Configure OpenDistro security
+  remote_user: elasticsearch
+  command: "bash ./plugins/opendistro_security/tools/securityadmin.sh -h {{groups['odfeescontainers'][0]}} -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -ks '/usr/share/elasticsearch/config/{{soctools_users[0].CN}}.p12' -kspass {{lookup('password', '{{playbook_dir}}/secrets/passwords/{{soctools_users[0].CN}}')}} {{lookup('password','{{playbook_dir}}/secrets/passwords/{{soctools_users[0].CN}}')}} -ts /usr/share/elasticsearch/config/cacerts.jks -tspass {{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}} -cn soctools-cluster"
+  when: "'{{groups['odfeescontainers'][0]}}' in inventory_hostname"
+
+- name: Set Autostart for supervisord's services
+  remote_user: root
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
diff --git a/roles/odfees/tasks/stop.yml b/roles/odfees/tasks/stop.yml
new file mode 100644
index 0000000..1302cc8
--- /dev/null
+++ b/roles/odfees/tasks/stop.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Stop OpenDistro for Elasticsearch
+  remote_user: root
+  command: "supervisorctl stop odfe"
+
diff --git a/roles/odfees/tasks/update-config.yml b/roles/odfees/tasks/update-config.yml
new file mode 100644
index 0000000..a40d487
--- /dev/null
+++ b/roles/odfees/tasks/update-config.yml
@@ -0,0 +1,32 @@
+---
+
+- name: Configure sysconfig
+  remote_user: elasticsearch
+  template:
+    src: sysconfig_elasticsearch.j2
+    dest: sysconfig_elasticsearch
+
+- name: Copy sysconfig to /etc
+  remote_user: elasticsearch
+  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
+
+- name: Configure odfe properties
+  remote_user: elasticsearch
+  template:
+    src: "config/{{item}}.j2"
+    dest: "config/{{item}}"
+  with_items:
+    - elasticsearch.yml
+    - jvm.options
+    - log4j2.properties
+
+- name: Configure opendistro_security properties
+  remote_user: elasticsearch
+  template:
+    src: "securityconfig/{{item}}.j2"
+    dest: "plugins/opendistro_security/securityconfig/{{item}}"
+  with_items:
+    - internal_users.yml
+    - config.yml
+    - roles_mapping.yml
+
diff --git a/roles/odfees/templates/config/elasticsearch.yml.j2 b/roles/odfees/templates/config/elasticsearch.yml.j2
index ef61cd3..5e8e18f 100644
--- a/roles/odfees/templates/config/elasticsearch.yml.j2
+++ b/roles/odfees/templates/config/elasticsearch.yml.j2
@@ -1,4 +1,4 @@
-cluster.name: "dsoclab-cluster"
+cluster.name: "soctools-cluster"
 #network.host: 0.0.0.0
 network.host: {{ inventory_hostname }}
 discovery.seed_hosts:
@@ -30,11 +30,11 @@ cluster.initial_master_nodes:
 
 opendistro_security.ssl.transport.keystore_type: pkcs12
 opendistro_security.ssl.transport.keystore_filepath: {{ inventory_hostname }}.p12
-opendistro_security.ssl.transport.keystore_password: {{ kspass }}
+opendistro_security.ssl.transport.keystore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
 #opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
 opendistro_security.ssl.transport.truststore_type: jks
 opendistro_security.ssl.transport.truststore_filepath: cacerts.jks
-opendistro_security.ssl.transport.truststore_password: {{ tspass }}
+opendistro_security.ssl.transport.truststore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
 opendistro_security.ssl.transport.enforce_hostname_verification: false
 
 opendistro_security.ssl.http.enabled: true
@@ -42,10 +42,10 @@ opendistro_security.ssl.http.enabled: true
 # opendistro_security.ssl.http.pemkey_filepath: esnode-key.pem
 opendistro_security.ssl.http.keystore_type: pkcs12
 opendistro_security.ssl.http.keystore_filepath: {{ inventory_hostname }}.p12
-opendistro_security.ssl.http.keystore_password: {{ kspass }}
+opendistro_security.ssl.http.keystore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}"
 opendistro_security.ssl.http.truststore_type: jks
 opendistro_security.ssl.http.truststore_filepath: cacerts.jks
-opendistro_security.ssl.http.truststore_password: {{ tspass }}
+opendistro_security.ssl.http.truststore_password: "{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
 #opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem
 #opendistro_security.ssl.http.clientauth_mode: optional
 opendistro_security.allow_unsafe_democertificates: false
diff --git a/roles/odfees/templates/config/log4j2.properties.j2 b/roles/odfees/templates/config/log4j2.properties.j2
index 9ad290a..ee01d9a 100644
--- a/roles/odfees/templates/config/log4j2.properties.j2
+++ b/roles/odfees/templates/config/log4j2.properties.j2
@@ -5,5 +5,27 @@ appender.console.name = console
 appender.console.layout.type = PatternLayout
 appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
 
+appender.rolling.type = RollingFile
+appender.rolling.name = rolling
+appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
+appender.rolling.layout.type = ESJsonLayout
+appender.rolling.layout.type_name = server
+appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz
+appender.rolling.policies.type = Policies
+appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
+appender.rolling.policies.time.interval = 1
+appender.rolling.policies.time.modulate = true
+appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
+appender.rolling.policies.size.size = 20MB
+appender.rolling.strategy.type = DefaultRolloverStrategy
+appender.rolling.strategy.fileIndex = nomax
+appender.rolling.strategy.action.type = Delete
+appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
+appender.rolling.strategy.action.condition.type = IfFileName
+appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
+appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
+appender.rolling.strategy.action.condition.nested_condition.exceeds = 100MB
+
 rootLogger.level = info
-rootLogger.appenderRef.console.ref = console
+#rootLogger.appenderRef.console.ref = console
+rootLogger.appenderRef.rolling.ref = rolling
diff --git a/roles/odfees/templates/securityconfig/config.yml.j2 b/roles/odfees/templates/securityconfig/config.yml.j2
index 26e77a4..4936867 100644
--- a/roles/odfees/templates/securityconfig/config.yml.j2
+++ b/roles/odfees/templates/securityconfig/config.yml.j2
@@ -116,7 +116,7 @@ config:
           config:
             subject_key: {{openid_subjkey}} 
             roles_key: roles
-            openid_connect_url: https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
+            openid_connect_url: https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration
             enable_ssl: true
             verify_hostnames: false
             pemtrustedcas_filepath: "/usr/share/elasticsearch/config/{{ca_cn}}.crt"
diff --git a/roles/odfekibana/files/Arne Oslebo.p12 b/roles/odfekibana/files/Arne Oslebo.p12
deleted file mode 100644
index 273c8018b7bed8f691d9e9c24f5fa9d6425a0e79..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3325
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
SvT*onuj~K4uqy#nN&)~L2}KS7

diff --git a/roles/odfekibana/files/Bozidar Proevski.p12 b/roles/odfekibana/files/Bozidar Proevski.p12
deleted file mode 100644
index 24010a64063a960d554cd4e895e17b9e2e62362a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3325
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
MzLJB#K7&e00Bh$qdH?_b

diff --git a/roles/odfekibana/files/SOCTOOLS-CA.crt b/roles/odfekibana/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/odfekibana/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/odfekibana/files/cacerts.jks b/roles/odfekibana/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/odfekibana/files/dsoclab-kibana.crt b/roles/odfekibana/files/dsoclab-kibana.crt
deleted file mode 100644
index f47839f..0000000
--- a/roles/odfekibana/files/dsoclab-kibana.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            7d:fc:33:45:75:73:e8:f1:60:94:a7:4e:6b:2f:23:f1
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:27 2020 GMT
-            Not After : Oct 15 10:47:27 2023 GMT
-        Subject: CN=dsoclab-kibana
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ce:4f:c9:0f:84:4d:4e:7b:dc:11:90:c9:49:a8:
-                    f3:60:44:a8:25:1b:59:83:64:0b:d1:e0:bc:59:50:
-                    22:a5:f5:88:7a:c8:40:65:e4:22:3d:77:d2:8f:9e:
-                    30:17:80:5e:20:85:bc:70:67:61:cb:d8:e2:9f:9a:
-                    7c:7b:a6:e8:4e:79:7b:cd:86:6e:26:52:37:45:b6:
-                    ab:b7:6f:40:8f:7a:55:8b:d1:91:cc:21:6f:55:37:
-                    50:3b:72:1f:2d:3b:bf:75:47:91:88:6a:1c:ea:39:
-                    dd:8b:25:31:55:0e:bc:52:6f:bf:0b:96:ef:e3:12:
-                    5c:da:63:22:54:e5:b3:95:8b:02:9e:57:3e:7b:4f:
-                    a0:f5:6f:07:a8:5b:45:7c:cb:34:83:77:34:a5:b1:
-                    ff:05:12:88:8f:cc:c4:05:5d:e9:e7:7d:2b:12:fa:
-                    bb:4d:25:f4:f7:04:e7:95:06:95:ea:a9:c4:75:4e:
-                    f7:03:67:2d:9c:9a:f4:01:f6:2a:8d:6c:6d:d0:59:
-                    a9:ce:1f:12:b1:76:39:c8:07:d4:20:73:1e:f3:9c:
-                    b9:67:83:3b:a8:7c:6e:fb:86:ea:3f:6a:8e:98:4c:
-                    39:a9:d1:4d:be:9f:0a:43:49:1b:fd:09:67:b6:62:
-                    71:fd:87:9a:63:25:00:aa:c7:a1:4d:23:12:e3:56:
-                    0f:6f
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                50:F3:7D:4F:B2:8C:A5:09:FD:64:CB:C1:97:F1:F8:49:C8:6B:30:4D
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-kibana, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         ae:be:82:6f:6d:e6:c4:cb:c3:2a:d9:d6:ee:11:52:a6:de:89:
-         9e:31:a3:e2:86:07:e9:d1:fe:95:c9:a2:38:90:df:05:ff:e5:
-         99:27:e8:d8:55:00:8a:85:b3:15:a5:e5:5b:ce:4e:4f:01:3b:
-         74:a4:b2:09:fc:6e:95:92:94:2f:76:0d:c7:97:1b:78:c1:08:
-         1e:3a:0e:fa:a6:ab:db:1e:22:26:86:39:f4:bb:89:a1:a1:d1:
-         55:f6:c3:ff:9b:a5:eb:1b:6a:84:8a:1d:3c:5f:7c:03:0d:08:
-         42:6f:d7:14:86:61:38:66:65:f7:c2:86:68:db:81:e9:41:0f:
-         82:cf:bb:be:fd:d7:94:48:cc:f8:cf:4a:40:ce:33:c4:75:51:
-         00:7e:c7:93:f6:3b:92:c1:5e:8a:ce:5f:2c:c2:f4:fe:ec:77:
-         9e:ea:30:d9:53:ee:f9:b9:fd:50:f5:6b:92:1c:57:d2:e0:f3:
-         05:d8:79:a9:63:16:13:09:cf:5f:39:dc:ec:43:e4:65:45:43:
-         65:e4:7c:39:a3:a2:81:47:ab:8f:57:a9:89:9d:56:4b:77:b1:
-         04:c8:9c:54:d2:5c:28:f5:d3:66:ae:9a:9c:a5:91:c7:eb:20:
-         69:fb:58:99:c7:5e:be:ec:4a:7a:62:09:fe:3b:30:f2:4a:d7:
-         1d:f9:0b:c3
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQffwzRXVz6PFglKdOay8j8TANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjdaFw0yMzEwMTUx
-MDQ3MjdaMBkxFzAVBgNVBAMMDmRzb2NsYWIta2liYW5hMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAzk/JD4RNTnvcEZDJSajzYESoJRtZg2QL0eC8WVAi
-pfWIeshAZeQiPXfSj54wF4BeIIW8cGdhy9jin5p8e6boTnl7zYZuJlI3Rbart29A
-j3pVi9GRzCFvVTdQO3IfLTu/dUeRiGoc6jndiyUxVQ68Um+/C5bv4xJc2mMiVOWz
-lYsCnlc+e0+g9W8HqFtFfMs0g3c0pbH/BRKIj8zEBV3p530rEvq7TSX09wTnlQaV
-6qnEdU73A2ctnJr0AfYqjWxt0Fmpzh8SsXY5yAfUIHMe85y5Z4M7qHxu+4bqP2qO
-mEw5qdFNvp8KQ0kb/QlntmJx/YeaYyUAqsehTSMS41YPbwIDAQABo4HcMIHZMAkG
-A1UdEwQCMAAwHQYDVR0OBBYEFFDzfU+yjKUJ/WTLwZfx+EnIazBNMEYGA1UdIwQ/
-MD2AFHkGykDTn5pUrtMzTfI4PrYL8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09M
-Uy1DQYIJAIp0kyaAW0K3MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAL
-BgNVHQ8EBAMCBaAwOQYDVR0RBDIwMIIOZHNvY2xhYi1raWJhbmGCHmRzb2NsYWIu
-Z240LTMtd3A4LXNvYy5zdW5ldC5zZTANBgkqhkiG9w0BAQsFAAOCAQEArr6Cb23m
-xMvDKtnW7hFSpt6JnjGj4oYH6dH+lcmiOJDfBf/lmSfo2FUAioWzFaXlW85OTwE7
-dKSyCfxulZKUL3YNx5cbeMEIHjoO+qar2x4iJoY59LuJoaHRVfbD/5ul6xtqhIod
-PF98Aw0IQm/XFIZhOGZl98KGaNuB6UEPgs+7vv3XlEjM+M9KQM4zxHVRAH7Hk/Y7
-ksFeis5fLML0/ux3nuow2VPu+bn9UPVrkhxX0uDzBdh5qWMWEwnPXznc7EPkZUVD
-ZeR8OaOigUerj1epiZ1WS3exBMicVNJcKPXTZq6anKWRx+sgaftYmcdevuxKemIJ
-/jsw8krXHfkLww==
------END CERTIFICATE-----
diff --git a/roles/odfekibana/files/dsoclab-kibana.key b/roles/odfekibana/files/dsoclab-kibana.key
deleted file mode 100644
index 9eec2e4..0000000
--- a/roles/odfekibana/files/dsoclab-kibana.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOT8kPhE1Oe9wR
-kMlJqPNgRKglG1mDZAvR4LxZUCKl9Yh6yEBl5CI9d9KPnjAXgF4ghbxwZ2HL2OKf
-mnx7puhOeXvNhm4mUjdFtqu3b0CPelWL0ZHMIW9VN1A7ch8tO791R5GIahzqOd2L
-JTFVDrxSb78Llu/jElzaYyJU5bOViwKeVz57T6D1bweoW0V8yzSDdzSlsf8FEoiP
-zMQFXennfSsS+rtNJfT3BOeVBpXqqcR1TvcDZy2cmvQB9iqNbG3QWanOHxKxdjnI
-B9Qgcx7znLlngzuofG77huo/ao6YTDmp0U2+nwpDSRv9CWe2YnH9h5pjJQCqx6FN
-IxLjVg9vAgMBAAECggEBAKJC7gdeLs8Da1oFXcqpLoEQfo5wrD5CeWlgL8Ku3BFa
-wzSOOtfoTWW6z8hUyc4yD9XUWRiutqP0uIh+oFlANIVD1rMWf5t0HjSeLv/eaBBw
-Tsfg06KQyVdkYZ3fa9XPoA1FdJitnIA7cpr1bY9QP502djNPSux0jMLWJTJQVqXN
-fXykLoIvB8xIPWbJAJMgF75turJMFT3wGN+qjCzbsZqIHmqp4eaKoH4Mz+Y6SJcA
-uSzCdGKVPxHUVZbtkXn5GZXFx5YQ0wwRHJRWQ6Fn49HtKc5vBc7PN8fG18+s3DA2
-BR7MLgIaHGBKsnJgcOOZQiRCQP/uBBEIxIF0qU3h5UECgYEA6aiUvvBNcShCRaaH
-Wf5GpYTT1ANNv5+3sCTy4KKt3yCxyyn5ENEFL1i8w6/LffGIAsoLnoEcxWV/fhLy
-ZH5FzIYxlR/w2rddUyOXENx/9CWw/IhL91U9525JCJ0B0TBkZ9842ORX7kcI8+0g
-4oaC5bDYTZotAto4ftNIzmfznesCgYEA4gnREIl4nv9v28x5aUS+HhSpsH9kkVrr
-FQ0amCJSHu4U9J39MXS3Fju3rlmZG59J9ymEQ4tr0Hq3S+tsTy4hP5d67/KtoxKr
-3smyKduX6gfOmEy3TjCSc+OMebM7lX0crX2+0JCm355yDC8fxdAGxpmqYvwmVw9Q
-NbIb2mHR/40CgYEAjshlnQhbSnq/hLBupZ+srBivGS+rox2Gsizh/kNq3J6uBuhv
-Osd/0572Ot6CC0Q9SPcOgp2DZ1zOu8v4M1C2dnTKd8Y8+Gp0rQlilvsndZpSvP7M
-7Sc53OKX3puTMLHRqWfO5TskQIdIAUc2gTaRZqragxFj0App25ZhN0BurmECgYEA
-uM8L5vhu7ZitjUk17zKsOo3sW4kc4ZczY4fOOZq+B9niukm+LMRfuUbkHCHXg/UN
-lY6VPGBuqwraeLEoYei2eHbSpgKFozHt4f6Is55+K3Nsn6sBqGUgKK5gOVSon8Wm
-P9byvzW1qlmyp3GUCbjXAWO8IqhEdKPpka1pBnk6KDUCgYAhGqRGJ7NG4+Wz/0/5
-Z/IQeEsLO4lB7EuIADn9udmrYgYqv7sHDzhIUOviJPRgf2ag68LEXXZsC029famu
-/wbhD6pw1yq0QKGDcgH/LzHL9+74TqRlT7drPyOFPqOGPKtc88wL/aXRC90n7dsT
-jFEbunnLOfUUjgxXiJpNU0FtjQ==
------END PRIVATE KEY-----
diff --git a/roles/odfekibana/files/dsoclab-kibana.p12 b/roles/odfekibana/files/dsoclab-kibana.p12
deleted file mode 100644
index f9e8737d615ab77c25857cf3b3c8eb2d77f03104..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3397
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

diff --git a/roles/odfekibana/files/kibana_graphs.ndjson b/roles/odfekibana/files/kibana_graphs.ndjson
index 086e784..f6e604f 100644
--- a/roles/odfekibana/files/kibana_graphs.ndjson
+++ b/roles/odfekibana/files/kibana_graphs.ndjson
@@ -1,11 +1,62 @@
-{"attributes":{"fieldFormatMap":"{\"ip_dst_addr_misp_url\":{\"id\":\"url\"}}","fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"alert.action\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.action.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.action\",\"subType\":\"multi\"},{\"name\":\"alert.category\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.category.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.category\",\"subType\":\"multi\"},{\"name\":\"alert.gid\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.rev\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.severity\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.signature\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.signature.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.signature\",\"subType\":\"multi\"},{\"name\":\"alert.signature_id\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"event_type\",\"subType\":\"multi\"},{\"name\":\"flow.bytes_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.bytes_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.start\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host\",\"subType\":\"multi\"},{\"name\":\"host_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host_domain\",\"subType\":\"multi\"},{\"name\":\"host_domain_freq1\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host_domain_freq2\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"in_iface\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"in_iface.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"in_iface\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_misp\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_misp.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_misp\",\"subType\":\"multi\"},{\"name\":\"ip_dst_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"payload\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload\",\"subType\":\"multi\"},{\"name\":\"payload_printable\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload_printable.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload_printable\",\"subType\":\"multi\"},{\"name\":\"proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"proto\",\"subType\":\"multi\"},{\"name\":\"stream\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vlan\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_misp_url\",\"type\":\"string\",\"count\":0,\"scripted\":true,\"script\":\"if (!doc['ip_dst_addr_misp.keyword'].empty) { \\n    return 'https://misp.soctools.geant.org/events/view/'+doc['ip_dst_addr_misp.keyword'].value;\\n}\\nreturn null;\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]","timeFieldName":"timestamp","title":"logs-suricata-alert-*"},"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-07-08T12:42:14.207Z","version":"WzMsMV0="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata Alerts Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata Alerts Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzQsMV0="}
-{"attributes":{"columns":["alert.signature_id","alert.signature","ip_src_addr","ip_dst_addr"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts","version":1},"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-07-08T12:42:14.207Z","version":"WzUsMV0="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top signatures","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top signatures\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"alert.signature.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzYsMV0="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_dst_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_dst_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dst IP\"}}]}"},"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzcsMV0="}
-{"attributes":{"columns":["ip_dst_addr_misp","ip_dst_addr","alert.signature","ip_dst_addr_misp_url"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"ip_dst_addr_misp>0\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts Misp","version":1},"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-07-08T12:42:14.207Z","version":"WzgsMV0="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Dst IP in misp","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Dst IP in misp\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":5,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzksMV0="}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata alerts - the Hive","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata alerts - the Hive\",\"type\":\"thehive_button\",\"params\":{\"url\":\"https://hive.soctools.geant.org/\",\"apikey\":\"ebMZixrFT+4qeWDf0iW3D5qFr/GbwA4j\",\"owner\":\"odfe\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":20,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"48992900-62d3-11ea-aaa3-bb2f31340783","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzEwLDFd"}
-{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"embeddableConfig\":{},\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":7,\"i\":\"1\"},\"panelIndex\":\"1\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_0\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":0,\"y\":15,\"w\":48,\"h\":14,\"i\":\"2\"},\"panelIndex\":\"2\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_1\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":0,\"y\":7,\"w\":10,\"h\":8,\"i\":\"3\"},\"panelIndex\":\"3\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_2\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":10,\"y\":7,\"w\":9,\"h\":8,\"i\":\"5\"},\"panelIndex\":\"5\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_3\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":19,\"y\":7,\"w\":11,\"h\":8,\"i\":\"7\"},\"panelIndex\":\"7\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_4\"},{\"embeddableConfig\":{},\"gridData\":{\"x\":39,\"y\":7,\"w\":9,\"h\":3,\"i\":\"8\"},\"panelIndex\":\"8\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"Suricata Alerts","version":1},"id":"368ddb80-0b7f-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_0","type":"visualization"},{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_1","type":"search"},{"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","name":"panel_2","type":"visualization"},{"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","name":"panel_3","type":"visualization"},{"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","name":"panel_4","type":"visualization"},{"id":"48992900-62d3-11ea-aaa3-bb2f31340783","name":"panel_5","type":"visualization"}],"type":"dashboard","updated_at":"2020-07-08T12:42:14.207Z","version":"WzExLDFd"}
-{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"data_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_id\",\"subType\":\"multi\"},{\"name\":\"data_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_type\",\"subType\":\"multi\"},{\"name\":\"http_version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_version\",\"subType\":\"multi\"},{\"name\":\"ident\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ident.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ident\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lat\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lon\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"method\",\"subType\":\"multi\"},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"referer\",\"subType\":\"multi\"},{\"name\":\"request_page\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request_page.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"request_page\",\"subType\":\"multi\"},{\"name\":\"response_size\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response_size.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"response_size\",\"subType\":\"multi\"},{\"name\":\"server_response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"server_response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"server_response\",\"subType\":\"multi\"},{\"name\":\"source_file\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_file.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_file\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user_agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"user_agent\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-nginx-*"},"id":"4ca554f0-893f-11ea-977f-4711a028b7c3","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-07-08T12:42:14.207Z","version":"WzEyLDFd"}
-{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_src_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_src_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Src IP\"}}]}"},"id":"d8322050-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-07-08T12:42:14.207Z","version":"WzEzLDFd"}
\ No newline at end of file
+{"attributes":{"buildNum":26506,"defaultIndex":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b"},"id":"7.4.2","references":[],"type":"config","updated_at":"2020-12-20T14:02:51.577Z","version":"WzM0LDRd"}
+{"attributes":{"fields":"[{\"name\":\"TLP\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"TLP.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"TLP\",\"subType\":\"multi\"},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"destination.ip\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination.ip.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination.ip\",\"subType\":\"multi\"},{\"name\":\"destination.port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination/ip_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_city\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_country\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_lat\",\"subType\":\"multi\"},{\"name\":\"destination/ip_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_geo_lon\",\"subType\":\"multi\"},{\"name\":\"destination/ip_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"destination/ip_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"destination/ip_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"destination/ip_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"destination/ip_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"event_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"event_type\",\"subType\":\"multi\"},{\"name\":\"flow_id\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"in_iface\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"in_iface.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"in_iface\",\"subType\":\"multi\"},{\"name\":\"proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"proto\",\"subType\":\"multi\"},{\"name\":\"source.ip\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source.ip.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source.ip\",\"subType\":\"multi\"},{\"name\":\"source.port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source/ip_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_city\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_country\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_lat\",\"subType\":\"multi\"},{\"name\":\"source/ip_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_geo_lon\",\"subType\":\"multi\"},{\"name\":\"source/ip_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"source/ip_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"source/ip_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source/ip_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source/ip_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tls.ja3.hash\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.ja3.hash.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.ja3.hash\",\"subType\":\"multi\"},{\"name\":\"tls.ja3.string\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.ja3.string.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.ja3.string\",\"subType\":\"multi\"},{\"name\":\"tls.sni\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni\",\"subType\":\"multi\"},{\"name\":\"tls.sni_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni_domain\",\"subType\":\"multi\"},{\"name\":\"tls.sni_domain_alexa\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni_domain_alexa.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni_domain_alexa\",\"subType\":\"multi\"},{\"name\":\"tls.sni_umbrella\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.sni_umbrella.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.sni_umbrella\",\"subType\":\"multi\"},{\"name\":\"tls.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tls.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tls.version\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-suricata-tls-*"},"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T10:26:54.470Z","version":"Wzk4LDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Histogram","uiStateJSON":"{\"vis\":{\"legendOpen\":false}}","version":1,"visState":"{\"title\":\"Suricata TLS - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T08:53:14.254Z\",\"max\":\"2020-12-21T08:53:14.254Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"080a28d0-436a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:31:45.324Z","version":"WzExMCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top source IPs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top source IPs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"source.ip.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Source IP addr\"}}]}"},"id":"649dd8c0-436b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T09:18:57.076Z","version":"WzgwLDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top destination IPs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top destination IPs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"destination.ip.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dest. IP addr\"}}]}"},"id":"e95d6ae0-436a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T09:19:11.119Z","version":"WzgxLDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top SNI","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top SNI\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"tls.sni.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"SNI\"}}]}"},"id":"fbeb5370-436a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:30:58.208Z","version":"WzEwNyw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - Top destination ports","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata TLS - Top destination ports\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"number\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"destination.port\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dest. port\"}}]}"},"id":"d5917220-436c-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:31:21.254Z","version":"WzEwOCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata TLS - TLS version","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata TLS - TLS version\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"tls.version.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"f99b0560-436b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:28:59.999Z","version":"WzEwMyw0XQ=="}
+{"attributes":{"columns":["in_iface","source.ip","destination.ip","destination.port","tls.version","tls.sni","tls.sni_domain_alexa","tls.sni_umbrella"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata TLS logs","version":1},"id":"2fb21020-4377-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"74bb7bb0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T10:27:54.529Z","version":"Wzk5LDRd"}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"bf273f44-b0c6-4a76-85ae-271bace06b5c\"},\"panelIndex\":\"bf273f44-b0c6-4a76-85ae-271bace06b5c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":10,\"h\":15,\"i\":\"f3f513d2-c57c-402d-a7eb-9335533b9cee\"},\"panelIndex\":\"f3f513d2-c57c-402d-a7eb-9335533b9cee\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":10,\"y\":9,\"w\":11,\"h\":15,\"i\":\"280a69a1-470e-455f-a2af-e0f67a5b6899\"},\"panelIndex\":\"280a69a1-470e-455f-a2af-e0f67a5b6899\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":21,\"y\":9,\"w\":17,\"h\":15,\"i\":\"e2966d9f-3a5f-40c6-8046-921ca11dca36\"},\"panelIndex\":\"e2966d9f-3a5f-40c6-8046-921ca11dca36\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":38,\"y\":9,\"w\":10,\"h\":8,\"i\":\"8b66f551-7eea-46fd-a693-83291441986a\"},\"panelIndex\":\"8b66f551-7eea-46fd-a693-83291441986a\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":38,\"y\":17,\"w\":10,\"h\":7,\"i\":\"91965e77-41d0-4046-b51b-acf16494b52c\"},\"panelIndex\":\"91965e77-41d0-4046-b51b-acf16494b52c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":24,\"w\":48,\"h\":22,\"i\":\"66a787fc-5c09-4a60-b878-5d453d6d5738\"},\"panelIndex\":\"66a787fc-5c09-4a60-b878-5d453d6d5738\",\"embeddableConfig\":{},\"panelRefName\":\"panel_6\"}]","timeRestore":false,"title":"Suricata TLS","version":1},"id":"2d8baeb0-436c-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"080a28d0-436a-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"649dd8c0-436b-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"e95d6ae0-436a-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"fbeb5370-436a-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"d5917220-436c-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"visualization"},{"id":"f99b0560-436b-11eb-b75a-bbebe0b50e97","name":"panel_5","type":"visualization"},{"id":"2fb21020-4377-11eb-b75a-bbebe0b50e97","name":"panel_6","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T10:30:30.675Z","version":"WzEwNSw0XQ=="}
+{"attributes":{"fieldFormatMap":"{\"ip_dst_addr_misp_url\":{\"id\":\"url\"}}","fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"alert.action\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.action.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.action\",\"subType\":\"multi\"},{\"name\":\"alert.category\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.category.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.category\",\"subType\":\"multi\"},{\"name\":\"alert.gid\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.rev\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.severity\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"alert.signature\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"alert.signature.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"alert.signature\",\"subType\":\"multi\"},{\"name\":\"alert.signature_id\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"event_type\",\"subType\":\"multi\"},{\"name\":\"flow.bytes_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.bytes_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toclient\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.pkts_toserver\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow.start\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host\",\"subType\":\"multi\"},{\"name\":\"host_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host_domain\",\"subType\":\"multi\"},{\"name\":\"host_domain_freq1\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host_domain_freq2\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"in_iface\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"in_iface.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"in_iface\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_dst_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_dst_addr_misp\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_dst_addr_misp.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_dst_addr_misp\",\"subType\":\"multi\"},{\"name\":\"ip_dst_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.accuracy\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.isoCode\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.isoCode.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.isoCode\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.country.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo.geo.country.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo.geo.country.name\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo.geo.latitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_addr_geo.geo.longitude\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip_src_port\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"payload\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload\",\"subType\":\"multi\"},{\"name\":\"payload_printable\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"payload_printable.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"payload_printable\",\"subType\":\"multi\"},{\"name\":\"proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"proto\",\"subType\":\"multi\"},{\"name\":\"stream\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"vlan\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-suricata-alert-*"},"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-20T21:20:28.734Z","version":"WzM1LDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata Alerts Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata Alerts Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzIzLDRd"}
+{"attributes":{"columns":["alert.signature_id","alert.signature","ip_src_addr","ip_dst_addr"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts","version":1},"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI0LDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top signatures","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top signatures\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"alert.signature.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI1LDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_dst_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_dst_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Dst IP\"}}]}"},"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI2LDRd"}
+{"attributes":{"columns":["ip_dst_addr_misp","ip_dst_addr","alert.signature","ip_dst_addr_misp_url"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"ip_dst_addr_misp>0\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Suricata Alerts Misp","version":1},"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"search":"7.4.0"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI3LDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Dst IP in misp","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Dst IP in misp\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_dst_addr.keyword\",\"order\":\"desc\",\"size\":5,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Signature\"}}]}"},"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"42ad6a30-15b0-11ea-841d-a1505e4ae442","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI4LDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Suricata alerts - the Hive","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Suricata alerts - the Hive\",\"type\":\"thehive_button\",\"params\":{\"url\":\"https://hive.soctools.geant.org/\",\"apikey\":\"ebMZixrFT+4qeWDf0iW3D5qFr/GbwA4j\",\"owner\":\"odfe\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":20,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"48992900-62d3-11ea-aaa3-bb2f31340783","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"e81e23f0-0b75-11ea-bc07-2bc38b4c4b9b","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzI5LDRd"}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":7,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":16,\"w\":48,\"h\":14,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":7,\"w\":15,\"h\":9,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":15,\"y\":7,\"w\":9,\"h\":9,\"i\":\"5\"},\"panelIndex\":\"5\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":24,\"y\":7,\"w\":11,\"h\":9,\"i\":\"7\"},\"panelIndex\":\"7\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":39,\"y\":7,\"w\":9,\"h\":4,\"i\":\"8\"},\"panelIndex\":\"8\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"Suricata Alerts","version":1},"id":"368ddb80-0b7f-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"71a37750-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_0","type":"visualization"},{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"panel_1","type":"search"},{"id":"d7d96e70-0b7d-11ea-bc07-2bc38b4c4b9b","name":"panel_2","type":"visualization"},{"id":"eb41e310-0b7e-11ea-bc07-2bc38b4c4b9b","name":"panel_3","type":"visualization"},{"id":"9676d8e0-15b0-11ea-841d-a1505e4ae442","name":"panel_4","type":"visualization"},{"id":"48992900-62d3-11ea-aaa3-bb2f31340783","name":"panel_5","type":"visualization"}],"type":"dashboard","updated_at":"2020-12-21T21:58:35.823Z","version":"WzIxMSw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"class\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"class.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"class\",\"subType\":\"multi\"},{\"name\":\"level\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"level.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"level\",\"subType\":\"multi\"},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"source_file\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_file.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_file\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"stackTrace\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"stackTrace.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"stackTrace\",\"subType\":\"multi\"},{\"name\":\"thread\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"thread.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"thread\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-nifi-*"},"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T10:42:10.466Z","version":"WzEyNiw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFi Logs - Histogram","uiStateJSON":"{\"vis\":{\"colors\":{\"ERROR\":\"#BF1B00\",\"WARN\":\"#CCA300\",\"INFO\":\"#1F78C1\"}}}","version":1,"visState":"{\"title\":\"NiFi Logs - Histogram\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T10:47:07.185Z\",\"max\":\"2020-12-21T10:47:07.185Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]},\"grid\":{\"categoryLines\":false},\"labels\":{\"show\":false},\"legendPosition\":\"bottom\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"thresholdLine\":{\"color\":\"#34130C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"level.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"085d3790-437a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:49:20.127Z","version":"WzEyOSw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFi logs - Source host","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"NiFi logs - Source host\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"source_host.keyword\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"3ad86f30-438b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:53:41.198Z","version":"WzIwNCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFi logs - Level","uiStateJSON":"{\"vis\":{\"colors\":{\"ERROR\":\"#E24D42\",\"INFO\":\"#1F78C1\",\"WARN\":\"#CCA300\"}}}","version":1,"visState":"{\"title\":\"NiFi logs - Level\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"level.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"03184750-438b-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T12:49:49.637Z","version":"WzEzMyw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"NiFI logs - source files","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"NiFI logs - source files\",\"type\":\"table\",\"params\":{\"perPage\":4,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":true,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"source_file.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Source file\"}}]}"},"id":"e16c89f0-437a-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:54:21.199Z","version":"WzEzMiw0XQ=="}
+{"attributes":{"columns":["source_host","level","source_file","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"NiFi logs","version":1},"id":"53a1d270-4379-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"635a5350-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T10:43:13.810Z","version":"WzEyNyw0XQ=="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":11,\"i\":\"41579e7d-a833-4988-8e87-30e9934c9153\"},\"panelIndex\":\"41579e7d-a833-4988-8e87-30e9934c9153\",\"embeddableConfig\":{\"vis\":{\"colors\":{\"ERROR\":\"#E24D42\",\"WARN\":\"#CCA300\",\"INFO\":\"#1F78C1\"}}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":11,\"w\":12,\"h\":10,\"i\":\"26a9e301-ca86-4313-8321-e5b8b67fa097\"},\"panelIndex\":\"26a9e301-ca86-4313-8321-e5b8b67fa097\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":12,\"y\":11,\"w\":9,\"h\":10,\"i\":\"0d515b73-44ae-48f0-9fbe-c330d044544a\"},\"panelIndex\":\"0d515b73-44ae-48f0-9fbe-c330d044544a\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":21,\"y\":11,\"w\":13,\"h\":10,\"i\":\"9cf35fdc-5e6b-4a9b-a1fd-88c379d343da\"},\"panelIndex\":\"9cf35fdc-5e6b-4a9b-a1fd-88c379d343da\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":21,\"w\":48,\"h\":22,\"i\":\"e52833e0-30de-4451-80db-22c74ec92fcb\"},\"panelIndex\":\"e52833e0-30de-4451-80db-22c74ec92fcb\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"NiFi logs","version":1},"id":"4b6ae5a0-437a-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"085d3790-437a-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"3ad86f30-438b-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"03184750-438b-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"e16c89f0-437a-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"53a1d270-4379-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T12:53:06.300Z","version":"WzEzNiw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.ephemeral_id\",\"subType\":\"multi\"},{\"name\":\"agent.hostname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.hostname.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.hostname\",\"subType\":\"multi\"},{\"name\":\"agent.id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.id\",\"subType\":\"multi\"},{\"name\":\"agent.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.name\",\"subType\":\"multi\"},{\"name\":\"agent.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.type\",\"subType\":\"multi\"},{\"name\":\"agent.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.version\",\"subType\":\"multi\"},{\"name\":\"ecs.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ecs.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ecs.version\",\"subType\":\"multi\"},{\"name\":\"error.message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.message\",\"subType\":\"multi\"},{\"name\":\"error.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.name\",\"subType\":\"multi\"},{\"name\":\"error.stack\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.stack.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.stack\",\"subType\":\"multi\"},{\"name\":\"fields.log_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"fields.log_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"fields.log_type\",\"subType\":\"multi\"},{\"name\":\"host.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host.name\",\"subType\":\"multi\"},{\"name\":\"input.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"input.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"input.type\",\"subType\":\"multi\"},{\"name\":\"level\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"level.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"level\",\"subType\":\"multi\"},{\"name\":\"log.file.path\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.file.path.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.file.path\",\"subType\":\"multi\"},{\"name\":\"log.offset\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"metadata.beat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.beat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.beat\",\"subType\":\"multi\"},{\"name\":\"metadata.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.type\",\"subType\":\"multi\"},{\"name\":\"metadata.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.version\",\"subType\":\"multi\"},{\"name\":\"method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"method\",\"subType\":\"multi\"},{\"name\":\"pid\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"prevMsg\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"prevMsg.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"prevMsg\",\"subType\":\"multi\"},{\"name\":\"prevState\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"prevState.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"prevState\",\"subType\":\"multi\"},{\"name\":\"req.headers.accept\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.accept-encoding\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.accept-encoding.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.accept-encoding\",\"subType\":\"multi\"},{\"name\":\"req.headers.accept-language\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.accept-language.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.accept-language\",\"subType\":\"multi\"},{\"name\":\"req.headers.accept.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.accept\",\"subType\":\"multi\"},{\"name\":\"req.headers.cache-control\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.cache-control.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.cache-control\",\"subType\":\"multi\"},{\"name\":\"req.headers.connection\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.connection.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.connection\",\"subType\":\"multi\"},{\"name\":\"req.headers.content-length\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.content-length.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.content-length\",\"subType\":\"multi\"},{\"name\":\"req.headers.content-type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.content-type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.content-type\",\"subType\":\"multi\"},{\"name\":\"req.headers.host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.host\",\"subType\":\"multi\"},{\"name\":\"req.headers.if-none-match\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.if-none-match.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.if-none-match\",\"subType\":\"multi\"},{\"name\":\"req.headers.kbn-version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.kbn-version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.kbn-version\",\"subType\":\"multi\"},{\"name\":\"req.headers.origin\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.origin.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.origin\",\"subType\":\"multi\"},{\"name\":\"req.headers.referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.referer\",\"subType\":\"multi\"},{\"name\":\"req.headers.upgrade-insecure-requests\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.upgrade-insecure-requests.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.upgrade-insecure-requests\",\"subType\":\"multi\"},{\"name\":\"req.headers.user-agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.headers.user-agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.headers.user-agent\",\"subType\":\"multi\"},{\"name\":\"req.method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.method\",\"subType\":\"multi\"},{\"name\":\"req.referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.referer\",\"subType\":\"multi\"},{\"name\":\"req.remoteAddress\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.remoteAddress.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.remoteAddress\",\"subType\":\"multi\"},{\"name\":\"req.url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.url.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.url\",\"subType\":\"multi\"},{\"name\":\"req.userAgent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"req.userAgent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"req.userAgent\",\"subType\":\"multi\"},{\"name\":\"res.contentLength\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"res.responseTime\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"res.statusCode\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"state\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"state.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"state\",\"subType\":\"multi\"},{\"name\":\"statusCode\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tags\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tags.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tags\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"type\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-kibana-*"},"id":"55426280-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T16:15:49.869Z","version":"WzE0Nyw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kibana logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"84735610-43a8-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T16:21:02.064Z","version":"WzE0OCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Top IPs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Kibana logs - Top IPs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.remoteAddress.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Remote address\"}}]}"},"id":"22b8f4d0-43cf-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:57:28.477Z","version":"WzE1Niw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Response time","uiStateJSON":"{\"vis\":{\"legendOpen\":false}}","version":1,"visState":"{\"title\":\"Kibana logs - Response time\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{\"interval\":100},\"aggType\":\"histogram\"},\"y\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]},\"grid\":{\"categoryLines\":false},\"labels\":{\"show\":false},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"thresholdLine\":{\"color\":\"#34130C\",\"show\":false,\"style\":\"full\",\"value\":50,\"width\":1},\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}],\"orderBucketsBySum\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"res.responseTime\",\"interval\":50,\"min_doc_count\":false,\"has_extended_bounds\":false,\"extended_bounds\":{\"max\":\"\",\"min\":\"\"},\"customLabel\":\"Response time [ms]\"}}]}"},"id":"90d03420-43ce-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:53:23.681Z","version":"WzE1NSw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Status codes","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kibana logs - Status codes\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"number\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"res.statusCode\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Status code\"}}]}"},"id":"8f67bff0-43cd-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:46:11.822Z","version":"WzE1NCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Top URLs","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Kibana logs - Top URLs\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},{\"accessor\":3,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},{\"accessor\":2,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.url.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Requested URL\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.method.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Method\"}}]}"},"id":"d921f4a0-43a8-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:43:48.516Z","version":"WzE1Myw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kibana logs - Top User-Agents","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Kibana logs - Top User-Agents\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"req.headers.user-agent.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"User-Agent\"}}]}"},"id":"baef0cb0-43cc-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T20:40:15.354Z","version":"WzE1MSw0XQ=="}
+{"attributes":{"columns":["method","req.url","res.statusCode","req.remoteAddress","req.headers.user-agent"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Kibana logs","version":1},"id":"8f07c570-43a8-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"55426280-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T16:21:19.815Z","version":"WzE0OSw0XQ=="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":8,\"i\":\"04285b5f-cd0f-4514-857c-0392c04dd759\"},\"panelIndex\":\"04285b5f-cd0f-4514-857c-0392c04dd759\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":8,\"w\":11,\"h\":12,\"i\":\"d6cba6b1-29d2-41bf-862b-85094bc155db\"},\"panelIndex\":\"d6cba6b1-29d2-41bf-862b-85094bc155db\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":11,\"y\":8,\"w\":23,\"h\":12,\"i\":\"2f0b8c11-89a2-4faa-bf5f-201803edae1d\"},\"panelIndex\":\"2f0b8c11-89a2-4faa-bf5f-201803edae1d\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":34,\"y\":8,\"w\":14,\"h\":12,\"i\":\"99a7d5fc-d91f-4202-8c7e-48bfbf515084\"},\"panelIndex\":\"99a7d5fc-d91f-4202-8c7e-48bfbf515084\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":20,\"w\":28,\"h\":15,\"i\":\"7c98c844-9efd-4289-94b0-83101b21ee9b\"},\"panelIndex\":\"7c98c844-9efd-4289-94b0-83101b21ee9b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":28,\"y\":20,\"w\":20,\"h\":15,\"i\":\"08ce3890-961f-408f-9e2b-f9f028415e07\"},\"panelIndex\":\"08ce3890-961f-408f-9e2b-f9f028415e07\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":35,\"w\":48,\"h\":21,\"i\":\"0b4b31f9-53d5-4212-aedc-a261ee4be5e8\"},\"panelIndex\":\"0b4b31f9-53d5-4212-aedc-a261ee4be5e8\",\"embeddableConfig\":{},\"panelRefName\":\"panel_6\"}]","timeRestore":false,"title":"Kibana logs","version":1},"id":"6e0402e0-43cf-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"84735610-43a8-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"22b8f4d0-43cf-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"90d03420-43ce-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"8f67bff0-43cd-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"d921f4a0-43a8-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"visualization"},{"id":"baef0cb0-43cc-11eb-b75a-bbebe0b50e97","name":"panel_5","type":"visualization"},{"id":"8f07c570-43a8-11eb-b75a-bbebe0b50e97","name":"panel_6","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T20:59:34.797Z","version":"WzE1Nyw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.ephemeral_id\",\"subType\":\"multi\"},{\"name\":\"agent.hostname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.hostname.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.hostname\",\"subType\":\"multi\"},{\"name\":\"agent.id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.id\",\"subType\":\"multi\"},{\"name\":\"agent.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.name\",\"subType\":\"multi\"},{\"name\":\"agent.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.type\",\"subType\":\"multi\"},{\"name\":\"agent.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.version\",\"subType\":\"multi\"},{\"name\":\"ecs.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ecs.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ecs.version\",\"subType\":\"multi\"},{\"name\":\"event.severity\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"fields.log_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"fields.log_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"fields.log_type\",\"subType\":\"multi\"},{\"name\":\"host.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host.name\",\"subType\":\"multi\"},{\"name\":\"input.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"input.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"input.type\",\"subType\":\"multi\"},{\"name\":\"log.file.path\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.file.path.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.file.path\",\"subType\":\"multi\"},{\"name\":\"log.offset\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"log.source.address\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.source.address.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.source.address\",\"subType\":\"multi\"},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"metadata.beat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.beat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.beat\",\"subType\":\"multi\"},{\"name\":\"metadata.truncated\",\"type\":\"boolean\",\"esTypes\":[\"boolean\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"metadata.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.type\",\"subType\":\"multi\"},{\"name\":\"metadata.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.version\",\"subType\":\"multi\"},{\"name\":\"syslog.facility\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"syslog.facility_label\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"syslog.facility_label.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"syslog.facility_label\",\"subType\":\"multi\"},{\"name\":\"syslog.priority\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"syslog.severity_label\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"syslog.severity_label.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"syslog.severity_label\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-filebeat-unknown-*"},"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T21:44:27.290Z","version":"WzE5Myw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Other logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Other logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":1,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"YYYY-MM-DD HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT3H\",\"format\":\"YYYY-MM-DD HH:mm\",\"bounds\":{\"min\":\"2020-12-14T21:46:19.383Z\",\"max\":\"2020-12-21T21:46:19.383Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"fields.log_type.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"f4775b50-43d5-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:46:26.845Z","version":"WzE5Nyw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Other logs - Host name","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Other logs - Host name\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"host.name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"3579d010-43d6-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:48:06.416Z","version":"WzE5OSw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Other logs - Log type","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Other logs - Log type\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"fields.log_type.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"1fe05530-43d6-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:47:30.178Z","version":"WzE5OCw0XQ=="}
+{"attributes":{"columns":["fields.log_type","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Filebeat unknown logs","version":1},"id":"bfaaf800-43d5-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"b8cf4490-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T21:44:48.767Z","version":"WzE5NCw0XQ=="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"bf3a414b-96f0-4090-b163-43664f901493\"},\"panelIndex\":\"bf3a414b-96f0-4090-b163-43664f901493\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":15,\"h\":9,\"i\":\"d6977944-5a19-48b6-8829-2e50838363e7\"},\"panelIndex\":\"d6977944-5a19-48b6-8829-2e50838363e7\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":15,\"y\":9,\"w\":15,\"h\":9,\"i\":\"4cc8faa1-db1f-49e4-aaed-4e6010ff066b\"},\"panelIndex\":\"4cc8faa1-db1f-49e4-aaed-4e6010ff066b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":18,\"w\":48,\"h\":21,\"i\":\"09bccade-e7cc-455e-b5e7-af2403262ba6\"},\"panelIndex\":\"09bccade-e7cc-455e-b5e7-af2403262ba6\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"}]","timeRestore":false,"title":"Other logs","version":1},"id":"7104bb90-43d6-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"f4775b50-43d5-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"3579d010-43d6-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"1fe05530-43d6-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"bfaaf800-43d5-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T21:49:46.312Z","version":"WzIwMCw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.ephemeral_id\",\"subType\":\"multi\"},{\"name\":\"agent.hostname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.hostname.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.hostname\",\"subType\":\"multi\"},{\"name\":\"agent.id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.id\",\"subType\":\"multi\"},{\"name\":\"agent.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.name\",\"subType\":\"multi\"},{\"name\":\"agent.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.type\",\"subType\":\"multi\"},{\"name\":\"agent.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent.version\",\"subType\":\"multi\"},{\"name\":\"ecs.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ecs.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ecs.version\",\"subType\":\"multi\"},{\"name\":\"error.message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.message\",\"subType\":\"multi\"},{\"name\":\"error.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"error.type\",\"subType\":\"multi\"},{\"name\":\"fields.log_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"fields.log_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"fields.log_type\",\"subType\":\"multi\"},{\"name\":\"host.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host.name\",\"subType\":\"multi\"},{\"name\":\"hostName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"hostName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"hostName\",\"subType\":\"multi\"},{\"name\":\"input.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"input.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"input.type\",\"subType\":\"multi\"},{\"name\":\"level\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"level.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"level\",\"subType\":\"multi\"},{\"name\":\"log.file.path\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"log.file.path.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"log.file.path\",\"subType\":\"multi\"},{\"name\":\"log.offset\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"loggerClassName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"loggerClassName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"loggerClassName\",\"subType\":\"multi\"},{\"name\":\"loggerName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"loggerName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"loggerName\",\"subType\":\"multi\"},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"metadata.beat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.beat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.beat\",\"subType\":\"multi\"},{\"name\":\"metadata.type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.type\",\"subType\":\"multi\"},{\"name\":\"metadata.version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"metadata.version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"metadata.version\",\"subType\":\"multi\"},{\"name\":\"ndc\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ndc.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ndc\",\"subType\":\"multi\"},{\"name\":\"processId\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"processName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"processName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"processName\",\"subType\":\"multi\"},{\"name\":\"sequence\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sourceClassName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceClassName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceClassName\",\"subType\":\"multi\"},{\"name\":\"sourceFileName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceFileName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceFileName\",\"subType\":\"multi\"},{\"name\":\"sourceLineNumber\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sourceMethodName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceMethodName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceMethodName\",\"subType\":\"multi\"},{\"name\":\"sourceModuleName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceModuleName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceModuleName\",\"subType\":\"multi\"},{\"name\":\"sourceModuleVersion\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sourceModuleVersion.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"sourceModuleVersion\",\"subType\":\"multi\"},{\"name\":\"threadId\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"threadName\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"threadName.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"threadName\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-keycloak-*"},"id":"b9a340f0-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T21:01:56.865Z","version":"WzE2MCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Keycloak logs - Histogram","uiStateJSON":"{\"vis\":{\"colors\":{\"INFO\":\"#1F78C1\"},\"legendOpen\":true}}","version":1,"visState":"{\"title\":\"Keycloak logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":1,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T21:05:22.930Z\",\"max\":\"2020-12-21T21:05:22.930Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"level.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"4b5e4560-43d0-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"b9a340f0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:05:46.166Z","version":"WzE2Miw0XQ=="}
+{"attributes":{"columns":["level","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"Keycloak logs","version":1},"id":"14c6e610-43d0-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"b9a340f0-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T21:04:14.577Z","version":"WzE2MSw0XQ=="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"f4adefb8-580f-47fa-a7b8-27be3af78eb1\"},\"panelIndex\":\"f4adefb8-580f-47fa-a7b8-27be3af78eb1\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":48,\"h\":20,\"i\":\"2f33edae-d9c7-4eaa-8e4d-494db3b1cf73\"},\"panelIndex\":\"2f33edae-d9c7-4eaa-8e4d-494db3b1cf73\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"}]","timeRestore":false,"title":"Keycloak logs","version":1},"id":"717b80f0-43d0-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"4b5e4560-43d0-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"14c6e610-43d0-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T21:06:50.111Z","version":"WzE2Myw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"actconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"actconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"actconn\",\"subType\":\"multi\"},{\"name\":\"backend_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"backend_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"backend_name\",\"subType\":\"multi\"},{\"name\":\"backend_queue\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"backend_queue.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"backend_queue\",\"subType\":\"multi\"},{\"name\":\"beconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"beconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"beconn\",\"subType\":\"multi\"},{\"name\":\"bytes_read\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"bytes_read.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"bytes_read\",\"subType\":\"multi\"},{\"name\":\"captured_request_cookie\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"captured_request_cookie.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"captured_request_cookie\",\"subType\":\"multi\"},{\"name\":\"captured_response_cookie\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"captured_response_cookie.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"captured_response_cookie\",\"subType\":\"multi\"},{\"name\":\"client.ip\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_city\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_country\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_lat\",\"subType\":\"multi\"},{\"name\":\"client.ip_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_geo_lon\",\"subType\":\"multi\"},{\"name\":\"client.ip_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"client.ip_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"client.ip_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.ip_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.ip_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"client.port\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"client.port.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"client.port\",\"subType\":\"multi\"},{\"name\":\"feconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"feconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"feconn\",\"subType\":\"multi\"},{\"name\":\"frontend_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"frontend_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"frontend_name\",\"subType\":\"multi\"},{\"name\":\"http_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_host\",\"subType\":\"multi\"},{\"name\":\"http_proto\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_proto.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_proto\",\"subType\":\"multi\"},{\"name\":\"http_request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_request.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_request\",\"subType\":\"multi\"},{\"name\":\"http_status_code\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_status_code.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_status_code\",\"subType\":\"multi\"},{\"name\":\"http_user\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_user.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_user\",\"subType\":\"multi\"},{\"name\":\"http_verb\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_verb.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_verb\",\"subType\":\"multi\"},{\"name\":\"http_version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_version\",\"subType\":\"multi\"},{\"name\":\"process.name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"process.name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"process.name\",\"subType\":\"multi\"},{\"name\":\"process.pid\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"process.pid.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"process.pid\",\"subType\":\"multi\"},{\"name\":\"retries\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"retries.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"retries\",\"subType\":\"multi\"},{\"name\":\"server.domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"server.domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"server.domain\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"srv_queue\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"srv_queue.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"srv_queue\",\"subType\":\"multi\"},{\"name\":\"srvconn\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"srvconn.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"srvconn\",\"subType\":\"multi\"},{\"name\":\"termination_state\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"termination_state.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"termination_state\",\"subType\":\"multi\"},{\"name\":\"time_backend_connect\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_backend_connect.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_backend_connect\",\"subType\":\"multi\"},{\"name\":\"time_backend_response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_backend_response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_backend_response\",\"subType\":\"multi\"},{\"name\":\"time_duration\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_duration.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_duration\",\"subType\":\"multi\"},{\"name\":\"time_queue\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_queue.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_queue\",\"subType\":\"multi\"},{\"name\":\"time_request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"time_request.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"time_request\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"timestamp","title":"logs-haproxy-*"},"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T21:27:29.655Z","version":"WzE3NSw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"haproxy logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT30M\",\"format\":\"HH:mm\",\"bounds\":{\"min\":\"2020-12-20T21:34:47.670Z\",\"max\":\"2020-12-21T21:34:47.670Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"timeRange\":{\"from\":\"now-24h\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"backend_name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"74693590-43d1-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:35:01.074Z","version":"WzE4MSw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Top clients","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"haproxy logs - Top clients\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"client.ip.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Client IP addr\"}}]}"},"id":"d2b6e700-43d1-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:16:42.736Z","version":"WzE2Niw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Top requests","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":3,\"direction\":\"desc\"}}}}","version":1,"visState":"{\"title\":\"haproxy logs - Top requests\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"percentageCol\":\"\",\"dimensions\":{\"metrics\":[{\"accessor\":3,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},{\"accessor\":2,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"backend_name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Backend name\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"http_request.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":20,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Request\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"http_status_code.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Status\"}}]}"},"id":"33158c30-43d4-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:38:09.088Z","version":"WzE4NCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Status codes","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"http_status_code.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"size\":10},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"dimensions\":{\"buckets\":[{\"accessor\":0,\"aggType\":\"terms\",\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"missingBucketLabel\":\"Missing\",\"otherBucketLabel\":\"Other\"}},\"params\":{}}],\"metric\":{\"accessor\":1,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}},\"isDonut\":false,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"bottom\",\"type\":\"pie\"},\"title\":\"haproxy logs - Status codes\",\"type\":\"pie\"}"},"id":"96a9c140-43d3-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:29:37.571Z","version":"WzE3OCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"haproxy logs - Backends","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"haproxy logs - Backends\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":false,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"bottom\",\"type\":\"pie\",\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"backend_name.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"2c952900-43d5-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:40:42.000Z","version":"WzE4OCw0XQ=="}
+{"attributes":{"columns":["client.ip","backend_name","http_verb","http_request","http_status_code","bytes_read","time_duration"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["timestamp","desc"]],"title":"haproxy logs","version":1},"id":"6c1be520-43d3-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"ece0e360-4309-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T21:28:09.585Z","version":"WzE3Niw0XQ=="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":9,\"i\":\"ccce8e7d-f8cf-4074-929a-a5518428f22d\"},\"panelIndex\":\"ccce8e7d-f8cf-4074-929a-a5518428f22d\",\"embeddableConfig\":{\"legendOpen\":false,\"vis\":{\"legendOpen\":true}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":9,\"w\":11,\"h\":16,\"i\":\"ba3bb2ae-8c2d-4d7c-b31b-68236235fa54\"},\"panelIndex\":\"ba3bb2ae-8c2d-4d7c-b31b-68236235fa54\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":11,\"y\":9,\"w\":28,\"h\":16,\"i\":\"07c2a778-1266-463e-9b3a-ea6f9d93e82b\"},\"panelIndex\":\"07c2a778-1266-463e-9b3a-ea6f9d93e82b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":39,\"y\":17,\"w\":9,\"h\":8,\"i\":\"d8e80787-da38-48a5-be9d-e73a94a1f0b3\"},\"panelIndex\":\"d8e80787-da38-48a5-be9d-e73a94a1f0b3\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":39,\"y\":9,\"w\":9,\"h\":8,\"i\":\"efc8e873-81b6-46d4-91c8-003c1869de67\"},\"panelIndex\":\"efc8e873-81b6-46d4-91c8-003c1869de67\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":true},\"legendOpen\":false},\"panelRefName\":\"panel_4\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":25,\"w\":48,\"h\":22,\"i\":\"735a3ce2-b6f1-4d3b-af8f-05c4511e9b64\"},\"panelIndex\":\"735a3ce2-b6f1-4d3b-af8f-05c4511e9b64\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"}]","timeRestore":false,"title":"haproxy logs","version":1},"id":"7dfc0c10-43d4-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"74693590-43d1-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"d2b6e700-43d1-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"33158c30-43d4-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"96a9c140-43d3-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"visualization"},{"id":"2c952900-43d5-11eb-b75a-bbebe0b50e97","name":"panel_4","type":"visualization"},{"id":"6c1be520-43d3-11eb-b75a-bbebe0b50e97","name":"panel_5","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T21:42:37.188Z","version":"WzE4OSw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"audit_category\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_category.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_category\",\"subType\":\"multi\"},{\"name\":\"audit_cluster_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_cluster_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_cluster_name\",\"subType\":\"multi\"},{\"name\":\"audit_format_version\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"audit_node_host_address\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_host_address.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_host_address\",\"subType\":\"multi\"},{\"name\":\"audit_node_host_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_host_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_host_name\",\"subType\":\"multi\"},{\"name\":\"audit_node_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_id\",\"subType\":\"multi\"},{\"name\":\"audit_node_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_node_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_node_name\",\"subType\":\"multi\"},{\"name\":\"audit_request_exception_stacktrace\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_request_exception_stacktrace.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_request_exception_stacktrace\",\"subType\":\"multi\"},{\"name\":\"audit_request_layer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_request_layer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_request_layer\",\"subType\":\"multi\"},{\"name\":\"audit_request_origin\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"audit_request_origin.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"audit_request_origin\",\"subType\":\"multi\"}]","timeFieldName":"@timestamp","title":"security-auditlog-*"},"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-21T10:34:19.556Z","version":"WzExOCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Audit Log - Histogram","uiStateJSON":"{\"vis\":{\"legendOpen\":true}}","version":1,"visState":"{\"title\":\"Security Audit Log - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"bottom\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"date\",\"params\":{\"pattern\":\"YYYY-MM-DD HH:mm\"}},\"params\":{\"date\":true,\"interval\":\"PT3H\",\"format\":\"YYYY-MM-DD HH:mm\",\"bounds\":{\"min\":\"2020-12-14T21:56:36.618Z\",\"max\":\"2020-12-21T21:56:36.618Z\"}},\"aggType\":\"date_histogram\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-7d\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"audit_category.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"846b6f00-4375-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:56:51.161Z","version":"WzIwOCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Audit Log - Node name","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Security Audit Log - Node name\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"audit_node_name.keyword\",\"orderBy\":\"1\",\"order\":\"asc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"b80e8d30-4378-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T21:55:05.416Z","version":"WzIwNyw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Security Audit Log - Category","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Security Audit Log - Category\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"audit_category.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":10,\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"id":"ca9c27a0-4378-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T10:39:23.930Z","version":"WzEyMSw0XQ=="}
+{"attributes":{"columns":["audit_node_host_name","audit_category","audit_request_layer","audit_request_origin","audit_request_exception_stacktrace"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"Security Audit Logs","version":1},"id":"388503f0-4378-11eb-b75a-bbebe0b50e97","migrationVersion":{"search":"7.4.0"},"references":[{"id":"cc44d890-430a-11eb-b75a-bbebe0b50e97","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2020-12-21T10:35:18.830Z","version":"WzExOSw0XQ=="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":10,\"i\":\"963df476-bd2f-4c26-9652-3cdfa1eef34f\"},\"panelIndex\":\"963df476-bd2f-4c26-9652-3cdfa1eef34f\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":10,\"w\":15,\"h\":9,\"i\":\"c87d79c0-84a1-46af-80a4-afc61cdae0a5\"},\"panelIndex\":\"c87d79c0-84a1-46af-80a4-afc61cdae0a5\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":15,\"y\":10,\"w\":15,\"h\":9,\"i\":\"c32eb149-2f61-41b5-ae5a-a864fb3257cb\"},\"panelIndex\":\"c32eb149-2f61-41b5-ae5a-a864fb3257cb\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.4.2\",\"gridData\":{\"x\":0,\"y\":19,\"w\":48,\"h\":22,\"i\":\"cbd2ce7a-841d-4d11-b16e-79be174523e6\"},\"panelIndex\":\"cbd2ce7a-841d-4d11-b16e-79be174523e6\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"}]","timeRestore":false,"title":"Security Audit Log","version":1},"id":"e52ea260-4377-11eb-b75a-bbebe0b50e97","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"846b6f00-4375-11eb-b75a-bbebe0b50e97","name":"panel_0","type":"visualization"},{"id":"b80e8d30-4378-11eb-b75a-bbebe0b50e97","name":"panel_1","type":"visualization"},{"id":"ca9c27a0-4378-11eb-b75a-bbebe0b50e97","name":"panel_2","type":"visualization"},{"id":"388503f0-4378-11eb-b75a-bbebe0b50e97","name":"panel_3","type":"search"}],"type":"dashboard","updated_at":"2020-12-21T10:40:45.697Z","version":"WzEyMiw0XQ=="}
+{"attributes":{"fields":"[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"data_id\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_id.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_id\",\"subType\":\"multi\"},{\"name\":\"data_type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"data_type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"data_type\",\"subType\":\"multi\"},{\"name\":\"http_version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"http_version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"http_version\",\"subType\":\"multi\"},{\"name\":\"ident\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ident.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ident\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_city\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_city.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_city\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_country_iso\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_country_iso.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_country_iso\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lat\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lat.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lat\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_geo_lon\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_geo_lon.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_geo_lon\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_comment\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_comment.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_comment\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_domain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_domain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_domain\",\"subType\":\"multi\"},{\"name\":\"ip_src_addr_ipreg_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ip_src_addr_ipreg_name.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"ip_src_addr_ipreg_name\",\"subType\":\"multi\"},{\"name\":\"method\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"method.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"method\",\"subType\":\"multi\"},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"referer.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"referer\",\"subType\":\"multi\"},{\"name\":\"request_page\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request_page.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"request_page\",\"subType\":\"multi\"},{\"name\":\"response_size\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response_size.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"response_size\",\"subType\":\"multi\"},{\"name\":\"server_response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"server_response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"server_response\",\"subType\":\"multi\"},{\"name\":\"source_file\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_file.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_file\",\"subType\":\"multi\"},{\"name\":\"source_host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"source_host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"source_host\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user_agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"user_agent\",\"subType\":\"multi\"}]","timeFieldName":"timestamp","title":"logs-nginx-*"},"id":"4ca554f0-893f-11ea-977f-4711a028b7c3","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2020-12-20T14:01:02.393Z","version":"WzMxLDRd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Nginx Logs - Histogram","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Nginx Logs - Histogram\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"timestamp\",\"useNormalizedEsInterval\":true,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}"},"id":"5bafcf20-43a7-11eb-b75a-bbebe0b50e97","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"4ca554f0-893f-11ea-977f-4711a028b7c3","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-12-21T16:12:44.178Z","version":"WzEzOSw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"Suricata alerts - top ip_src_addr ","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"title\":\"Suricata alerts - top ip_src_addr \",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"dimensions\":{\"metrics\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"cardinality\"}],\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"alert.signature_id\",\"customLabel\":\"Unique\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"ip_src_addr.keyword\",\"order\":\"desc\",\"size\":10,\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Src IP\"}}]}"},"id":"d8322050-0b7e-11ea-bc07-2bc38b4c4b9b","migrationVersion":{"visualization":"7.4.2"},"references":[{"id":"35141420-0b7c-11ea-bc07-2bc38b4c4b9b","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2020-12-20T14:01:02.393Z","version":"WzMyLDRd"}
\ No newline at end of file
diff --git a/roles/odfekibana/files/kibanasecret b/roles/odfekibana/files/kibanasecret
deleted file mode 100644
index ec28be7..0000000
--- a/roles/odfekibana/files/kibanasecret
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "value" : "19125de3-27fa-40e8-83bf-fdb8c8338b99"
-}
\ No newline at end of file
diff --git a/roles/odfekibana/tasks/main.yml b/roles/odfekibana/tasks/main.yml
index c085414..1662efd 100644
--- a/roles/odfekibana/tasks/main.yml
+++ b/roles/odfekibana/tasks/main.yml
@@ -1,184 +1,17 @@
 ---
 
-#- name: Create config directory
-#  file:
-#    name: config
-#    state: directory
-#    mode: 0700
-#  tags:
-#    - start
-
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "files/{{ca_cn}}.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
-  tags:
-    - start
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-  tags:
-    - start
-
-- name: Copy certificates in odfe kibana conf dir
-  copy:
-    src:  "{{ item }}"
-    dest: "config/{{ item }}"
-    mode: 0600
-  with_items:
-    - "{{ inventory_hostname }}.p12"
-    - "{{ inventory_hostname }}.crt"
-    - "{{ inventory_hostname }}.key"
-    - cacerts.jks
-    - "{{ca_cn}}.crt"
-    - "{{soctools_users[0].CN}}.p12"
+- include: start.yml
   tags:
-    - start
-
-- name: Get openid authkey
-  set_fact:
-    kibanasecret: "{{lookup('file', 'files/kibanasecret',convert_data=False) | from_json }}"
-  tags:
-    - start
-
-#- name: Configure sysconfig
-#  template:
-#    src: sysconfig_elasticsearch.j2
-#    dest: sysconfig_elasticsearch
-#  tags:
-#    - start
-#
-#- name: Copy sysconfig to /etc
-#  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
-#  tags: 
-#    - start
-
-#  lineinfile:
-#    path: /etc/sysconfig/elasticsearch
-#    regexp: '^ES_PATH_CONF='
-#    line: ES_PATH_CONF=/usr/share/elasticsearch/config
-#  tags:
-#    - start
-- name: Configure odfe kibana properties
-  template:
-    src: "{{item}}.j2"
-    dest: "config/{{item}}"
-  with_items:
-    - kibana.yml
+   - start
+- include: stop.yml
   tags:
-    - start
-
-- name: Configure odfe kibana start script
-  template:
-    src: "{{item}}.j2"
-    dest: "{{item}}"
-    mode: 0750
-  with_items:
-    - startkibana.sh
-  tags:
-    - start
-
-#- name: Exit here to test ODFE
-#  meta: end_play
-#  tags:
-#    - start
-
-
-- name: Generate configuration for thehive_button plugin
-  template:
-    src: files/env.js.j2
-    dest: "/usr/share/kibana/plugins/thehive_button/public/env.js"
-    owner: kibana
-    group: kibana
-  tags:
-    - start
-
-
-- name: Start OpenDistro Kibana for Elasticsearch
-  command: /usr/share/kibana/startkibana.sh
-  #shell: exec /usr/share/kibana/bin/kibana -c config/kibana.yml &
-  #shell: "nohup /usr/share/kibana/bin/kibana -c config/kibana.yml &"
+   - stop
+   - stop-odfekibana
+- include: update-config.yml
   tags:
-    - start
-
-- name: Wait for Kibana
-  wait_for:
-    host: "{{groups['odfekibanacontainers'][0]}}"
-    port: 5601
-    state: started
-    delay: 5
-  tags:
-    - start
-
-- name: Check Kibana health
-  shell: 'curl -k -b /tmp/cookie.txt -c /tmp/cookie.txt -X "GET" "https://{{dslproxy}}:5601/api/status" \
-              | egrep status....overall....state...green'
-  register: result
-  until: result.rc == 0
-  retries: 90
-  delay: 2
-  ignore_errors: yes
-  tags:
-    - start
-
-- name: Copy tenant.json to container
-  remote_user: kibana
-  copy:
-    src: "files/tenant.json"
-    dest: /tmp/tenant.json
-  tags:
-    - start
-
-- name: change tenant to global
-  shell: 'curl -X "POST" "https://{{dslproxy}}:5601/api/v1/multitenancy/tenant" \
-         -b /tmp/cookie.txt -c /tmp/cookie.txt \
-         -k --user admin:{{ odfees_adminpass }} \
-         -H "kbn-xsrf: reporting" -H "Content-Type: application/json" \
-         -d @/tmp/tenant.json'
-  tags:
-    - start
-
-- name: Copy kibana_graphs.ndjson to container
-  remote_user: kibana
-  copy:
-    src: "files/kibana_graphs.ndjson"
-    dest: /tmp/kibana_graphs.ndjson
-  tags:
-    - start
-
-- name: Import graphs to kibana
-  shell: 'curl -X "POST" "https://{{dslproxy}}:5601/api/saved_objects/_import?overwrite=true" \
-          -b /tmp/cookie.txt -c /tmp/cookie.txt \
-          -k --user admin:{{ odfees_adminpass }} \
-          -H "kbn-xsrf: reporting" -H "Content-Type: multipart/form-data" \
-          -F "file=@/tmp/kibana_graphs.ndjson"'
-  tags:
-    - start
-
-#- name: cleanup temporary files for kibana_graph import
-#  shell: '/bin/rm -rf /tmp/cookie.txt /tmp/kibana_graphs.ndjson /tmp/tenant.json'
-#  ignore_errors: true
-#  tags:
-#    - start
-
-#- name: check reachable hosts
-#  gather_facts: no
-#  tasks:
-#    - command: ping -c1 {{ inventory_hostname }}
-#      delegate_to: localhost
-#      register: ping_result
-#      ignore_errors: yes
-#    - group_by: key=reachable
-#      when: ping_result|success
-
-#- name: Stop OpenDistro Kibana for Elasticsearch
-#  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
-#  tags:
-#    - stop
-
-- name: Stop OpenDistro Kibana for Elasticsearch
-  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
+   - update-config
+   - update-odfekibana-config
+- include: restart.yml
   tags:
-    - stop
+   - restart
+   - restart-odfekibana
diff --git a/roles/odfekibana/tasks/restart.yml b/roles/odfekibana/tasks/restart.yml
new file mode 100644
index 0000000..7ef3390
--- /dev/null
+++ b/roles/odfekibana/tasks/restart.yml
@@ -0,0 +1,32 @@
+---
+
+- name: Restart Kibana
+  remote_user: root
+  shell: "supervisorctl restart kibana"
+
+- name: Wait for Kibana
+  remote_user: kibana
+  wait_for:
+    host: "{{groups['odfekibanacontainers'][0]}}"
+    port: 5601
+    state: started
+    delay: 5
+
+- name: Check Kibana health
+  remote_user: kibana
+  shell: 'curl -k -b /tmp/cookie.txt -c /tmp/cookie.txt -X "GET" "https://{{soctoolsproxy}}:5601/api/status" \
+              | egrep status....overall....state...green'
+  register: result
+  until: result.rc == 0
+  retries: 90
+  delay: 2
+  ignore_errors: yes
+
+- name: Import graphs to kibana
+  remote_user: kibana
+  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/saved_objects/_import?overwrite=true" \
+          -b /tmp/cookie.txt -c /tmp/cookie.txt \
+          -k --user admin:{{lookup("password", "{{playbook_dir}}/secrets/passwords/odfees_adminpass")}} \
+          -H "kbn-xsrf: reporting" -H "Content-Type: multipart/form-data" \
+          -F "file=@/tmp/kibana_graphs.ndjson"'
+
diff --git a/roles/odfekibana/tasks/start.yml b/roles/odfekibana/tasks/start.yml
new file mode 100644
index 0000000..186a6a6
--- /dev/null
+++ b/roles/odfekibana/tasks/start.yml
@@ -0,0 +1,166 @@
+---
+
+#- name: Create config directory
+#  file:
+#    name: config
+#    state: directory
+#    mode: 0700
+
+- name: Copy cacert to ca-trust dir
+  remote_user: root
+  copy:
+    src: "{{playbook_dir}}/secrets/CA/ca.crt"
+    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+
+- name: Install cacert to root truststore
+  remote_user: root
+  command: "update-ca-trust"
+
+- name: Copy certificates in odfe kibana conf dir
+  remote_user: kibana
+  copy:
+    src:  "{{ item }}"
+    dest: "config/"
+    mode: 0600
+  with_items:
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.p12"
+    - "{{playbook_dir}}/secrets/CA/issued/{{ inventory_hostname }}.crt"
+    - "{{playbook_dir}}/secrets/CA/private/{{ inventory_hostname }}.key"
+    - "{{playbook_dir}}/secrets/CA/cacerts.jks"
+    - "{{playbook_dir}}/secrets/CA/ca.crt"
+    - "{{playbook_dir}}/secrets/CA/private/{{soctools_users[0].CN}}.p12"
+
+- name: Get openid authkey
+  remote_user: kibana
+  set_fact:
+    kibanasecret: "{{lookup('file', '{{playbook_dir}}/secrets/tokens/kibanasecret',convert_data=False) | from_json }}"
+
+#- name: Configure sysconfig
+#  template:
+#    src: sysconfig_elasticsearch.j2
+#    dest: sysconfig_elasticsearch
+#
+#- name: Copy sysconfig to /etc
+#  command: "cp sysconfig_elasticsearch /etc/sysconfig/elasticsearch"
+
+#  lineinfile:
+#    path: /etc/sysconfig/elasticsearch
+#    regexp: '^ES_PATH_CONF='
+#    line: ES_PATH_CONF=/usr/share/elasticsearch/config
+
+- name: Configure odfe kibana properties
+  remote_user: kibana
+  template:
+    src: "{{item}}.j2"
+    dest: "config/{{item}}"
+  with_items:
+    - kibana.yml
+
+- name: Configure odfe kibana start script
+  remote_user: kibana
+  template:
+    src: "{{item}}.j2"
+    dest: "{{item}}"
+    mode: 0750
+  with_items:
+    - startkibana.sh
+
+#- name: Exit here to test ODFE
+#  meta: end_play
+
+
+- name: Generate configuration for thehive_button plugin
+  remote_user: kibana
+  template:
+    src: files/env.js.j2
+    dest: "/usr/share/kibana/plugins/thehive_button/public/env.js"
+    owner: kibana
+    group: kibana
+
+
+- name: Start Kibana
+  remote_user: root
+  shell: "supervisorctl start kibana"
+
+- name: Wait for Kibana
+  remote_user: kibana
+  wait_for:
+    host: "{{groups['odfekibanacontainers'][0]}}"
+    port: 5601
+    state: started
+    delay: 5
+
+- name: Check Kibana health
+  remote_user: kibana
+  shell: 'curl -k -b /tmp/cookie.txt -c /tmp/cookie.txt -X "GET" "https://{{soctoolsproxy}}:5601/api/status" \
+              | egrep status....overall....state...green'
+  register: result
+  until: result.rc == 0
+  retries: 90
+  delay: 2
+  ignore_errors: yes
+
+#- name: Copy tenant.json to container
+#  remote_user: kibana
+#  copy:
+#    src: "files/tenant.json"
+#    dest: /tmp/tenant.json
+#
+#- name: change tenant to global
+#  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/v1/multitenancy/tenant" \
+#         -b /tmp/cookie.txt -c /tmp/cookie.txt \
+#         -k --user admin:{{ odfees_adminpass }} \
+#         -H "kbn-xsrf: reporting" -H "Content-Type: application/json" \
+#         -d @/tmp/tenant.json'
+
+- name: Copy kibana_graphs.ndjson to container
+  remote_user: kibana
+  copy:
+    src: "files/kibana_graphs.ndjson"
+    dest: /tmp/kibana_graphs.ndjson
+
+- name: Import graphs to kibana
+  remote_user: kibana
+  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/saved_objects/_import?overwrite=true" \
+          -b /tmp/cookie.txt -c /tmp/cookie.txt \
+          -k --user admin:{{lookup("password", "{{playbook_dir}}/secrets/passwords/odfees_adminpass")}} \
+          -H "kbn-xsrf: reporting" -H "Content-Type: multipart/form-data" \
+          -F "file=@/tmp/kibana_graphs.ndjson"'
+
+- name: Copy role modification json to container
+  remote_user: kibana
+  template:
+    src: "role.json.j2"
+    dest: /tmp/role.json
+
+- name: Grant admin permissions to users
+  remote_user: kibana
+  shell: 'curl -X "POST" "https://{{soctoolsproxy}}:5601/api/v1/configuration/rolesmapping/all_access" \
+          -b /tmp/cookie.txt -c /tmp/cookie.txt \
+          -k --user admin:{{lookup("password", "{{playbook_dir}}/secrets/passwords/odfees_adminpass")}} \
+          -H "kbn-xsrf: reporting" -H "Content-Type: application/json" \
+          -d @/tmp/role.json'
+
+#- name: cleanup temporary files for kibana_graph import
+#  shell: '/bin/rm -rf /tmp/cookie.txt /tmp/kibana_graphs.ndjson /tmp/tenant.json'
+#  ignore_errors: true
+
+#- name: check reachable hosts
+#  gather_facts: no
+#  tasks:
+#    - command: ping -c1 {{ inventory_hostname }}
+#      delegate_to: localhost
+#      register: ping_result
+#      ignore_errors: yes
+#    - group_by: key=reachable
+#      when: ping_result|success
+
+#- name: Stop OpenDistro Kibana for Elasticsearch
+#  command: "pkill -SIGTERM -F {{inventory_hostname}}.pid"
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
diff --git a/roles/odfekibana/tasks/stop.yml b/roles/odfekibana/tasks/stop.yml
new file mode 100644
index 0000000..2ab354a
--- /dev/null
+++ b/roles/odfekibana/tasks/stop.yml
@@ -0,0 +1,5 @@
+---
+
+- name: Stop OpenDistro Kibana for Elasticsearch
+  remote_user: root
+  command: "supervisorctl stop kibana"
diff --git a/roles/odfekibana/tasks/update-config.yml b/roles/odfekibana/tasks/update-config.yml
new file mode 100644
index 0000000..779d95f
--- /dev/null
+++ b/roles/odfekibana/tasks/update-config.yml
@@ -0,0 +1,34 @@
+---
+
+- name: Configure odfe kibana properties
+  remote_user: kibana
+  template:
+    src: "{{item}}.j2"
+    dest: "config/{{item}}"
+  with_items:
+    - kibana.yml
+
+- name: Configure odfe kibana start script
+  remote_user: kibana
+  template:
+    src: "{{item}}.j2"
+    dest: "{{item}}"
+    mode: 0750
+  with_items:
+    - startkibana.sh
+
+- name: Generate configuration for thehive_button plugin
+  remote_user: kibana
+  template:
+    src: files/env.js.j2
+    dest: "/usr/share/kibana/plugins/thehive_button/public/env.js"
+    owner: kibana
+    group: kibana
+
+
+- name: Copy kibana_graphs.ndjson to container
+  remote_user: kibana
+  copy:
+    src: "files/kibana_graphs.ndjson"
+    dest: /tmp/kibana_graphs.ndjson
+
diff --git a/roles/odfekibana/templates/kibana.yml.j2 b/roles/odfekibana/templates/kibana.yml.j2
index 0d67007..e676b37 100644
--- a/roles/odfekibana/templates/kibana.yml.j2
+++ b/roles/odfekibana/templates/kibana.yml.j2
@@ -29,8 +29,8 @@ elasticsearch.username: kibanaserver
 elasticsearch.password: kibanaserver
 elasticsearch.requestHeadersWhitelist: ["securitytenant","Authorization"]
 
-opendistro_security.multitenancy.enabled: true
-opendistro_security.multitenancy.tenants.preferred: ["Private", "Global"]
+opendistro_security.multitenancy.enabled: false
+#opendistro_security.multitenancy.tenants.preferred: ["Private", "Global"]
 opendistro_security.readonly_mode.roles: ["kibana_read_only"]
 
 #new in 7.6
@@ -39,20 +39,20 @@ opendistro_security.readonly_mode.roles: ["kibana_read_only"]
 #telemetry.enabled: false
 
 opendistro_security.auth.type: "openid"
-opendistro_security.openid.connect_url: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration"
-opendistro_security.openid.client_id: "dsoclab-kibana"
+opendistro_security.openid.connect_url: "https://{{soctoolsproxy}}:12443/auth/realms/{{openid_realm}}/.well-known/openid-configuration"
+opendistro_security.openid.client_id: "soctools-kibana"
 opendistro_security.openid.client_secret: "{{kibanasecret.value}}"
-opendistro_security.openid.root_ca: "/usr/share/kibana/config/{{ca_cn}}.crt"
-opendistro_security.openid.base_redirect_url: "https://{{dslproxy}}:5601"
+opendistro_security.openid.root_ca: "/usr/share/kibana/config/ca.crt"
+opendistro_security.openid.base_redirect_url: "https://{{soctoolsproxy}}:5601"
 
 opendistro_security.cookie.secure: true
-opendistro_security.cookie.password: "{{odfekibana_cookie}}"
+opendistro_security.cookie.password: {{lookup("password", "{{playbook_dir}}/secrets/passwords/kibana_cookiepassword length=32")}}
 
 server.ssl.enabled: true
 server.ssl.key: /usr/share/kibana/config/{{inventory_hostname}}.key
 server.ssl.certificate: /usr/share/kibana/config/{{inventory_hostname}}.crt
 #server.ssl.keystore.path: /usr/share/kibana/config/{{inventory_hostname}}.p12
-#server.ssl.keystore.password: {{kspass}}
+#server.ssl.keystore.password: {{lookup('password', '{{playbook_dir}}/secrets/passwords/keystore')}}
 #server.ssl.certificateAuthorities:
 #server.ssl.truststore.path: jks (p12?)
 #server.ssl.truststore.password:
diff --git a/roles/odfekibana/templates/role.json.j2 b/roles/odfekibana/templates/role.json.j2
new file mode 100644
index 0000000..9d67a52
--- /dev/null
+++ b/roles/odfekibana/templates/role.json.j2
@@ -0,0 +1,15 @@
+{
+   "backend_roles":[
+      "admin"
+   ],
+   "hosts":[
+      
+   ],
+   "users":[
+{% for user in ODFE_ADMIN_USERS %}
+      "{{ user }}",
+{% endfor %}
+      "admin"
+   ],
+   "description":"Maps admin to all_access"
+}
diff --git a/roles/soctools-server/tasks/main.yml b/roles/soctools-server/tasks/main.yml
index 55adbbd..98902dc 100644
--- a/roles/soctools-server/tasks/main.yml
+++ b/roles/soctools-server/tasks/main.yml
@@ -16,7 +16,7 @@
 
 - name: Install required packages
   yum: 
-    name: ["docker-ce","docker-ce-cli","containerd.io","python-pip"] 
+    name: ["docker-ce","docker-ce-cli","containerd.io","python-pip","unzip"] 
     state: latest
     validate_certs: no
   when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
diff --git a/roles/thehive/files/SOCTOOLS-CA.crt b/roles/thehive/files/SOCTOOLS-CA.crt
deleted file mode 100644
index 04b1f20..0000000
--- a/roles/thehive/files/SOCTOOLS-CA.crt
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDNTCCAh2gAwIBAgIJAIp0kyaAW0K3MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
-BAMMC1NPQ1RPT0xTLUNBMB4XDTIwMTAzMDEwNDcxOFoXDTMwMTAyODEwNDcxOFow
-FjEUMBIGA1UEAwwLU09DVE9PTFMtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQC1GZDFZJPR7AYkhEsB9U6qtK+40di3KOeTwRosJ7hvP1FQjwnIC37B
-UlVq15KEgRTCcXgLH0CdtzC1Rkz+AUCLyKTOGmNCqmvyMcESdpuoI1NULkv0QeYX
-Mj4Q1Lh0RldqZpEr32UfsVowBPPhijAUlVAHeJLvji/tnUvI++9no2hx03UAhjTM
-M59AviYsRT3DUkciNSllpwV+7B2pgnpRgzsbVGP2cheaaRYG9DAbRTLrAtVxO0WJ
-c/zNGSpvXuOyBK30/pwGMvhNGPeckElSpDfaepuA8ZDcfaKNk0kEBvzIlUrpZBmv
-tBc5DmpfEBlSk5UK/0XSblKE5dOqlWc1AgMBAAGjgYUwgYIwHQYDVR0OBBYEFHkG
-ykDTn5pUrtMzTfI4PrYL8z3PMEYGA1UdIwQ/MD2AFHkGykDTn5pUrtMzTfI4PrYL
-8z3PoRqkGDAWMRQwEgYDVQQDDAtTT0NUT09MUy1DQYIJAIp0kyaAW0K3MAwGA1Ud
-EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA0XK1+Eg+j
-JdwKnUpnwPq+fsyrCs4TF1DgwtqY4yr1KCw0QSPMK9ldLp62lJaRnrPE7ZGOQ7sd
-z82yEM8nMulNREp3TZwuVFaWgs0yLVKkfqZ0jNGDuEf8AJAynI4ynRbtYxtYzBDy
-XgJPk9lKK/gR14IXBet/dGbZf4yHiMzldMCb0dWzyDS1S+Y1iLTRCmpmRbFow12g
-CjNoSxdyoJPZavcOVWa4tDc3PLMdkgdY20ewo3IvCQTOg9ogVX4Hq5/M4xTz8XUX
-nHeUqshdkPVGFCIujCBg9131RYSE0SkVrPUaIbP9tgzabkZWwhiq8oSpTBmIi9qh
-GPiQTFGknE1U
------END CERTIFICATE-----
diff --git a/roles/thehive/files/cacerts.jks b/roles/thehive/files/cacerts.jks
deleted file mode 100644
index 9d4001b7d9a466941cda896b6bf145bf2f02020c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 893
zcmezO_TO6u1_mYu1_nkj&0U<IT#}!kQ>>eu$iTo@S}9llhJiIg&(y$@fq~i5po!Vk
zpovL#0W%XL6B8#xSIK0xhG?hl2E1&XT5TR}-+37sxmg(u#0*6YgxHuvS(tgagZ-UD
z{QZ4`b)6jz<ivT63=9p74GaxT%ndD~#CbtXBMT@Or@kgeC1fiYSs9p{82K3tni#p5
zniv@wwn|Ponlky~8#a{|Z^o~FtG2A)aq-4>jpvgOO6jQY$hQv+=;u7aU3V}jH0%1L
zmPV07g%#ZL4s*8~Y<2Vb$LP>~V#ztFWT#cxp9~KQmCatE92}zO{l)Q_xRIT}l^rE+
z;aO=DweP3OZ;Ucv`TVfUKxAqFd&Q*pefn?bdY}0HK7DaU;pI|>Hj^{P^Bwl7>A2b+
z4susA)l6N^TK7hFWm8pPv$b?c^0y-KS(##NUks#Ojb1ZdEwpy+EdFy=QY%01@g|nF
zU;fQuGy35x@qNw&&!8pdx2k40e4KEnc2VzSPZqX6C#HJ6Op#o_Mck4vD_%e{X!2C9
z|E`zvf?A$lUNtq{l!=*<fpKwTt3hLvfh-$ys4O3g7>h_H+bM_3^Jj&uyKL<H$--_M
z_h;Ml25ul}Wfpq_+Xk!(7D_FVz!eWoNHNX>GDnz&)qt6i@xK8#h{w;u!py|Th8$De
z;Fw}$Fo{`PC&a&4^$youuk-`I_SKzP&2>&#JmA5hTQeSOebvx0aa2B|eKS^X-nJ>z
zCeGV@<n6>h=iRdB&u$VpuWt0x*Tt*ccaC02*tDjzM!G>u>Xw!CTx{Oq{)b_L(VRY`
zxnggVr6bM=e2Qc8pM29x`-kB5CUMr+^(ARH>wDTe&O9wSF#F=w%_mH@dOtJm*m998
zE6sId#^KlnT*evR;zbK4-^}{X7n-(Xi@CYYX4y&X5x3npEH2XLWI5M-OChw5ef9h^
zk3~LzEES(qK4sO3*a=_VM3nS;6cWD2esyhWxu_|+=Bt$A=D*u`Zsoa!9g<k}sb!^)
nWJmX{g%Up|_yjJQ;~Qf5+vDoDTqXObIbI&Z%6$8^_~bbON?lF-

diff --git a/roles/thehive/files/dsoclab-thehive.crt b/roles/thehive/files/dsoclab-thehive.crt
deleted file mode 100644
index 0d474c2..0000000
--- a/roles/thehive/files/dsoclab-thehive.crt
+++ /dev/null
@@ -1,88 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number:
-            61:09:5c:2c:8d:35:ee:29:1c:99:ce:ab:d4:2b:3c:a4
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=SOCTOOLS-CA
-        Validity
-            Not Before: Oct 30 10:47:29 2020 GMT
-            Not After : Oct 15 10:47:29 2023 GMT
-        Subject: CN=dsoclab-thehive
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:ba:c5:4d:20:a4:60:b7:61:21:ed:16:a1:6f:72:
-                    c4:de:a1:00:c0:ef:fc:5d:a1:89:34:07:15:d2:b4:
-                    3a:14:b8:95:75:8e:81:71:49:46:1d:c8:81:cb:f1:
-                    ec:c7:5a:12:f6:89:60:e4:c8:98:1a:61:c8:2d:12:
-                    8f:73:ee:f8:9d:88:b5:7f:30:70:97:29:b4:ab:43:
-                    2d:dc:db:a7:10:47:c7:b5:26:9b:11:85:fb:d3:27:
-                    8f:3a:55:bc:ea:78:17:b8:89:10:a3:a4:10:60:39:
-                    c3:7f:42:25:a9:fe:84:7f:38:5e:f4:3d:c3:98:3d:
-                    56:b9:ba:81:06:55:8d:65:12:f0:4e:23:88:1d:98:
-                    0c:2f:6e:4f:67:fd:4e:67:39:91:b9:01:52:12:aa:
-                    9e:bb:7a:c8:ea:8f:4a:2d:18:f8:69:9a:3a:a0:c8:
-                    6e:e3:de:c6:db:be:4c:59:e0:cf:bc:34:4f:2c:b0:
-                    ef:3e:82:5a:df:68:be:b8:fb:cc:5f:6a:f2:3e:66:
-                    d4:c6:c5:f6:0b:67:e9:64:85:15:87:60:6f:dc:b4:
-                    5b:13:6f:b0:9b:f8:f3:da:c1:91:9e:81:5f:16:ca:
-                    9e:14:01:c1:1c:ce:2a:d3:c8:3c:0f:be:b1:37:aa:
-                    c9:08:68:2b:de:f9:44:6c:1e:90:a4:12:bc:f5:3c:
-                    46:bd
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: 
-                CA:FALSE
-            X509v3 Subject Key Identifier: 
-                5B:08:8E:F2:1B:8F:12:03:BA:31:02:9C:CE:CC:BC:9F:FC:19:D1:E1
-            X509v3 Authority Key Identifier: 
-                keyid:79:06:CA:40:D3:9F:9A:54:AE:D3:33:4D:F2:38:3E:B6:0B:F3:3D:CF
-                DirName:/CN=SOCTOOLS-CA
-                serial:8A:74:93:26:80:5B:42:B7
-
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Key Usage: 
-                Digital Signature, Key Encipherment
-            X509v3 Subject Alternative Name: 
-                DNS:dsoclab-thehive, DNS:dsoclab.gn4-3-wp8-soc.sunet.se
-    Signature Algorithm: sha256WithRSAEncryption
-         7f:b2:fa:33:d6:e3:6c:57:8a:4a:9a:ef:8b:81:2b:df:f3:d6:
-         fb:8c:bc:02:cf:71:54:a0:f2:0d:ae:3b:30:cf:5c:69:d7:d0:
-         aa:cc:16:80:4d:9d:c8:1f:a7:98:9d:26:dc:ae:8e:24:2b:bc:
-         c1:11:a6:8d:4f:ca:13:1f:7f:8f:4c:ef:dd:46:df:d6:97:0a:
-         88:51:4e:f7:46:aa:3d:e3:70:e9:19:e8:9f:7e:22:fa:b6:38:
-         30:00:0a:94:38:09:bf:b8:64:6c:c1:b7:05:6d:4f:f3:27:0c:
-         df:04:ef:a1:4e:e8:2d:4c:06:d0:c0:4f:4f:da:d0:6d:b8:f2:
-         b3:79:18:63:bd:62:83:53:55:38:94:d9:64:ca:e7:4d:71:ce:
-         d1:05:6d:b1:6c:fb:1a:4c:b6:ef:70:2b:3d:9b:1d:66:d8:d9:
-         9f:f0:e5:48:29:50:e8:1b:1a:fb:b4:d2:5e:38:ec:05:45:c2:
-         e7:de:9a:9d:aa:34:67:c5:66:18:e3:86:8b:0c:1a:c4:21:20:
-         7e:b7:ad:e2:0b:d0:0d:d4:76:e6:53:ca:77:bc:ce:d0:9b:7b:
-         7c:fd:42:94:da:63:d8:a7:52:d2:45:f2:d5:55:ef:37:f1:a5:
-         0e:ba:29:c9:b4:ce:99:45:04:21:2b:86:27:bb:c1:f2:86:9a:
-         7c:51:5c:3b
------BEGIN CERTIFICATE-----
-MIIDmDCCAoCgAwIBAgIQYQlcLI017ikcmc6r1Cs8pDANBgkqhkiG9w0BAQsFADAW
-MRQwEgYDVQQDDAtTT0NUT09MUy1DQTAeFw0yMDEwMzAxMDQ3MjlaFw0yMzEwMTUx
-MDQ3MjlaMBoxGDAWBgNVBAMMD2Rzb2NsYWItdGhlaGl2ZTCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALrFTSCkYLdhIe0WoW9yxN6hAMDv/F2hiTQHFdK0
-OhS4lXWOgXFJRh3Igcvx7MdaEvaJYOTImBphyC0Sj3Pu+J2ItX8wcJcptKtDLdzb
-pxBHx7UmmxGF+9MnjzpVvOp4F7iJEKOkEGA5w39CJan+hH84XvQ9w5g9Vrm6gQZV
-jWUS8E4jiB2YDC9uT2f9Tmc5kbkBUhKqnrt6yOqPSi0Y+GmaOqDIbuPextu+TFng
-z7w0Tyyw7z6CWt9ovrj7zF9q8j5m1MbF9gtn6WSFFYdgb9y0WxNvsJv489rBkZ6B
-XxbKnhQBwRzOKtPIPA++sTeqyQhoK975RGwekKQSvPU8Rr0CAwEAAaOB3TCB2jAJ
-BgNVHRMEAjAAMB0GA1UdDgQWBBRbCI7yG48SA7oxApzOzLyf/BnR4TBGBgNVHSME
-PzA9gBR5BspA05+aVK7TM03yOD62C/M9z6EapBgwFjEUMBIGA1UEAwwLU09DVE9P
-TFMtQ0GCCQCKdJMmgFtCtzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
-CwYDVR0PBAQDAgWgMDoGA1UdEQQzMDGCD2Rzb2NsYWItdGhlaGl2ZYIeZHNvY2xh
-Yi5nbjQtMy13cDgtc29jLnN1bmV0LnNlMA0GCSqGSIb3DQEBCwUAA4IBAQB/svoz
-1uNsV4pKmu+LgSvf89b7jLwCz3FUoPINrjswz1xp19CqzBaATZ3IH6eYnSbcro4k
-K7zBEaaNT8oTH3+PTO/dRt/WlwqIUU73Rqo943DpGeiffiL6tjgwAAqUOAm/uGRs
-wbcFbU/zJwzfBO+hTugtTAbQwE9P2tBtuPKzeRhjvWKDU1U4lNlkyudNcc7RBW2x
-bPsaTLbvcCs9mx1m2Nmf8OVIKVDoGxr7tNJeOOwFRcLn3pqdqjRnxWYY44aLDBrE
-ISB+t63iC9AN1HbmU8p3vM7Qm3t8/UKU2mPYp1LSRfLVVe838aUOuinJtM6ZRQQh
-K4Ynu8Hyhpp8UVw7
------END CERTIFICATE-----
diff --git a/roles/thehive/files/dsoclab-thehive.key b/roles/thehive/files/dsoclab-thehive.key
deleted file mode 100644
index 6d4d8bb..0000000
--- a/roles/thehive/files/dsoclab-thehive.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6xU0gpGC3YSHt
-FqFvcsTeoQDA7/xdoYk0BxXStDoUuJV1joFxSUYdyIHL8ezHWhL2iWDkyJgaYcgt
-Eo9z7vidiLV/MHCXKbSrQy3c26cQR8e1JpsRhfvTJ486VbzqeBe4iRCjpBBgOcN/
-QiWp/oR/OF70PcOYPVa5uoEGVY1lEvBOI4gdmAwvbk9n/U5nOZG5AVISqp67esjq
-j0otGPhpmjqgyG7j3sbbvkxZ4M+8NE8ssO8+glrfaL64+8xfavI+ZtTGxfYLZ+lk
-hRWHYG/ctFsTb7Cb+PPawZGegV8Wyp4UAcEczirTyDwPvrE3qskIaCve+URsHpCk
-Erz1PEa9AgMBAAECggEARJH9cBeJfqoFp6LgYCd1yfq4aR1yvPl6gwR66aHLlSHz
-lXZdZbcuK+8aYEMQ2FvkjGkBjt1qonz13j5rNngtBMFVST4CiC0CrMH8S5LFMj/4
-PTTQR822F971QciKlFbE9rYzyrCIZpuuf8FMTK4p/P84NVmbvv/+IDAuAKJWSB3b
-TXVeYzqET/cENXrNZNsTMHVoPAudtsHXXa5w3yXJXhTlRQrjMtMHgV+H1O2iOvi5
-IAJUm2HVmGON9aqQKZlzYvx9txSBRczEwQK+fLPoXGEG/KhskiBPMU0y9a60SV5F
-Oi94zzBCOSf/k+C4+EhkvfSq727ZFs60zGcoEW7rzQKBgQD08umyOtqJEB6dk5hg
-RA1mc3qx332Li0Ep9ciPD0oOyt9H/pQBMYHlV4Vf26dmjxg7XMPqB38topjbnVcY
-r1QigQ8tnHXktcO1tUpx6MhTkN4sBH9dvZE4TdBiarlcThgnuCfZUhjyfyr715tR
-BIC8TA9bd/6oUaf/zd0S4aGcEwKBgQDDMnKe7PoDlHtjxaiDs8VLRRgNKocT/jaD
-SZ5j5a1e+fvIK+lqpW7pXT/AlBVvxC6ke2Zb1csgndgF0p45ZO9WsB5fV3x8AREM
-zIvrqpH4hdRBEF7o1syVDMXmTQLsPOLzj6B2UC5mpqoo2GkI9yyXpJhNR0kqzkDy
-Pclu3xZL7wKBgQCZsFAxI/w6Q4LyG8lfnVNLFOnG8RM0mwsn6K8OE+nDnka6RWFX
-3lhCLcfhfVBraR0rIelKzaleWMbQBMjBFEEV5SRA2gqele1V9YngLs6CoELGG4xO
-pMKZMTmuhogHAnjlcwaNtJUykdfGbGFnVAvyGUcJfSCrO5DNT72GO0vLQQKBgQCF
-WyPf2/r7Eygxg8qbH+h8ghnqdNGQIS9RBqzFhxapOpR/rzBrAdcCbAiwIvt6Pke3
-a+8Ecs2x3OTHJZufjovNZ8l4TaboeToSynQVb5UGezgFs4+D96wRcIaLzrVefEJ5
-L/jqm+D3lInQGfm4fFXkzDiZI0ijjAHm/btumc771QKBgBTu4KvY6rzgmHbymux1
-+tr+xl3/Nb29XQJHpZV+hgFGg1+aWaR9c0WXz9mKovBanEUHJb5khqFQDFZuWMNG
-tNQ1JbwTXwxmAfVJbLYbSHnuePkh+qtpmTVa3H5NdRBI/062/Km6Rxcf5JljB8/J
-k+SqVxdKSTfaWxGqyyAZgVis
------END PRIVATE KEY-----
diff --git a/roles/thehive/files/logback.xml b/roles/thehive/files/logback.xml
deleted file mode 100644
index d7f5263..0000000
--- a/roles/thehive/files/logback.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration debug="true">
-
-    <conversionRule conversionWord="coloredLevel"
-                    converterClass="play.api.libs.logback.ColoredLevel"/>
-
-    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>/var/log/thehive/application.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>/var/log/logs/application.%i.log.zip</fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>10</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>10MB</maxFileSize>
-        </triggeringPolicy>
-        <encoder>
-            <pattern>%date [%level] from %logger in %thread [%X{request}|%X{tx}] %message%n%xException</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%coloredLevel %logger{15} [%X{request}|%X{tx}] %message%n%xException{10}
-            </pattern>
-        </encoder>
-    </appender>
-
-    <appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
-        <appender-ref ref="FILE"/>
-    </appender>
-
-    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
-        <appender-ref ref="STDOUT"/>
-    </appender>
-
-    <logger name="org.thp" level="INFO"/>
-
-    <root level="DEBUG">
-        <appender-ref ref="ASYNCFILE"/>
-        <appender-ref ref="ASYNCSTDOUT"/>
-    </root>
-
-</configuration>
-
diff --git a/roles/thehive/files/thehivesecret b/roles/thehive/files/thehivesecret
deleted file mode 100644
index f00a8d5..0000000
--- a/roles/thehive/files/thehivesecret
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "value" : "b832e3a9-0080-4f07-bc3d-6bbc67bce741"
-}
\ No newline at end of file
diff --git a/roles/thehive/tasks/createusers.yml b/roles/thehive/tasks/createusers.yml
deleted file mode 100644
index b0fbcdd..0000000
--- a/roles/thehive/tasks/createusers.yml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-#  - name: create organisation
-#    uri:
-#      url: "https://{{dslproxy}}:9000/api/organisation"
-#      method: POST
-#      headers:
-#        Authorization: "Bearer {{ THEHIVE_API_KEY }}"
-#      body_format: form-urlencoded
-#      body:
-#        name: "{{ organisation }}"
-#        description: "test"      
-#      status_code: 201
-#    tags:
-#    - create_org 
-- name: generate json files for creating users
-  remote_user: root
-  template:
-    src: users.json
-    dest: /tmp/{{ item.username }}.json
-  with_items:
-    - "{{ THEHIVE_USERS }}"
-- name: create users
-  remote_user: root
-  shell: "curl -k -H 'Authorization: Bearer {{ THEHIVE_API_KEY }}' -H 'Content-Type: application/json' https://{{ dslproxy }}:9000/api/user -d @/tmp/{{ item.username}}.json"
-  args:
-    warn: false
-  with_items:
-    - "{{ THEHIVE_USERS }}"
diff --git a/roles/thehive/tasks/main.yml b/roles/thehive/tasks/main.yml
index 0e560e7..a0f7edf 100644
--- a/roles/thehive/tasks/main.yml
+++ b/roles/thehive/tasks/main.yml
@@ -1,87 +1,18 @@
 ---
 
-- name: Copy cacert to ca-trust dir
-  remote_user: root
-  copy:
-    src: "files/{{ca_cn}}.crt"
-    dest: /etc/pki/ca-trust/source/anchors/ca.crt
+- include: start.yml
   tags:
-    - start
-
-- name: Install cacert to root truststore
-  remote_user: root
-  command: "update-ca-trust"
-  tags:
-    - start
-
-- name: Copy certificates in thehive conf dir
-  copy:
-    src:  "{{ item }}"
-    dest: "/etc/thehive/{{ item }}"
-    mode: 0600
-  with_items:
-    - "{{ inventory_hostname }}.crt"
-    - "{{ inventory_hostname }}.key"
-    - cacerts.jks
-    - "{{ca_cn}}.crt"
-  tags:
-    - start
-
-- name: Get openid authkey
-  set_fact:
-    thehivesecret: "{{lookup('file', 'files/thehivesecret',convert_data=False) | from_json }}"
+   - start
+- include: stop.yml
   tags:
-    - start
-
-
-- name: Configure TheHive
-  template:
-    src: application.conf.j2
-    dest: /etc/thehive/application.conf
-  tags:
-    - start
-
-- name: Configure TheHive logging
-  copy:
-    src: logback.xml
-    dest: /etc/thehive/logback.xml
+   - stop
+   - stop-thehive
+- include: update-config.yml
   tags:
-    - start
-
-
-- name: Start TheHive
-  command: >
-    daemonize 
-    -c /opt/thehive 
-    -p /tmp/thehive.pid
-    -o /tmp/thehive-stdout.log 
-    /opt/thehive/bin/thehive 
-    -Dconfig.file=/etc/thehive/application.conf 
-    -Dlogger.file=/etc/thehive/logback.xml 
-    -J-Xms1g
-    -J-Xmx1g
-    -Dpidfile.path=/dev/null
-  tags:
-    - start
-
-- name: Wait for TheHive
-  wait_for:
-    host: "{{groups['thehive'][0]}}"
-    port: 9000
-    state: started
-    delay: 5
-  tags:
-    - start
-
-- name: Create TheHive users
-  include: createusers.yml
-  tags:
-  - createusers
-  - start
-
-- name: Stop TheHive
-  command: "pkill -SIGTERM -F /tmp/thehive.pid"
+   - update-config
+   - update-thehive-config
+- include: restart.yml
   tags:
-    - stop
-    - stopthehive
+   - restart
+   - restart-thehive
 
diff --git a/roles/thehive/tasks/restart.yml b/roles/thehive/tasks/restart.yml
new file mode 100644
index 0000000..f3b3644
--- /dev/null
+++ b/roles/thehive/tasks/restart.yml
@@ -0,0 +1,13 @@
+---
+
+- name: Restart TheHive
+  remote_user: root
+  command: "supervisorctl restart thehive"
+
+- name: Wait for TheHive
+  remote_user: root
+  wait_for:
+    host: "{{groups['thehive'][0]}}"
+    port: 9000
+    state: started
+    delay: 5
diff --git a/roles/thehive/tasks/start.yml b/roles/thehive/tasks/start.yml
new file mode 100644
index 0000000..33a136b
--- /dev/null
+++ b/roles/thehive/tasks/start.yml
@@ -0,0 +1,26 @@
+---
+
+- name: Configure TheHive
+  remote_user: thehive
+  template:
+    src: application.conf.j2
+    dest: /etc/thehive/application.conf
+
+- name: Start TheHive
+  remote_user: root
+  command: "supervisorctl start thehive"
+
+- name: Wait for TheHive
+  remote_user: root
+  wait_for:
+    host: "{{groups['thehive'][0]}}"
+    port: 9000
+    state: started
+    delay: 5
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
diff --git a/roles/thehive/tasks/stop.yml b/roles/thehive/tasks/stop.yml
new file mode 100644
index 0000000..87d605a
--- /dev/null
+++ b/roles/thehive/tasks/stop.yml
@@ -0,0 +1,5 @@
+---
+
+- name: Stop TheHive
+  remote_user: root
+  command: "supervisorctl stop thehive"
diff --git a/roles/thehive/tasks/update-config.yml b/roles/thehive/tasks/update-config.yml
new file mode 100644
index 0000000..7b02823
--- /dev/null
+++ b/roles/thehive/tasks/update-config.yml
@@ -0,0 +1,7 @@
+---
+
+- name: Configure TheHive
+  remote_user: thehive
+  template:
+    src: application.conf.j2
+    dest: /etc/thehive/application.conf
diff --git a/roles/thehive/templates/application.conf.j2 b/roles/thehive/templates/application.conf.j2
index a92e4f7..d25e059 100644
--- a/roles/thehive/templates/application.conf.j2
+++ b/roles/thehive/templates/application.conf.j2
@@ -5,7 +5,7 @@
 ## Include Play secret key
 # More information on secret key at https://www.playframework.com/documentation/2.8.x/ApplicationSecret
 #include "/etc/thehive/secret.conf"
-play.http.secret.key="{{thehive_secret_key}}"
+play.http.secret.key="{{lookup('password', '{{playbook_dir}}/secrets/passwords/thehive_secret_key')}}"
 
 ## Database configuration
 db.janusgraph {
@@ -13,7 +13,7 @@ db.janusgraph {
     ## Cassandra configuration
     # More information at https://docs.janusgraph.org/basics/configuration-reference/#storagecql
     backend: cql
-    hostname: ["{{groups['cassandra'][0]}}.{{soctools_netname}}:9042"]
+    hostname: ["{{groups['cassandra'][0]}}.{{soctools_netname}}"]
     # Cassandra authentication (if configured)
     // username: "thehive"
     // password: "password"
@@ -47,61 +47,17 @@ storage {
 
 ## Authentication configuration
 # More information at https://github.com/TheHive-Project/TheHiveDocs/TheHive4/Administration/Authentication.md
-auth {
-  providers: [
+//auth {
+//  providers: [
 //    {name: session}               # required !
 //    {name: basic, realm: thehive}
 //    {name: local}
 //    {name: key}
-    {name: session}               # required !
-    {name: basic, realm: thehive}
-    {name: local}
-    {name: key}    
-    {
-      name: oauth2
-      clientId: "dsoclab-thehive"
-      clientSecret: {{thehivesecret.value}}
-      redirectUri: "https://{{dslproxy}}:9000/api/ssoLogin"
-      responseType: "code"
-      grantType: "authorization_code"
-      authorizationUrl: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/auth"
-      authorizationHeader: "Bearer"
-      tokenUrl: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/token"
-      userUrl: "https://{{dslproxy}}:12443/auth/realms/{{openid_realm}}/protocol/openid-connect/userinfo"
-//      scope: ["openid", "email"]
-      scope: ["openid"]
-      userIdField: "email"
-//      userIdField: "name"
-    }
-  ]
-  sso {
-    autocreate: true
-    autoupdate: true
-    autologin: true
-    mapper: "simple"
-//    attributes {
-//     login: "login"
-//      name: "name"
-//      roles: "role"
-//    }
-    defaultRoles: ["read", "write", "admin"]
-    defaultOrganization: "uninett.no"
-//    defaultOrganization: "demo"
-  } 
-  ws.ssl.trustManager {
-    stores = [
-      {
-        type: "JKS" // JKS or PEM
-        path: "cacerts.jks"
-        password: "{{tspass}}"
-      }
-    ]
-  }
+//  ]
 # The format of logins must be valid email address format. If the provided login doesn't contain `@` the following
 # domain is automatically appended
-  defaultUserDomain: "uninett.no"
-#  defaultUserDomain: "thehive.local"
-}
+//  defaultUserDomain: "thehive.local"
+//}
 
 ## CORTEX configuration
 # More information at https://github.com/TheHive-Project/TheHiveDocs/TheHive4/Administration/Connectors.md
diff --git a/roles/thehive/templates/users.json b/roles/thehive/templates/users.json
deleted file mode 100644
index b16eed7..0000000
--- a/roles/thehive/templates/users.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "login": "{{ item.username }}",
-  "name": "{{ item.name }} {{ item.surname }}",
-  "roles": {{ item.roles }},
-  "organisation": "{{ item.organization }}"
-}
diff --git a/roles/thehive/vars/users.yml b/roles/thehive/vars/users.yml
deleted file mode 100644
index 07433e6..0000000
--- a/roles/thehive/vars/users.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-​
-THEHIVE_API_KEY: "1gFdNhmUSxO3BRe1SBB5JYEvkW9UOo6s"
-THEHIVE_USERS:
-  - kiril:
-    username: "kiril"
-    name: "Kiril"
-    surname: "Kiroski"
-    roles: '["read", "write", "admin"]'
-    organization: "uninett.no"
-  - temur:
-    username: "temur"
-    name: "Temur"
-    surname: "Maisuradze"
-    roles: '["read", "write", "admin"]'
-    organization: "uninett.no"
diff --git a/soctools-inventory b/soctools-inventory
deleted file mode 100644
index cff0d64..0000000
--- a/soctools-inventory
+++ /dev/null
@@ -1,35 +0,0 @@
-[dsldev]
-localhost ansible_connection=local
-
-[nificontainers]
-dsoclab-nifi-1 ansible_connection=docker
-dsoclab-nifi-2 ansible_connection=docker
-dsoclab-nifi-3 ansible_connection=docker
-
-[odfeescontainers]
-dsoclab-odfe-1 ansible_connection=docker
-dsoclab-odfe-2 ansible_connection=docker
-
-[odfekibanacontainers]
-dsoclab-kibana ansible_connection=docker
-
-[keycloakcontainers]
-dsoclab-keycloak ansible_connection=docker
-
-[mysql]
-dsoclab-mysql ansible_connection=docker
-
-[mispcontainers]
-dsoclab-misp ansible_connection=docker
-
-[cassandra]
-dsoclab-cassandra ansible_connection=docker
-
-[thehive]
-dsoclab-thehive ansible_connection=docker
-
-[cortex]
-dsoclab-cortex ansible_connection=docker
-
-[haproxy]
-dsoclab-haproxy ansible_connection=docker
diff --git a/soctools.yml b/soctools.yml
index c25b56f..fb4a219 100644
--- a/soctools.yml
+++ b/soctools.yml
@@ -2,9 +2,16 @@
 
 - name: Start soctools cluster
   import_playbook: startsoctools.yml
-  when: "'start' in ansible_run_tags"
+  when: "'start' in ansible_run_tags or 'config' in ansible_run_tags"
 
 - name: Stop soctools cluster
   import_playbook: stopsoctools.yml
-  when: "'stop' in ansible_run_tags"
+  when: "'stop' in ansible_run_tags or 'stop-thehive' in ansible_run_tags or 'stop-keycloak' in ansible_run_tags or 'stop-cortex' in ansible_run_tags or 'stop-haproxy' in ansible_run_tags or 'stop-cassandra' in ansible_run_tags or 'stop-filebeat' in ansible_run_tags or 'stop-misp' in ansible_run_tags or 'stop-mysql' in ansible_run_tags or 'stop-nifi' in ansible_run_tags or 'stop-odfees' in ansible_run_tags or 'stop-odfekibana' in ansible_run_tags"
 
+- name: Update soctools cluster configs
+  import_playbook: update-config-soctools.yml
+  when: "'update-config' in ansible_run_tags or 'update-keycloak-config' in ansible_run_tags or 'update-thehive-config' in ansible_run_tags or 'update-cortex-config' in ansible_run_tags or 'update-haproxy-config' in ansible_run_tags or 'update-cassandra-config' in ansible_run_tags or 'update-filebeat-config' in ansible_run_tags or 'update-misp-config' in ansible_run_tags or 'update-mysql-config' in ansible_run_tags or 'update-nifi-config' in ansible_run_tags or 'update-odfees-config' in ansible_run_tags or 'update-odfekibana-config' in ansible_run_tags"
+
+- name: restart soctools cluster servics
+  import_playbook: restart-soctools.yml
+  when: "'restart' in ansible_run_tags or 'restart-thehive' in ansible_run_tags or 'restart-keycloak' in ansible_run_tags or 'restart-cortex' in ansible_run_tags or 'restart-haproxy' in ansible_run_tags or 'restart-cassandra' in ansible_run_tags or 'restart-filebeat' in ansible_run_tags or 'restart-misp' in ansible_run_tags or 'restart-mysql' in ansible_run_tags or 'restart-nifi' in ansible_run_tags or 'restart-odfees' in ansible_run_tags or 'restart-odfekibana' in ansible_run_tags"
diff --git a/soctools_server.yml b/soctools_server.yml
index 23716c5..382d998 100644
--- a/soctools_server.yml
+++ b/soctools_server.yml
@@ -1,5 +1,5 @@
 ---
-- hosts: dsldev
+- hosts: soctoolsmain
   become: true
   roles:
     - soctools-server
diff --git a/startsoctools.yml b/startsoctools.yml
index f1154c3..c9c4c6b 100644
--- a/startsoctools.yml
+++ b/startsoctools.yml
@@ -1,7 +1,7 @@
 ---
 
 - name: Start docker containers 
-  hosts: dsldev
+  hosts: soctoolsmain
   roles:
     - docker
 
@@ -25,6 +25,11 @@
   roles:
     - keycloak
 
+- name: Reconfigure and start MISP
+  hosts: mispcontainers
+  roles:
+    - misp
+
 - name: Reconfigure and start NiFi
   hosts: nificontainers
   roles:
@@ -40,10 +45,10 @@
   roles:
     - odfekibana
 
-- name: Reconfigure and start MISP
-  hosts: mispcontainers
+- name: Install and run filebeat
+  hosts: filebeat
   roles:
-    - misp
+    - filebeat
 
 - name: Reconfigure and start TheHive
   hosts: thehive
diff --git a/stopsoctools.yml b/stopsoctools.yml
index 045c3f0..5bd1217 100644
--- a/stopsoctools.yml
+++ b/stopsoctools.yml
@@ -6,7 +6,7 @@
     - nifi
 
 - name: Stop all containers
-  hosts: dsldev
+  hosts: soctoolsmain
   roles:
     - docker
 
diff --git a/update-config-soctools.yml b/update-config-soctools.yml
new file mode 100644
index 0000000..138f664
--- /dev/null
+++ b/update-config-soctools.yml
@@ -0,0 +1,52 @@
+---
+
+- name: Update Configs for haproxy
+  hosts: haproxy
+  roles:
+    - haproxy
+
+- name: Update Configs for mysql
+  hosts: mysql
+  roles:
+    - mysql
+
+- name: Update Configs for Cassandra
+  hosts: cassandra
+  roles:
+    - cassandra
+
+- name: Update Configs for Keycloak
+  hosts: keycloakcontainers
+  roles:
+    - keycloak
+
+- name: Update Configs for NiFi
+  hosts: nificontainers
+  roles:
+    - nifi
+
+- name: Update Configs for OpenDistro for Elasticsearch
+  hosts: odfeescontainers
+  roles:
+    - odfees
+
+- name: Update Configs for OpenDistro Kibana for Elasticsearch
+  hosts: odfekibanacontainers
+  roles:
+    - odfekibana
+
+- name: Update Configs for MISP
+  hosts: mispcontainers
+  roles:
+    - misp
+
+- name: Update Configs for TheHive
+  hosts: thehive
+  roles:
+    - thehive
+
+- name: Update Configs for Cortex
+  hosts: cortex
+  roles:
+    - cortex
+
diff --git a/utils/flow2template.py b/utils/flow2template.py
index 570a1ef..b201832 100755
--- a/utils/flow2template.py
+++ b/utils/flow2template.py
@@ -13,17 +13,20 @@ et = xml.etree.ElementTree.parse(f)
 for v in et.findall(".//variable"):
     a=v.attrib
     if a['name']=="misp_token":
-        a['value']="{{ misp_token }}"
+        a['value']="{{lookup('file','{{playbook_dir}}/secrets/tokens/misp')}}"
     elif a['name']=="misp_url":
         a['value']="{{ misp_url }}"
     elif a['name']=="maxmind_key":
         a['value']="{{ maxmind_key }}"
     elif a['name']=="elastic_url":
-        a['value']="https://{{ dslproxy }}:9200"
+        a['value']="https://{{ soctoolsproxy }}:9200"
     elif a['name']=="elastic_username":
         a['value']="{{ elastic_username }}"
     elif a['name']=="elastic_password":
-        a['value']="{{ odfees_adminpass }}"
+        a['value']="{{lookup('password', '{{playbook_dir}}/secrets/passwords/odfees_adminpass')}}"
+
+for v in et.findall(".//controllerService[name='Soctools CA']/property[name='Truststore Password']/value"):
+    v.text="{{lookup('password', '{{playbook_dir}}/secrets/passwords/truststore')}}"
     
 et.write(args.templatefile)
 
-- 
GitLab