From 7e2d7918066b22d9b20238115c99605ecce3ba22 Mon Sep 17 00:00:00 2001 From: Lexzach <53662039+Lexzach@users.noreply.github.com> Date: Sun, 25 Sep 2022 13:24:30 -0400 Subject: [PATCH] added features, keyswitch --- facp/src/main.cpp | 164 +++++++++++++++--- .../.~lock.antigneous_tech_instructions.odt# | 1 + instructions/antigneous_tech_instructions.odt | Bin 883452 -> 885004 bytes 3 files changed, 138 insertions(+), 27 deletions(-) create mode 100644 instructions/.~lock.antigneous_tech_instructions.odt# diff --git a/facp/src/main.cpp b/facp/src/main.cpp index 4ab2c0f..54cd4d1 100644 --- a/facp/src/main.cpp +++ b/facp/src/main.cpp @@ -29,11 +29,17 @@ bool definiteAlarm = false; //panel has investigated and determined that it was bool walkTest = false; //is the system in walk test bool silentWalkTest = false; bool backlightOn = true; +bool keyRequiredVisual; //variable for panel security +bool debug = false; int characters[] = {32,45,46,47,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90}; //characters allowed on name int panelNameList[16]; int clearTimer = 0; //timer for keeping track of button holding for clearing character in the name editor int verification = 0; //number to keep track of ms for verification int drill = 0; //number to keep track of ms for drill +//------ void loop delays to lessen load +int deviceCheckTimer = 0; +int keyCheckTimer = 0; +//------ void loop delays to lessen load int troubleTimer = 0; //ms for trouble int codeWheelTimer = 0; //code wheel timing variable int troubleLedTimer = 0; //number to keep track of ms for trouble light @@ -64,7 +70,7 @@ int smokeDetectorTimeout = 5; //how long should smoke detector pre-alarm wait be int firstStageTime = 1; //time in minutes that first stage should last int codeWheel = 0; //which alarm pattern to use, code-3 default int verificationTime = 2500; -int resistorLenience = 0; +//int resistorLenience = 0; DEPRECATED int panelHomescreen = 0; int lcdTimeout = 0; String panelName = ""; @@ -100,8 +106,11 @@ int sdaPin = 21; //get resistor lenience by having zone 1, zone 2, and smoke on a output pin instead of +3.3v so you can measure the difference +//have it so holding down the drill button causes a visual indicator on the display along with blinking the alarm led really fast +//Add feature to calibrate activating, trouble, and normal voltages using the IO output instead of 3.3v +//maybe instead of looking for 0s for activation, simply look for a dip in voltage @@ -136,8 +145,8 @@ void resetEEPROM() { EEPROM.write(50, EEPROMVersion); //write current version and build EEPROM.write(51, EEPROMBuild); Serial.println("Wrote EEPROM version and build"); - EEPROM.write(72,125); //EOL lenience 500 by default (take the value stored and multiply by 4 to get actual value) - Serial.println("Set EOL lenience to 500"); + //EEPROM.write(72,125); //EOL lenience 500 by default (take the value stored and multiply by 4 to get actual value) + //Serial.println("Set EOL lenience to 500"); EEPROM.write(73,1); //EOL resistor is enabled by default Serial.println("Enabled EOL resistor"); EEPROM.write(74,0); //pre-alarm disabled by default @@ -226,6 +235,10 @@ void setup() { } //----------------------------------------------------------------------------- EEPROM RESET BUTTONS + if (digitalRead(silenceButtonPin)==HIGH){ + debug = true; + } + lcd.clear(); lcd.setCursor(4,0); lcd.print("BOOTING..."); @@ -283,6 +296,14 @@ void setup() { } else { keyRequired = false; } +//----------------------------- Panel security variable + + if (keyRequired){ + keyRequiredVisual = true; + } else { + keyRequiredVisual = false; + } +//----------------------------- Panel security variable if (EEPROM.read(9) == 1){ isVerification = true; } else { @@ -310,8 +331,8 @@ void setup() { } smokeDetectorTimeout = EEPROM.read(77)*60000; firstStageTime = EEPROM.read(75)*60000; - verificationTime = EEPROM.read(10)*100; - resistorLenience = EEPROM.read(72)*4; + verificationTime = EEPROM.read(10)*10; + //resistorLenience = EEPROM.read(72)*4; DEPRECATED panelHomescreen = EEPROM.read(78); lcdTimeout = EEPROM.read(80)*15000; int x=0; @@ -370,9 +391,11 @@ void checkKey(){ //----------------------------------------------------------------------------- CHECK ACTIVATION DEVICES void checkDevices(){ - + if (debug == true){ + Serial.println(analogRead(zone1Pin)); + } if (walkTest == 0){ - if ((analogRead(zone1Pin) <= resistorLenience or analogRead(zone2Pin) <= resistorLenience) and horn != true and silenced==false){ + if ((analogRead(zone1Pin) == 0 or analogRead(zone2Pin) == 0) and horn != true and silenced==false){ possibleAlarm = true; } @@ -399,14 +422,14 @@ void checkDevices(){ if (analogRead(zone1Pin) == 0){// or analogRead(zone2Pin) == 0){ walkTestCount++; walkTestSmokeDetectorTimer = 0; - while (analogRead(zone1Pin) <= resistorLenience) {// or analogRead(zone2Pin) <= resistorLenience) { + while (analogRead(zone1Pin) == 0) {// or analogRead(zone2Pin) <= resistorLenience) { digitalWrite(strobeRelay, LOW); if (silentWalkTest == false){ digitalWrite(hornRelay, LOW); } digitalWrite(alarmLed, HIGH); walkTestSmokeDetectorTimer++; - if (walkTestSmokeDetectorTimer >= 5000){ + if (walkTestSmokeDetectorTimer >= 500){ digitalWrite(smokeDetectorRelay, HIGH); } delay(1); @@ -422,13 +445,13 @@ void checkDevices(){ } } - if (definiteAlarm == true or (isVerification == false and analogRead(zone1Pin) <= resistorLenience and horn != true and silenced==false)){ //activate the horns and strobes after verification + if (definiteAlarm == true or (isVerification == false and analogRead(zone1Pin) == 0 and horn != true and silenced==false)){ //activate the horns and strobes after verification activateNAC(); definiteAlarm = false; - } else if (analogRead(zone1Pin) == 4095 and eolResistor == true and troubleTimer == 2000) { + } else if ((analogRead(zone1Pin) >= 3000 or analogRead(zone2Pin) >= 3000) and eolResistor == true and troubleTimer >= 200) { trouble = true; troubleType=1; - } else if (analogRead(zone1Pin) == 4095 and eolResistor == true and troubleTimer <= 2000){ + } else if ((analogRead(zone1Pin) >= 3000 or analogRead(zone2Pin) >= 3000) and eolResistor == true and troubleTimer <= 200){ troubleTimer++; } else { troubleTimer = 0; @@ -522,7 +545,7 @@ void checkButtons(){ } if (digitalRead(drillButtonPin) == HIGH and horn != true){ //DRILL BUTTON - if (drill >= 2000){ + if (drill >= 5000){ activateNAC(); } else { drill++; @@ -651,7 +674,7 @@ void alarm(){ //----------------------------------------------------------------------------- NAC ACTIVATION void lcdUpdate(){ - if (trouble==false and fullAlarm==false and horn==false and strobe==false and walkTest == false and currentScreen != 0){ + if (trouble==false and fullAlarm==false and horn==false and strobe==false and walkTest == false and currentScreen != 0 and drill == 0){ lcd.noAutoscroll(); lcd.clear(); lcd.setCursor(2,0); @@ -668,16 +691,15 @@ void lcdUpdate(){ lcd.clear(); lcd.setCursor(1,0); lcd.print("* Trouble *"); - lcd.setCursor(2,1); + lcd.setCursor(0,1); lcd.print("Unknown"); currentScreen = 1; } else if (troubleType == 1 and currentScreen != 2){ lcd.clear(); - lcd.setCursor(0,0); + lcd.setCursor(1,0); lcd.print("* Trouble *"); - lcd.setCursor(0,0); + lcd.setCursor(0,1); lcd.print("Ground Fault"); - lcd.autoscroll(); currentScreen = 2; } } else if (fullAlarm == true and silenced == false and currentScreen != 3){ @@ -708,6 +730,13 @@ void lcdUpdate(){ } currentScreen = 5; digitalWrite(readyLed, LOW); //ready led off for walk test + } else if (drillPressed == true and fullAlarm == false and horn == false and strobe == false and walkTest == false and currentScreen != 6) { + lcd.clear(); + lcd.setCursor(0,0); + lcd.print("CONTINUE HOLDING"); + lcd.setCursor(1,1); + lcd.print("TO START DRILL"); + currentScreen = 6; } } void config(){ @@ -719,10 +748,12 @@ void config(){ char *mainSettingsFireAlarmSettingsCoding[] = {"Temporal Three","Marchtime","4-4","Continuous","California","Slow Marchtime"}; //menu 5 char *mainSettingsFireAlarmSettingsPreAlarmSettings[] = {"Pre-Alarm: ","stage 1: ","Detector PreAlrm"}; //menu 6 char *mainSettingsFireAlarmSettingsPreAlarmSettingsSmokeDetectorPreAlarmSettings[] = {"Det. PreAlrm: ","Det. 1st stge: ","Det. Tmeout: "}; //menu 7 - char *mainPanelSettings[] = {"Panel Name","Panel Security","LCD Dim:","Factory Reset","About"}; //menu 8 + char *mainPanelSettings[] = {"Panel Name","Panel Security","LCD Dim:","Factory Reset","About","Calibration"}; //menu 8 char *mainPanelSettingsPanelSecurity[] = {"None","Keyswitch","Passcode"}; //menu 9 char *mainPanelSettingsPanelName[] = {"Enter Name:"}; //menu 10 - char *mainPanelSettingsAbout[] = {"ANTIGNEOUS OS","Firmware:",firmwareRev,"by Lexzach"}; //menu 12 + char *mainPanelSettingsAbout[] = {"ANTIGNEOUS OS","Firmware: ",firmwareRev,"by Lexzach"}; //menu 12 + char *mainPanelSettingsCalibrate[] = {"Activated Zone 1", "Normal Zone 1", "Trouble Zone 1", "Activated Zone 2", "Normal Zone 2", "Trouble Zone 2"}; //menu 13 + // char *mainPanelSettingsHomescreen[] = {"Panel Name", "Stats for Nerds"}; //menu 10 // char *mainPanelSettingsHomescreenStatsForNerds[] = {"Zone Input Voltages"}; //menu 11 @@ -952,8 +983,12 @@ void config(){ } else if (cursorPosition == 3) { cursorPosition = 4; configTop = (String)mainPanelSettings[4]; - configBottom = (String)mainPanelSettings[0]; + configBottom = (String)mainPanelSettings[5]; } else if (cursorPosition == 4) { + cursorPosition = 5; + configTop = (String)mainPanelSettings[5]; + configBottom = (String)mainPanelSettings[0]; + } else if (cursorPosition == 5) { cursorPosition = 0; configTop = (String)mainPanelSettings[0]; configBottom = (String)mainPanelSettings[1]; @@ -972,7 +1007,15 @@ void config(){ lcd.blink_on(); } else if (cursorPosition == 1) { - //panel security + configPage = 9; + cursorPosition = 0; + if (keyRequired == true){ + configTop = (String)mainPanelSettingsPanelSecurity[0]; + configBottom = (String)mainPanelSettingsPanelSecurity[1]+"*"; + } else { + configTop = (String)mainPanelSettingsPanelSecurity[0]+"*"; + configBottom = (String)mainPanelSettingsPanelSecurity[1]; + } } else if (cursorPosition == 2) { if (lcdTimeout == 0){ lcdTimeout = 15000; @@ -1173,7 +1216,7 @@ void config(){ configTop = (String)mainSettingsFireAlarmSettings[0]; configBottom = (String)mainSettingsFireAlarmSettings[1]; } else if (drillPressed == true and drillStillPressed == false){ - EEPROM.write(7,cursorPosition); + EEPROM.write(7,cursorPosition); //write the new codewheel settings to eeprom EEPROM.commit(); configTop = (String)mainSettingsFireAlarmSettingsCoding[cursorPosition]+"*"; if (cursorPosition == 5){ @@ -1218,6 +1261,50 @@ void config(){ //computer do shit } } +//----------------------------------------------------------------------------- SETTINGS > FIRE ALARM > VERIFICATION + +//----------------------------------------------------------------------------- SETTINGS > PANEL > PANEL SECURITY +} else if (configPage == 9){ + if (resetPressed == true and resetStillPressed == false){ + if (cursorPosition == 0){ + cursorPosition = 1; + if (keyRequiredVisual == true){ + configTop = (String)mainPanelSettingsPanelSecurity[1]+"*"; + configBottom = (String)mainPanelSettingsPanelSecurity[0]; + } else { + configTop = (String)mainPanelSettingsPanelSecurity[1]; + configBottom = (String)mainPanelSettingsPanelSecurity[0]+"*"; + } + } else if (cursorPosition == 1) { + cursorPosition = 0; + if (keyRequiredVisual == true){ + configTop = (String)mainPanelSettingsPanelSecurity[0]; + configBottom = (String)mainPanelSettingsPanelSecurity[1]+"*"; + } else { + configTop = (String)mainPanelSettingsPanelSecurity[0]+"*"; + configBottom = (String)mainPanelSettingsPanelSecurity[1]; + } + } + } else if (silencePressed == true and silenceStillPressed == false){ + configPage = 8; + cursorPosition = 0; + configTop = (String)mainPanelSettings[0]; + configBottom = (String)mainPanelSettings[1]; + } else if (drillPressed == true and drillStillPressed == false){ + if (cursorPosition == 0){ + EEPROM.write(8,0); //write the new keyswitch settings to eeprom + EEPROM.commit(); + keyRequiredVisual = false; + configTop = (String)mainPanelSettingsPanelSecurity[0]+"*"; + configBottom = (String)mainPanelSettingsPanelSecurity[1]; + } else if (cursorPosition == 1) { + EEPROM.write(8,1); //write the new keyswitch settings to eeprom + EEPROM.commit(); + keyRequiredVisual = true; + configTop = (String)mainPanelSettingsPanelSecurity[1]+"*"; + configBottom = (String)mainPanelSettingsPanelSecurity[0]; + } + } } @@ -1232,7 +1319,11 @@ void config(){ if (configTop != currentConfigTop or configBottom != currentConfigBottom){ lcd.clear(); lcd.setCursor(0,0); - lcd.print("]" + configTop); + if (configPage != -1){ + lcd.print("]" + configTop); + } else { + lcd.print(configTop); + } lcd.setCursor(0,1); lcd.print(configBottom); currentConfigTop = configTop; @@ -1263,7 +1354,7 @@ void loop() { } else if (backlightOn == true) { lcdTimeoutTimer++; } - if (drillPressed == true or silencePressed == true or resetPressed == true or fullAlarm == true or trouble == true){ + if (drillPressed == true or silencePressed == true or resetPressed == true or fullAlarm == true or trouble == true or (keyInserted == true and keyRequired == true)){ lcdTimeoutTimer = 0; if (backlightOn == false){ lcd.backlight(); @@ -1272,8 +1363,26 @@ void loop() { } } delay(1); - checkKey(); //check to see if the key is inserted - checkDevices(); //check pull stations and smoke detectors + +//------------------------------------------------------ CHECK KEY + if (keyCheckTimer >= 10){ + checkKey(); + keyCheckTimer = 0; + } else { + keyCheckTimer++; + } +//------------------------------------------------------ CHECK KEY + +//------------------------------------------------------ CHECK ACTIVATING DEVICES + if (deviceCheckTimer >= 10){ + checkDevices(); //check pull stations and smoke detectors + deviceCheckTimer = 0; + } else { + deviceCheckTimer++; + } +//------------------------------------------------------ CHECK ACTIVATING DEVICES + +//------------------------------------------------------ CHECK BUTTONS if ((keyInserted == true or keyRequired == false) and configMenu == false){ checkButtons(); //check if certain buttons are pressed } @@ -1286,6 +1395,7 @@ void loop() { config(); } } +//------------------------------------------------------ CHECK BUTTONS } diff --git a/instructions/.~lock.antigneous_tech_instructions.odt# b/instructions/.~lock.antigneous_tech_instructions.odt# new file mode 100644 index 0000000..b5edf12 --- /dev/null +++ b/instructions/.~lock.antigneous_tech_instructions.odt# @@ -0,0 +1 @@ +,lexzach,GLaDOS,25.09.2022 12:34,file:///home/lexzach/.config/libreoffice/4; \ No newline at end of file diff --git a/instructions/antigneous_tech_instructions.odt b/instructions/antigneous_tech_instructions.odt index 5c524ec6c1bbe7ea73d150183549490c98d1f44f..de599e070bdfc4e26216f18f7a7e63a0160b4326 100644 GIT binary patch delta 17905 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 delta 16345 zcmZ8|19W9ew{>j0W81cEbexXev3+88cw*ajI=1a}td4E|-S>O%8~6QZj5&7IthuUc z)kf`Ir`C@^&bNCGL}fW}2n-Mq7!VKyJN9@)S@1sxpb#iYyf@b0WPBp;KZjYie+me| zNKyd4hzRiiGWw(D`rkreIw;0J={nGV4B}@=QgZwd;r@@F0F2|Wra>KyAM_t_A~+>r z8(AKW-ms{=+-s#gDP6WxBIcaJu2*u1{yq{Ltun-TF0xu0Y}{ncs~Ih+ zDy&`>RT{$G=dhDaXY03>fly)vH+&-6v{XGXj-j?m0TnXuX%<`Z8O?lYhrj|bVBm)u ztlyAZBE>_8FKH#h*{Ky!M-i6}pF_EPfM7|iHN_jWN+6Xz;tX=fNW(ajl$`+(7X7%u zks(c2ZtQ1~Wow z1*D5SGNx7x68AVrUV|Ep3i`rWD`Zu(78=!i%D~a<2xb`Hn?VJB`JO#!pezRsgXWz-ep5GcBppOWL=qWPM zJr+Flri?9DbTclP_JNm%(MprXJ@oiDc|<)2$I7W8CuTbM5YN_Er|uLpY6BpO?Sg(r zic}L-ba%C1Bo=961&$Aok4>z#>Q_zuzMa0^o0e6oXu7?K2d9~ld)~%ZBTsgU=o5$CzUUJi7`aCgiO1_&0Z9$2*6|7pn53}yktJqoR9lBxG|lftoit~@o4FeqyTb|5Q$7ZS zxiza@T_0~rH5vDHgXc`Sb-SJ49r2gk?Z{6;qvRKed>`7!m)(DBC@a+p;)qN8g*ac@4(-LmAt=!N*%od4V9)FkLgyqs-)B;S7uI$f9J-4vV zKU!N*87SV4PsXI&?&;WdbNbNdzBxD=zl*n`3ydIOA`Gl~lB_D2RYkgWKdYSYlb6`P zY0%>4RVvhE(AdIL6f^3U4>TuAleT?Xr#psZRio`JTQISj?X*qdgs+_Ya_N^a&q=@r z0U8ieTXh{6ruhkrf(%GK7z;YP?bv-Qx#%JMT3nvL%noVXD(1G9wvSxm3e zpU65>dp*iJ7j4!;e<8xKhH)>9sBGI#zx=QqFw z$(S4Mc5^6#NR#Bc(^e3NQ4v@MZA5swM{8It4wErhm}y2GC6hlX66`mzzpqvmo$7a& zw@Vp$e&cnPEQ~pHmu7y@zQDnSG2J;DY+O)-P~uDF^6eubbacgf0NJ*V{WN{a;q!Sl zzcuQsb-2Wr6gEI+-fw|)&gG%GgBym`aFe=1g>-AIX}ej5HCd^Nn1yd>(IT&P$1MXo zGl=cc+v9P9qV?^x+BDX-yCK7&j-H8vUXE`p!Tm+OOg?5jCHY19T0O=%mW02!I1V0R zOG=Hnfgg)5EGD1G)?TXgm#D^FIvxN+@Pcze-X!r1`QJ@fV(zopHt=3F12fxzPiD(;d& zqVR-v6iav*@7XrD{<71)uunl`o8QWlz0)AN21i3hD=dXA!%_{xob{UVpaZ4(Eg>i? zKKus3K(KaBg$5e&o#bgd9^v}{05W$$A$F-y(4P8W$g0NK<_?(1ruIk^Ww#;l4aW#utOkCfnV0BGx z0=s&vde_E+JPV&K*79`MIKIy=Qk@-dMq*)XTNZq0A>B!Im}$fkT}DfgKR4K0O1PHYU|CR3D8r(s8LS#I;|u z%v!<-CLKwLRqVRDuYkjAmGE1Sk(?FmDHbVhYtE{V#KU;`pj%H2+@GvqIl|imab^G? zGMl*P9oEUOAbeJWUPS{;nqK-E_HRrOOP7ZI=Zjp{uidjgG!B+@`LjPlVTmqUnsn-9I}A^<2cmnwUFV)GDI=$`j!Kh>dpu zneS+9YhitBfN(rBr)Zx=>>#6xtlX_j2D}{2}PK145cH@v19?DlJ{wj z7gcC+gJ99p_ze8`Rf-j56)rJsQOlW{eP++LoZxnhZ8;83$$z=jskeOrafR3TQ+vgI zjUhzG{u^hgh5Sj$94t;L4?*EwJUc2rLfqn+C}-1r!=BF6-U{QekGn0VC?R1iF3HMW zq?z6PrsT_f&|&>K1(LzkkV+qb9OY`$s5#Jf-QZYB*Q=f)@f!84WnwB_%dU)^kMUK* z2jfTr&1ML~{Kfy8k-@yWfsKh-2WA1R+6K+_#+lY81mrmPdN{-)8>QOr-Ki}7KBKzg z^UpjF4TD0~h&c)k0)ol;zw`e8yj-f!_=*`5D}aFfK|?vBl)^vnes?;=0L~lVZqcH| z$7r-N6Up>@ZsgT5yK)vR4RW^!sr1yp(zT$zs-+e`>05$9F(`Laj`7p|Ej_~@XX zUpcYuE-tZF@o{Hv`0{VpFcu^c2{z7rAA7eoo7Qi)?cJRej+wzvl%zX;VQhz(XNkMU z5Chtd=vaf98!;_E4!Guz0Xq(<_=o7CT=UbPSx%|LSMdtNaNc4C)VBTE&mTTN(4B>DHyPz-NqrU~Sj|SWdOxnTFChSs*@#(GC zUWM*+&v$m#)!7ICFqM%%no3IFTWjPSXeRL0Q4j)Ae!J}Vj%MQ62CSver7RMX46qNw zl7}Ww8Pft%1e|S;wF>p+JL1lq1`^sEH;?jK7Qq#8iX~^Q5`2#}*u!uo)Lf3vRkxLR zVg_Ya#%03iX1?m@A9|<56;fyJV%)}H&l{rQI3KzgZp!MpnD~%Wz9QIsd6OMQCUTZX zM-nX~ZZBIf99L*f0W^GbGR;U&dds9RZ%URqvojXvVzVVx_U(?YDghf^%Kfg3k4>5| zX(|3Yp6{8z-pXpq>q$?MW(w9!^2;Nhh5EWZFF(mT=}9Ffq;ml8CvKW=Agu}2CU-u#bK;qD z#f)Cst2EAWN@}k|d=fA~p`BkoX*}_6LswA4KdgY+s3iW0#PdTwAOl}T+Fl7T^(NFy z1i>yF$uB`w6TvY@ZOt9}22N%@CN7NZ^BGMW!2I<&8c>f|azoakLg5}P$sY+CiRut+ z(x{{^StXGx-j+wbMY*H3SH7i>gr^vfNYhKJol~_ASy4|LwgPV~9}(YC2f$!4)8VpAX6&I$eg@WP~{clod02 z0`@xIPfxa^%r>a;S1>UHwrY{t)_O$A$2gu5M}Q_zY^|C)d2NSF_bu_RHC;_m4=H){ zVoS9l6eabx#0}fpD4CGRVE44U=Af_+CZ7~ zGqiawDWcIw?U9FiQNka>5X2bDSDsXJemf%67SwyuPryO1X8LcL(`=q7+s|Mry+b#b zCD*{-!<^Ma+lqc(_9cb*T>@FwSf$)X0RZPY#}@W4-pGa0Xh=8w{0?S@CgVcp=_@4W z%Ew$shoUw!JS+s06{l<|kJdkvRFGt(?QOD}Kw2aWz#kR$2VY2+lfAc1KOse!&YrR= zJc9xAlz=2>s;#HsKtX?7=s8qTkS~})EK2lH7OJ8yx+U!0$a}}#i@ERT5Ow{o0>HwR zl<(`h=Xs?mf8h#DPM$wimOD9bQ=Ka#)+I`a77XdQ#EX+Fg|RMdE7_0hA|=3X&7sCR zd@pp~hk)#VtCN6|qJ^>wwYv-Xrs$2nU(xa~9K2)*0{1l=}WG^}Vsz-O%kC zC7M+=7S;L`Xh{r;oVtQS2+8*AgLi~zsbP2BR2_vKve04GsrwV7_oB%eseU5H zyD!1XU`}~Qebkj?=LPw-T7Z;_4C4#UuOxlRce^E91ZjM#a@s>Q#FwGkP5?Bwu)LpB zMGF{>Ax~yDeGDm$IGhfH^$jZTQ0P~C=;>ccPfj_?s8qXxB=KlIuC;J2D2Atrk>B0C z>=fa2xH*`6D_(IDnZJv-3->k+TqW!y&3$CrJ7h=EJ0)aN;>`$$v(-`2(tNZqX`$ut zXJ?8P1dZwE6&cvM`6!)=2Y&@fIER=`}ekhW*U$R{+9erU%yyEMl_bq{ zO&&8c3Ut`EKLw8gQGm65LP-}e!m$V-8b#Ov_l>-ng!3%weP2li4WbW=FaDdLl)bU>8K^Ane-h19s(bC2i&NxCHT#)aU zD$KfhnRV=g$1RJcrBIEJ(v!)H!jH}vqiWqV*F~t2JoU`iH2^10TIqE0f*hag5-S|h zc+=^9Mz?;!4>FQHT;s?~$MP97y&Xtq`V(I?l=|W2I)1-!tN_t12zz?SRAUnpFl`N8 zE;hVER%YZ-o_I#XCZW`PK9DHO(dpnObzLzP*QmbKLK+@_mi4Ut8$46H)tR)*14S<5yt)0;%w9#U4(-GE^F^YzQ*0`M!!(YO6k)g6eM2o}dn>+le*WZ!~ zJEJP7ztRh=r9XrK&AoTM>ZcT%CZ_2)GZ_N5j}z)G#~075eh~g9J5=<(r%TQVNb3L* zLZmLKW5N_Usr1^bF^aE_`P0Smx2%5qvCDvxZseVJ*WV}>D%e3Xd_h0G7~>Oyn$3Ba zzwXyrJC0fSnpN2}M@TKIMg~j=W73a`(h6$s@xWeDIC981+dafH`Dn&To-89#4!)VB zBF;#RQW`=2_SaRE%PK}P*9fVYgy>p~6IKN(SM((`dspq`+{ED+;Jgk*Q62iryS@Vy zcA~AN7umj(D9*3tap-^5?N_xpymRVjwUiHMpl|A$iTzs5(YVdS)Xpx>;*2_YHYk2A z-}*HPaK49K!@~AL#XtQ+$hQzE&_hOzefM5e$LPbZXs}lGz0- zp=b1HW539F@mH(I?r64&-7R&mu6mug^g{c*qa6qT%^Tdugf~`$&XUs{#;pbEu|BtP zDzO?(nd}(i$8JVSAbqgZw#K0enI5K7X4jyh_Y5Y1jq57xx%G_85T^C!$bA8L-6e9! z;@P{s+xp&=jcd*R{O+^Z=UdDqbaa;%<|&UadCTnK&y)F8$VKD9Vw# zWw8GC@?ac##rdBy?6U~K@2<&hPOU9uJ73>+V9-6{(qqTca=R6O>XxD3w2fcC{$#DD zi4nr-BBSDM?qqte6;#P{eAeL?cTc?s?u|_Im0kSGPwmRj)#lvL_xIkXZudRF%*RR` z6XNq+>=`@q+8v(c52FDOiXo<)f;jUr=55l@MLbLfs=Q%145~(e;jR%ZJ)%eV_*1)i z7-is_csry-$HuH$NC4OO8Ji3ZjEM7K1|n)Dj;!jn5F3qz(L-`F#=={jsEfp?goLf# zW6^p>nJ2pT4(|~7jru||m3?_P_3w%glM#16*LEQj>E!4s{dkY{GqX}2CAFG$Suehh z)>js?Z^ECpTAK|3Jp9!N8k%`+m>kO~EKeuRe$eZbx27WRP|P=T@1tZH{_vAvk?~93 zK?~hCa#u2&?H$nJEGAicpz`o0|(rjKtD!r!}%MYs^NHHa!Q zna_v_MjP9)aJh*4cu-yKmdJQ#*CgmvCsv_8Xh)R2L#nC)Bg6e4U#u;$U9EBz3 zI|7wWBmy}}9w2KgwUPb9o3;e(tfZMVd}YmvX6U{Wz~^(V9`}8n{0{Vo6bek?v)5u^ zu<=Kr37w*60G2%PX^nu%4Ia_==GTaeD~*A&6JNP< zdMsqdh08{jf9 z=$_#=z;+i6BguTBTONb(Gm6Wq(zBOvhtj+`b*3AVI$UiKi>mv;ks9VrC|%`p&239n zA6)eka5;PNcez=q_mq<_e0s>6ckZP-RHqpO46{>*cWkVIN-IH`+&*`4b%JvdBQcOU zb2l#HVm+o`0JHeYu8f+&#h2`x{(R@N6>M=LwXH(%PpvJS63|cRzhBUGwnTY1NFX3I zVgKJ3bP$1c7=bnDAAtP<_#Z(00puS*{Q>kJ!2AL1AHe+qd<%g!0_)-5uk038WyFMk z{%cA3t%67Z_@?c=$DQzJ`90u%!0xM(G^@R8HltGO=}~p+&-}COjg=JGa0rTO8dWh> zjkcUaD?m?|?Z8FOsX=|(w$TYGtjv;8oyC|sCAu(aya6dFd4kZ#^Xm!~GJRwxvxhIq zVg997R)5!&W97Lweu5Y{Tc70t`DcE1`nVs+fm`$WICkIz^d9de#9ySkQ9RrUl ztoqub7mu$gZ?+=1-rviUnLgj=hjqONh8j;H9Yw)21d^OiRqeK2QOqH54yX)|kyu|L(*ULuioULZ2;ba1W4 z&4$^(RK?f1KEvwY5akFS-j&I++cK!-s(KsYU`-kYB$B4YxTSr3EHo4|_{P3h;{}Gs zP_bV_eHa%sjA>ZJr_`3>SZ~2!EYlHoF+lO=0~*E{N9QQ!61nT>cFc?UnH9*W z0(wjQzSPO!P?#kGrqgM|HKVO?@*`jgun`C?UAeWv-=B=@PKTB4;_@C#}nP8iq$qk5{6Kct9I;?9r1y1P9@~k2awf`>e>; z3Ddskp+ZyZqVr9oejlq8d$|ocZi@HX3~=28X^?xWn&C=d{(5~MOJg!hyfv{L|GFsdHl0~h1~N%kpAW%O18`SZ?*!hUbYNToKCYx#8wA9QHxM?ad0G+^1k z&c)J=tUN50QG0uw{QbWysOahZhPTd@Szh3@){v8KeI z@RMiwoj`*I``pZ@WZpnO@^dN6U&2sjw~m`E+Y^a5)M>hw9a%gTSM|hOtQJAg*+|E! zzXG)BG7NQ1D3$OH1!0v)@55m85RfY928~+qxB)6>{sVG@Ix_$}OI$5klNW|;=A6-* zyY*E$R*8y5z5z0-NTY*=fHiT}`Y;On%_7Uti;GSo=v!J$5F~67atdUU0MmYvr7tFg z8_md=5}$>{iB-9|UC)?xNN<4dHh6Yo8i;SJh0UBoABmhKcST+?92cOW7~q@n{E<(* zJqrd+$3ACXPr+7QgML!@T@Th3cT{adEJQLQ?S-7g@yHvA27A1e)SlZ~I5`;Tl`oP? z-YSjI=YQ}%s1D;W9Dns<43@r$0|uXfg3(t09ImP5kNL7aePpuUs&-oyQ9hflXj>^+ zeO}t!!N(yh zobXW|;somp3>haT`Zm5S|`dO7%*>WSBW!DY+?p%Z)%*E4Jh1VQA-Y9TwcBs2I(8~3iDbHwDZ|UflNUv_Q zABq>|ai#%4&8M7s?(6ko#%vMy_I9G51 zhCv+(FueDtw$8!6-&7kYN!xA{>SuKfb8Ztrt7=9(1e1muL(#3hVH-*0=DPLHax)6U z5xXLdks;t^3jv5P2|9ka?1qrh#?zlj|2(Lu^!IvXy*uolono9fu63=tyUjHMWuWVTLsSwKue8(Y2D6jl-Echk&m zLFL_gm%JoAA##|!F`$B+_&lC=NXS2VsF!#;`y8H6z0)QY*UQRWJ~WHZR?)h z4@csdim{*bZolrG@a^&|y~6Z7c1VBH@3|=-uetK%`V#O?7&E6o1^r2nP7w=)Oke!4 zbUP&nEXS_AB5sb4k<$o_|B4z~=%yxbqJ@d*_U8$e$V}r=#8zjnvDb#hTqUf<)#NIn zxkvPzR%bpJd8W{eKC|7t(?Qf1>G{sY?xFBL_yqT%PML1;Qhvrh_T#geU%89ZS+7J zo|pW6$dIjwt<+plm;N4}Sv&~j&R%;8XX^*Z9)9+9KI$DHYC?YTAo!9RUj7?R4w%f>HJI=xDq`&;>cGzn#=+#J`nJpVY`bd72e zS`uLQodfWC@GpwWJC}#!wB%pyqXVP;CViv-%Q*J~S(#7XI)D6c7jOH3`8vfXOB(>$ zf5xorpFV!!l%VQHQ~L6!H6#8qTc3fnol*8uJ)jRw$sbQ*N;m~~JFW_4!IJ<>6H5Q? zfJD93hHvzLYyUF?0mk(z#P65zI}> z8RcMz=QriGWvEqEI+(IC9$9V?N&C^{{teJgOP>?i#=5B-J@X#_3>huh#vS+S|_$~x} zi3?t(h|HG0RD<$J$I181w@<#{;WP{FN`k{P>4&&t9wt^od^1`5@F)O)fD+(SaIW@>T z$}U|%)3Yb33*9m=vP&VzS1DV03+JjZuRXb+JzuFF-gpD&x(xvqxM?W@SP$f6A6&FX zGImaXhkXIrS+Hmn@Cp8%VhixwaTV(Ts^|Khc+)cEii3k8tX97IYbnly$>J+R!<5>A zE}A>|wE6Q2i@U;?_7^*R#nfkdVoG-?wWLjGkD@& zsw-Egb2^stuD>-I#T25l?Ma)(AA1@{bN|0L*!Ql%%=t!tH0ZySoxdu(dbONj%IqHo zDsfd(HWM#*%_e3Vu9Q=CcO7K0*x5%zxG5fuiG^Z_H9J|w1h;&z7K1`9+~V-mvvE#;9((CuX#aYPRH}v? zW(nGKyB{!pdc{yAxXP0{#&Cu%TS5q<0$WrJSA3fMt7a5DXP$jIo?(73wZyNm3z)~^ zvY5}IW~JEBoyT+EzdDw;3P&^JsHH zrrj&HFLF@D1>M0nQWfVD&tm>pSfq+tGQgm6X5_5kbj?tqB&P{TX(QXT^FCp{S9^ z*QO>D^ftOv#*LN{rOWS@h!S1E=n)H4&%u-Zm*IuXn=StKb!V#l2D;_j_czNtkC|^P z6djfL@pp^#H)tr{?)bbt03eYou-7Xu#cS*8PKF^zkmDVx=%)iUnV0C#;ULLuPq$l_7Sk+FW6#clmgOn>bJw$SHcDrF@98XUz*^>tx`j=Ij(Vv_ z%oM#X$A#$?6qN~M{ zh0?*rgDOfPnNDW`fU%(=u7i;=tI@cU(z_B>i8WxJ)r8Fkp|kELLEf&og{sX&{fjXI z!*`oC;I@v>>=#G;oMsa!rj^PBT(xCRZf5>ZblTHKERc z+Fow=-B~>7`C{RZrDe}p*3YWR(T8D39gNMf5v~jy^`K7<E{yqu-N`ujC*o4Aq8y50FX?Tj()QqjgVwG3+97na@GsTXICcbr2y!Bc zAaVfdSDSq?-nP~l({c~%r_r(G!CsxeJK+>OYK+C&jmCU8Ft1%3qbEqvZ?*^5cn`Y3-E4DsMKMr(NILz_Q|nw<>(>R$F!QQVmE2OdM(H9c)PDf9X7 z#9bOK4+&!R7t(a7X9e%=O8;;Aj|gL(UDT)tOo7KZ`1#Bxu@O$lNyvh za866LZa!F(GbQc|${o{V+krPs754(>8$WQGDa^;Tj7nmy$^fZQh9{{53r`FK@t{=r zS-%0xF40XBrpTEGjFu1EEio%*K2Hiyk+6yPCz6WwoS063D9!~vc1!Re)M(&bK{!v* zRw$~8$nj%<5JL*l+;!@dYd{8Iuo~O{$#~|SbP)`29DN+;s(H`PkSy6g2#bi1%d<*{ zFIzejk{s}Chm+gW8LUaTi+&U=5UsrIv;}QDbKSk?dj4p}t^eS_%WOHPKm|~hPj%g!3HbsE${LQ-8Ot_Q z1K7u4dG)3R30w8+I5E-z?hT^j4>N_!M~)CfU;0&j!bN7j1vK67Js~G{c2&n}Vyss244>_QX@sI9 zuHzh9fcJVZt^Wy3f!}j_F7#OD64^xr$5J#=U5#{e^nJXTWXchm;82;{rdV_?@KkvB zSNrKxC%Sl!8Vv_{KamyKh^tBnbXDmmrvN0BRjjjpRnz^tTvBqI8}D?!9|QS}6yyZp zh)jj&zB+?&q3lYW=iz#n^R+ktbbA(LthKwpcU=$7a2$WL2MZ;uAUzj8%QMLoijqo= zjOeXA-jAhb2bB%Kof(ch{1{uoYmkS?tQwcGjvw1o%W zluc?<=2$Wp`C*1@;P4>g_&i>mwlL+47^pE_Mve%yiO3kc7tte<&T$*NVmp zTibW8JkStxy!@t&EHU`%ObcE?@$Cv?K_v8N5VI9P(f%q80$&>WZCwiN!yBTyx<3iy zOx)#LE6TK9|H6@kSSR< zDUoiK{>KF@@7z8YR>;hr$Cxn1lOCK|o>chN4#ry+u~84?D3 z1Je0YnbCK>T4aqTctV~}APs}%qQWHzovUrv1&tIRk0%enI9v>b2_sYaIWHI+Z;7~b zMiF0Df`K_2&bu!p3Wr-gtP(Y*h#dd}?HbeX@XzJm$u&+O&*ksDfABluvg;0;_gW4I zav$&Zc#p(It7_5czRk4qQfa8A_9&3%#89=_y2vK0wTL+h7oZh}`Et(PfvqKc(&Ozp zg5^H&!0Ds2akc0s#^^5M4Qle9RD%de|A0E}1xJuM56}Gh!}0KasPtA^5YXlA4FXDM zo)wIF3mN{jbbDR+TUnITI>e>}gkG_Ev{Smw8-LQk z6YtG2%pzwvCYQj>9h{h?L!((UrzkeoCLx%bIXyt#9qnN7>9D4E+FQod8`AE38{hHr zba;*&ro68cl!qVH>oK0Dd?yS8kGz^XKjLnU4S5Xt)T(M8bGxPegORg$=e^4 z^dZ~})brq8D^|XkdD}68@bL4);Is3M_)r(!s;18}qF8L(Xkdx zr#_sSNMFh$=7MZm1OU<-;Sd zK?s774Y%?z{)O!YXAf4TnhysvZZxRj2dg$@}f{%@n?2xKT+SAngLPJrm1M|QjoMV>?mF_K%Xc0WcLuuyo()y0uzk`Bb?euCMH!*^hE zhpGq17$rds*RB=w72bl1F0y#d4R&mDZXD`+nzyf3L<8(+3i_^Ep*UB$^t56_jDicZ+87!2DbewTj5*u6b zhz5~cO9Keo#`o#+WIR}YD16IBTnrO@#j&oXu@@zjju|hX=CY4G`qh68p&?S9cF@b= z3F*U@|3S<>EmWaDhF0Izqn-5o2c+rE33~LI%5JpwJge+d_|jrJmP#FrR=OcvXt5Ou zBAm(=_y!DrW=7T!{>lC#1O4)7dG$F~4QV{nuWbM(mh7S<#cNM!TDIcgn+sfW9w5gH z6|cYiekOC2Rr7tCqz(FmbtrS=jMOe@gtwVi4vhVCu9b^w+rGC$n_#~MSt4NS15c~}5Ckv@>crl#VkN8?Hgr$zP>sj2I1DSp{hW`qNY^y?1f{=98lI#AOyGhR4+ zQ2^TA^27Q*ucF=HJp;tmEZ#vv)D(F6<2j+5}ZwvqdqC?k+_I6$IZ-kG!O~cz>>f z^5aSl`vbHHdU9!8Cr+AQ;7PU#)Q&;o6sk;42u_LSlN!?Jo{h4>(QAr^2*Qb07&Nw+Pc&eJe0Ms0deMV8D6Dca|m=l#A%DeO2vu|Ys82M~Ii zu-BZ+3EG4SScff-u5oyICA%@r)miZkRk=hnhx^sa)C(&W-(;vVXU#uA0*!oBJb9(mQn9q_JwigPKtP5PR}Tc_ee5iz>7am1rt zOh_h5FY{+)z|iP4!#vv*M^manx+tXG1~1ms$#13x%tTz_d9o|KLCNg7r(t{arVrZ*n5uE zn^b>*Q-B|IFx2W7?~`^G)Yadaug(KO=Oj3po0kw;8whVe{8UgW2S^at2eOv%^U8c> zz|%KhUOa)%bLKhHgfOmVSPe@s0Aq#eH@%o+=qA~#`qZg{`z zbtP@{Rw|w>mEjO^%ihgmzEUjsrNn)yzTwHH=?qf%i06x^(l(56ck9RYjW^$y6748Y zSp!`32j4z>&*?u4ZUBaCKLm+fo(ZG(^Is|U;#kzdEe+sQwoYgvd-OoAZupGgvYsa( zeO9~hqVMK=ezOeaJiCQ}`R^}RK9pI5d`E9Z!pexd3v?X8nvE(Q)sI<4n#-P0F06)6 zh{cJqdeF3AzJxi7`dnrQyzZ(_D|Oq&1u)kOEw!JB6j!_}N}%J^AFig-^&U$F1?e^ zwr=k2T+i<>iXdo{9t+iHD}J4fy)8}t{&N4tSu5j~r}9=ggQt@UbwXNyWqhPFektKsDr}is#gj*2QwGC1Ly@{W z-J{1qQ-;8d?SOiU2@W_)p(nJ|1xk_F0@5t6>9|ALJB-fiqV1q9MAn!JyV;D+hqiwo}VW(|`};=VKaBznRx6 zVL^%hONb&6!P!@Dwm4$i=I!T-C=|=vn{H2cKUC+g%u3`Sj9(SK;(WwGRCJ@f)pJ~l zzRp++N2o*y7ifx4rc>m&mA+B}(_XeJ&uqyFvx;_2qFpZejoEK~-P3iZgYTtxi%owr zFvPfzivTWXXa*N$P3ck{F2gZBy=6w8yH{4^wZn_H#bL28Ilt2#`m~kjPY)C|=k_3z zo;x2Ti9j$$fhE`5N=rT@{Of|laG70y6sU5F3Yo^$(^54Ak=P6SA%CVcU0u@`JH zeMsuDVT6e&jP7W-c$9=)M=lmJ~6lpQ#2C zDNMAD&guC>IfX8F}ah_|OJ81n0G&-cJ0U{d-DXZ7!=_&9qWus>|i z@+^Y-vCg1=aO{&_lOXStK3L+eI|HXH%m7hE5plun=jM46{J_#xt@Q1~KJ|3fSL zB1-&|NcH_6;U5Ms<=q#N_8LT!?=fQU7oBaf&Da zk%s6m_3ywW1dxCK5>p}phSyW1|$U$ScQn2vIRgy(E6+V_bx5C|D!zD z0ReG#@w72>X7sSN`Tqt)-6SqdbN2uNj~%u(klvar#mgTN;UCu`{1Nd$oZQjYu)384tx5dYBs4|Wl8+5i9m