From ea3bb0ddc48b7091d8af24943cc63c7ddbf58d4e Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Fri, 13 Sep 2019 12:19:29 +0000 Subject: [PATCH] Checkin Laptop nach Bremen Sept.19 --- ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs | 73 +++++++++++++----- .../EditControls/CopyDeclarationDialog.xaml | 13 +++- .../CopyDeclarationDialog.xaml.cs | 52 +++++++------ ENI-2/ENI2/ENI2/MainWindow.xaml.cs | 15 ++++ .../ENI2/Properties/Resources.Designer.cs | 18 +++++ ENI-2/ENI2/ENI2/Properties/Resources.resx | 6 ++ Stundensheet.xlsx | Bin 41895 -> 42050 bytes .../bsmd.ExcelReadService/ExcelReadService.cs | 4 +- nsw/Source/bsmd.ExcelReadService/Util.cs | 14 +++- nsw/Source/bsmd.database/Message.cs | 4 +- nsw/Source/bsmd.database/Util.cs | 35 +++++++++ nsw/Source/misc/db.sqlite | Bin 13103104 -> 13103104 bytes 12 files changed, 181 insertions(+), 53 deletions(-) diff --git a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs index 810e0757..82e49694 100644 --- a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs @@ -57,6 +57,39 @@ namespace ENI2 get { return this.buttonSave.Visibility == Visibility.Visible; } // schwach aber es wird's tun } + public bool HasUnsentMessages + { + get + { + // Bedingung: + // wenn in einer Meldeklasse zwar Daten vorhanden sind, eingespielt durch Excel import oder + // Handeingabe, diese aber NICHT gesendet wurden. + foreach (Message aMessage in _messages) + { + if ((aMessage.InternalStatus == Message.BSMDStatus.UPDATED) || + (aMessage.InternalStatus == Message.BSMDStatus.SAVED) || + (aMessage.InternalStatus == Message.BSMDStatus.EXCEL)) + return true; + } + + return false; + } + } + + public bool HasUnConfirmedMessages + { + get + { + foreach(Message aMessage in _messages) + { + if ((aMessage.InternalStatus == Message.BSMDStatus.SENT) || + (aMessage.InternalStatus == Message.BSMDStatus.TOSEND)) + return true; + } + return false; + } + } + #endregion #region Construction @@ -231,7 +264,6 @@ namespace ENI2 existingCore = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoreByVisitId(newCore.VisitId); } - bool skipCopyTransit = false; bool skipCopyVisit = false; @@ -302,6 +334,20 @@ namespace ENI2 if (skipCopyTransit && (oldMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT)) continue; if (skipCopyVisit && (oldMessage.MessageNotificationClass == Message.NotificationClass.VISIT)) continue; + // 10.9.19: bestimmte Meldeklassen nicht kopieren. Muss getestet werden, ob hier + // stattdessen "Leer"-Messages erzeugt werden müssen + if (oldMessage.MessageNotificationClass == Message.NotificationClass.ATA) continue; + if (oldMessage.MessageNotificationClass == Message.NotificationClass.ATD) continue; + if (oldMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD) continue; + + bool isAndienKlasse = ((oldMessage.MessageNotificationClass == Message.NotificationClass.AGNT) || + (oldMessage.MessageNotificationClass == Message.NotificationClass.STAT) || + (oldMessage.MessageNotificationClass == Message.NotificationClass.INFO) || + (oldMessage.MessageNotificationClass == Message.NotificationClass.HAZA) || + (oldMessage.MessageNotificationClass == Message.NotificationClass.HAZD)); + + if (!cdd.CopyAll && !isAndienKlasse) continue; + Message newMessage = oldMessage.Clone() as Message; newMessage.MessageCore = newCore; newMessage.MessageCoreId = newCore.Id; @@ -366,9 +412,12 @@ namespace ENI2 { if (message.IsDirty || message.IsNew) { - if ((message.Status == Message.MessageStatus.ACCEPTED) && + if ((message.Status == Message.MessageStatus.ACCEPTED) && ((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION))) message.InternalStatus = Message.BSMDStatus.UPDATED; + else + message.InternalStatus = Message.BSMDStatus.SAVED; + string userName = "?"; if(App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value)) { @@ -377,24 +426,8 @@ namespace ENI2 message.ChangedBy = string.Format("{0} at {1}", userName, DateTime.Now); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(message); - //if (message.MessageNotificationClass == Message.NotificationClass.CREW) - //{ - // foreach(CREW crew in message.Elements) - // { - // if (crew.IsNew || crew.IsDirty) DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(crew); - // } - //} - //else if (message.MessageNotificationClass == Message.NotificationClass.PAS) - //{ - // foreach(PAS pas in message.Elements) - // { - // if(pas.IsNew || pas.IsDirty) DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(pas); - // } - //} - //else - //{ - message.SaveElements(); - //} + message.SaveElements(); + message.IsDirty = false; if(message.MessageNotificationClass == Message.NotificationClass.ATA) diff --git a/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml b/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml index 0b029f3b..94e44c07 100644 --- a/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml +++ b/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml @@ -8,7 +8,7 @@ xmlns:p="clr-namespace:ENI2.Properties" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" mc:Ignorable="d" - Title="{x:Static p:Resources.textCopyDeclaration}" Height="270" Width="440" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2;component/Resources/id_cards.ico"> + Title="{x:Static p:Resources.textCopyDeclaration}" Height="326" Width="440" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2;component/Resources/id_cards.ico"> @@ -17,6 +17,8 @@ + + @@ -29,6 +31,7 @@ \ No newline at end of file diff --git a/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml.cs b/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml.cs index 8fa564ff..345875ac 100644 --- a/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml.cs +++ b/ENI-2/ENI2/ENI2/EditControls/CopyDeclarationDialog.xaml.cs @@ -23,31 +23,7 @@ namespace ENI2.EditControls { InitializeComponent(); Loaded += CopyDeclarationDialog_Loaded; - } - - private void CopyDeclarationDialog_Loaded(object sender, System.Windows.RoutedEventArgs e) - { - this.OKClicked += VisitIdDialog_OKClicked; - List> comboDataSource = new List>() - { - new KeyValuePair( Message.NSWProvider.DBH, "DBH live" ), - new KeyValuePair( Message.NSWProvider.DBH_TEST, "DBH Testsystem" ), - new KeyValuePair( Message.NSWProvider.DUDR, "HIS-Nord live" ), - new KeyValuePair( Message.NSWProvider.DUDR_TEST, "HIS-Nord Testsystem" ) - }; - - this.comboBoxInitialHIS.ItemsSource = comboDataSource; - this.comboBoxInitialHIS.SelectedIndex = 2; - - this.EnableOK(false); - this.locodePoC.PropertyChanged += LocodePoC_PropertyChanged; - - if (!this.OldCore.IMO.IsNullOrEmpty()) this.doubleUpDownIMO.Value = Double.Parse(this.OldCore.IMO); - if (!this.OldCore.ENI.IsNullOrEmpty()) this.doubleUpDownENI.Value = Double.Parse(this.OldCore.ENI); - if (!this.OldCore.PoC.IsNullOrEmpty()) this.locodePoC.LocodeValue = this.OldCore.PoC; - if (this.OldCore.ETA.HasValue) this.datePickerETA.SelectedDate = this.OldCore.ETA; - - } + } #region Properties @@ -57,6 +33,8 @@ namespace ENI2.EditControls public bool IsOK { get { return this._isOK; } } + public bool CopyAll { get { return this.radioButtonCopyAll.IsChecked ?? false; } } + #endregion #region completion logic @@ -93,6 +71,30 @@ namespace ENI2.EditControls #region event handler + private void CopyDeclarationDialog_Loaded(object sender, System.Windows.RoutedEventArgs e) + { + this.OKClicked += VisitIdDialog_OKClicked; + List> comboDataSource = new List>() + { + new KeyValuePair( Message.NSWProvider.DBH, "DBH live" ), + new KeyValuePair( Message.NSWProvider.DBH_TEST, "DBH Testsystem" ), + new KeyValuePair( Message.NSWProvider.DUDR, "HIS-Nord live" ), + new KeyValuePair( Message.NSWProvider.DUDR_TEST, "HIS-Nord Testsystem" ) + }; + + this.comboBoxInitialHIS.ItemsSource = comboDataSource; + this.comboBoxInitialHIS.SelectedIndex = 2; + + this.EnableOK(false); + this.locodePoC.PropertyChanged += LocodePoC_PropertyChanged; + + if (!this.OldCore.IMO.IsNullOrEmpty()) this.doubleUpDownIMO.Value = Double.Parse(this.OldCore.IMO); + if (!this.OldCore.ENI.IsNullOrEmpty()) this.doubleUpDownENI.Value = Double.Parse(this.OldCore.ENI); + if (!this.OldCore.PoC.IsNullOrEmpty()) this.locodePoC.LocodeValue = this.OldCore.PoC; + if (this.OldCore.ETA.HasValue) this.datePickerETA.SelectedDate = this.OldCore.ETA; + + } + private void LocodePoC_PropertyChanged(object sender, PropertyChangedEventArgs e) { this.CheckComplete(); diff --git a/ENI-2/ENI2/ENI2/MainWindow.xaml.cs b/ENI-2/ENI2/ENI2/MainWindow.xaml.cs index 65845a3c..949a2691 100644 --- a/ENI-2/ENI2/ENI2/MainWindow.xaml.cs +++ b/ENI-2/ENI2/ENI2/MainWindow.xaml.cs @@ -159,6 +159,21 @@ namespace ENI2 e.Cancel = true; } + // Test for unsent messages + if (!e.Cancel && drc.HasUnsentMessages) + { + if (MessageBox.Show(Properties.Resources.textConfirmUnsentMessages, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No) + e.Cancel = true; + } + + // Test for unconfirmed messages + if(!e.Cancel && drc.HasUnConfirmedMessages) + { + if (MessageBox.Show(Properties.Resources.textConfirmUnconfirmedMessages, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No) + e.Cancel = true; + } + + if (!e.Cancel) { if (lockedCores.ContainsKey(tabItem)) diff --git a/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs b/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs index d9046a93..073e9b78 100644 --- a/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs +++ b/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs @@ -1370,6 +1370,24 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Unconfirmed messages! Do you want to close anyway?. + /// + public static string textConfirmUnconfirmedMessages { + get { + return ResourceManager.GetString("textConfirmUnconfirmedMessages", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unsent messages! Do you want to close anyway?. + /// + public static string textConfirmUnsentMessages { + get { + return ResourceManager.GetString("textConfirmUnsentMessages", resourceCulture); + } + } + /// /// Looks up a localized string similar to Unsaved changes! Do you want to close anyway?. /// diff --git a/ENI-2/ENI2/ENI2/Properties/Resources.resx b/ENI-2/ENI2/ENI2/Properties/Resources.resx index 6eff215c..01e788e8 100644 --- a/ENI-2/ENI2/ENI2/Properties/Resources.resx +++ b/ENI-2/ENI2/ENI2/Properties/Resources.resx @@ -1525,6 +1525,12 @@ Unsaved changes! Do you want to close anyway? + + Unsent messages! Do you want to close anyway? + + + Unconfirmed messages! Do you want to close anyway? + Some messages have unsaved changes. Send anyway? diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 70b3719718fcf13c1caa32f430b4177b2e69a303..fa1f6d052984f6cce657e1de7286e6e5ffa09398 100644 GIT binary patch delta 29876 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 delta 29727 zcmYg%V|<;>^LNysvC-JJ?WD2oG&UOc8kOgT`)bH?|x9Pw(H0=XrO|XJ>au zJM*2{y?zZtl?*}E8X^EKN#ZnLpdcXTU?3n+As`^U>{&dWTMtMbJ7|>;K5u_qxXY4S=(u(e@C*Eh0X`PZEV2V z!*bwgFE8%ThbU}4D$dh;TF8N~)N|Zma z4@H~td##Nf1!~NVHudZn11sCUkuJ6Gw>`8zfl1l~qybrA>EfpkA21`h;p-mZLpJPT zLWB1;AxF7LVJY2YH}~@!X&S!+Fx4iO+DSy!kr-rZWWfSHDsmr*H|>+S8IzXo$q2LK zTzp{-;T;?2KP^fDrMYC@3rtEp5a4vhW$=!L zI%$|`*)+Wk5yDHhP0;SFS$!LJCQbZ1YYL$YQUlwxP%M0~{{mE3OE(4ukYA8R7)&8R zHA!iTS7Tn|YQ94TO7s+%?NK>rkw5Ga_aC3$Jg(L-;<7q`8&nK-BTpie666fachAKJ z8=>r2sQY`ve16JMnmqQO%CsoYbxoVkw+X`rF~>1a=7LVH#-jFaDZgEKdo#_C+Ou1O zlvpdv8Xd21qIsT@XfIAsMMYeGgU*YaQ9w~29LE)L7U0j0;j)gj9OlZSCv9~`Tc2sJVWLpY1pDd^16Q#4{|w2U-Y0O>g?Ux>DUF`Zf$kx9cXiEQ{FBP z&=O1x6_jEc2EQudF^6WIyqPTNGHEkt*mR{TYjrEf$VWq1i9}wTOuVY{dGzG*JI85fyZc+vzJ}{L`@~s70tvNF*bV214yYg9QJ;_+)FB{_ zu@WpkkpinRM11w@9gy#Vxh43}B^ut#Jb5Lk#Xj1aBt6_nv9Yg}s@hZVGPX@r6BEWx zmX?*I=2CG2d_LAqt%31vUXh3+Nt>@Hn`e?o7c8Ue?xw%_pVY%?rV*ow< zwe0K`>3Y09?_;UqL3ZjsoxXZJ$PwuT+Wh?9QT5@TV&`(Y>+;bAlMaozXO z=zV(*c)ENWJE+M4-aJy~el8o$nRj)zb$(9odOt5gMd+P5t?BA~dFfc}CfRuN63j8~ zethd_3VwSCP3Zn$X=QuV;3Z9|3tj*UTf7Tu)Zavm&TP&$->>%ONj5>C$L*V;_nYk!C%}mK>9dWk4P3%YA)0dig|v@|2o3n0NzrwQ{JAB zXG1L#izmGw9_}u>9bz-4Ja->i3AOf&yI;+Z>aPAi&65~+`T0K8mIANGui&50F9;Vj zwmiWFv3%LS?mIjGQdM0O`}ft z^Oqjot04f6F~7PN_?k%Eorn{k{OlH=Kir=utv!jiIKYpH7T9|ST|)C||O2JsX#}Ul5nSSE+%g`=a%fZ zMf{izd5dZP`#GnM(UzgJzQ0F))>@=fD)q@Dw;4c7(>jOafXVd7?q3g67m6e-*{u zhH2#Nhi0lpC0ExoYc|P{txq{2$hJpgaV2M!#5w&;ta59nYu3Xg>>Mi6AiMd!rCdRr z=^J?hB(XQKgqega^drI)EonM=WZje%Chm~C={?}075SGnOa*h7THWMN8@(R&krdC) zRU$@_pchj;?Z|ffc3Q-knM!>H7no>|T0OUL+Yg&bbVRu1q4;tM!aPNUD{Rw@bw<+1 zAG}C0t+`t{4@!%5(E|<=@&cUwU9T|i54ihFtP8O6sO7FK=9c*c5Xmu;ruF!F z^n233Z=O1>R7$3FHx!DmwfC`o3ev-qDn9&tOivwEiSI*Kshzu|1e8o~Sz$v+qY_-s|PO6s^l z=2)vF%P2xWFpKd*#IdTBJAC0*iFg&nQ|a9sKhG;?xRWKPaTKcS{_LH7%|tu8+IgnM zj-&W=!IJqgSWYryw>K!G&v|Q{cHT?RF7axgHEX|vPrHGmc`Ty%Pe*LulDfZ2L(X!9 zk=GeE6ZQqs6zy|cI-3rVzZ3IFpflZT3Km|vIUl#>o`B(4X!UMjBF>jvs+p#v@(_cn zBWxva%~VQCwV4(7ev?e~2K$oU!dUC<@W<%Iu)T~&qWQ7rUUX-`Fzslgr>p>3T-YL& zU_p;{g#C3Fcz^tzs?xqz3MbMC_Q8NNL`r%*`9L~^mvZE+cEJ9Se&Rm30T#`6;&VJ5 zYr7v7gMRN}1FTo&gIx*pr*=6G=}CfrO0hp=b&ip5)OdjrEFi4V{KWs&0$Iyu@Nlra z|3)z?kqe$RLb8YiGzoEmb8D_WX%gWI>nP$NGbxINZJu-nN4X=5$)a{|{#DuHcoeU4 zW-b=h_+0(+)!VWT0T~H-!C`>(KXLx zu~V(Imvml>`tr{0-w_Ja)2Gc6W+&D$>Q_ma1su*Q2>iyUikvz(c z_n+e;{T)*td_W-Lq%|>`>VbOqp&I{{)&YoMrY5r#mQT*Rj8Xl5pNDC{} zDOxrya-L+{7^ayF?sqDlcn*3MNI- zs`~f%A7uGOK0Ofs4wd?cP-Y&}q~h#MK2GpBRnaPRBDdyNvpqO=S#WLp9m?TU&hV(p z&231IjC@aPvENg@>tb|+)?a~hI_OJ~NNH)1o zk8Se7AVB+d!@+Z@&X5I~S{@iS&Z$00{BLlV4<;1J^4@?9Jds$ruBi^CyTZDx;Px}L zATKyj-4K2+gnak~4USXG2WeSEY(q#(T08iAE9!UND2BpQ^b-v~K-%zJZ1qzd0s?^9 z57-7{Q+ZsOh3xW0x5H~6EgR{P4TgWSPtw+VZFcXRS0JWned~|!2s=8n!B(n&`1sFt zMvSHcW{>0I8X;d_f!o}4J*YCEv*40y&PZo24nFI^^b=FCA9f>^* zwBTn11e1uhl6YnW$ki2OJ&k)$W1aQDys>G`3JfuOS|t_x{ZYM#$g>ow?{G8mlxdU| zd1_Gfk_)d--{SLV6R6-U_!GtWPqOtZ+6*iDf8GUf^@6$b_;--c7s3{&`-dk{NL<@S z3+M$Xz2Y&<=a<1VAuHT}rD__hY8a8F9kd(~-C>M`FBHj?CEQF#T_WhkdkPz!3MGWE zuUVDHb6!d%Y$pzWqq_KZ%${Gt>DkmF-MAYUKueE9eQ!sm%Ex@2%C(ifg}G6E2&jKC zc2fSTyO5w$!@fNUdVt7Vz{5?0;-#@AQ~glg%m@82gnr2^{DUvPZQYZ@qiR5CN|-z- z9eHb<`MEb=ikdIFTIQwQaLnjDRCv42qFbBks%#9SW(FxEAsfy1*Zy2z!T?PO;1>Ds z598o;l^u0t?+g4j67*^b*CjQi{k4?`^NBo@-e$~cPPSwz0+2A`an_&LZ5?p2&pf#M z;F>)aI2Qbqu^#t(hb!^HmMpC?6v$r%v2_@$hmQyX!Juj@0XkMUxcbb?HDC=(_m83Q z8lP-XE!)3r%ts@Rx1`xP2e8-1{{4CAD%c8RG!c{8@vT)eeTcv0nsg3kav2@9Gl|GM z(JE1$D3-}o8G^(&1+Lz4gzP1+Gv1)tSJ(Rnr-s2P*9fUQ6=U5gZ*oP60#2wb|`q zQML-Ft>m?R#CV2rI}mk4KOv7Ju#IMmY#Kkp@h~orL%EZdadI*)r3$%Zh)0kyGLgiAG~gn!XoAvjF0jkjmPr(I~J2BbnvG9 zR(>Ol5svQGyN2T)Id`oBbJh|aQ)6;Q>Ha^1)jxyNJ34~CO#)RV|PY#DM*G7yh$yIX))=t9aY z`qqQeWv=V|B0C3ExzW1w=H7zCjvcghYn6pmXLLRL)lv)qR%d;BU>!|GAz z3w2sOt$h{d2d7!WOs;Tt0|R!FJI+{kc4bE>idYG9D(oeN(bo~hGpp*R(rx=uFS&

