diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IIS01.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS01.pubxml
new file mode 100644
index 0000000..c036a25
--- /dev/null
+++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS01.pubxml
@@ -0,0 +1,27 @@
+
+
+
+
+ MSDeploy
+ true
+ Release
+ Any CPU
+ https://iis01.egalware.com/MP/CONF
+ false
+ c2109e71-4eae-4167-9052-175123ccc2bc
+ false
+ https://iis01.egalware.com:8172/MsDeploy.axd
+ Default Web Site/MP/CONF
+
+ false
+ WMSVC
+ true
+ true
+ jenkins
+ <_SavePWD>true
+ <_TargetId>IISWebDeploy
+ net6.0
+
+
\ No newline at end of file
diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IIS02.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS02.pubxml
new file mode 100644
index 0000000..5639ba6
--- /dev/null
+++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS02.pubxml
@@ -0,0 +1,27 @@
+
+
+
+
+ MSDeploy
+ true
+ Release
+ Any CPU
+ https://iis02.egalware.com/MP/CONF
+ false
+ c2109e71-4eae-4167-9052-175123ccc2bc
+ false
+ https://iis02.egalware.com:8172/MsDeploy.axd
+ Default Web Site/MP/CONF
+
+ false
+ WMSVC
+ true
+ true
+ jenkins
+ <_SavePWD>true
+ <_TargetId>IISWebDeploy
+ net6.0
+
+
\ No newline at end of file
diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IIS03.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS03.pubxml
new file mode 100644
index 0000000..4b0aa4d
--- /dev/null
+++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IIS03.pubxml
@@ -0,0 +1,27 @@
+
+
+
+
+ MSDeploy
+ true
+ Release
+ Any CPU
+ https://iis03.egalware.com/MP/CONF
+ false
+ c2109e71-4eae-4167-9052-175123ccc2bc
+ false
+ https://iis03.egalware.com:8172/MsDeploy.axd
+ Default Web Site/MP/CONF
+
+ false
+ WMSVC
+ true
+ true
+ jenkins
+ <_SavePWD>true
+ <_TargetId>IISWebDeploy
+ net6.0
+
+
\ No newline at end of file
diff --git a/ConfMan.IOB.UI/Properties/PublishProfiles/IISProfile.pubxml b/ConfMan.IOB.UI/Properties/PublishProfiles/IISProfile.pubxml
new file mode 100644
index 0000000..9d7fb2c
--- /dev/null
+++ b/ConfMan.IOB.UI/Properties/PublishProfiles/IISProfile.pubxml
@@ -0,0 +1,19 @@
+
+
+
+
+ Package
+ Release
+ Any CPU
+
+ true
+ false
+ c2109e71-4eae-4167-9052-175123ccc2bc
+ bin\publish\MP.CONF.zip
+ true
+ Default Web Site/MP/CONF
+ <_TargetId>IISWebDeployPackage
+
+
\ No newline at end of file
diff --git a/DemoData/INTERCL_01.json b/DemoData/INTERCL_01.json
new file mode 100644
index 0000000..5e4fc3d
--- /dev/null
+++ b/DemoData/INTERCL_01.json
@@ -0,0 +1,136 @@
+{
+ "SetupSimInt": {
+ "Dep_Cil_mmH2O": {
+ 0: 1,
+ 1: 1,
+ 25: 5,
+ 50: 10,
+ 75: 15,
+ 99: 26,
+ 100: 52
+ },
+ "Bruc_0_100": {
+ 0: 1,
+ 1: 17,
+ 25: 24,
+ 50: 33,
+ 75: 47,
+ 99: 71,
+ 100: 100
+ },
+ "Asp_0_100": {
+ 0: 3,
+ 1: 36,
+ 25: 52,
+ 50: 59,
+ 75: 77,
+ 99: 100,
+ 100: 100
+ }
+ },
+ "SetupSimReal": {
+ "Temp_Filtro": {
+ 0: 0.1,
+ 1: 5.6,
+ 25: 89.1,
+ 50: 103.7,
+ 75: 108.3,
+ 99: 118.1,
+ 100: 135.6
+ },
+ "T_Attuale_Cil": {
+ 0: 0.01,
+ 1: 0.65,
+ 25: 10.36,
+ 50: 11.46,
+ 75: 11.98,
+ 99: 13.99,
+ 100: 327.67
+ },
+ "Flowrate": {
+ 0: 0.01,
+ 1: 0.06,
+ 25: 5.34,
+ 50: 8.22,
+ 75: 9.48,
+ 99: 12.86,
+ 100: 262.8
+ },
+ "Ampere_Cil": {
+ 0: 10.6,
+ 1: 14.1,
+ 25: 14.4,
+ 50: 14.6,
+ 75: 15,
+ 99: 16.4,
+ 100: 79.1
+ },
+ "Ampere_Asp": {
+ 0: 12.1,
+ 1: 14.8,
+ 25: 15.9,
+ 50: 17.2,
+ 75: 22.1,
+ 99: 32.4,
+ 100: 87.3
+ },
+ "Ampere_Dosat": {
+ 0: 0.1,
+ 1: 1.8,
+ 25: 2,
+ 50: 2,
+ 75: 2.1,
+ 99: 2.4,
+ 100: 3.3
+ }
+ },
+ "SetupDtData": {
+ "Tot_Parz_Dosatore": {
+ "2019-11-29 02:24:13": 3619.129,
+ "2020-01-08 13:56:24": 4101.16,
+ "2020-01-12 17:34:34": 4201.494,
+ "2020-01-12 17:34:35": 0,
+ "2020-01-17 17:34:35": 119.352,
+ "2020-01-31 11:39:32": 471.494,
+ "2020-02-07 19:38:58": 606.883,
+ "2020-03-19 23:59:53": 2112.625,
+ "2020-04-23 20:38:32": 2929.045,
+ "2020-05-15 17:30:57": 3500.943,
+ "2020-05-15 17:30:58": 447.943,
+ "2020-05-15 20:04:57": 457.217,
+ "2020-05-15 20:04:58": 0,
+ "2020-06-12 19:19:36": 736.229,
+ "2020-06-30 19:56:21": 1225.481,
+ "2020-07-14 20:05:37": 1828.772,
+ "2020-07-28 20:15:55": 2358.175,
+ "2020-09-30 11:29:26": 4081.050,
+ "2020-11-16 13:01:33": 5419.626,
+ "2021-11-24 12:50:37": 16632.060,
+ "2022-01-14 20:07:39": 18187.904,
+ "2022-03-14 11:33:21": 20782.475,
+ "2022-11-21 08:48:21": 27770.447,
+ "2023-03-07 15:40:44": 30951.118
+ },
+ "Tot_Dosatore": {
+ "2019-11-29 02:24:14": 3770.426,
+ "2020-01-08 13:56:24": 4252.457,
+ "2020-01-17 17:34:35": 4465.844,
+ "2020-01-31 11:39:32": 4817.986,
+ "2020-02-07 19:38:58": 4953.375,
+ "2020-03-19 23:59:53": 6459.117,
+ "2020-04-23 20:38:32": 7275.537,
+ "2020-05-15 17:30:58": 7818.401,
+ "2020-06-12 19:19:36": 8563.820,
+ "2020-06-30 19:56:21": 9053.072,
+ "2020-07-14 20:05:37": 9656.363,
+ "2020-07-28 20:15:55": 10185.766,
+ "2020-09-30 11:29:26": 11908.641,
+ "2020-11-16 13:01:33": 13247.217,
+ "2021-11-24 12:50:37": 24459.651,
+ "2022-01-14 20:07:39": 26015.495,
+ "2022-03-14 11:33:21": 28610.066,
+ "2022-11-21 08:48:21": 35598.038,
+ "2023-03-07 15:40:44": 38778.709
+ }
+ }
+}
\ No newline at end of file
diff --git a/DemoData/INTERCL_01.yaml b/DemoData/INTERCL_01.yaml
new file mode 100644
index 0000000..981b19f
--- /dev/null
+++ b/DemoData/INTERCL_01.yaml
@@ -0,0 +1,6 @@
+---
+ConfDir: C:\Temp\Interclays
+CodIOB: INTERCL_01
+HasHeader: true
+TimeTable: Interclays01.csv
+OutFolder: C:\Temp\Interclays\SIM_01
diff --git a/DemoData/INTERCL_02.json b/DemoData/INTERCL_02.json
new file mode 100644
index 0000000..1a37234
--- /dev/null
+++ b/DemoData/INTERCL_02.json
@@ -0,0 +1,103 @@
+{
+ "SetupSimInt": {
+ "Dep_Cil_mmH2O": {
+ 0: 1,
+ 1: 1,
+ 25: 5,
+ 50: 10,
+ 75: 15,
+ 99: 26,
+ 100: 52
+ },
+ "Bruc_0_100": {
+ 0: 1,
+ 1: 17,
+ 25: 24,
+ 50: 33,
+ 75: 47,
+ 99: 71,
+ 100: 100
+ },
+ "Asp_0_100": {
+ 0: 3,
+ 1: 36,
+ 25: 52,
+ 50: 59,
+ 75: 77,
+ 99: 100,
+ 100: 100
+ }
+ },
+ "SetupSimReal": {
+ "Temp_Filtro": {
+ 0: 0.1,
+ 1: 5.6,
+ 25: 89.1,
+ 50: 103.7,
+ 75: 108.3,
+ 99: 118.1,
+ 100: 135.6
+ },
+ "T_Attuale_Cil": {
+ 0: 0.01,
+ 1: 0.65,
+ 25: 10.36,
+ 50: 11.46,
+ 75: 11.98,
+ 99: 13.99,
+ 100: 327.67
+ },
+ "Flowrate": {
+ 0: 0.01,
+ 1: 0.06,
+ 25: 5.34,
+ 50: 8.22,
+ 75: 9.48,
+ 99: 12.86,
+ 100: 262.8
+ },
+ "Ampere_Cil": {
+ 0: 10.6,
+ 1: 14.1,
+ 25: 14.4,
+ 50: 14.6,
+ 75: 15,
+ 99: 16.4,
+ 100: 79.1
+ },
+ "Ampere_Asp": {
+ 0: 12.1,
+ 1: 14.8,
+ 25: 15.9,
+ 50: 17.2,
+ 75: 22.1,
+ 99: 32.4,
+ 100: 87.3
+ },
+ "Ampere_Dosat": {
+ 0: 0.1,
+ 1: 1.8,
+ 25: 2,
+ 50: 2,
+ 75: 2.1,
+ 99: 2.4,
+ 100: 3.3
+ }
+ },
+ "SetupDtData": {
+ "Tot_Parz_Dosatore": {
+ "2020-06-30 19:56:21": 1225.481,
+ "2020-11-16 13:01:33": 5419.626,
+ "2022-03-14 11:33:21": 20782.475,
+ "2022-11-21 08:48:21": 27770.447,
+ "2023-03-07 15:40:44": 30951.118
+ },
+ "Tot_Dosatore": {
+ "2020-06-30 19:56:21": 9053.072,
+ "2020-11-16 13:01:33": 13247.217,
+ "2022-03-14 11:33:21": 28610.066,
+ "2022-11-21 08:48:21": 35598.038,
+ "2023-03-07 15:40:44": 38778.709
+ }
+ }
+}
\ No newline at end of file
diff --git a/DemoData/INTERCL_02.yaml b/DemoData/INTERCL_02.yaml
new file mode 100644
index 0000000..15f38f2
--- /dev/null
+++ b/DemoData/INTERCL_02.yaml
@@ -0,0 +1,6 @@
+---
+ConfDir: C:\Temp\Interclays
+CodIOB: INTERCL_02
+HasHeader: true
+TimeTable: Interclays02.csv
+OutFolder: C:\Temp\Interclays\SIM_02
diff --git a/DemoData/Interclays01.csv b/DemoData/Interclays01.csv
new file mode 100644
index 0000000..21db6c6
--- /dev/null
+++ b/DemoData/Interclays01.csv
@@ -0,0 +1,419 @@
+Data;Ora Inizio ;Ore Lavorate
+mer 04/12/2019;05.30;10,25
+gio 05/12/2019;13.30;6,41
+ven 06/12/2019;06.34;12,35
+lun 09/12/2019;06.20;12,25
+mar 10/12/2019;05.40;13,35
+lun 16/12/2019;05.30;13,30
+mar 17/12/2019;05.30;13,40
+mer 18/12/2019;05.30;13,20
+ven 20/12/2019;05.30;13,10
+ven 27/12/2019;07.00;9,30
+lun 30/12/2019;07.00;10,20
+gio 09/01/2020;05.00;12,40
+ven 10/01/2020;05.00;13,50
+lun 13/01/2020;06.10;10,25
+mar 14/01/2020;05.40;13,10
+mer 15/01/2020;05.00;14,20
+gio 16/01/2020;07.30;10,15
+ven 17/01/2020;07.30;11,30
+ven 24/01/2020;05.35;12,45
+lun 27/01/2020;06.25;12,25
+mer 29/01/2020;05.40;13,16
+mer 05/02/2020;05.25;13,28
+gio 06/02/2020;05.20;13,05
+lun 10/02/2020;05.20;13,40
+mer 12/02/2020;05.35;13,15
+gio 13/02/2020;05.25;12,30
+ven 14/02/2020;05.50;8,15
+lun 17/02/2020;05.24;10,15
+mar 18/02/2020;05.30;9,45
+mer 19/02/2020;05.40;7,40
+gio 20/02/2020;05.36;11,22
+ven 21/02/2020;05.28;9,15
+lun 24/02/2020;05.20;10,33
+mar 25/02/2020;05.26;11,25
+mer 26/02/2020;05.35;11,40
+gio 27/02/2020;05.50;12,40
+ven 28/02/2020;05.27;13,05
+lun 02/03/2020;07.25;8,15
+mar 03/03/2020;07.15;10,45
+mer 04/03/2020;05.32;13,34
+gio 05/03/2020;06.44;11,50
+ven 06/03/2020;07.40;9,40
+lun 09/03/2020;05.15;14,10
+mar 10/03/2020;05.18;13,45
+mer 11/03/2020;05.25;11,50
+gio 12/03/2020;05.31;13,28
+ven 13/03/2020;05.45;8,55
+lun 23/03/2020;05.30;14,05
+mar 24/03/2020;05.22;13,50
+mer 25/03/2020;05.45;13,06
+gio 26/03/2020;08.45;9,42
+ven 27/03/2020;06.50;11,35
+lun 30/03/2020;05.42;13,50
+mar 31/03/2020;05.38;11,14
+mer 01/04/2020;05.55;11,25
+gio 02/04/2020;05.33;13,49
+ven 03/04/2020;06.11;9,55
+lun 06/04/2020;07.19;7,48
+mar 07/04/2020;06.28;9,55
+mer 08/04/2020;06.34;10,24
+gio 09/04/2020;05.53;12,40
+ven 10/04/2020;05.55;7,29
+mar 14/04/2020;13.15;6,45
+mer 15/04/2020;05.34;11,05
+gio 16/04/2020;05.41;12,36
+ven 17/04/2020;05.50;10,50
+gio 23/04/2020;05.53;9,45
+ven 24/04/2020;07.35;8,55
+lun 27/04/2020;08.10;9,26
+mar 28/04/2020;05.50;10,58
+mer 29/04/2020;05.38;11,35
+gio 30/04/2020;07.30;9,27
+lun 04/05/2020;06.50;12,10
+mar 05/05/2020;07.10;10,19
+mer 06/05/2020;07.13;11,40
+gio 07/05/2020;07.25;8,35
+ven 08/05/2020;07.05;9,55
+lun 11/05/2020;06.40;11,40
+mar 12/05/2020;07.15;7,50
+mer 13/05/2020;06.25;9,48
+gio 14/05/2020;05.50;13,45
+ven 15/05/2020;07.40;11,23
+lun 08/06/2020;06.42;11,50
+mer 17/06/2020;07.09;13,05
+lun 27/07/2020;06.59;11,53
+mer 29/07/2020;06.50;12,09
+gio 30/07/2020;07.01;10,58
+ven 31/07/2020;07.10;9,51
+lun 03/08/2020;05.31;13,50
+mar 04/08/2020;05.25;12,49
+mer 05/08/2020;05.42;11,55
+gio 06/08/2020;05.33;10,56
+ven 07/08/2020;07.15;7,38
+lun 17/08/2020;05.25;13,21
+mar 18/08/2020;05.29;13,05
+mer 19/08/2020;05.36;13,39
+gio 20/08/2020;05.28;13,42
+ven 21/08/2020;05.34;13,04
+lun 24/08/2020;05.28;13,21
+mar 25/08/2020;05.19;13,45
+mer 26/08/2020;05.34;13,29
+gio 27/08/2020;05.26;13,40
+ven 28/08/2020;05.32;12,50
+lun 31/08/2020;07.05;12,55
+mar 01/09/2020;07.09;9,25
+mer 02/09/2020;07.15;10,33
+gio 03/09/2020;06.58;11,04
+ven 04/09/2020;07.11;10,50
+lun 07/09/2020;06.53;12,52
+mar 08/09/2020;06.50;11,32
+mer 09/09/2020;06.57;11,28
+gio 10/09/2020;07.03;8,39
+ven 11/09/2020;07.15;9,44
+lun 14/09/2020;05.17;14,05
+mar 15/09/2020;05.21;13,49
+mer 16/09/2020;05.28;13,56
+gio 17/09/2020;05.23;12.59
+ven 18/09/2020;05.19;13,36
+lun 21/09/2020;10.44;6,28
+mar 22/09/2020;05.22;13,39
+mer 23/09/2020;05.19;12,51
+lun 28/09/2020;07.03;12,09
+gio 01/10/2020;06.55;12,19
+mer 07/10/2020;05.19;14,25
+gio 08/10/2020;11.04;5,40
+ven 09/10/2020;07.38;8,27
+lun 12/10/2020;06.15;11,46
+mar 13/10/2020;05.39;12,50
+mer 14/10/2020;05.24;12,05
+gio 15/10/2020;05.49;10,19
+ven 16/10/2020;09.25;6,48
+mar 20/10/2020;05.26;12,47
+mer 21/10/2020;05.19;13,04
+lun 26/10/2020;05.22;12,49
+mar 27/10/2020;05.17;13,25
+mar 10/11/2020;07.15;13,05
+mer 11/11/2020;07.19;8,48
+lun 16/11/2020;05.25;14,15
+mar 17/11/2020;07.01;10,29
+mer 18/11/2020;07.26;10,08
+gio 19/11/2020;07.32;7,55
+ven 20/11/2020;06.58;13,15
+lun 23/11/2020;05.18;14,17
+mar 24/11/2020;05.29;12,53
+mer 25/11/2020;09.44;8,43
+gio 26/11/2020;05.28;13,24
+ven 27/11/2020;05.23;12,49
+lun 30/11/2020;05.21;13,33
+mar 01/12/2020;05.26;13,08
+mer 02/12/2020;06.44;10,29
+gio 03/12/2020;07.25;10,37
+ven 04/12/2020;07.30;6,49
+lun 07/12/2020;08.29;7,56
+mer 09/12/2020;05.24;12,03
+gio 10/12/2020;05.19;13,25
+ven 11/12/2020;05.39;10,27
+lun 14/12/2020;05.28;12,59
+mar 15/12/2020;05.24;12,05
+mer 16/12/2020;05.20;11,44
+gio 17/12/2020;05.26;11,59
+ven 18/12/2020;06.20;9,44
+lun 21/12/2020;07.03;8,55
+mar 22/12/2020;07.10;10,21
+mer 23/12/2020;07.09;9,58
+gio 24/12/2020;07.15;4,50
+lun 28/12/2020;08.10;8,43
+mar 29/12/2020;07.44;10,04
+mer 30/12/2020;07.25;10,47
+gio 31/12/2020;07.18;6,53
+gio 07/01/2021;06.24;9,05
+ven 08/01/2021;06.17;7,46
+lun 11/01/2021;05.26;13,10
+mar 12/01/2021;05.28;12,42
+mer 13/01/2021;05.21;13,05
+gio 14/01/2021;05.19;11,29
+ven 15/01/2021;05.27;10,59
+lun 18/01/2021;07.15;9,55
+mar 19/01/2021;06.44;11,06
+mer 20/01/2021;06.50;10,59
+gio 21/01/2021;07.03;9,58
+ven 22/01/2021;07.12;9,15
+lun 25/01/2021;07.15;10,29
+mar 26/01/2021;07.11;9,42
+mer 27/01/2021;07.19;11,04
+gio 28/01/2021;07.26;12,25
+ven 29/01/2021;06.41;8,19
+lun 01/02/2021;05.17;13,21
+mar 02/02/2021;07.22;10,56
+mer 03/02/2021;07.17;9,23
+gio 04/02/2021;06.44;10,39
+ven 05/02/2021;10.15;8,05
+lun 08/02/2021;06.50;11,05
+mar 09/02/2021;05.33;12,37
+mer 10/02/2021;05.29;13,05
+gio 11/02/2021;07.13;10,13
+ven 12/02/2021;06.58;10,38
+lun 15/02/2021;07.15;11,05
+mar 16/02/2021;07.22;11,25
+mer 17/02/2021;07.29;10,48
+gio 18/02/2021;07.18;10,25
+ven 19/02/2021;07.28;9,59
+lun 22/02/2021;05.20;13,25
+mar 23/02/2021;05.27;13,05
+mer 24/02/2021;05.18;13,17
+gio 25/02/2021;05.22;13,10
+ven 26/02/2021;05.24;12,39
+lun 01/03/2021;07.20;11,35
+mar 02/03/2021;07.16;10,44
+mer 03/03/2021;07.18;10,59
+gio 04/03/2021;07.22;10,35
+ven 05/03/2021;07.19;9,57
+lun 08/03/2021;06.55;12,48
+mar 09/03/2021;06.59;12,05
+mer 10/03/2021;07.05;10,38
+gio 11/03/2021;07.20;9,46
+ven 12/03/2021;07.15;10,09
+lun 15/03/2021;07.19;10,15
+mar 16/03/2021;07.25;9,43
+mer 17/03/2021;07.28;10,05
+gio 18/03/2021;07.44;8,59
+ven 19/03/2021;07.33;8,34
+lun 22/03/2021;05.25;13,15
+mar 23/03/2021;05.18;13,04
+mer 24/03/2021;05.26;13,27
+gio 25/03/2021;05.19;12,49
+ven 26/03/2021;05.20;10,34
+lun 29/03/2021;06.13;13,55
+mar 30/03/2021;06.25;13,01
+mer 31/03/2021;06.49;11,44
+gio 01/04/2021;07.15;10,35
+ven 02/04/2021;07.22;9,54
+mar 06/04/2021;06.57;12,05
+mer 07/04/2021;07.02;11,38
+gio 08/04/2021;07.05;10,58
+ven 09/04/2021;06.55;11,22
+lun 12/04/2021;05.20;14,16
+mar 13/04/2021;05.27;13,54
+mer 14/04/2021;05.31;13,49
+gio 15/04/2021;05.19;12,51
+ven 16/04/2021;05.22;12,43
+lun 19/04/2021;07.02;11,48
+mar 20/04/2021;07.10;11,25
+mer 21/04/2021;07.04;11,53
+gio 22/04/2021;07.15;10,35
+ven 23/04/2021;07.19;10,07,
+lun 26/04/2021;06.52;12,05
+mar 27/04/2021;06.57;11,51
+mer 28/04/2021;07.02;12,24
+gio 29/04/2021;07.15;12,35
+ven 30/04/2021;06.59;10,52
+lun 03/05/2021;05.19;13,51
+mar 04/05/2021;05.24;13,07
+mer 05/05/2021;05.33;14,05
+gio 06/05/2021;05.26;13,29
+ven 07/05/2021;05.21;10,35
+lun 10/05/2021;05.17;14,25
+mar 11/05/2021;05.21;13,42
+mer 12/05/2021;05.28;14,09
+gio 13/05/2021;05.19;13,38
+ven 14/05/2021;05.31;11,07
+lun 17/05/2021;07.15;9,55
+mar 18/05/2021;06.38;11,36
+mer 19/05/2021;06.18;12,42
+gio 20/05/2021;07.39;6,58
+ven 21/05/2021;09.34;8,43
+lun 24/05/2021;11.10;7,06
+mar 25/05/2021;05.52;12,47
+mer 26/05/2021;06.03;12,29
+gio 27/05/2021;06.10;13,02
+ven 28/05/2021;06.17;12,44
+lun 31/05/2021;05.29;13,36
+mar 01/06/2021;05.17;13,07
+gio 03/06/2021;08.54;7,42
+ven 04/06/2021;08.25;9,21
+lun 07/06/2021;07.22;11,08
+mar 08/06/2021;07.10;12,25
+mer 09/06/2021;07.35;12,57
+gio 10/06/2021;06.51;13,09
+ven 11/06/2021;06.48;9,54
+lun 14/06/2021;05.27;13,26
+mar 15/06/2021;05.31;11,54
+mer 16/06/2021;05.19;12,06
+gio 17/06/2021;05.22;13,38
+ven 18/06/2021;05.24;12,43
+lun 21/06/2021;09.15;8,53
+mar 22/06/2021;05.23;14,06
+mer 23/06/2021;07.38;11,28
+gio 24/06/2021;06.25;12,04
+ven 25/06/2021;13.35;5,59
+lun 28/06/2021;05.21;13,39
+mar 29/06/2021;05.19;13,04
+mer 30/06/2021;05.23;12,37
+gio 01/07/2021;05.26;13,28
+ven 02/07/2021;05.48;10,09
+lun 05/07/2021;05.17;13,25
+mar 06/07/2021;05.32;13,33
+mer 07/07/2021;05.24;12,57
+gio 08/07/2021;05.48;12,35
+ven 09/07/2021;05.37;10,41
+lun 12/07/2021;07.25;10,54
+mar 13/07/2021;06.34;10,37
+mer 14/07/2021;07.10;9,59
+gio 15/07/2021;07.05;10,48
+ven 16/07/2021;07.43;8,29
+lun 19/07/2021;06.55;12,06
+mar 20/07/2021;07.03;11,53
+mer 21/07/2021;07.11;10,18
+gio 22/07/2021;07.22;9,06
+ven 23/07/2021;07.49;8,59
+lun 26/07/2021;10.19;7,38
+mar 27/07/2021;05.26;13,45
+mer 28/07/2021;05.35;13,19
+gio 29/07/2021;05.23;12,47
+ven 30/07/2021;07.37;9,16
+lun 02/08/2021;05.18;14,06
+mar 03/08/2021;05.23;13,48
+mer 04/08/2021;05.21;11,29
+gio 05/08/2021;05.32;10,36
+ven 06/08/2021;05.19;11,24
+lun 16/08/2021;08.31;9,44
+mar 17/08/2021;07.06;11,06
+mer 18/08/2021;07.19;10,35
+gio 19/08/2021;07.36;8,54
+ven 20/08/2021;07.03;12,07
+lun 23/08/2021;10.07;8,53
+mar 24/08/2021;07.10;11,28
+mer 25/08/2021;07.15;12,09
+gio 26/08/2021;07.01;13,04
+ven 27/08/2021;09.24;7,59
+lun 30/08/2021;07.25;13,02
+mar 31/08/2021;05.03;14,23
+mer 01/09/2021;05.33;14,55
+gio 02/09/2021;13.24;7,29
+ven 03/09/2021;05.55;14,08
+gio 09/09/2021;05.45;14,33
+ven 10/09/2021;05.08;15,01
+lun 13/09/2021;13.08;7,50
+mar 14/09/2021;05.23;14,56
+mer 15/09/2021;05.06;14,39
+gio 16/09/2021;06.27;12,41
+ven 17/09/2021;05.18;14,28
+lun 20/09/2021;05.11;14.48
+mar 21/09/2021;07.05;12.55
+mer 22/09/2021;07.11;12.59
+lun 27/09/2021;07.01;12,38
+mar 28/09/2021;07.15;12,47
+mer 29/09/2021;07.33;12,53
+gio 30/09/2021;07.29;12,21
+ven 01/10/2021;07.24;12,34
+lun 04/10/2021;07.17;13,39
+mar 05/10/2021;07.18;13,38
+mer 06/10/2021;07.11;13,03
+gio 07/10/2021;07.12;13,01
+ven 08/10/2021;07.07;12,31
+lun 11/10/2021;07.17;13,05
+mar 12/10/2021;07.22;13,38
+mer 13/10/2021;07.37;12,54
+gio 14/10/2021;08.43;10,08
+ven 15/10/2021;07.02;12,30
+lun 18/10/2021;07.27;13,01
+mar 19/10/2021;07.39;12,29
+mer 20/10/2021;07.19;13,22
+gio 21/10/2021;07.17;11,31
+ven 22/10/2021;11.10;7,00
+lun 25/10/2021;07.17;13,31
+mar 26/10/2021;07.27;11,58
+gio 28/10/2021;07.40;10,06
+ven 29/10/2021;07.03;9,27
+mer 03/11/2021;07.17;13,17
+gio 04/11/2021;07.05;10,30
+ven 05/11/2021;07.24;9,23
+lun 08/11/2021;07.20;13,30
+mar 09/11/2021;07.37;13,09
+mer 10/11/2021;07.17;12.48
+gio 11/11/2021;07.03;8,09
+ven 12/11/2021;07.10;9,08
+lun 15/11/2021;07.17;13,20
+mar 16/11/2021;07.18;11,43
+mer 17/11/2021;09.27;9,30
+gio 18/11/2021;07.03;10,12
+ven 19/11/2021;07.17;8,08
+lun 22/11/2021;08.40;12,10
+mar 23/11/2021;07.18;13,27
+mar 14/12/2021;07.47;13,10
+mer 15/12/2021;07.15;13.30
+gio 16/12/2021;07.03;13,08
+ven 17/12/2021;07.17;13.32
+mer 29/12/2021;09.10;9,19
+gio 30/12/2021;13.38;6,30
+lun 03/01/2022;07.07;13,20
+mar 04/01/2022;11.10;9,01
+mer 05/01/2022;07.27;7,30
+lun 10/01/2022;07.17;13,32
+gio 20/01/2022;07.27;13,08
+ven 21/01/2022;07.17;13,01
+lun 28/02/2022;07.13;13,10
+mar 01/03/2022;07.07;13,03
+mer 02/03/2022;07.49;13,09
+gio 03/03/2022;07.04;9,00
+ven 04/03/2022;07.27;10,33
+lun 07/03/2022;07.17;13,20
+mar 08/03/2022;07.23;13.33
+mer 09/03/2022;07.38;13.00
+gio 10/03/2022;08.07;11,00
+ven 11/03/2022;12.10;7,38
+mar 15/03/2022;07.23;13,29
+mer 16/03/2022;07.30;13,02
+gio 17/03/2022;07.27;13,01
+ven 18/03/2022;09.14;10,27
+lun 21/03/2022;13.10;7,18
+mar 22/03/2022;07.19;13,32
+mer 23/03/2022;07.23;13,06
+gio 24/03/2022;08.11;10,13
+ven 25/03/2022;07.17;8,00
+lun 28/03/2022;07.02;13,30
+mar 29/03/2022;07.29;13,09
+mer 30/03/2022;07.41;13.07
+gio 31/03/2022;07.14;13,20
\ No newline at end of file
diff --git a/DemoData/Interclays02.csv b/DemoData/Interclays02.csv
new file mode 100644
index 0000000..27234c1
--- /dev/null
+++ b/DemoData/Interclays02.csv
@@ -0,0 +1,508 @@
+Data;Ora Inizio ;Ore Lavorate
+lun 02/12/2019;05.18;7,41
+mar 03/12/2019;05.22;7,22
+mer 04/12/2019;05.16;7,35
+lun 09/12/2019;14.12;5,43
+mar 10/12/2019;13.10;6,55
+mer 11/12/2019;13.15;7,19
+gio 12/12/2019;13.30;6,18
+ven 13/12/2019;13.10;7,24
+lun 16/12/2019;05.12;7,33
+mar 17/12/2019;05.22;7,27
+mer 18/12/2019;05.08;7,18
+gio 19/12/2019;05.17;6,57
+ven 20/12/2019;05.25;7,05
+lun 23/12/2019;13.18;7,32
+mar 24/12/2019;13.02;7,33
+mer 25/12/2019;13.11;7,28
+gio 26/12/2019;15.01;5,16
+ven 27/12/2019;13.25;7,12
+lun 30/12/2019;05.17;15,33
+mar 31/12/2019;05.03;15,28
+mer 01/01/2020;05.09;15,45
+gio 02/01/2020;05.08;15,37
+ven 03/01/2020;05.17;15,03
+lun 06/01/2020;13.14;7,43
+mar 07/01/2020;13.25;6,55
+mer 08/01/2020;15.05;5,18
+lun 20/01/2020;13.07;7,44
+mar 21/01/2020;13.14;6,51
+mer 22/01/2020;13.22;4,48
+gio 23/01/2020;13.19;7,27
+ven 24/01/2020;13.10;7,36
+mer 29/01/2020;07.19;3,19
+ven 31/01/2020;13.58;1,59
+lun 03/02/2020;13.10;7,25
+mar 04/02/2020;13.16;6,54
+mer 05/02/2020;13.09;7,06
+gio 06/02/2020;13.18;5,59
+ven 07/02/2020;13.26;4,29
+gio 13/02/2020;08.33;6,55
+ven 14/02/2020;08.19;7,02
+lun 17/02/2020;13.11;7,45
+mar 18/02/2020;13.06;7,48
+mer 19/02/2020;13.18;7,36
+gio 20/02/2020;14.36;6,15
+ven 21/02/2020;13.16;7,29
+lun 24/02/2020;05.06;7,45
+mar 25/02/2020;05.14;7,43
+mer 26/02/2020;05.11;7,44
+gio 27/02/2020;05.21;7,39
+ven 28/02/2020;05.19;7,28
+lun 02/03/2020;13.05;7,47
+mar 03/03/2020;13.08;5,55
+mer 04/03/2020;13.09;7,46
+gio 05/03/2020;13.17;7,01
+ven 06/03/2020;13.11;4,59
+lun 09/03/2020;05.15;7,44
+mar 10/03/2020;05.13;7,39
+mer 11/03/2020;05.09;7,51
+gio 12/03/2020;05.17;7,31
+ven 13/03/2020;05.33;7,26
+lun 16/03/2020;13.12;7,45
+mar 17/03/2020;13.19;7,33
+mer 18/03/2020;13.08;7,51
+gio 19/03/2020;13.23;7,29
+ven 20/03/2020;13.17;7,37
+mer 25/03/2020;17.29;0,33
+gio 26/03/2020;13.18;1,57
+lun 30/03/2020;13.17;7,22
+mar 31/03/2020;13.45;7,13
+mer 01/04/2020;14.01;5,54
+gio 02/04/2020;13.48;6,02
+ven 03/04/2020;13.09;7,48
+lun 06/04/2020;05.09;7,48
+mar 07/04/2020;05.15;15,26
+mer 08/04/2020;05.36;15,09
+gio 09/04/2020;05.06;15,12
+ven 10/04/2020;05.25;7,05
+mer 15/04/2020;14.54;1,25
+gio 16/04/2020;15.44;1,09
+ven 17/04/2020;17.46;1,38
+mar 21/04/2020;05.09;7,15
+ven 24/04/2020;05.01;6,31
+lun 27/04/2020;13.45;5,37
+mar 28/04/2020;15.23;4,29
+mer 29/04/2020;17.03;2,36
+lun 04/05/2020;08.06;7,39
+mar 05/05/2020;08.12;7,33
+mer 06/05/2020;08.11;7,21
+gio 07/05/2020;08.14;7,26
+ven 08/05/2020;08.19;7,33
+lun 11/05/2020;08.14;7,03
+mar 12/05/2020;08.16;7,15
+mer 13/05/2020;08.17;7,24
+gio 14/05/2020;08.11;7,18
+ven 15/05/2020;08.14;7,33
+lun 18/05/2020;09.22;1,59
+mar 19/05/2020;15.01;1,48
+lun 25/05/2020;10.55;2,03
+gio 28/05/2020;18.06;0,59
+ven 29/05/2020;09.28;3,45
+lun 01/06/2020;16.13;1,55
+mer 03/06/2020;05.33;14,42
+gio 04/06/2020;05.14;15,03
+ven 05/06/2020;05.33;15,16
+lun 08/06/2020;05.08;15,01
+mar 09/06/2020;05.11;15,12
+mer 10/06/2020;05.09;14,53
+gio 11/06/2020;05.04;15,33
+ven 12/06/2020;05.15;15,27
+lun 15/06/2020;05.06;15,18
+mar 16/06/2020;05.22;14,45
+mer 17/06/2020;05.18;15,22
+gio 18/06/2020;05.19;15,31
+ven 19/06/2020;05.07;15,09
+mar 23/06/2020;09.27;1,59
+gio 25/06/2020;14.56;2,04
+ven 26/06/2020;10.23;2,54
+lun 29/06/2020;08.23;1,49
+mar 30/06/2020;11.01;1,05
+ven 03/07/2020;18.47;0,45
+lun 06/07/2020;13.15;7,35
+mar 07/07/2020;13.10;7,45
+mer 08/07/2020;13.08;7,48
+gio 09/07/2020;13.11;7,25
+ven 10/07/2020;13.04;7,39
+lun 13/07/2020;05.09;7,46
+mar 14/07/2020;05.12;7,39
+mer 15/07/2020;05.04;7,42
+gio 16/07/2020;05.11;7,38
+ven 17/07/2020;05.39;6,41
+lun 20/07/2020;13.18;7,05
+mar 21/07/2020;13.09;7,19
+mer 22/07/2020;13.33;5,44
+gio 23/07/2020;13.03;6,44
+ven 24/07/2020;13.12;7,45
+lun 27/07/2020;08.06;7,51
+mar 28/07/2020;08.14;7,39
+mer 29/07/2020;08.03;7,55
+gio 30/07/2020;08.08;7,51
+ven 31/07/2020;08.09;7,49
+lun 03/08/2020;08.58;0,45
+mar 04/08/2020;16.55;1,33
+mar 18/08/2020;11.11;2,33
+mer 19/08/2020;09.28;1,58
+ven 21/08/2020;14.29;1,47
+mer 26/08/2020;07.19;3,19
+ven 28/08/2020;13.58;1,59
+lun 31/08/2020;13.10;7,25
+mar 01/09/2020;13.16;6,54
+mer 02/09/2020;13.09;7,06
+gio 03/09/2020;13.18;5,59
+ven 04/09/2020;13.26;4,29
+gio 10/09/2020;08.33;6,55
+ven 11/09/2020;08.19;7,02
+lun 14/09/2020;13.11;7,45
+mar 15/09/2020;13.06;7,48
+mer 16/09/2020;13.18;7,36
+gio 17/09/2020;14.36;6,15
+ven 18/09/2020;13.16;7,29
+lun 21/09/2020;05.06;7,45
+mar 22/09/2020;05.14;7,43
+mer 23/09/2020;05.11;7,44
+gio 24/09/2020;05.21;7,39
+ven 25/09/2020;05.19;7,28
+lun 28/09/2020;08.02;7,55
+mar 29/09/2020;08.12;7,42
+mer 30/09/2020;08.17;7,39
+gio 01/10/2020;08.09;7,41
+ven 02/10/2020;08.05;7,43
+lun 05/10/2020;08.33;7,18
+mar 06/10/2020;08.17;7,39
+mer 07/10/2020;08.09;7,44
+gio 08/10/2020;08.11;7,43
+ven 09/10/2020;08.12;7,38
+lun 12/10/2020;05.01;15,09
+mar 13/10/2020;05.13;14,58
+mer 14/10/2020;05.07;15,04
+gio 15/10/2020;05.03;15,11
+ven 16/10/2020;05.15;15,03
+lun 19/10/2020;05.11;15,13
+mar 20/10/2020;05.17;14,45
+mer 21/10/2020;05.08;14,29
+gio 22/10/2020;05.21;13,47
+ven 23/10/2020;05.55;14,17
+lun 26/10/2020;13.08;7,45
+mar 27/10/2020;13.07;7,48
+mer 28/10/2020;13.17;7,29
+gio 29/10/2020;13.11;7,17
+ven 30/10/2020;13.09;4,22
+lun 02/11/2020;12.01;2,02
+mer 04/11/2020;08.56;2,18
+ven 06/11/2020;14.33;2,17
+mar 10/11/2020;18.47;0,49
+mer 11/11/2020;13.57;1,56
+lun 16/11/2020;15.37;1,59
+ven 20/11/2020;16.55;0,47
+lun 23/11/2020;05.09;14,55
+mar 24/11/2020;05.04;15,09
+mer 25/11/2020;05.11;15,12
+gio 26/11/2020;05.03;15,01
+ven 27/11/2020;05.08;15,06
+lun 30/11/2020;05.18;15,09
+mar 01/12/2020;05.01;14,31
+mer 02/12/2020;05.09;14,55
+gio 03/12/2020;05.07;15,02
+ven 04/12/2020;05.14;14,37
+gio 10/12/2020;10.29;2,23
+ven 11/12/2020;16.41;2,57
+mar 15/12/2020;7.44;1,56
+mer 16/12/2020;09.03;2,38
+dom 20/12/2020;11.37;3,01
+lun 21/12/2020;17.01;2,44
+mar 22/12/2020;07.59;4,39
+lun 04/01/2021;15.27;1,59
+mar 05/01/2021;13.48;1,55
+gio 07/01/2021;09.24;1,56
+lun 11/01/2021;13.05;7,47
+mar 12/01/2021;13.08;5,55
+mer 13/01/2021;13.09;7,46
+gio 14/01/2021;13.17;7,01
+ven 15/01/2021;13.11;4,59
+lun 18/01/2021;05.15;7,44
+mar 19/01/2021;05.13;7,39
+mer 20/01/2021;05.09;7,51
+gio 21/01/2021;05.17;7,31
+ven 22/01/2021;05.33;7,26
+lun 25/01/2021;13.12;7,45
+mar 26/01/2021;13.19;7,33
+mer 27/01/2021;13.08;7,51
+gio 28/01/2021;13.23;7,29
+ven 29/01/2021;13.17;7,37
+lun 01/02/2021;08.06;7,39
+mar 02/02/2021;08.12;7,33
+mer 03/02/2021;08.11;7,21
+gio 04/02/2021;08.14;7,26
+ven 05/02/2021;08.19;7,33
+lun 08/02/2021;08.14;7,03
+mar 09/02/2021;08.16;7,15
+mer 10/02/2021;08.17;7,24
+gio 11/02/2021;08.11;7,18
+ven 12/02/2021;08.14;7,33
+lun 15/02/2021;08.33;7,18
+mar 16/02/2021;08.17;7,39
+mer 17/02/2021;08.09;7,44
+gio 18/02/2021;08.11;7,43
+ven 19/02/2021;08.12;7,38
+lun 22/02/2021;05.01;15,09
+mar 23/02/2021;05.13;14,58
+mer 24/02/2021;05.07;15,04
+gio 25/02/2021;05.03;15,11
+ven 26/02/2021;05.15;15,03
+lun 01/03/2021;05.11;15,13
+mar 02/03/2021;05.17;14,45
+mer 03/03/2021;05.08;14,29
+gio 04/03/2021;05.21;13,47
+ven 05/03/2021;05.55;14,17
+lun 08/03/2021;08.09;7,41
+mar 09/03/2021;08.13;7,35
+mer 10/03/2021;08.04;7,38
+gio 11/03/2021;08.22;7,17
+ven 12/03/2021;08.08;7,07
+lun 15/03/2021;14.12;5,43
+mar 16/03/2021;13.10;6,55
+mer 17/03/2021;13.15;7,19
+gio 18/03/2021;13.30;6,18
+ven 19/03/2021;13.10;7,24
+lun 22/03/2021;05.12;7,33
+mar 23/03/2021;05.22;7,27
+mer 24/03/2021;05.08;7,18
+gio 25/03/2021;05.17;6,57
+ven 26/03/2021;05.25;7,05
+lun 29/03/2021;13.18;7,32
+mar 30/03/2021;13.02;7,33
+mer 31/03/2021;13.11;7,28
+gio 01/04/2021;15.01;5,16
+ven 02/04/2021;13.25;7,12
+mar 06/04/2021;05.11;7,44
+mer 07/04/2021;05.03;7,51
+gio 08/04/2021;05.19;7,26
+ven 09/04/2021;05.07;7,39
+lun 12/04/2021;14.12;5,43
+mar 13/04/2021;13.10;6,55
+mer 14/04/2021;13.15;7,19
+gio 15/04/2021;13.30;6,18
+ven 16/04/2021;13.10;7,24
+lun 19/04/2021;05.12;7,33
+mar 20/04/2021;05.22;7,27
+mer 21/04/2021;05.08;7,18
+gio 22/04/2021;05.17;6,57
+ven 23/04/2021;05.25;7,05
+lun 26/04/2021;13.18;7,32
+mar 27/04/2021;13.02;7,33
+mer 28/04/2021;13.11;7,28
+gio 29/04/2021;15.01;5,16
+ven 30/04/2021;13.25;7,12
+mar 04/05/2021;16.37;1,59
+gio 06/05/2021;15.22;2,09
+ven 07/05/2021;18.39;2,14
+lun 10/05/2021;13.08;7,45
+mar 11/05/2021;13.07;7,48
+mer 12/05/2021;13.17;7,29
+gio 13/05/2021;13.11;7,17
+ven 14/05/2021;13.09;4,22
+lun 17/05/2021;05.09;7,46
+mar 18/05/2021;05.12;7,39
+mer 19/05/2021;05.04;7,42
+gio 20/05/2021;05.11;7,38
+ven 21/05/2021;05.39;6,41
+lun 24/05/2021;13.01;7,49
+mar 25/05/2021;13.09;2,57
+mer 26/05/2021;13.22;3,29
+gio 27/05/2021;13.19;4,25
+ven 28/05/2021;13.08;7,43
+lun 31/05/2021;12.59;2,11
+mar 01/06/2021;16.34;2,18
+gio 03/06/2021;13.48;2,17
+ven 04/06/2021;17.01;2,29
+lun 07/06/2021;13.18;7,32
+mar 08/06/2021;13.02;7,33
+mer 09/06/2021;13.11;7,28
+gio 10/06/2021;15.01;5,16
+ven 11/06/2021;13.25;7,12
+lun 14/06/2021;13.05;7,47
+mar 15/06/2021;13.08;5,55
+mer 16/06/2021;13.09;7,46
+gio 17/06/2021;13.17;7,01
+ven 18/06/2021;13.11;4,59
+lun 21/06/2021;05.15;7,44
+mar 22/06/2021;05.13;7,39
+mer 23/06/2021;05.09;7,51
+gio 24/06/2021;05.17;7,31
+ven 25/06/2021;05.33;7,26
+lun 28/06/2021;13.12;7,45
+mar 29/06/2021;13.19;7,33
+mer 30/06/2021;13.08;7,51
+gio 01/07/2021;13.23;7,29
+ven 02/07/2021;13.17;7,37
+lun 05/07/2021;05.12;7,33
+mar 06/07/2021;05.22;7,27
+mer 07/07/2021;05.08;7,18
+gio 08/07/2021;05.17;6,57
+ven 09/07/2021;05.25;7,05
+lun 12/07/2021;13.18;7,32
+mar 13/07/2021;13.02;7,33
+mer 14/07/2021;13.11;7,28
+gio 15/07/2021;15.01;5,16
+ven 16/07/2021;13.25;7,12
+lun 19/07/2021;05.17;15,33
+mar 20/07/2021;05.03;15,28
+mer 21/07/2021;05.09;15,45
+gio 22/07/2021;05.08;15,37
+ven 23/07/2021;05.17;15,03
+lun 26/07/2021;13.14;7,43
+mar 27/07/2021;13.25;6,55
+mer 28/07/2021;15.05;5,18
+lun 02/08/2021;17.14;2,48
+mar 03/08/2021;09.33;1,36
+mer 04/08/2021;10.51;1,55
+gio 05/08/2021;08.36;2,21
+ven 06/08/2021;13.09;3,35
+lun 16/08/2021;14.37;2,45
+lun 23/08/2021;05.09;14,55
+mar 24/08/2021;05.04;15,09
+mer 25/08/2021;05.11;15,12
+gio 26/08/2021;05.03;15,01
+ven 27/08/2021;05.08;15,06
+lun 30/08/2021;05.18;15,09
+mar 31/08/2021;05.01;14,31
+mer 01/09/2021;05.09;14,55
+gio 02/09/2021;05.07;15,02
+ven 03/09/2021;05.14;14,37
+lun 06/09/2021;05.08;15,01
+mar 07/09/2021;05.11;15,12
+mer 08/09/2021;05.09;14,53
+gio 09/09/2021;05.04;15,33
+ven 10/09/2021;05.15;15,27
+lun 13/09/2021;05.06;15,18
+mar 14/09/2021;05.22;14,45
+mer 15/09/2021;05.18;15,22
+gio 16/09/2021;05.19;15,31
+ven 17/09/2021;05.07;15,09
+lun 20/09/2021;09.11;2,12
+mar 21/09/2021;11.11;3,15
+mer 22/09/2021;12.59;2,27
+gio 23/09/2021;07.45;4,39
+ven 24/09/2021;17.37;5,21
+lun 27/09/2021;05.06;7,45
+mar 28/09/2021;05.14;7,43
+mer 29/09/2021;05.11;7,44
+gio 30/09/2021;05.21;7,39
+ven 01/10/2021;05.19;7,28
+lun 04/10/2021;08.02;7,55
+mar 05/10/2021;08.12;7,42
+mer 06/10/2021;08.17;7,39
+gio 07/10/2021;08.09;7,41
+ven 08/10/2021;08.05;7,43
+lun 11/10/2021;08.33;7,18
+mar 12/10/2021;08.17;7,39
+mer 13/10/2021;08.09;7,44
+gio 14/10/2021;08.11;7,43
+ven 15/10/2021;08.12;7,38
+lun 18/10/2021;05.01;15,09
+mar 19/10/2021;05.13;14,58
+mer 20/10/2021;05.07;15,04
+gio 21/10/2021;05.03;15,11
+ven 22/10/2021;05.15;15,03
+lun 25/10/2021;05.11;15,13
+mar 26/10/2021;05.17;14,45
+mer 27/10/2021;05.08;14,29
+gio 28/10/2021;05.21;13,47
+ven 29/10/2021;05.55;14,17
+lun 01/11/2021;09.35;5,27
+mer 03/11/2021;12.48;4,56
+gio 04/11/2021;16.39;3,33
+ven 05/11/2021;07.33;9,24
+lun 08/11/2021;14.12;5,43
+mar 09/11/2021;13.10;6,55
+mer 10/11/2021;13.15;7,19
+gio 11/11/2021;13.30;6,18
+ven 12/11/2021;13.10;7,24
+lun 15/11/2021;05.12;7,33
+mar 16/11/2021;05.22;7,27
+mer 17/11/2021;05.08;7,18
+gio 18/11/2021;05.17;6,57
+ven 19/11/2021;05.25;7,05
+lun 22/11/2021;13.18;7,32
+mer 24/11/2021;13.11;7,28
+gio 25/11/2021;15.01;5,16
+ven 26/11/2021;13.25;7,12
+lun 29/11/2021;05.17;15,33
+gio 02/12/2021;05.08;15,37
+ven 03/12/2021;05.17;15,03
+lun 06/12/2021;13.11;7,44
+mar 07/12/2021;13.02;7,51
+mar 14/12/2021;08.12;7,33
+mer 15/12/2021;08.11;7,21
+gio 16/12/2021;08.14;7,26
+ven 17/12/2021;08.19;7,33
+lun 20/12/2021;08.14;7,03
+mar 21/12/2021;08.16;7,15
+mer 22/12/2021;08.17;7,24
+gio 23/12/2021;08.11;7,18
+ven 24/12/2021;08.14;7,33
+lun 27/12/2021;10.09;1,36
+mar 28/12/2021;14.37;1,59
+mer 29/12/2021;14.19;2,07
+gio 30/12/2021;08.08;2,38
+mar 04/01/2022;13.27;2,06
+lun 10/01/2022;13.05;7,47
+mar 11/01/2022;13.08;5,55
+mer 12/01/2022;13.09;7,46
+gio 13/01/2022;13.17;7,01
+ven 14/01/2022;13.11;4,59
+lun 17/01/2022;05.15;7,44
+mar 18/01/2022;05.13;7,39
+mer 19/01/2022;05.09;7,51
+gio 20/01/2022;05.17;7,31
+ven 21/01/2022;05.33;7,26
+lun 24/01/2022;13.12;7,45
+mar 25/01/2022;13.19;7,33
+mer 26/01/2022;13.08;7,51
+gio 27/01/2022;13.23;7,29
+ven 28/01/2022;13.17;7,37
+lun 31/01/2022;08.06;7,39
+mar 01/02/2022;08.12;7,33
+mer 02/02/2022;08.11;7,21
+gio 03/02/2022;08.14;7,26
+ven 04/02/2022;08.19;7,33
+lun 07/02/2022;08.14;7,03
+mar 08/02/2022;08.16;7,15
+mer 09/02/2022;08.17;7,24
+gio 10/02/2022;08.11;7,18
+ven 11/02/2022;08.14;7,33
+lun 14/02/2022;05.06;7,42
+mar 15/02/2022;05.21;7,02
+mer 16/02/2022;05.46;5,33
+gio 17/02/2022;05.37;6,27
+ven 18/02/2022;05.22;7,09
+lun 21/02/2022;13.01;7,55
+mar 22/02/2022;13.06;7,42
+mer 23/02/2022;13.08;7,51
+gio 24/02/2022;13.11;7,36
+ven 25/02/2022;13.03;7,49
+lun 28/02/2022;05.12;7,33
+mar 01/03/2022;05.22;7,27
+mer 02/03/2022;05.08;7,18
+gio 03/03/2022;05.17;6,57
+ven 04/03/2022;05.25;7,05
+lun 07/03/2022;13.18;7,32
+mar 08/03/2022;13.02;7,33
+mer 09/03/2022;13.11;7,28
+gio 10/03/2022;15.01;5,16
+ven 11/03/2022;13.25;7,12
+lun 14/03/2022;05.17;15,33
+mar 15/03/2022;05.03;15,28
+mer 16/03/2022;05.09;15,45
+gio 17/03/2022;05.08;15,37
+ven 18/03/2022;05.17;15,03
+lun 21/03/2022;13.01;7,49
+mar 22/03/2022;13.09;2,57
+mer 23/03/2022;13.22;3,29
+gio 24/03/2022;13.19;4,25
+ven 25/03/2022;13.08;7,43
+lun 28/03/2022;08.06;7,01
+mar 29/03/2022;08.07;7,23
+mer 30/03/2022;08.11;6,27
+gio 31/03/2022;08.17;3,45
\ No newline at end of file
diff --git a/DemoData/InterclaysDatiProd_Puliti.xlsx b/DemoData/InterclaysDatiProd_Puliti.xlsx
new file mode 100644
index 0000000..f1e6f04
Binary files /dev/null and b/DemoData/InterclaysDatiProd_Puliti.xlsx differ
diff --git a/MapoDataFiller.sln b/MapoDataFiller.sln
new file mode 100644
index 0000000..b31717e
--- /dev/null
+++ b/MapoDataFiller.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.33530.505
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapoDataFiller", "MapoDataFiller\MapoDataFiller.csproj", "{28FCC5FB-4A82-4251-A547-C233BAF1FB5A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {28FCC5FB-4A82-4251-A547-C233BAF1FB5A}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A1A70B19-B422-435B-9391-86897FA78BC8}
+ EndGlobalSection
+EndGlobal
diff --git a/MapoDataFiller/Conf/INTERCL_01.json b/MapoDataFiller/Conf/INTERCL_01.json
new file mode 100644
index 0000000..5e4fc3d
--- /dev/null
+++ b/MapoDataFiller/Conf/INTERCL_01.json
@@ -0,0 +1,136 @@
+{
+ "SetupSimInt": {
+ "Dep_Cil_mmH2O": {
+ 0: 1,
+ 1: 1,
+ 25: 5,
+ 50: 10,
+ 75: 15,
+ 99: 26,
+ 100: 52
+ },
+ "Bruc_0_100": {
+ 0: 1,
+ 1: 17,
+ 25: 24,
+ 50: 33,
+ 75: 47,
+ 99: 71,
+ 100: 100
+ },
+ "Asp_0_100": {
+ 0: 3,
+ 1: 36,
+ 25: 52,
+ 50: 59,
+ 75: 77,
+ 99: 100,
+ 100: 100
+ }
+ },
+ "SetupSimReal": {
+ "Temp_Filtro": {
+ 0: 0.1,
+ 1: 5.6,
+ 25: 89.1,
+ 50: 103.7,
+ 75: 108.3,
+ 99: 118.1,
+ 100: 135.6
+ },
+ "T_Attuale_Cil": {
+ 0: 0.01,
+ 1: 0.65,
+ 25: 10.36,
+ 50: 11.46,
+ 75: 11.98,
+ 99: 13.99,
+ 100: 327.67
+ },
+ "Flowrate": {
+ 0: 0.01,
+ 1: 0.06,
+ 25: 5.34,
+ 50: 8.22,
+ 75: 9.48,
+ 99: 12.86,
+ 100: 262.8
+ },
+ "Ampere_Cil": {
+ 0: 10.6,
+ 1: 14.1,
+ 25: 14.4,
+ 50: 14.6,
+ 75: 15,
+ 99: 16.4,
+ 100: 79.1
+ },
+ "Ampere_Asp": {
+ 0: 12.1,
+ 1: 14.8,
+ 25: 15.9,
+ 50: 17.2,
+ 75: 22.1,
+ 99: 32.4,
+ 100: 87.3
+ },
+ "Ampere_Dosat": {
+ 0: 0.1,
+ 1: 1.8,
+ 25: 2,
+ 50: 2,
+ 75: 2.1,
+ 99: 2.4,
+ 100: 3.3
+ }
+ },
+ "SetupDtData": {
+ "Tot_Parz_Dosatore": {
+ "2019-11-29 02:24:13": 3619.129,
+ "2020-01-08 13:56:24": 4101.16,
+ "2020-01-12 17:34:34": 4201.494,
+ "2020-01-12 17:34:35": 0,
+ "2020-01-17 17:34:35": 119.352,
+ "2020-01-31 11:39:32": 471.494,
+ "2020-02-07 19:38:58": 606.883,
+ "2020-03-19 23:59:53": 2112.625,
+ "2020-04-23 20:38:32": 2929.045,
+ "2020-05-15 17:30:57": 3500.943,
+ "2020-05-15 17:30:58": 447.943,
+ "2020-05-15 20:04:57": 457.217,
+ "2020-05-15 20:04:58": 0,
+ "2020-06-12 19:19:36": 736.229,
+ "2020-06-30 19:56:21": 1225.481,
+ "2020-07-14 20:05:37": 1828.772,
+ "2020-07-28 20:15:55": 2358.175,
+ "2020-09-30 11:29:26": 4081.050,
+ "2020-11-16 13:01:33": 5419.626,
+ "2021-11-24 12:50:37": 16632.060,
+ "2022-01-14 20:07:39": 18187.904,
+ "2022-03-14 11:33:21": 20782.475,
+ "2022-11-21 08:48:21": 27770.447,
+ "2023-03-07 15:40:44": 30951.118
+ },
+ "Tot_Dosatore": {
+ "2019-11-29 02:24:14": 3770.426,
+ "2020-01-08 13:56:24": 4252.457,
+ "2020-01-17 17:34:35": 4465.844,
+ "2020-01-31 11:39:32": 4817.986,
+ "2020-02-07 19:38:58": 4953.375,
+ "2020-03-19 23:59:53": 6459.117,
+ "2020-04-23 20:38:32": 7275.537,
+ "2020-05-15 17:30:58": 7818.401,
+ "2020-06-12 19:19:36": 8563.820,
+ "2020-06-30 19:56:21": 9053.072,
+ "2020-07-14 20:05:37": 9656.363,
+ "2020-07-28 20:15:55": 10185.766,
+ "2020-09-30 11:29:26": 11908.641,
+ "2020-11-16 13:01:33": 13247.217,
+ "2021-11-24 12:50:37": 24459.651,
+ "2022-01-14 20:07:39": 26015.495,
+ "2022-03-14 11:33:21": 28610.066,
+ "2022-11-21 08:48:21": 35598.038,
+ "2023-03-07 15:40:44": 38778.709
+ }
+ }
+}
\ No newline at end of file
diff --git a/MapoDataFiller/Conf/INTERCL_02.json b/MapoDataFiller/Conf/INTERCL_02.json
new file mode 100644
index 0000000..1a37234
--- /dev/null
+++ b/MapoDataFiller/Conf/INTERCL_02.json
@@ -0,0 +1,103 @@
+{
+ "SetupSimInt": {
+ "Dep_Cil_mmH2O": {
+ 0: 1,
+ 1: 1,
+ 25: 5,
+ 50: 10,
+ 75: 15,
+ 99: 26,
+ 100: 52
+ },
+ "Bruc_0_100": {
+ 0: 1,
+ 1: 17,
+ 25: 24,
+ 50: 33,
+ 75: 47,
+ 99: 71,
+ 100: 100
+ },
+ "Asp_0_100": {
+ 0: 3,
+ 1: 36,
+ 25: 52,
+ 50: 59,
+ 75: 77,
+ 99: 100,
+ 100: 100
+ }
+ },
+ "SetupSimReal": {
+ "Temp_Filtro": {
+ 0: 0.1,
+ 1: 5.6,
+ 25: 89.1,
+ 50: 103.7,
+ 75: 108.3,
+ 99: 118.1,
+ 100: 135.6
+ },
+ "T_Attuale_Cil": {
+ 0: 0.01,
+ 1: 0.65,
+ 25: 10.36,
+ 50: 11.46,
+ 75: 11.98,
+ 99: 13.99,
+ 100: 327.67
+ },
+ "Flowrate": {
+ 0: 0.01,
+ 1: 0.06,
+ 25: 5.34,
+ 50: 8.22,
+ 75: 9.48,
+ 99: 12.86,
+ 100: 262.8
+ },
+ "Ampere_Cil": {
+ 0: 10.6,
+ 1: 14.1,
+ 25: 14.4,
+ 50: 14.6,
+ 75: 15,
+ 99: 16.4,
+ 100: 79.1
+ },
+ "Ampere_Asp": {
+ 0: 12.1,
+ 1: 14.8,
+ 25: 15.9,
+ 50: 17.2,
+ 75: 22.1,
+ 99: 32.4,
+ 100: 87.3
+ },
+ "Ampere_Dosat": {
+ 0: 0.1,
+ 1: 1.8,
+ 25: 2,
+ 50: 2,
+ 75: 2.1,
+ 99: 2.4,
+ 100: 3.3
+ }
+ },
+ "SetupDtData": {
+ "Tot_Parz_Dosatore": {
+ "2020-06-30 19:56:21": 1225.481,
+ "2020-11-16 13:01:33": 5419.626,
+ "2022-03-14 11:33:21": 20782.475,
+ "2022-11-21 08:48:21": 27770.447,
+ "2023-03-07 15:40:44": 30951.118
+ },
+ "Tot_Dosatore": {
+ "2020-06-30 19:56:21": 9053.072,
+ "2020-11-16 13:01:33": 13247.217,
+ "2022-03-14 11:33:21": 28610.066,
+ "2022-11-21 08:48:21": 35598.038,
+ "2023-03-07 15:40:44": 38778.709
+ }
+ }
+}
\ No newline at end of file
diff --git a/MapoDataFiller/DayConf.cs b/MapoDataFiller/DayConf.cs
new file mode 100644
index 0000000..2ecdc7d
--- /dev/null
+++ b/MapoDataFiller/DayConf.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MapoDataFiller
+{
+ public class DayConf
+ {
+ public DateTime dtStart { get; set; } = DateTime.Today;
+ public DateTime dtEnd { get; set; } = DateTime.Today.AddDays(1);
+
+ ///
+ /// Init di default
+ ///
+ public DayConf()
+ { }
+
+ ///
+ /// restituisce un oggetto DayConf data stringa raw + cod formato
+ ///
+ /// Formato della stringa dati... es CsvDateDur --> data;ora;durata
+ ///
+ public DayConf(string formato, string rawData)
+ {
+ string pattern = "dd/MM/YYYY";
+ var cultInfo = new CultureInfo("it-IT");
+ double numOre = 0;
+ if (formato == "CsvDateDur")
+ {
+ var dBlock = rawData.Split(";");
+ var datePart = dBlock[0].Split(' ');
+ if (datePart.Length > 1)
+ {
+ string dateForm = $"{datePart[1]} {dBlock[1].Replace(".", ":")}";
+ dtStart = DateTime.Parse(dateForm, cultInfo);
+ // ora fine...
+ double.TryParse(dBlock[2], out numOre);
+ dtEnd = dtStart.AddHours(numOre);
+ }
+ }
+ }
+ }
+}
diff --git a/MapoDataFiller/Filler/InterClays.cs b/MapoDataFiller/Filler/InterClays.cs
new file mode 100644
index 0000000..99fbe9a
--- /dev/null
+++ b/MapoDataFiller/Filler/InterClays.cs
@@ -0,0 +1,405 @@
+namespace MapoDataFiller.Filler
+{
+ public class InterClays
+ {
+ #region Public Properties
+
+ public SimSetup currSetup { get; set; } = new SimSetup();
+
+ #endregion Public Properties
+
+ #region Public Methods
+
+ ///
+ /// Restituisce elenco righe da caricare sul DB dato periodo indicato
+ ///
+ ///
+ ///
+ ///
+ public SimBlock GetDataRows(string CodIOB, DayConf currDay)
+ {
+ string fileConf = Path.Combine("Conf", $"{CodIOB}.json");
+ if (File.Exists(fileConf))
+ {
+ currSetup = SimSetup.readConf(fileConf);
+ }
+
+ SimBlock answ = new SimBlock();
+ int idxEv = 0;
+ int idxFl = 0;
+ bool doProd = false;
+ List nextRowsFL = new List();
+ List nextRowsEV = new List();
+ int valReq = 0;
+ int valCurr = 0;
+ // simulo periodi
+ int numPer = rnd.Next(10, numPerMax);
+ // calcolo durata media periodi in minuti
+ double avgDurPer = (currDay.dtEnd.Subtract(currDay.dtStart).TotalMinutes) / numPer;
+ double preDelay = avgDurPer / 2;
+ // imposto cursore
+ DateTime dtStart = currDay.dtStart.AddMinutes(preDelay);
+ DateTime dtEnd = dtStart;
+ // per prima cosa aggiungo start dopo un delay di max 1/2 periodo...
+ answ.FlList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};IOB-STATUS;IOB Started;{idxFl++}");
+ answ.EvList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};14;ND;[{idxEv++}] 00;0;-");
+ // calcolo durata successivi
+ while (dtEnd < currDay.dtEnd)
+ {
+ dtStart = dtEnd.AddSeconds(rnd.Next(25, 35));
+ dtEnd = dtStart.AddMinutes(avgDurPer * rnd.Next(600, 1400) / 1000);
+ // verifico il tipo di CodIOB
+ if (CodIOB == "INTERCL_01")
+ {
+ // tiro a dadi x decidere SE LAVORA periodo... 50% dei casi nel periodo TRACCIATO
+ doProd = (rnd.Next(0, 100) <= 40);
+
+ // FluxLOG: genero righe FL x periodo e sommo
+ nextRowsFL = IC_ESS_getFlRows(CodIOB, dtStart, dtEnd, doProd, ref idxFl);
+
+ // EvList: genero righe EV x periodo e sommo
+ nextRowsEV = IC_ESS_getEvRows(CodIOB, dtStart, dtEnd, doProd, ref idxEv);
+ }
+ else if (CodIOB == "INTERCL_02")
+ {
+ // verifico se DEVO finire caricamento...
+ if (valCurr < valReq)
+ {
+ doProd = true;
+ }
+ else
+ {
+ // tiro a dadi x decidere SE ho pesate nel periodo... 30% dei casi
+ doProd = (rnd.Next(0, 100) <= 30);
+
+ // FluxLOG: SE ho pesate --> genero target
+ valReq = doProd ? rnd.Next(valMin / valStep, valMax / valStep) * valStep : 0;
+ }
+ // FluxLOG: genero righe FL x periodo e sommo
+ nextRowsFL = IC_OX_getFlRows(CodIOB, dtStart, dtEnd, doProd, valReq, ref idxFl, ref valCurr);
+
+ // EvList: genero righe EV x periodo e sommo
+ nextRowsEV = IC_OX_getEvRows(CodIOB, dtStart, dtEnd, doProd, ref idxEv);
+ }
+ // accodo FL
+ answ.FlList.AddRange(nextRowsFL);
+ // accodo EV
+ answ.EvList.AddRange(nextRowsEV);
+ }
+
+ // aggiungo chiusura eventi...
+ dtStart = dtEnd.AddSeconds(rnd.Next(25, 35));
+ answ.EvList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxEv++}] 01;0;-");
+ dtStart = dtEnd.AddSeconds(rnd.Next(80, 180));
+ answ.EvList.Add($"{CodIOB};{dtStart:yyyy-MM-dd HH:mm:ss.fff};14;ND;[{idxEv++}] 00;0;-");
+
+ // ritorno
+ return answ;
+ }
+
+ #endregion Public Methods
+
+ #region Protected Fields
+
+ protected int numPerMax = 50;
+ protected int numSec = 30;
+ protected Random rnd = new Random();
+ protected int stepMax = 150;
+ protected int stepMin = 50;
+ protected int valMax = 15000;
+ protected int valMin = 500;
+ protected int valStep = 10;
+ protected int waitMax = 240;
+ protected int waitMin = 10;
+
+ #endregion Protected Fields
+
+ #region Protected Methods
+
+ ///
+ /// Simulo un blocco dati FL
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected List IC_OX_getEvRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, ref int idxCount)
+ {
+ List rows = new List();
+ DateTime dtCurs = dtStart.AddMilliseconds(rnd.Next(1000, 60000));
+ string currRow = "";
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ // se produce registro poweron...
+ if (doProd)
+ {
+ currRow = $"{CodIOB};{dtStart.AddSeconds(5):yyyy-MM-dd HH:mm:ss.fff};16;ND;[{idxCount++}] 23;0;-";
+ rows.Add(currRow);
+ currRow = $"{CodIOB};{dtEnd.AddSeconds(-5):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 01;0;-";
+ rows.Add(currRow);
+ }
+ // se NON produce alterno valori spenta/accesa
+ else
+ {
+ // genera i dati secondo lo schema configurato... con periodo da 15" a 15 min di pausa
+ while (dtCurs < dtEnd)
+ {
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 01;0;-";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddSeconds(rnd.Next(60 * 5, 60 * 15));
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};14;ND;[{idxCount++}] 00;0;-";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(500, 5000));
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ }
+ return rows;
+ }
+
+ ///
+ /// Simulo un blocco dati FL
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected List IC_OX_getFlRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, int valReq, ref int idxCount, ref int valCurr)
+ {
+ List rows = new List();
+ DateTime dtCurs = dtStart;
+ int valTo = doProd ? valReq + rnd.Next(0, valStep) * valStep : 0;
+ valCurr = valReq > 0 ? valCurr : 0;
+ string currRow = "";
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ // genera i dati secondo lo schema configurato...
+ while (dtCurs < dtEnd)
+ {
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};kgImp;{valReq};{idxCount++}";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(50, 300));
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};kgAct;{valCurr};{idxCount++}";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(27000, 33000));
+ // incremento peso... SE <= max...
+ if (valCurr < valTo)
+ {
+ valCurr += rnd.Next(stepMin / valStep, stepMax / valStep) * valStep;
+ }
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ return rows;
+ }
+
+
+ ///
+ /// Simulo un blocco dati FL
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected List IC_ESS_getEvRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, ref int idxCount)
+ {
+ List rows = new List();
+ DateTime dtCurs = dtStart.AddMilliseconds(rnd.Next(1000, 60000));
+ string currRow = "";
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ var fullDuration = dtEnd.Subtract(dtStart).TotalMinutes;
+ // se produce registro riscaldamento + poweron...
+ if (doProd)
+ {
+ // calcolo 1/8 = 12.5% riscaldamento...
+ currRow = $"{CodIOB};{dtStart.AddSeconds(1):yyyy-MM-dd HH:mm:ss.fff};40;ND;[{idxCount++}] 34;0;-";
+ rows.Add(currRow);
+ // ...il resto lavoro... partendo a 1/8
+ currRow = $"{CodIOB};{dtStart.AddMinutes(fullDuration / 8):yyyy-MM-dd HH:mm:ss.fff};16;ND;[{idxCount++}] 13;0;-";
+ rows.Add(currRow);
+ currRow = $"{CodIOB};{dtEnd.AddSeconds(-1):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 12;0;-";
+ rows.Add(currRow);
+ }
+ // se NON produce alterno valori spenta/accesa
+ else
+ {
+ /*
+ * genera i dati con durata secondo pareto standard...
+ * - 10% --> 24: manuale
+ * - 30% --> 15: fermo generico
+ * - 60% --> 14: spenta
+ */
+ // manuale
+ currRow = $"{CodIOB};{dtStart.AddSeconds(1):yyyy-MM-dd HH:mm:ss.fff};24;ND;[{idxCount++}] 24;0;-";
+ rows.Add(currRow);
+ // fermo generico dopo 10%
+ currRow = $"{CodIOB};{dtStart.AddMinutes(fullDuration / 10):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 12;0;-";
+ rows.Add(currRow);
+ // spenta dopo 40%
+ currRow = $"{CodIOB};{dtStart.AddMinutes(fullDuration * 4 / 10):yyyy-MM-dd HH:mm:ss.fff};15;ND;[{idxCount++}] 12;0;-";
+ rows.Add(currRow);
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ return rows;
+ }
+
+ ///
+ /// Simulo un blocco dati FL
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected List IC_ESS_getFlRows(string CodIOB, DateTime dtStart, DateTime dtEnd, bool doProd, ref int idxCount)
+ {
+ List rows = new List();
+ // inizio spostando di 5-10 sec avanti inizio
+ DateTime dtCurs = dtStart.AddSeconds(rnd.Next(5, 10));
+ int simInt = 0;
+ double simReal = 0;
+ double simDTime = 0;
+ // se è do prod --> simulo 50° percentile in su, altrimenti primi 50 percentili...
+ string currRow = "";
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ // genera i dati secondo lo schema configurato...
+ while (dtCurs < dtEnd)
+ {
+ // in primis genero gli items INT
+ if (currSetup.SetupSimInt.Count > 0)
+ {
+ foreach (var item in currSetup.SetupSimInt)
+ {
+ simInt = simValInt(doProd, item.Key, item.Value);
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simInt};{idxCount++}";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(10, 100));
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ }
+ // poi gli item REAL
+ if (currSetup.SetupSimReal.Count > 0)
+ {
+ foreach (var item in currSetup.SetupSimReal)
+ {
+ simReal = simValReal(doProd, item.Key, item.Value);
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simReal};{idxCount++}";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(10, 100));
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ }
+ // infine certo gli items basati su datetime
+ if (currSetup.SetupDtData.Count > 0 && doProd)
+ {
+ foreach (var item in currSetup.SetupDtData)
+ {
+ simDTime = simValData(dtCurs, item.Key, item.Value);
+ currRow = $"{CodIOB};{dtCurs:yyyy-MM-dd HH:mm:ss.fff};{item.Key};{simDTime};{idxCount++}";
+ rows.Add(currRow);
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(10, 100));
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ }
+
+
+ dtCurs = dtCurs.AddMilliseconds(rnd.Next(87000, 93000));
+ // reset counter
+ idxCount = idxCount <= 9999 ? idxCount : 0;
+ }
+ return rows;
+ }
+ ///
+ /// Simulazione valore int secondo tab transcodifica:
+ /// doProd=true --> simulo 50° percentile in su, altrimenti primi 50 percentili...
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected int simValInt(bool doProd, string codFlux, Dictionary transcMap)
+ {
+ int result = 0;
+ // se è in prod --> 50° perc in su...
+ int rawSim = rnd.Next(0, 50) + (doProd ? 50 : 0);
+ // transcodifico
+ var val0 = transcMap
+ .Where(x => x.Key <= rawSim)
+ .OrderByDescending(x => x.Value)
+ .FirstOrDefault();
+ var val1 = transcMap
+ .Where(x => x.Key >= rawSim)
+ .OrderBy(x => x.Value)
+ .FirstOrDefault();
+ result = val0.Value + (int)Math.Round((double)(val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 0);
+ return result;
+ }
+ ///
+ /// Simulazione valore REAL secondo tab transcodifica:
+ /// doProd=true --> simulo 50° percentile in su, altrimenti primi 50 percentili...
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected double simValReal(bool doProd, string codFlux, Dictionary transcMap)
+ {
+ double result = 0;
+ // se è in prod --> 50° perc in su...
+ int rawSim = rnd.Next(0, 50) + (doProd ? 50 : 0);
+ // transcodifico
+ var val0 = transcMap
+ .Where(x => x.Key <= rawSim)
+ .OrderByDescending(x => x.Value)
+ .FirstOrDefault();
+ var val1 = transcMap
+ .Where(x => x.Key >= rawSim)
+ .OrderBy(x => x.Value)
+ .FirstOrDefault();
+ result = Math.Round(val0.Value + (val1.Value - val0.Value) * (rawSim - val0.Key) / (val1.Key - val0.Key), 2);
+ return result;
+ }
+ ///
+ /// Simulazione valore Real dt-based secondo tab transcodifica
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected double simValData(DateTime dtCurs, string codFlux, Dictionary transcMap)
+ {
+ double result = 0;
+ int rawSim = rnd.Next(-5000, 5000);
+ // perturbo la data in ms per +/-5 sec
+ dtCurs = dtCurs.AddMilliseconds(rawSim);
+ // transcodifico
+ var val0 = transcMap
+ .Where(x => x.Key <= dtCurs)
+ .OrderByDescending(x => x.Value)
+ .FirstOrDefault();
+ var val1 = transcMap
+ .Where(x => x.Key >= dtCurs)
+ .OrderBy(x => x.Value)
+ .FirstOrDefault();
+ // prendo valore intervallo calcolato...
+ result = Math.Round(val0.Value + (val1.Value - val0.Value) * (dtCurs - val0.Key) / (val1.Key - val0.Key), 2);
+ return result;
+ }
+
+ #endregion Protected Methods
+ }
+}
\ No newline at end of file
diff --git a/MapoDataFiller/FluxStats.cs b/MapoDataFiller/FluxStats.cs
new file mode 100644
index 0000000..202bdd5
--- /dev/null
+++ b/MapoDataFiller/FluxStats.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using YamlDotNet.Serialization.NamingConventions;
+using YamlDotNet.Serialization;
+using Newtonsoft.Json;
+
+namespace MapoDataFiller
+{
+ public class SimSetup
+ {
+ public Dictionary> SetupSimInt { get; set; } = new Dictionary>();
+ public Dictionary> SetupSimReal { get; set; } = new Dictionary>();
+ public Dictionary> SetupDtData { get; set; } = new Dictionary>();
+
+ public static SimSetup readConf(string filePath)
+ {
+ SimSetup retObj = new SimSetup();
+ if (File.Exists(filePath))
+ {
+ string rawData = File.ReadAllText(filePath);
+ var rawDecode = JsonConvert.DeserializeObject(rawData);
+ retObj = rawDecode != null ? rawDecode : new SimSetup();
+ }
+ return retObj;
+ }
+ }
+}
diff --git a/MapoDataFiller/MConf.cs b/MapoDataFiller/MConf.cs
new file mode 100644
index 0000000..8bc824b
--- /dev/null
+++ b/MapoDataFiller/MConf.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using YamlDotNet.Serialization.NamingConventions;
+using YamlDotNet.Serialization;
+using System.Reflection.Metadata;
+
+namespace MapoDataFiller
+{
+ public class MConf
+ {
+ public string ConfDir { get; set; } = "";
+ public string CodIOB { get; set; } = "";
+ public bool HasHeader { get; set; } = false;
+ public string TimeTable { get; set; } = "";
+ public string OutFolder { get; set; } = "";
+
+ public MConf()
+ {
+ ConfDir = @"C:\Temp\Interclays\";
+ CodIOB = "NONE";
+ HasHeader = false;
+ TimeTable = "Demo.csv";
+ OutFolder = @"C:\Temp\Interclays\Out";
+ }
+ }
+ public class CMan
+ {
+ ///
+ /// Deserializza dato filePath
+ ///
+ ///
+ public static MConf readConf(string filePath)
+ {
+ MConf retObj = new MConf();
+ if (File.Exists(filePath))
+ {
+ var deserializer = new DeserializerBuilder()
+ .WithNamingConvention(new PascalCaseNamingConvention())
+ .Build();
+ string rawData = File.ReadAllText(filePath);
+
+ var input = new StringReader(rawData);
+ retObj = deserializer.Deserialize(input);
+ }
+ return retObj;
+ }
+ }
+}
diff --git a/MapoDataFiller/MapoDataFiller.csproj b/MapoDataFiller/MapoDataFiller.csproj
new file mode 100644
index 0000000..5e57c73
--- /dev/null
+++ b/MapoDataFiller/MapoDataFiller.csproj
@@ -0,0 +1,28 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+
+
diff --git a/MapoDataFiller/Program.cs b/MapoDataFiller/Program.cs
new file mode 100644
index 0000000..3c47632
--- /dev/null
+++ b/MapoDataFiller/Program.cs
@@ -0,0 +1,131 @@
+// See https://aka.ms/new-console-template for more information
+using MapoDataFiller;
+using MapoDataFiller.Filler;
+using Spectre.Console;
+
+
+AnsiConsole.Write(
+ new FigletText("MapoDataFiller")
+ .LeftAligned()
+ .Color(Color.Blue1));
+var rule = new Rule("[green]Setup data[/]");
+rule.Alignment = Justify.Left;
+AnsiConsole.Write(rule);
+
+// recupero configurazione...
+MConf currConf = new MConf();
+if (File.Exists("conf.yaml"))
+{
+ currConf = CMan.readConf("conf.yaml");
+}
+AnsiConsole.WriteLine();
+
+AnsiConsole.MarkupLineInterpolated($"Conf ConfDir: [yellow]{currConf.ConfDir}[/]");
+var pathOk = AnsiConsole.Confirm("Confermi ConfDir?");
+while (!pathOk)
+{
+ currConf.ConfDir = AnsiConsole.Ask("Inserisci ConfDir desiderato:");
+ AnsiConsole.WriteLine(currConf.ConfDir);
+ pathOk = AnsiConsole.Confirm("Confermi ConfDir?");
+}
+
+// ora leggo i file di conf yaml e presento opzione...
+if (!Directory.Exists(currConf.ConfDir))
+{
+ // segnalo errore, credo directory
+ AnsiConsole.WriteLine("Conf directory not found! exiting...");
+ Directory.CreateDirectory(currConf.ConfDir);
+}
+else
+{
+ // leggo elenco file yaml e presento alternativa
+ var fileOpt = Directory.GetFiles(currConf.ConfDir, "*.yaml");
+ if (fileOpt.Length == 0)
+ {
+ AnsiConsole.WriteLine("Sim Conf file not found, exiting!");
+ }
+ else
+ {
+ var fileSel = AnsiConsole.Prompt(
+ new SelectionPrompt()
+ .Title("Quale file vuoi [green]processare[/]?")
+ .PageSize(10)
+ .MoreChoicesText("[grey](Usare up/down per scorrere)[/]")
+ .AddChoices(fileOpt));
+
+ // leggo la conf del file selezionato...
+ if (!string.IsNullOrEmpty(fileSel))
+ {
+ currConf = CMan.readConf(fileSel);
+
+#if false
+ // procedo come prima
+ AnsiConsole.MarkupLineInterpolated($"Conf FillMode: [yellow]{currConf.FillMode}[/]");
+ var fillOK = AnsiConsole.Confirm("Confermi FillMode?");
+ while (!fillOK)
+ {
+ currConf.FillMode = AnsiConsole.Ask("Inserisci il modo desiderato:");
+ AnsiConsole.WriteLine(currConf.FillMode);
+ fillOK = AnsiConsole.Confirm("Confermi FillMode?");
+ }
+
+ AnsiConsole.MarkupLineInterpolated($"Conf HasHeader: [yellow]{currConf.HasHeader}[/]");
+ var headOK = AnsiConsole.Confirm("Confermi HasHeader?");
+ while (!headOK)
+ {
+ currConf.HasHeader = AnsiConsole.Ask("HasHeader (true/false)?");
+ AnsiConsole.WriteLine(currConf.HasHeader);
+ headOK = AnsiConsole.Confirm("Confermi HasHeader?");
+ }
+#endif
+
+ // leggo timetable
+ string filePath = Path.Combine(currConf.ConfDir, currConf.TimeTable);
+ if (File.Exists(filePath))
+ {
+ var righe = File.ReadAllLines(filePath).ToList();
+ // se devo saltare
+ if (currConf.HasHeader)
+ {
+ righe = righe.Skip(1).ToList();
+ }
+ // svuoto cartella output
+ if (!Directory.Exists(currConf.OutFolder))
+ {
+ Directory.CreateDirectory(currConf.OutFolder);
+ }
+ var fileList = Directory.GetFiles(currConf.OutFolder);
+ foreach (var file in fileList)
+ {
+ File.Delete(file);
+ }
+
+ // verifico quale oggetto sim avviare... x ora SOLO interclays
+ InterClays currSim = new InterClays();
+ // ciclo su ogni record
+ foreach (var riga in righe)
+ {
+ // recupero dati del giorno corrente
+ var giornata = new DayConf("CsvDateDur", riga);
+
+ var simDataBlock = currSim.GetDataRows(currConf.CodIOB, giornata);
+ // scrivo sul file annuale i dati del singolo giorno...
+ string pathFileFL = Path.Combine(currConf.OutFolder, $"{currConf.CodIOB}_FL_{giornata.dtStart:yyyy}.csv");
+ if (!File.Exists(pathFileFL))
+ {
+ File.WriteAllText(pathFileFL, "");
+ }
+ string pathFileEL = Path.Combine(currConf.OutFolder, $"{currConf.CodIOB}_EL_{giornata.dtStart:yyyy}.csv");
+ if (!File.Exists(pathFileEL))
+ {
+ File.WriteAllText(pathFileEL, "");
+ }
+ // vado in append...
+ File.AppendAllLines(pathFileFL, simDataBlock.FlList);
+ File.AppendAllLines(pathFileEL, simDataBlock.EvList);
+ }
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/MapoDataFiller/SimBlock.cs b/MapoDataFiller/SimBlock.cs
new file mode 100644
index 0000000..80e5262
--- /dev/null
+++ b/MapoDataFiller/SimBlock.cs
@@ -0,0 +1,12 @@
+namespace MapoDataFiller
+{
+ public class SimBlock
+ {
+ #region Public Properties
+
+ public List EvList { get; set; } = new List();
+ public List FlList { get; set; } = new List();
+
+ #endregion Public Properties
+ }
+}
\ No newline at end of file
diff --git a/MapoDataFiller/conf.yaml b/MapoDataFiller/conf.yaml
new file mode 100644
index 0000000..55d6e2f
--- /dev/null
+++ b/MapoDataFiller/conf.yaml
@@ -0,0 +1,6 @@
+---
+ConfDir: C:\Temp\Interclays
+CodIOB: INTERCL_02
+HasHeader: true
+TimeTable: Interclays02.csv
+OutFolder: C:\Temp\Interclays\Out
diff --git a/MapoDataFiller_DemoData/Interclays02.csv b/MapoDataFiller_DemoData/Interclays02.csv
new file mode 100644
index 0000000..b394e44
--- /dev/null
+++ b/MapoDataFiller_DemoData/Interclays02.csv
@@ -0,0 +1,514 @@
+Data;Ora Inizio ;Ore Lavorate
+lun 02/12/2019;05.18;7,41
+mar 03/12/2019;05.22;7,22
+mer 04/12/2019;05.16;7,35
+lun 09/12/2019;14.12;5,43
+mar 10/12/2019;13.10;6,55
+mer 11/12/2019;13.15;7,19
+gio 12/12/2019;13.30;6,18
+ven 13/12/2019;13.10;7,24
+lun 16/12/2019;05.12;7,33
+mar 17/12/2019;05.22;7,27
+mer 18/12/2019;05.08;7,18
+gio 19/12/2019;05.17;6,57
+ven 20/12/2019;05.25;7,05
+lun 23/12/2019;13.18;7,32
+mar 24/12/2019;13.02;7,33
+mer 25/12/2019;13.11;7,28
+gio 26/12/2019;15.01;5,16
+ven 27/12/2019;13.25;7,12
+lun 30/12/2019;05.17;15,33
+mar 31/12/2019;05.03;15,28
+mer 01/01/2020;05.09;15,45
+gio 02/01/2020;05.08;15,37
+ven 03/01/2020;05.17;15,03
+lun 06/01/2020;13.14;7,43
+mar 07/01/2020;13.25;6,55
+mer 08/01/2020;15.05;5,18
+lun 20/01/2020;13.07;7,44
+mar 21/01/2020;13.14;6,51
+mer 22/01/2020;13.22;4,48
+gio 23/01/2020;13.19;7,27
+ven 24/01/2020;13.10;7,36
+mer 29/01/2020;07.19;3,19
+ven 31/01/2020;13.58;1,59
+lun 03/02/2020;13.10;7,25
+mar 04/02/2020;13.16;6,54
+mer 05/02/2020;13.09;7,06
+gio 06/02/2020;13.18;5,59
+ven 07/02/2020;13.26;4,29
+gio 13/02/2020;08.33;6,55
+ven 14/02/2020;08.19;7,02
+lun 17/02/2020;13.11;7,45
+mar 18/02/2020;13.06;7,48
+mer 19/02/2020;13.18;7,36
+gio 20/02/2020;14.36;6,15
+ven 21/02/2020;13.16;7,29
+lun 24/02/2020;05.06;7,45
+mar 25/02/2020;05.14;7,43
+mer 26/02/2020;05.11;7,44
+gio 27/02/2020;05.21;7,39
+ven 28/02/2020;05.19;7,28
+lun 02/03/2020;13.05;7,47
+mar 03/03/2020;13.08;5,55
+mer 04/03/2020;13.09;7,46
+gio 05/03/2020;13.17;7,01
+ven 06/03/2020;13.11;4,59
+lun 09/03/2020;05.15;7,44
+mar 10/03/2020;05.13;7,39
+mer 11/03/2020;05.09;7,51
+gio 12/03/2020;05.17;7,31
+ven 13/03/2020;05.33;7,26
+lun 16/03/2020;13.12;7,45
+mar 17/03/2020;13.19;7,33
+mer 18/03/2020;13.08;7,51
+gio 19/03/2020;13.23;7,29
+ven 20/03/2020;13.17;7,37
+mer 25/03/2020;17.29;0,33
+gio 26/03/2020;13.18;1,57
+lun 30/03/2020;13.17;7,22
+mar 31/03/2020;13.45;7,13
+mer 01/04/2020;14.01;5,54
+gio 02/04/2020;13.48;6,02
+ven 03/04/2020;13.09;7,48
+lun 06/04/2020;05.09;7,48
+mar 07/04/2020;05.15;15,26
+mer 08/04/2020;05.36;15,09
+gio 09/04/2020;05.06;15,12
+ven 10/04/2020;05.25;7,05
+mer 15/04/2020;14.54;1,25
+gio 16/04/2020;15.44;1,09
+ven 17/04/2020;17.46;1,38
+mar 21/04/2020;05.09;7,15
+ven 24/04/2020;05.01;6,31
+lun 27/04/2020;13.45;5,37
+mar 28/04/2020;15.23;4,29
+mer 29/04/2020;17.03;2,36
+lun 04/05/2020;08.06;7,39
+mar 05/05/2020;08.12;7,33
+mer 06/05/2020;08.11;7,21
+gio 07/05/2020;08.14;7,26
+ven 08/05/2020;08.19;7,33
+lun 11/05/2020;08.14;7,03
+mar 12/05/2020;08.16;7,15
+mer 13/05/2020;08.17;7,24
+gio 14/05/2020;08.11;7,18
+ven 15/05/2020;08.14;7,33
+lun 18/05/2020;09.22;1,59
+mar 19/05/2020;15.01;1,48
+lun 25/05/2020;10.55;2,03
+gio 28/05/2020;18.06;0,59
+ven 29/05/2020;09.28;3,45
+lun 01/06/2020;16.13;1,55
+mer 03/06/2020;05.33;14,42
+gio 04/06/2020;05.14;15,03
+ven 05/06/2020;05.33;15,16
+lun 08/06/2020;05.08;15,01
+mar 09/06/2020;05.11;15,12
+mer 10/06/2020;05.09;14,53
+gio 11/06/2020;05.04;15,33
+ven 12/06/2020;05.15;15,27
+lun 15/06/2020;05.06;15,18
+mar 16/06/2020;05.22;14,45
+mer 17/06/2020;05.18;15,22
+gio 18/06/2020;05.19;15,31
+ven 19/06/2020;05.07;15,09
+mar 23/06/2020;09.27;1,59
+gio 25/06/2020;14.56;2,04
+ven 26/06/2020;10.23;2,54
+lun 29/06/2020;08.23;1,49
+mar 30/06/2020;11.01;1,05
+ven 03/07/2020;18.47;0,45
+lun 06/07/2020;13.15;7,35
+mar 07/07/2020;13.10;7,45
+mer 08/07/2020;13.08;7,48
+gio 09/07/2020;13.11;7,25
+ven 10/07/2020;13.04;7,39
+lun 13/07/2020;05.09;7,46
+mar 14/07/2020;05.12;7,39
+mer 15/07/2020;05.04;7,42
+gio 16/07/2020;05.11;7,38
+ven 17/07/2020;05.39;6,41
+lun 20/07/2020;13.18;7,05
+mar 21/07/2020;13.09;7,19
+mer 22/07/2020;13.33;5,44
+gio 23/07/2020;13.03;6,44
+ven 24/07/2020;13.12;7,45
+lun 27/07/2020;08.06;7,51
+mar 28/07/2020;08.14;7,39
+mer 29/07/2020;08.03;7,55
+gio 30/07/2020;08.08;7,51
+ven 31/07/2020;08.09;7,49
+lun 03/08/2020;08.58;0,45
+mar 04/08/2020;16.55;1,33
+mar 18/08/2020;11.11;2,33
+mer 19/08/2020;09.28;1,58
+ven 21/08/2020;14.29;1,47
+mer 26/08/2020;07.19;3,19
+ven 28/08/2020;13.58;1,59
+lun 31/08/2020;13.10;7,25
+mar 01/09/2020;13.16;6,54
+mer 02/09/2020;13.09;7,06
+gio 03/09/2020;13.18;5,59
+ven 04/09/2020;13.26;4,29
+gio 10/09/2020;08.33;6,55
+ven 11/09/2020;08.19;7,02
+lun 14/09/2020;13.11;7,45
+mar 15/09/2020;13.06;7,48
+mer 16/09/2020;13.18;7,36
+gio 17/09/2020;14.36;6,15
+ven 18/09/2020;13.16;7,29
+lun 21/09/2020;05.06;7,45
+mar 22/09/2020;05.14;7,43
+mer 23/09/2020;05.11;7,44
+gio 24/09/2020;05.21;7,39
+ven 25/09/2020;05.19;7,28
+lun 28/09/2020;08.02;7,55
+mar 29/09/2020;08.12;7,42
+mer 30/09/2020;08.17;7,39
+gio 01/10/2020;08.09;7,41
+ven 02/10/2020;08.05;7,43
+lun 05/10/2020;08.33;7,18
+mar 06/10/2020;08.17;7,39
+mer 07/10/2020;08.09;7,44
+gio 08/10/2020;08.11;7,43
+ven 09/10/2020;08.12;7,38
+lun 12/10/2020;05.01;15,09
+mar 13/10/2020;05.13;14,58
+mer 14/10/2020;05.07;15,04
+gio 15/10/2020;05.03;15,11
+ven 16/10/2020;05.15;15,03
+lun 19/10/2020;05.11;15,13
+mar 20/10/2020;05.17;14,45
+mer 21/10/2020;05.08;14,29
+gio 22/10/2020;05.21;13,47
+ven 23/10/2020;05.55;14,17
+lun 26/10/2020;13.08;7,45
+mar 27/10/2020;13.07;7,48
+mer 28/10/2020;13.17;7,29
+gio 29/10/2020;13.11;7,17
+ven 30/10/2020;13.09;4,22
+lun 02/11/2020;12.01;2,02
+mer 04/11/2020;08.56;2,18
+ven 06/11/2020;14.33;2,17
+mar 10/11/2020;18.47;0,49
+mer 11/11/2020;13.57;1,56
+lun 16/11/2020;15.37;1,59
+ven 20/11/2020;16.55;0,47
+lun 23/11/2020;05.09;14,55
+mar 24/11/2020;05.04;15,09
+mer 25/11/2020;05.11;15,12
+gio 26/11/2020;05.03;15,01
+ven 27/11/2020;05.08;15,06
+lun 30/11/2020;05.18;15,09
+mar 01/12/2020;05.01;14,31
+mer 02/12/2020;05.09;14,55
+gio 03/12/2020;05.07;15,02
+ven 04/12/2020;05.14;14,37
+gio 10/12/2020;10.29;2,23
+ven 11/12/2020;16.41;2,57
+mar 15/12/2020;7.44;1,56
+mer 16/12/2020;09.03;2,38
+dom 20/12/2020;11.37;3,01
+lun 21/12/2020;17.01;2,44
+mar 22/12/2020;07.59;4,39
+lun 04/01/2021;15.27;1,59
+mar 05/01/2021;13.48;1,55
+gio 07/01/2021;09.24;1,56
+lun 11/01/2021;13.05;7,47
+mar 12/01/2021;13.08;5,55
+mer 13/01/2021;13.09;7,46
+gio 14/01/2021;13.17;7,01
+ven 15/01/2021;13.11;4,59
+lun 18/01/2021;05.15;7,44
+mar 19/01/2021;05.13;7,39
+mer 20/01/2021;05.09;7,51
+gio 21/01/2021;05.17;7,31
+ven 22/01/2021;05.33;7,26
+lun 25/01/2021;13.12;7,45
+mar 26/01/2021;13.19;7,33
+mer 27/01/2021;13.08;7,51
+gio 28/01/2021;13.23;7,29
+ven 29/01/2021;13.17;7,37
+lun 01/02/2021;08.06;7,39
+mar 02/02/2021;08.12;7,33
+mer 03/02/2021;08.11;7,21
+gio 04/02/2021;08.14;7,26
+ven 05/02/2021;08.19;7,33
+lun 08/02/2021;08.14;7,03
+mar 09/02/2021;08.16;7,15
+mer 10/02/2021;08.17;7,24
+gio 11/02/2021;08.11;7,18
+ven 12/02/2021;08.14;7,33
+lun 15/02/2021;08.33;7,18
+mar 16/02/2021;08.17;7,39
+mer 17/02/2021;08.09;7,44
+gio 18/02/2021;08.11;7,43
+ven 19/02/2021;08.12;7,38
+lun 22/02/2021;05.01;15,09
+mar 23/02/2021;05.13;14,58
+mer 24/02/2021;05.07;15,04
+gio 25/02/2021;05.03;15,11
+ven 26/02/2021;05.15;15,03
+lun 01/03/2021;05.11;15,13
+mar 02/03/2021;05.17;14,45
+mer 03/03/2021;05.08;14,29
+gio 04/03/2021;05.21;13,47
+ven 05/03/2021;05.55;14,17
+lun 08/03/2021;08.09;7,41
+mar 09/03/2021;08.13;7,35
+mer 10/03/2021;08.04;7,38
+gio 11/03/2021;08.22;7,17
+ven 12/03/2021;08.08;7,07
+lun 15/03/2021;14.12;5,43
+mar 16/03/2021;13.10;6,55
+mer 17/03/2021;13.15;7,19
+gio 18/03/2021;13.30;6,18
+ven 19/03/2021;13.10;7,24
+lun 22/03/2021;05.12;7,33
+mar 23/03/2021;05.22;7,27
+mer 24/03/2021;05.08;7,18
+gio 25/03/2021;05.17;6,57
+ven 26/03/2021;05.25;7,05
+lun 29/03/2021;13.18;7,32
+mar 30/03/2021;13.02;7,33
+mer 31/03/2021;13.11;7,28
+gio 01/04/2021;15.01;5,16
+ven 02/04/2021;13.25;7,12
+mar 06/04/2021;05.11;7,44
+mer 07/04/2021;05.03;7,51
+gio 08/04/2021;05.19;7,26
+ven 09/04/2021;05.07;7,39
+lun 12/04/2021;14.12;5,43
+mar 13/04/2021;13.10;6,55
+mer 14/04/2021;13.15;7,19
+gio 15/04/2021;13.30;6,18
+ven 16/04/2021;13.10;7,24
+lun 19/04/2021;05.12;7,33
+mar 20/04/2021;05.22;7,27
+mer 21/04/2021;05.08;7,18
+gio 22/04/2021;05.17;6,57
+ven 23/04/2021;05.25;7,05
+lun 26/04/2021;13.18;7,32
+mar 27/04/2021;13.02;7,33
+mer 28/04/2021;13.11;7,28
+gio 29/04/2021;15.01;5,16
+ven 30/04/2021;13.25;7,12
+mar 04/05/2021;16.37;1,59
+gio 06/05/2021;15.22;2,09
+ven 07/05/2021;18.39;2,14
+lun 10/05/2021;13.08;7,45
+mar 11/05/2021;13.07;7,48
+mer 12/05/2021;13.17;7,29
+gio 13/05/2021;13.11;7,17
+ven 14/05/2021;13.09;4,22
+lun 17/05/2021;05.09;7,46
+mar 18/05/2021;05.12;7,39
+mer 19/05/2021;05.04;7,42
+gio 20/05/2021;05.11;7,38
+ven 21/05/2021;05.39;6,41
+lun 24/05/2021;13.01;7,49
+mar 25/05/2021;13.09;2,57
+mer 26/05/2021;13.22;3,29
+gio 27/05/2021;13.19;4,25
+ven 28/05/2021;13.08;7,43
+lun 31/05/2021;12.59;2,11
+mar 01/06/2021;16.34;2,18
+gio 03/06/2021;13.48;2,17
+ven 04/06/2021;17.01;2,29
+lun 07/06/2021;13.18;7,32
+mar 08/06/2021;13.02;7,33
+mer 09/06/2021;13.11;7,28
+gio 10/06/2021;15.01;5,16
+ven 11/06/2021;13.25;7,12
+lun 14/06/2021;13.05;7,47
+mar 15/06/2021;13.08;5,55
+mer 16/06/2021;13.09;7,46
+gio 17/06/2021;13.17;7,01
+ven 18/06/2021;13.11;4,59
+lun 21/06/2021;05.15;7,44
+mar 22/06/2021;05.13;7,39
+mer 23/06/2021;05.09;7,51
+gio 24/06/2021;05.17;7,31
+ven 25/06/2021;05.33;7,26
+lun 28/06/2021;13.12;7,45
+mar 29/06/2021;13.19;7,33
+mer 30/06/2021;13.08;7,51
+gio 01/07/2021;13.23;7,29
+ven 02/07/2021;13.17;7,37
+lun 05/07/2021;05.12;7,33
+mar 06/07/2021;05.22;7,27
+mer 07/07/2021;05.08;7,18
+gio 08/07/2021;05.17;6,57
+ven 09/07/2021;05.25;7,05
+lun 12/07/2021;13.18;7,32
+mar 13/07/2021;13.02;7,33
+mer 14/07/2021;13.11;7,28
+gio 15/07/2021;15.01;5,16
+ven 16/07/2021;13.25;7,12
+lun 19/07/2021;05.17;15,33
+mar 20/07/2021;05.03;15,28
+mer 21/07/2021;05.09;15,45
+gio 22/07/2021;05.08;15,37
+ven 23/07/2021;05.17;15,03
+lun 26/07/2021;13.14;7,43
+mar 27/07/2021;13.25;6,55
+mer 28/07/2021;15.05;5,18
+lun 02/08/2021;17.14;2,48
+mar 03/08/2021;09.33;1,36
+mer 04/08/2021;10.51;1,55
+gio 05/08/2021;08.36;2,21
+ven 06/08/2021;13.09;3,35
+lun 16/08/2021;14.37;2,45
+lun 23/08/2021;05.09;14,55
+mar 24/08/2021;05.04;15,09
+mer 25/08/2021;05.11;15,12
+gio 26/08/2021;05.03;15,01
+ven 27/08/2021;05.08;15,06
+lun 30/08/2021;05.18;15,09
+mar 31/08/2021;05.01;14,31
+mer 01/09/2021;05.09;14,55
+gio 02/09/2021;05.07;15,02
+ven 03/09/2021;05.14;14,37
+lun 06/09/2021;05.08;15,01
+mar 07/09/2021;05.11;15,12
+mer 08/09/2021;05.09;14,53
+gio 09/09/2021;05.04;15,33
+ven 10/09/2021;05.15;15,27
+lun 13/09/2021;05.06;15,18
+mar 14/09/2021;05.22;14,45
+mer 15/09/2021;05.18;15,22
+gio 16/09/2021;05.19;15,31
+ven 17/09/2021;05.07;15,09
+lun 20/09/2021;09.11;2,12
+mar 21/09/2021;11.11;3,15
+mer 22/09/2021;12.59;2,27
+gio 23/09/2021;07.45;4,39
+ven 24/09/2021;17.37;5,21
+lun 27/09/2021;05.06;7,45
+mar 28/09/2021;05.14;7,43
+mer 29/09/2021;05.11;7,44
+gio 30/09/2021;05.21;7,39
+ven 01/10/2021;05.19;7,28
+lun 04/10/2021;08.02;7,55
+mar 05/10/2021;08.12;7,42
+mer 06/10/2021;08.17;7,39
+gio 07/10/2021;08.09;7,41
+ven 08/10/2021;08.05;7,43
+lun 11/10/2021;08.33;7,18
+mar 12/10/2021;08.17;7,39
+mer 13/10/2021;08.09;7,44
+gio 14/10/2021;08.11;7,43
+ven 15/10/2021;08.12;7,38
+lun 18/10/2021;05.01;15,09
+mar 19/10/2021;05.13;14,58
+mer 20/10/2021;05.07;15,04
+gio 21/10/2021;05.03;15,11
+ven 22/10/2021;05.15;15,03
+lun 25/10/2021;05.11;15,13
+mar 26/10/2021;05.17;14,45
+mer 27/10/2021;05.08;14,29
+gio 28/10/2021;05.21;13,47
+ven 29/10/2021;05.55;14,17
+lun 01/11/2021;09.35;5,27
+mer 03/11/2021;12.48;4,56
+gio 04/11/2021;16.39;3,33
+ven 05/11/2021;07.33;9,24
+lun 08/11/2021;14.12;5,43
+mar 09/11/2021;13.10;6,55
+mer 10/11/2021;13.15;7,19
+gio 11/11/2021;13.30;6,18
+ven 12/11/2021;13.10;7,24
+lun 15/11/2021;05.12;7,33
+mar 16/11/2021;05.22;7,27
+mer 17/11/2021;05.08;7,18
+gio 18/11/2021;05.17;6,57
+ven 19/11/2021;05.25;7,05
+lun 22/11/2021;13.18;7,32
+mar 23/11/2021;13.02;7,33
+mer 24/11/2021;13.11;7,28
+gio 25/11/2021;15.01;5,16
+ven 26/11/2021;13.25;7,12
+lun 29/11/2021;05.17;15,33
+mar 30/11/2021;05.03;15,28
+mer 01/12/2021;05.09;15,45
+gio 02/12/2021;05.08;15,37
+ven 03/12/2021;05.17;15,03
+lun 06/12/2021;13.11;7,44
+mar 07/12/2021;13.02;7,51
+gio 09/12/2021;13.08;7,52
+ven 10/12/2021;13.17;7,43
+lun 13/12/2021;08.06;7,39
+mar 14/12/2021;08.12;7,33
+mer 15/12/2021;08.11;7,21
+gio 16/12/2021;08.14;7,26
+ven 17/12/2021;08.19;7,33
+lun 20/12/2021;08.14;7,03
+mar 21/12/2021;08.16;7,15
+mer 22/12/2021;08.17;7,24
+gio 23/12/2021;08.11;7,18
+ven 24/12/2021;08.14;7,33
+lun 27/12/2021;10.09;1,36
+mar 28/12/2021;14.37;1,59
+mer 29/12/2021;14.19;2,07
+gio 30/12/2021;08.08;2,38
+mar 04/01/2022;13.27;2,06
+lun 10/01/2022;13.05;7,47
+mar 11/01/2022;13.08;5,55
+mer 12/01/2022;13.09;7,46
+gio 13/01/2022;13.17;7,01
+ven 14/01/2022;13.11;4,59
+lun 17/01/2022;05.15;7,44
+mar 18/01/2022;05.13;7,39
+mer 19/01/2022;05.09;7,51
+gio 20/01/2022;05.17;7,31
+ven 21/01/2022;05.33;7,26
+lun 24/01/2022;13.12;7,45
+mar 25/01/2022;13.19;7,33
+mer 26/01/2022;13.08;7,51
+gio 27/01/2022;13.23;7,29
+ven 28/01/2022;13.17;7,37
+lun 31/01/2022;08.06;7,39
+mar 01/02/2022;08.12;7,33
+mer 02/02/2022;08.11;7,21
+gio 03/02/2022;08.14;7,26
+ven 04/02/2022;08.19;7,33
+lun 07/02/2022;08.14;7,03
+mar 08/02/2022;08.16;7,15
+mer 09/02/2022;08.17;7,24
+gio 10/02/2022;08.11;7,18
+ven 11/02/2022;08.14;7,33
+lun 14/02/2022;05.06;7,42
+mar 15/02/2022;05.21;7,02
+mer 16/02/2022;05.46;5,33
+gio 17/02/2022;05.37;6,27
+ven 18/02/2022;05.22;7,09
+lun 21/02/2022;13.01;7,55
+mar 22/02/2022;13.06;7,42
+mer 23/02/2022;13.08;7,51
+gio 24/02/2022;13.11;7,36
+ven 25/02/2022;13.03;7,49
+lun 28/02/2022;05.12;7,33
+mar 01/03/2022;05.22;7,27
+mer 02/03/2022;05.08;7,18
+gio 03/03/2022;05.17;6,57
+ven 04/03/2022;05.25;7,05
+lun 07/03/2022;13.18;7,32
+mar 08/03/2022;13.02;7,33
+mer 09/03/2022;13.11;7,28
+gio 10/03/2022;15.01;5,16
+ven 11/03/2022;13.25;7,12
+lun 14/03/2022;05.17;15,33
+mar 15/03/2022;05.03;15,28
+mer 16/03/2022;05.09;15,45
+gio 17/03/2022;05.08;15,37
+ven 18/03/2022;05.17;15,03
+lun 21/03/2022;13.01;7,49
+mar 22/03/2022;13.09;2,57
+mer 23/03/2022;13.22;3,29
+gio 24/03/2022;13.19;4,25
+ven 25/03/2022;13.08;7,43
+lun 28/03/2022;08.06;7,01
+mar 29/03/2022;08.07;7,23
+mer 30/03/2022;08.11;6,27
+gio 31/03/2022;08.17;3,45
\ No newline at end of file