ap-FKaTM$~ejuidRAUg3;s__G70yhhJ7;vMlfu z*rWCH^RNmwGba_A`K~R-7;gLTPd}5Wi#uF7{5aZZ!RGcqpAp?>H7Ht%ql4sVH(&j& z9&F&~Gi>JYm$%IGdAupFbxmmuwTqFfQ$)vX?2zfnzWAU>fkMocY|jTs2>Gh#93qCB zIa0%;2JQ`T;BUf6Yn=FSD0uvAgBe5C)NB0h$`O;&@$A}EM(GrqwBRh#Z74b9wSPNY ze7oREQ9f5d*yf^k(yW9kd^}Yo5~9 zW$Pp@$a z!`4nsN+n7xg6pl&h584@w5(@_8Z)>T(o~eKNDa5kz$^6AYzh)!U+(3%S*1jKjLd7> zDM*9uvSO7?f<*lf^<)e+iH1rU_cxT{M_KLfPE+(=vmYU6A^fx@v8DRDr`W>0D7_EP zO_wAn5%N0kZ?>!FATXd8pEjK$tg&a`?^JwF5sS24&H?2Z=2e=rw*!?G%=NKZ+cwG< zd!NmV7)sbACJJ2O&d-<>nOeT#zC+_9*u8Bczqp68wxFucE9M9erV1yfZPYj>AdRKu z@MDx!@IG|O7mAi6=QPVndt$lywq?rg#&VCCGk)vV&$rFrxVU*Hcbskr?H;;-_AIS_ z?JP^*@8Y%Rn#KJKDmC-zK7Y8Yi$Nj1XM_{E*eNb@iroZg#J!JpC+1m8k7$TPWR9keU7DuKb3GMZmalO-o{W#^IIg!Kstgfmr6z z5@9o{vhE4WEm^2~3mH%;`JwQI6?CJ28WeEsfzS&;FNe^Vvug+^w*NG!KjSK8UeA$s z)|LL*&iL|d&Z{D};ZMI%h^!feRW7i=xn%=24{%eNBuf@K=wL1hH&A89cv!d+3ly%H z4D@`d^=pohtuh|qPhNJF;J3-US5+vknRWE*I?_JKk|;;O7Dp~cD-%WbqQ3gBS~Ce+ z@WKX^Z-zv_R?`-)s8I36<+U>@9+rtAbHfzM!8bWchz>I#Ysfghv5HnkYq~v3R}zaoQpxx)L57qtb=+F)zh<|%Uvo>?tDslpI>Ag$!3QeM+*cq5lP(O( zNqf0&{vpmS3E^V>_4R%WP=3Bz#jGF2_^}@p9)w;Ib($vq0}$t4o~EN z`yJwXSZ`CBt)7RO;Z#)8`NlS-eN^hG^$yiyzjvp*Y6>M~Bjd5CQq|Wpc>j6BN2HdE zocC4+`$7@c;GfbXIN-3%6j==~1UccUi6xjUGlA1Q>*1d!@3X0K-^HdvlBjQI(O6AZ z*nh1Y2nD2pb$OEw*5&BN?4R%Chh-~S{)il)vo8h72n!{`#lyWf9K|+NtEd(_?y{cG zv*zeHSGesYs&sHt$QI=^1HC-U}Dq&nFMeW9Y2R`Esp3cMfEP1GIXTlPN(u zpDGU3Dqq}ekMJ;fE#>zJxU|MXjR>FSSavrE)gq}A@DfSZuSU#; z>;^45k?`#c9omqJ)JE(XVSN$4x{e1dv#nw= zWO%t|G3ljb!Pr=Qs>0ieTCgyaQg&E@l}z>O18S{O6ngxuFt8GFD%_~a76$2UqN3)5 zCG$%nxMa=ej#xsINa~?03W*uD4ivs;)JJQ&TU0uh7~N{rC0j93hO5$a5^6d2qf}-@ zvm|$)6qA3L*(aD}18J~u6&m#+RKFrHncvr@cJF`ItO)&Dzxak??u-oQ9;;?EEzZ2) z0uY`n?QvzU_F2|Fzh+hr~fH+(w}`ns52HCQ>2|m+(?sB z(C{fJCwf!W%9~Kj7A#;dRfK!~tm(R2BsnHmzH!#7OW+Ax9&$dQE-kcr;34@Z23_w8 zb|$rk1ZDgsO7sNBJ}k%+7Gt63h}9yfiRCF4k7(9LWw8Onzojl>Hh^O$K}25)sEoNC z+35Yv72#5@&Wi#fjLG253W=?a;Q2iW?idapn*~$Hn;$Rs9F^X1qcF6X4n<*eIBA(Z z2%RaOROvgVeN!E*-R=LLy@LEjVm!>RisVV~A@9 zPp&(=S|_tn>#qAf`<{2}=XoiA0DKgaKna2&S-Xrrg~owii|Q7_sKrsgnX^9+(IyLq z-_dlgqt|h-D9YBbD&Tr{9y5}2ePW2EdqpV22$p0Bw18U}_H;GICSgCb96Od>fE5yO z%V&!=Lq~9;D^Vr<;-HXrwkWJL3HdE!Zym5mY8I4`?rb|I6=+xl75AxR2ufG)*dkLCcblu z2C1XB?^UJaG}74&o?tmco?jr)SoJEIpTI|-AuA_UNCxM2?rFXVG;^()3{E>N5Ll5o z6*o}e#p$Vy4k|=i;J|4!02ktX#2N{F`vIR-ukXx z%h9LQY$9#uf%S@6>d6wRwUQ>y%3!TvcD?%x4a#%f7lVBjdwkQgYi?;Y%5>H7oWcL1 zGQS90EFq{oTW?CdC!gttJ^_VS5QuD6rRrbV6N=82Z`@67DboPU^OI&W$4GN3WL_p0 zt#-Hdw#=H)GfRx9_lNa#eNCyEL*uE43oKV&6OY(h2m=h`iY>K8=f!m{w+m0qvc5(g zx88j&Z$;{FZXwzi`#LS5(yOkqilzRuS1%?8Whleqma&ZE58;6wqye^kz}v3mYJ#ow zOUlRb*S|Nt7aA@_Qivq5?IimhkK7^_+`S zWxs*+Yu1rhSJZhPza}l7Guw;Klmt4nQfwa>GA!OyoR789%UVgV8wT`vMkR7ojRw5G zx{`2_fMeyTw6}*T^zGb!g|h9|bbQCW%sSuq53{!w&#i3{O?5#1=Y4MZS6c;krrxD#;8u+qdUfI zRX1824nx#Y1A6df7w%h;22ZV{a!6)V7!`C4LK&By_P?VmTJ^&Xdm#QL+DyXkLg8vN z(>*pztPJ*F?RcB76_~u_k!Shn7E(QNnafzLQP5DZF&~Ik=|U05DIN=bxD4>Zjh}|) zA2=3u6P+8K`I1kK<_JLCyk=So+Qdg&!>yru=;G}FmwMME`Md2L*x#`jKwVM(=Z~i$O~tgT9H( zrZgafv=+LIiSX*NS}qjx7zPRC(^LiQhe47|%?;sI-c<#2M)+u*Xl9~*XsfALa<;KoLDMm#g%0XSI4RC6@V3o6h&iWZgv&v;AY`H#bo!`jZ5j>~9M^QMLDb zEYu??Yrooeo%dBd#Xy`d~BXV42IYA|dd3%XJzqM40N^ZZuS61oiKJx2XMM~qccYLGE z;JYP}-hR^e+A2?x(>P>IIWs&d+)o;E!2J;DaO1Cmmh>xrvn8G}6BM*C0BEAw6|C>9 z>rV3%q~3mRIRw;4>E%uVL80G*UOuOA!rsFyqRrrJsW2#$1Oq=&F`iPOkcC1Div7ydjmrGzXaymEk$Mh^QNQ zqJ=-4z2+Y1Wc)SQnM_7YKRk`+SXtY-)r!udevh+vAs&Mud2adCr;ffZQ;y&S#$ViDSO(~+#0?A znU5tXxv_$!gANvkO|Y6?ESC?D#c)`Vwhil%LJ1!YT=5CRRYmT zgh2(*js5UKnguqgPhYO*m!AiP@4FP&m^jZ-AeWw3tdA-m<3~JZqu6nKzAH3uA49J^ zeQr_DiL8wfXk_LD=QyS|c$o+9aC9GfOLaeP%h|-~%riIiAh_TB!1;44MgNMDPE}3K!nqAI2jFBi91Kfb&w;{1%<{y53pL=v4?#h59d|J+xwT2R6CeQ;mz?=vJJ`I4CYq{}#&ZZJi6U-d!-l8 z{kR9;%BgRI)^qeUx&FK~B&MBK&{4dAUfz*uJr*2hDa=df%W_4-0>V5jC_ z^Lgn)+O(a*YMgHw&2A?&F8y?QZ=3Y{z`5kuaY2_#n!kREUNM3~8W9wOt|34m!+Wlv zPB}>=Oa@oyp;W~GlFSz0Tgi9c8X}&qtHPK zLi89cXu+^V#Iy`FVN4V+hLgVgb{i&%F`5(bKRLyajGzz_{BnoYVMD8(@0>j?=IhQNu0oj%?VWrs__0}t%r`P8@ z&h(xRgi?!)++%755F;p~)eZ^;U!!szrt@>373B;gt0UB-dF)dIJ`~o5qQ3zzV*6Uq zkr9$xnux4|*%#`BOG#oVX@~?gDJ%d*W6HTWHvL{#d}L*bt*83B_-@cb2U|`4unQ@V z{0`?*mr|piNo9gu5rh?;(fSGcl(9m`4T)81H#{(=;&@rFrwU3}qB&U2@-l<{1o0Lf zU+EX4PGQxo{OG{*FHMDwq1C;!h6?M&a2X9Xk*j`<3*~a{*ZyAOZ9&(#>v2F6hv<|N z1>DSY@oQKb&JQ_q!yu>bkz5-b+a;#%K@d+Rppkj3A#V!UzCkE8gOgsDI5daLB=-Q5 z>|b6CQd_$tYn^cPM~Pk0 z%V1v2-ya{kh=Wuqe^`pCM=#Y{p}aIkG~D!GWL=JVsC*JR6UgELfHf)aQ(uk&r=^wIi=J?O0U;s-@&fE`-kH z`Et(L&Vb(M4;{+0_VaiR&xbV;O}?pB?E>1RKF30gN2%XGp(lyYfilD*uZ$+W)2~j2 zp9RD!qqUf7msp3k@_e`(6=Z^QCf1TZ0(V1WSNcr&*aG*$+lFcY zdbNh809-1)0{qn>V?L>uq;S$it5f1Px%ncFWPBxXZBWM#2~homM)j2FfJHvkSDlA1 zpHsW9|Ad)QgRc=rleT6uN*lD5K&MII#+V?K{ug}on4>?cKI+l%>q>a)+Wfi7PmIy< z;q9)ng{Xw+>~0onztFe0g$>n8YXN@+kUMyufcE)VCH;ayWw5PUS(5TOYw>Ye`wvJ% zD*9mPpHoPP*o9wf)>?FF!kVUM!XswGZQeAdLKc`7LQ>VB3ix&R=47Q^!r*(*}w8SI)bzx4t&;$Mz=Im zda;kH&8wlT1WD_Jks?&MQT=Njj6^jcqUXvy%^Uh=A+b?OyV#^Ntt1|veBP?ral{g^ z!Z1^8M4M3^@Bh1qK%V3;>&Go*HwtfOT)#0(RgC*liJvhjPL5C4dmFX0 z%!o@7&Ua?Jzp;7BV2=*FAxBOY5)crD6Egeo=tb?vtSy>||8iZ}16%zi{kZ^kd!z8` zA|E!a>1r%KIBIiQ6x>gTfKSCi`&s;9l$`()WVE1)La>CsWrh&eq%Z0YhWYxzztx){ z(O8*CeH0NB|5XCnxz14=^^j2U`Hu%?=>TV)qIBuygZN*eH1n0J_ahquM3W5%W!rj@1Ron`wJX(s?rhlj z)f*x!N0u!)p=-Oud?Zr7hN;_^^^dC#i4j%;zwOSiB%6XsOj_tkM1K?Zr435=pw7&a z0pC;jHHXHiIeyP3@S9iJLahY9yW+^3BKVj^z3oYi-oNs9nE>G5X>xb*kr&sfB7+%i zg0QfJnY$qeaps0U(+x*DYu$noBva3Vv#T%}aZ3|K6-n$9UZ6;AunK0hzpy@SV+JQw zCJ(q#Z208@}bP>%h!@Q)v#Y5B^CGL^wv6R1_Zm4VGGF~huS zunFy<25U7G=voW=?T+DhfC;|D%WQ@)Ba8>@LkT5s?DI#N}{ij3=&yWaKl)vSm6egm>*1%0^-~a1t_r~0nKLy&lz7lj7uLvyzPU59}@Ze zA?wNTJ(`6DVk-Ly>MeS_lK6{_evc|#g-*u@UWpw%;6+1ufTU+Nu>xWg>CGqPi^ap5 z2wV_S;$_DexIW)CHkkgSzmL9ENp`DYF7f|+A8{U9kQyRyESlLFj!A5sTh$_hPk99d zi~=HzFxej{`C3;$k0{8is&W3qVJ{j}42POPv>CRZ<%Kz@L7KvWeN}+_Z{Q06|Icx* zDGr7ykS-&2d|_&34!a7uw_R4@bLoCu!UQz~cx489;n6}X*P%`kpZYqy45&ncawd@AzljY?apX?n!cd%6 zVVg_|O>`AjG`0;V%)6j7~qdpgf#_&u! zT()Q#?_B%{(LUB63Q!28B&S8)zu-}qC{d|0M{1K`Z~ZIflp`3XWA!rn%tqrio!@-vIXg04|Y*g`7EqN(gAJr1(Z&uH!I@z5Vw!K197eC<)~JZ=lfV?fCXMxR>> zlk7em{GqeV4cokM9@HXyKB#kCKi^R6g8|z-Prm>R_B5|t@s(#IOPo74uup&*Gr>qx z-o8Q;%&x;-nmOcrgK6oSciOWT7mrJ508>*$6I*SO@J$=dyjuZ@PvzQIqj1Vuu3~ob zw!$z@N!-rZ;DNv@Kv#WB8WKf`3z0!-zIna8u9#=qiFbsA?))^8w7NvbW^WIwl} z^8hZ338yusIt?_vI;9MscqTRP`s3T)I;HnLl954LR@hbsF)tqA#Ez>^w9zNqDp?pJ z&sEqdu&p=V>-g@9vmvbqxqb{;$IaX<`Et|}BroZOZ9JtSbUdXB-07BxF-BbR!A&Oo zLuO_t{V6;c%$V}mDf@Q^@Y*>87<#gbtHv<_p8u`SI3!Zx^DQchm_d1HTJ|)8&q{@3 zh1kuHsDEX6DaJ4p**}}Vp1nqXxP9k0{%r(K+RZ)bg7o0R1l#`cuB}_;_yR@(of<1F znX&zO?RbK*8o`G^gt~R}1V1$*z(q{Zb?eEBkb=j>ji~KpU47}OhWvbbbOa<06k=Syq9yjv?Fls%Qg5xHW z0rQ+2emUDT5(E0}oyX2J1!bV4OyEYY)|9FnnhiTGSFAaj^}9(*z2Z>*NsF%PEJh3c z*>V9&23$jdOnlEm;;KKK-*z5vd*M+GTtwSq&r+Ww8QNmfMM}%%6e%Hwb?B#i39rj8 z*BSFmXggwVB&fveWt3KlvJ8fAvS@O(WvOKxGCaA=SnURH{q~uO2?N{KS1Paab|9-x zTd0Yf&f$gMV`him!ZNe9evVoVCptm+UDO&aVOgCENT~>x9cURQxLy;}U8e3j9pdZG z&kzXNagoW8ee12R>r#}gT&GS%Zo4dsK4Bz`F^h)t)YktX=Nko<>yPeU1XP=KVPab% zQ5E?J@+v*EtqvV^g447k_H+@&fa>$)?}q5a9^@c@8|-O2y@8~nI&uruio~>3qACmv zv(!@H$rNXB@Kcp|T54oRZ?4aARX%?N{-3FnGI9bJjE@+g2D7 z%JPkO^G+8#Ene-xO1oO-i?wG|;&9H_x%vixRdyp)BvGin)fctA#4OXEEf3 z?(|!SjCxR+A(B7(P9KB5P-|Efy<&KQdYnwvnpSJIr)JL784g! zyf9s8nEzT9Y%%)(ELP~0G_bcSq87ApZCP=8WuM2;5^-}+M$R4Pm_4N{F-<)g3eswG zz0Y;r>c#&)sZX)T5BDXLE;6Yeh)at~P>vSKSDO@LuX#u~o+qS?cZtDO`bk}w0hg>+ zxd}YnJap?OUh1wsdUY{OGA&_cknOIqea^@F)Ukuw;QXaInkDGkd283Ryo8%@l!?w| zHg{eje&#dT3uuIsth?}NOPnCA2^Yabcug|_--q6j-j6v86$}fDZp8iq?|d>6VQghY zYutSOD`!11gS{+>mKBi*_?Ci$jS_L9fom(=b10DxXF50%CBGbM;Y;?Ty-C~MiFvb+ z@O_R4#lK=9nr~@|s?I@K*fMf$L{BJ@%@?9?ea8#~KX~jwlaX5~DbkcI??r$a$8$!J z&|@8A7l2Lu>sB($berA`P!WnlDijT22&{Q5s8zs1w71eE{PGz?Zosnu4 z!ob;5m`nBe$(x1(Mny_~ZFV0yZZ!^|U`FHp*=M1Oc14*~sM|dnMH3Irc>bE=%*@`~ zLgWcTWuCytSAF;kl`TBDg*s!Pf?4^2A@=A^LS5Wfj-!W2GeE}|fN_=^BZAGzE8&Lz z9)we#`o@xAF!v4$jU%sLu<^+2Bd%Xa8_{ElY1EfG<{*_d{_v%$oR$F6qTF@}DeOhO zOE}xIC%bAA z6UAg$ao|Vqj^#lL$SUA})K33Ur0i~oMA_H)_-WsHP#h-9NDB3Z9YCVrs}0K&E;B-o zM7i&|@S6GtH)UX@`U}qQ;O2<=6J2CyY_VI6H9zLMpuT7r*P=-AQDoV>Nyr)xV$&|DuV3P=Teaxn?iGALJDDZIm zFmX_AQ*1r#l3le-0IB_E=2uVi97#-LP|BVbdEQ||7`n~gpD?=vp~573$_mqVx&vm@ zxz7v;QaPHDVKfC@OXlFtbsBM4?q#E)D}=F5+XVm(|=U+}8Oj|}Qv zrjjSp9r$gf3&aFi@G%d)#n|fda@?oZ8`xsYeoA7l0D$FpP>3RGcO`wXzx>T4%M(? zM*Ko#R|W5{lqS(HzL>FXS$Lyf6oNmwNwt%gf|1zX0@Rdm@l(Qt*g^HZc}wO7xeNu) z2U$$MUmVzUjxZhs=+U9SJP8K&)gBazS~?|4E$28?bBKZ`r6q?Auo;TE{kPGm(6&OP zg-hkVWR6XEDjo%ruY&x(s-!aStXUeKUG=kETZ<>Bp_S<&huD}68&iqB-uJ(1;h=i$r!FeIlP`zLVQXTqYmJ^>Qn1TAo$n-dh|;U;N~Yr2Hl_l2F` z#96+Psubcc3nmb*7ejG0zvPzobfJ_Vm=;ha2jqEovZBp|823nez z(z=QJ8krqL#BHUt7|e*{ZLP$bu2Id8;wC*v5#sg@z_F`=%Mz8wQ$Wb04yiCp1vuD= z+g2f+q^t?0qmU3sy0D@V$H~t)Ks(n2JnU&t^7v^tW?v?wZ{+<-Q}JHvS}0DiG2PCy zjkn^ZhQ=Q)B9cz~*f;`?ZV-)*)*^M>pz4|N1wY|f#(%vW=W>}=5zl{VaZu5DRrK{v zX-iPX7)n5O)k1%ZPe4V)ezD}R0^&ypWT$I;FTPCGX1X!44h?zS{#`2VgD3coF3dfx zd6_XV=2MPK5j^W~1DjdFmVC3(vlc$K>s)|Bv5y>;D!xGF)WhywE9(cHDx%40e<{$m z!FaHpg9zhu>I7%ss=#2of_U{yK4qf`$C)g*x=P;e`r(V z^MpV!b+q(%V;YR;#An6r9KW?2{cDV~3(yU279t#k_W%7<`cGfG0OYQdjWbwdaLEka z0@>&E+4`vz+WG_0SABrGe^^sgH~dxf;fP8?B)pHK-S&|*ba8(O->)W3LKiZ`K`SG7Tr*{SLuIqSk zOOUK&E1h6*+hfQV28*WtudA<&$|Gpj#NFN9o#5{7?(V^Y6CfERxbwcaySqbhmjri* z;2PX>`R?xCv%B+Wq`T^LpX#nNGf!1LH7_86&ZwN{h)6Uc{8H5>O1C~jYyAK=OK0l@ zsepb4C)9?=fA$?qx+$xa>^hE*qrizSj{gOjsY*2JCIEw$Z(upaW@8=Ctkm^xRl)gWk zB;FDnI$>!=&J75ipYV7*0S>HaId9^)5>Q= z-pSTt!uBW*-p0*FIP?`DYr~3;H+E9r6VGvK#HksHO~|%VemGPjuGegDC!^6{d7;FO za4TtOwXHz|+qk4&dDO3>tpN^wDQm$>lrMJTF@KTm6TuHi5|54Wq$cKLt?nvAS$bU{eLU_G>G5 z$BBfExk_gpmuu;?zA|<~e`S0j^=A~CI3110m4nTG&$P#rv*`hchV_1?rWGUB3kA^V z$rJFt==|=y*>C~jl)ixm4R~FK(sz}!@i>aUkt1On4v0Z^v<&>7M~x)&?}x_m(2Z3X z<3`$(h@Y;6%>(qPalBnB=GML4A)*A353mZ-b(8YzVw;C0f18}fzFk=R#IXd^^YwDr zRU1QbP3Dw7al0#8Q6lo}F{Uh*2^Q-#ph@m-5Y;f73~}yUX;mxTrh#AZ=qr;KLP(X)JIaG6q&;5Y^vyEF)bdKE(sm#r zRn_1o3S%`78l9N&YO!}mWqLUar(yar&*-S9y(QmOF?{yd+V#jtQ!|Yv*S(+4AZQ!M z$q$C)DgdOdhtw(homLG`gI2)5N^?|(4dWB!LM7k8=UEOT6ja%6%d01lC{K^2oZHEt zM^O}&NVO3EEfYXSCns`Z0i4@z#2{G7|kOHS{2} z=ZoF7`$Co{Az!B<_|CffTw>SqwYBqRKcKZ-covxZ66eU!W-Nt|eeky}EQM$g=WL!k=dpvYe&oI)iPpbJlqJ@vXbW#(;A-R_QY+z`#ZU1G>i?BW?4pY45|D|IhQ?0( z&QNWVBAVitBcZLKq&A^iYr?}VtV>}Eu!-RJeC-QB&#L7|ig31Cs@+HV1PX8#mYAED z4`Ce)_8m#9XsM3^bh1=t0(TrJe{|sTNCeK#lewckbqDVo9L-6xpkeRkxGMerhy##C zls_OHnL_AL9VSZzj0Rwc{AlWu*kdq&2=#OoywC=oR0%fSwxnxGGzu?xJ^MXpryfTOppkvN|JEG%(*?);tt5=^4)Np2 znDMBJZcNh8oa}2{SvY|q6ZqD8#F1JQ$!i6bY3HRp(%WlI@~aC?LFAqn1}IVx$!ba~ z7@*4RjJhrpEn6rcY);fdKi%cz%8qeB)n>trPs_?=VQb4WjKK2=(&yUjei|X)GR*~E zcK#lx-j2BV@*iZQG4d|mcR`~Y{*Kch8*AGapx=H z4rFbJ`j@KCRkPLU`|IQ_@P2ENR%18y%c=L(s}NE|Ngpp2V-O&>wXo`TTC;&Haxpsop%w=$gysIr~>+ z(t@sQTPu{(RM8j0asAPF)XguG}lozGNomUL6G^mXyyEGWn$$cc?iG%$@k^_G}iZ0Y>! zsTPT}0LLJMP=B@DOWBi}0Z`Ff+rmsCP(XkE`6R#j=u>_h@KL_4TWF**p zebE{%q?%mLh+-updpRRpg-O3Blx?AXJUyeVcZfJz{s#FuM6h_yB#04nINaq_YR%(W z)8OY8_6pL!O2Q58bFum=VJ<7bDwzWSW4R=GFPRfrfrt1GGYEq$y68dGiSGI1E$(j^ zGaMd#SNa|NQtXp11>wzxd_i+`T?RinZiqMleUS03>navBX8B8IK=S8TObya*8@yxV z;6d#~F;TrVcJV?ERl4YAjX*-mYuXUW%tXU)+UrwcNqWPE!kLyMp9-06PePBCZh7|1&$4cS;)V+GBoXUf_c7ZWZtNU*-o{G+DCr>?6 zdm*}-e}teeYERWJgE>;)qtr?;Fc_-#P+HBuG_#_mXV_S__8|iM91~t4pE+fDJ$ zC-2xkUrE#E&MqfhXV}ocRQg)%+bQF}M;-)fG?(~e*ts?TlGX2uq$ROp9v7r_7)G?i zn83p+`%qyzUSfRNA*!Q}kQ!OS8`Tc=dW5^JWoCl%_!ai?fID*k0X!SEXqLLQbZ*P^ zg$h#DAr#qk-O2#y!N;HXTW)=In9;fwx|%FVn!_rNcbK7Q;3g~lV^Nt zdG2>iA3lHDZw)W@F4QZjuaH2W;_k<+zh{sN%*JAw^wavzbWk_C36zcx@d!gboy!s#U@M~ISuFTPe<6jzsSoeXq z^m;RMo30^N%y;=S&1r83AMxSAsmI9z zn6;_tr=6N%b|S6(>%nE;oQmVQhR^30?dBdw&qFb>4Fb(i#p7i!j)Sa)q85hwB#ec4 zl=sbrj8zzkUL)0CYKGd$={k|M5NgAWpbIc;YS7K>IIk2Dy=@Y#W;XrWgROcWgrZUoO74Dy> zGsfq-7Aw`3g%&p|WS}>uleh8H;TUvQ!@7g-b;KUZJSEtU!yBEG`#gFzEq25gCcK)x zeycf)#+*)`(H4o{cTEQ~2`&ObXw42LVOhL zGk~coLx0)a3A3SjigLc#0rOtnkG8xks22LYP55>|0UHEEa%5L;Xx$9-3Hl8R~S{69^S zRx!}0>9ji)R@9KBSqdx|4RFL+)kJA?Ob*H7t>$rzfIkeaojSH|W5$;GBfkzHSQP0A zvA|t5=LpJw^%BNPE?oS&l0jcG*8zft^MK81(sZo1?XblA?+z@QeOINfJ))xBrsSsN z-T!Wu!p+G3Jzrf<%w2A6zMlTI%Q(HfI3n$;`k{3EuXf68&TOjGS+Ap5{kZf{&(f|U z;PG^CAax{lU+Too=et}$w9RSHJoxGG@Nj80d{CwFwSt`7?BC<_!Rf%#NGf^m`^)1y zYkEd*u4#AId$#E78hOtfI0tw+c-lYy`>+(gRC>6z)${iJdi{KTb*qTb?f-oJem-H= zeWpoX{7<;&m8KTQ;QX($pC0xW?l#t1p6(7Vb{_w! z{h4K~4j)719oB_6mNJiSWHliXsj0N+Aydw?mKsZim}G-j$$w|x?75j+ zFZVA@;HgBc#f(l}hXF#y@xVNswctwr&&`DL>*GzU4o&wsH!|q4l&3m-bB&d9PvH~l z-jkZqgAe`2Wvg@w{9o>fB>nfMJDSGoT=e(1t?!c!#@lQBFAk20ho^5Kbss9_`}6R3 zCWJj!PK7A`kq+0Mtu-telJ~9zxs#7#i9nCnl@%V@YZ|#QOnREt#TeDU`dsqYjuq6^B z!)LCbN+W35X$9R9kpiw+!Rd{~l`|n-XWXNBjpkHC1|Wdc@Q~S4V+9mgS zBzvEx?3$&ZX~clGrLDiD$5km+j!X2;_N(9R)-JbxY_z9Kyja}L2q?gp3=oI_TljqA zjOeSYQPEvw*zE1noyl_?$sl84lC6!LSm}qUo7Y-P&q#;O z3xvqG;2sM4Sp$1t23e2{32^W=WiI8O+0PhFt*_E2MCiq{snsaG8pJDo z*A~owttl;asx*u8vO;wBJclPORv5h^$iW}cR=_oG_AY@hyFQP7zZ?52N=qSnY6!7O zvE?hnuP#-y@AR@~!lU&iH3Rq$t@u>Q@r*R$U?wMAyLeY0zda|Ob3kT{CgSL z2DT7m!g|mwxr*Q2$G3w$u9I6`xd7vuE+-mSR6aUAO%e>heNA(>{(5!Q)De?p1=jrf zL|VjXv*Ht;d|^M0a~;OW<5hRx_C>n4lP*5XAI6q|1$5?MmQ}roi75PslGfCrYL!mn zWg99Dtdka9UAVRv4zRj07BY(Z%=dnKIPv4q9*DFgE_HRsWMpHJB$>tU$`Rq=)KiH6 zU2k|8`;FvDkU z<#2_YQKF7^YjE+&ag?oj%)m1&g z?cm~;#*tNGn0#39SD0d%l!EoZ!$n6MU*;u@6;1G2{)t|PyY3XSaU4tfn$A^-FDi5B z+Q9X&XobSr3c#KuP_rL&nf}V(_PJjhA&!)zsji{*n=W*T!xuJ0Zi`Ch-Xa=dmGa$v z%l50~N9^{9y7FM_V7u*l^EY8CxP?!)wQ`af^?~N~&K9cI90X5tH={N%SOc;)KQ+#= zBzp7IT!PQ+Zw=OI6=>d9y<#AouU^TZwWj9H`ds%2b3^UA1iH+aw$ER2ges3|8fo2Udrejqb z=hyyW7Xa!uc@=3;@_gbh@-bj@%|;6iyIgj9MpCyz{dXNj_MT^o^o^K6fb?I4T|_rO z-V;;WqK%If)q{~7;fdC=HeJxk7K$ts6>x`7Tdvr8w_Pyp&bl;vr7ex3Wk4vV z3>}m)VB!r8s|&y1epaqllob~;HcRn@`W2wDU}YOzbcSM_Yz5D8jd(HPN*NY%zubQ+ zqB&-YR2b{Xob6$Ckw9`DGFtf8O(2dQe4pReLx^?}#~9~lsPq865BgNUocIg3TsvSc z6p&-n=pmo7WAB-=Amd~DuIE;%RSV8tuv|rViIyiDxq8To<)zX%cXN%t`4K$$ zWehT5fd3H_uOhlvF$#wZ+WAW5?bzwZHk@1PBn8HwjAxSH%m(uJJ`6aU=jV5uOxT&# zQiKA+`iOAKuf3dZ8FNo@`Kf;d6?4ucih)x&-oN2Z)k0m}(BXA-b%(+vCTJ!pbd`i3 zdHi4nwBJH@E2QrUq3zXfulc%+kkh!<4bJTCNIGZ9Q`o-2Bw7zU_YREL(Vll)ziPlF zEA`{)GCxgJ50I@I155@ZzQ{n-YV~2<+eTQpntjh@VMW{Ey?7)(n~%tX|+j^STIqIR^iR037U z%&TXs5V{-ZL~r@Oo#~i%=QPrX;Q;b~ZO+dGKVfyf4zr>CrME0(6fe7SyoZ@G-?!SK z{?v?(f_Ou(8PC|uDbhNC7%pxEammsvwZHu_+73OPpzOKZW)#4T87|oI zOyKMIBk`4os+2ddpB*BZc$fUk~h5a`pcG}+OgO}Jv;ZQf>&UcxtO zbE3cg62s*+fb>`%Udz_i<^5WC%k!dWUE_+mKFb!6Nyk3eL%9~JbxSj{g>A~UHQ&w3 z$^u@h*f2|1GX~SVhC!U#`T_+e3C_I)MGvF16yxK;0&GN^P8S^c78p#;b%fo7_Qd*~ za|a{?Qgv`+m-Z@Gun8!cx=0DsV+>LQD!S!SiC+k!6Lqm3nBl@j>HyqrtAq>-IGb(x z!5ue&BsI7O$*#AMSH%Moin_0z_mjExL{)E8=`0E6ltlqX>$Rn$a1nczTr=$iC}LlC zInSqiX^bM=m7J_x^4ZafuT>c`?4!jeIa#$ClOyO|YB3bPkmSotaE7R+K6(7!8C^(M z2}dpyCS?D^a_EsO01d=o-zq_VUcukS8KjJ%3^HjNIP7p7j%mJ;S=wnMs-`A=*wvcd z$H1QpG>dL#cbcE!>-++i7XK7`G{9CL{(u(!#PV9=NiEN9b)}FcEpF_w-Jo>bo2jF$ z-sh5euq90N35NG)vbn0-1tv#Qo<|`1m_7DrI7J*yW^iiPW*i7HNE}iMq!>gF*z6!T zloAlKEjc`DT8q#3nj)1t>mV1J)5(2mOX{uoea;ngMAc1Y}*af9i(ERkPAgj$K?4gP&K z?nsMxazVux*W2^pxcJZJmJzj-nz#gC-8`9Ca`%D%k~C)v?fEekTbI0~On{=*qj9Bz1?p&tnT9RTY+ZyBjVs8|eJp_0Qx` zbTwSiGJqiT$)ngU(|_4Z`hh{A7z*xq+}WKMV0ElL(`epu$njZfw~f=mJu(e>8B~s) z+7y^u%EQ=;C#2#$53n}Yq8AK@#d?aiJlSQ0E1*FL-Q;ecLLy6e4xah^11P{^^%vw> zjgd17&*(2>!AzDqk}mVW1g@wTSL5?KQ4y^nGGN3jT3`B3DH$k;SEEJ(U=$PRmWIuHIN7`v;aUE9NaPeZOKkRU4|KN}Dz!skZ8%ZV8}8@4Z)&cSM!D8~ZvQ08t0QXcI1Etb*WR zNc|tg!X6hFxsUf}sG2-wO3hQ1zo;6zX)~CZ5TEGnt;l9(Vu@Ri(>h`c`O<|*PcQCB z&dYlV42%dXe6;9-#}ULc*aIEAe^bNvanY(lLf2tt>eQsKmWi(5G`JvN(xW-1RMck7 z@AS!9;3jn2-S1=20rM6#l(g?L#s;a7(zPKt7sSvzmg7`_H5bgc2Bbzr^(v?1jxt#o zVd1UtEomLAAGMZ<*FW>5&j}4kb0~iKhm*}Nf9)79!q#)wj6{`Y*q5$rdv;EKTWuTE<=R@wR?QT8TDYDL>E1NnSM9wtxIG}vvhw=ks8b?b(b--SjOSxtD}U1N>pSC-18PK z+}!zH|3jOR7xgfwfO`QMsAKQOxdGpc&mh=K@kIZSpSCqDX#AAi`qxNXrE=FgwMy1Y z2r1o*^+KFfno6-iQ;AA|8%d^)S+e2V(q8ra; zFkc2ysHuFdq0Z%h0y(D-`rW8p#$*4Mir@ASZFQM4tqWHTaW4 zKk{lw5<6URRKGnTB6MxP7dszWS9sWU6BWeqN~49aglG0_D=cdv9V)#qiu13$k%tQ1_D*rtWvJ#ZEz%umH_8p5F+?-!I!aDiVjJ8Yf z#w(rhu&L7JaApjG5-hCuA?z&1YqD`HM$K!5WSV&&Jwn`+j2&G|)f8luFb^0%SN;?~yN2st+#E zX3IBg7;@nQXu798{X7z3)7a5_!u*)7o@TH8h!nccw%}fH6^QO$Rr(8K>UovgzyqQx@WT=F`A*n z4TU+s+U{o$v3})o{JK4UfD#8R%jXZwxm>6Ua&rJxLO!>_o z0|hli7~s~jDf+FP27$l8&rfr%8C{DSI41Yog8rAs5Tm~jUxDf>VR@%Kn^vNY^M?iw z)9dHzkLv(!za|`7_w_R*NWCgPPrs_?KeTra+9n{f%kWdaAxR&^f<;tPh>^lQp_BEl z?k;zx5#`(J3Zvt~9kRShE%6I{n;PGR*hdOXSG!gxt9-4-Ib~nPsQ%C?ivpt=;7u0A zT|jksj4#f+vH^e3+ssC0!Up#r(PNJ)w3bKUo)?%uaZGU>8?t3S&CRGjj3cA5&Maz^ z|0HCb!Q+4zKh4AAty-hz!qjqsw-6^csaICFp~xdqM6lKJ;5fZj38F1K16~`;;sUdV zE>!rtUY!7zCA!aUu;s2EikxC7fSiYGR5rz+aCzrMB!iF~S=r|4A;r$Em6bL|Jgp2Z zXlLKrAuADn&hcCwS&tm<6SI}Ytk-TL)lIUXeiMBZwdWAQDkPYR>=0qo8>zFDHStLs z7A!WEA}_8bf}{DjvKT56QX=mzSx_LX^fxSF?#5of#(S@B7}Turwl;~Sx($-qzhLc0cpQJK~`}*_< zK~J!#1gue6V&T^_TD2p!C16~Z>Xmpoq{D&sSFJh1hsG5fP3wl2!0VE-%`m-$iC&4N z)s8Y5Somq!ay)feBXl*fHS7~lh%Xd=eL-Z7S3mpvnxnM|ZD`&A;0wqf-0&4WcgS<6 z;s9zyMSG#q+=5G$lbQVc)t?8$$NHH?VMW^~>V7Z(p}ur2dGjVTGh=>64z7U(UAb>n zIr189P6M(OFUO1t%|@i$zYI+bnVMMlHd5+uxkj*Ad)Aa@aoxlSTXR$4zJ}aUkhBhW zY452{7mU*04PSaS+=G zH1t$@jd_!CKn^_?5gXwt9LndfY#~A&-S-)YR~>yN8Lnq{sDwo;t4ebWP`bUp?C>O8 zRr@o>NqcDkaXNbxnxreug%zb_h`1XWD-Fj5eEh=fR@bMXy3+dtnJ%tweL*-PQb)gb ztS}##@#{dRq_EQfEBTm@h>tm)&d;_eLm}-nN;g%C|=ysW0+aFKN`~M;_XGQD%ng! zd?Wh&n*2^j&Txj8#*KgOJ)lr(Sn)mM-{IWb`fi7V%o9j4r#cJWL%cAGG864_BQYuN z#X)fir1;__JkyUqJl{3;;%uafH)KY3kMuNj!Y>Qd0WF zB~OZ;Ay&^`&Q%I(v#Y;&%Kc@~C#r5cuDvtj8OB>^%<#pchlgo0dG<$vRmC~bEfMx>{C5b+##QolDFn zwJENcckH1(AAjd7Wi9W8aSngI&L3EUh9KJ(`#DRn%&|ccx7D)(d@z6G8o69O0hZfAS{wQOO|h zx_PFvfS!xwLpuv_gwOXeEPNbZg26wQr7cepvxu1es|q+}K6rzOIlU(+CH75oIKvtn zY4KQb`%g1rvU+=u0Q##az1UUJW{mF;fG{&-(Jdve)PkWgfO92fNaLjFRc@DJXu|PF z0y?O4bz0|-0|Di|om#bkvKaHcFV_Hd5>NUJ=m)%EtZ(D~mEoaQlIo%M4!<-Fqs?ET zg$fPqG~`_^L6l1@Dc7AV!gVe-fcl|tFwjXdzykg?_n)c&Jx*8BwHzNDGb;iY$Ogng zBI$1xqQHJOvzI3NBPLJodQqq%&IKwp+Gu%898?ctMU5*xD_GonInok)1R(!IONJOQ z6aPCD5(475kq}G;3Cw)%=fL?!enzgixz?l;o?>W$olA$J&3m6htM|)kEofTghi)wUcn^H~5noMAc)L3Z4*mmpibP~q=m zf>!#BVP9qiEyI8WyspAg%sA&N5j9r~&xWLor!`@J@TsBBAh4|ITu0+6#~V1u|GgiV zpg)3g88NIuOWICBR!E^;uNdDPM+y-aq0kMB_HmpikLm3YI)0sl*+q5sw`Yrgac_J z6|f!sP$=9w#sE>KI`Sru6B_M|tqZl0hxt^gr6NrDr@9pWjr~WyKAY0*UXufv6G9V* zZ!bK}-hr^*S5+o+uwO5`lvBC1+s^uZaZ1KMk=cfDE6u6#oo)EHMzm;TlfGA`#bj9u z>(jkeUH*>UmFc}~p|Nai6)S_l{HQN7VltuT`A;C490FADiqkleq7R2iXI|J`^+8%l z3S!A71XTXRP#F3E>jy9KBD)*U&{>x)gLn;f4hbU{i@MxkK`7(@QXwwDPUOxDdEK2p zLYPFz)VZ{^q;%&PFnPGvRJ)*Lq_^k!vn#vw;oIAu|6@aW<&%K2>%cy5?91~M|59!E zRIc~Pj{B=O(QmD0e&w5PQIXt-S`{vGwLPyiz|7^r&2V&TZBI}*)r|b|R{#(*uogfx za(Fj;)Z+Eai?a;9)9P+{X~tREBs-PqMew&O8(@od)|SNL z!wg({5(yeqDe^B+G5v2{rgqe#ADw&!mvg3b1@EPakPV5DKWCD1(&$FQ{5+W(A=ZJ4 z%v5LTq#rLv|CE+6r~-olRx#t^4yODI+o)fw+)YgLmk4G%Sy2s+h%z!0p|_HEOY=XY zd!@Uf2sJ?H@CgutW@Ma{m=4*;=1l7UO&xu^lIq(l_wwwF;hCGGCWz>#w)B*~J}u@Q z-U9);%UwqNAHvPX#XL>O|C{viQ-LldFDSBrg82VO=RW}Y|9zl=1`Fs({>LwU>;cUG z)AZkGcMu4^Py~uC1+krT_o{ diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs index 82c17e0e..d1afd932 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs @@ -30,7 +30,7 @@ namespace bsmd.ExcelReadService { this.EventLog.Source = this.ServiceName; this.EventLog.Log = "Application"; - this.Init(args); + this.Init(); this.EventLog.WriteEntry("NSW Excel Read Service started.", EventLogEntryType.Information); System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); @@ -40,7 +40,7 @@ namespace bsmd.ExcelReadService this.DoOnce(); } - private void Init(string[] args) + private void Init() { this._timer = new Timer { diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index abc9b0c9..0868d7df 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -22,8 +22,6 @@ namespace bsmd.ExcelReadService internal static bool ProcessSheet(ExcelReader reader, out string readMessage, out MessageCore messageCore) { - readMessage = "ok"; - messageCore = Util.LookupMessageCore(reader, out readMessage); if (messageCore == null) return false; // cannot work with this sheet or create one @@ -138,6 +136,7 @@ namespace bsmd.ExcelReadService foreach (Message message in messages) { message.CreatedBy = "EXCEL"; + message.InternalStatus = Message.BSMDStatus.EXCEL; DBManager.Instance.Save(message); message.SaveElements(); } @@ -2590,7 +2589,7 @@ namespace bsmd.ExcelReadService // lookup using field values MessageCore result = null; DateTime? eta = null; - string poc = null; + string poc; string imo = null; message = string.Empty; bool isTransit = false; @@ -2708,9 +2707,11 @@ namespace bsmd.ExcelReadService imo = reader.ReadText("Visit.IMONumber"); reader.Conf.ConfirmText("Visit.IMONumber", imo, imo.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); + if ((imo.Length > 0) && !bsmd.database.Util.IsIMOValid(imo)) + reader.Conf.ConfirmText("Visit.IMONumber", imo, ExcelReader.ReadState.WARN); // ETA - if(poc != null) + if (poc != null) eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); if ((imo != null) && (eta.HasValue) && (poc != null)) @@ -2795,6 +2796,11 @@ namespace bsmd.ExcelReadService result.IMO = result.IMO.Substring(0, 7); } + if((result.IMO.Length == 7) && !bsmd.database.Util.IsIMOValid(result.IMO)) + { + _log.WarnFormat("IMO {0} possibly invalid (checksum number violation)", result.IMO); + } + if(visitTransitId != null) { if (bsmd.database.Util.IsTransitId(visitTransitId)) diff --git a/nsw/Source/bsmd.database/Message.cs b/nsw/Source/bsmd.database/Message.cs index f4933479..9a646e22 100644 --- a/nsw/Source/bsmd.database/Message.cs +++ b/nsw/Source/bsmd.database/Message.cs @@ -157,7 +157,9 @@ namespace bsmd.database SUSPENDED = 8, IN_USE, UPDATED, - REPORT // nur für diese Meldeklasse einen PDF Report erzeugen (geht danach wieder auf PREPARE) + REPORT, // nur für diese Meldeklasse einen PDF Report erzeugen (geht danach wieder auf PREPARE) + SAVED, // veränderte Meldeklasse wird im ENI gespeichert + EXCEL // Meldeklasse wurde in Excel befüllt } ///

diff --git a/nsw/Source/bsmd.database/Util.cs b/nsw/Source/bsmd.database/Util.cs index b0aa2f6c..434c4fbf 100644 --- a/nsw/Source/bsmd.database/Util.cs +++ b/nsw/Source/bsmd.database/Util.cs @@ -227,6 +227,41 @@ namespace bsmd.database return null; } + public static bool IsIMOValid(string imoAsString) + { + if (imoAsString.IsNullOrEmpty()) return false; + string actualIMO = null; + if(imoAsString.Length == 10) + { + if (imoAsString.Substring(0, 3).Equals("imo", StringComparison.OrdinalIgnoreCase)) + actualIMO = imoAsString.Substring(3); + } + if (imoAsString.Length == 7) + actualIMO = imoAsString; + + if ((actualIMO != null) && Int32.TryParse(actualIMO, out int _)) + { + /* The integrity of an IMO number can be verified using its check digit. This is done by multiplying + * each of the first six digits by a factor of 2 to 7 corresponding to their position from right + * to left. The rightmost digit of this sum is the check digit. + * For example, for IMO 9074729: (9×7) + (0×6) + (7×5) + (4×4) + (7×3) + (2×2) = 139 + */ + + int sum = 0; + for (int i = 0, multiplier = 7; i < 6; i++, multiplier--) + { + sum += (Convert.ToInt32(actualIMO[i]) * multiplier); + } + + int lastdigit = sum % 10; // letzte Stelle + + if (Convert.ToInt32(actualIMO[6]) == lastdigit) + return true; + } + + return false; + } + #region CoordinateTransformation public static double NSWToDecimalDegrees(int nswCoordinate) diff --git a/nsw/Source/misc/db.sqlite b/nsw/Source/misc/db.sqlite index efdea21e6fce343354ca2db21e74f6f55a84f6b0..0693e66c992d9b28d0dbf66b06784fd4c126018e 100644 GIT binary patch delta 823 zcmWmA2U`pP9LI4-g=rbJVcsh_F8X+WKl-7bgM-{MNfKn%iQ z48c$gLkfmt1V&;MQZX877=v_-#W-YOJSJcwCSfu%k%cLkifPEkbj-j^tMqqmoY(Djw^mq?Z#BWcO{EFJfX5T%k2sIu zD2|~F$KgXcPT(X?!EhRWoWWU~!+Bi5MO?yV1W z*5o$Dn%bG#n>v^}nmU;}o4S~~n&M3Hrf#P0rXHpQQ=+M-sh6pDy^=dVjRX}0wy92lQ0=mFcs4<9WyW!>6nEK z%*GtdMJBQ^580TH1z3nh$U!a^V+rz*4-b}N8J1%OR$>)aqX28L7VEGc!Ui