From 2e142b56b75b876a6cf75129593fbb93f0313b75 Mon Sep 17 00:00:00 2001 From: ncgears <1918ncgears@gmail.com> Date: Tue, 23 Apr 2024 18:39:21 -0400 Subject: [PATCH] Initial commit --- README.md | 2 + app/.gitignore | 59 + app/build.gradle | 35 + app/libs/javacsv.jar | Bin 0 -> 30742 bytes app/proguard-rules.pro | 21 + app/src/main/AndroidManifest.xml | 41 + app/src/main/ic_launcher-web.png | Bin 0 -> 183841 bytes .../ncgears/scouting/AutonActivity.java | 525 ++++++ .../ncgears/scouting/MainActivity.java | 154 ++ .../example/ncgears/scouting/PitActivity.java | 980 +++++++++++ .../scouting/ScouterInitialsActivity.java | 105 ++ .../ncgears/scouting/SendDataActivity.java | 211 +++ .../ncgears/scouting/TeleopActivity.java | 1362 +++++++++++++++ .../scouting/customToast/CustomToast.java | 55 + .../ncgears/scouting/data/GetJasonData.java | 112 ++ .../ncgears/scouting/data/TeamsContract.java | 22 + .../ncgears/scouting/data/TeamsDbHelper.java | 129 ++ .../main/java/utils/FormatStringUtils.java | 23 + app/src/main/java/utils/PermissionUtils.java | 16 + app/src/main/java/utils/StringUtils.java | 7 + app/src/main/java/utils/ViewUtils.java | 15 + .../drawable-v24/ic_launcher_foreground.xml | 34 + app/src/main/res/drawable/custom_toast.xml | 26 + .../res/drawable/ic_launcher_background.xml | 74 + app/src/main/res/layout/activity_auton.xml | 516 ++++++ app/src/main/res/layout/activity_main.xml | 137 ++ app/src/main/res/layout/activity_pit.xml | 602 +++++++ .../res/layout/activity_scouter_initials.xml | 62 + .../main/res/layout/activity_send_data.xml | 63 + app/src/main/res/layout/activity_teleop.xml | 1463 +++++++++++++++++ app/src/main/res/layout/custom_toast.xml | 19 + app/src/main/res/menu/main_menu.xml | 6 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5635 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 8610 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3262 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 4720 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 9050 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 13641 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 17933 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 26857 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 29834 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 44517 bytes app/src/main/res/values/colors.xml | 9 + app/src/main/res/values/ids.xml | 4 + app/src/main/res/values/strings.xml | 399 +++++ app/src/main/res/values/styles.xml | 12 + app/src/main/res/xml/provider_paths.xml | 4 + build.gradle | 28 + dev instructions/Data Display.txt | 3 + dev instructions/Importing Teams.txt | 13 + dev instructions/Pulling scouting data.txt | 3 + gradle.properties | 23 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 234 +++ gradlew.bat | 89 + settings.gradle | 1 + 59 files changed, 7714 insertions(+) create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/libs/javacsv.jar create mode 100644 app/proguard-rules.pro create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/java/com/example/ncgears/scouting/AutonActivity.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/MainActivity.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/PitActivity.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/ScouterInitialsActivity.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/SendDataActivity.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/TeleopActivity.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/customToast/CustomToast.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/data/GetJasonData.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/data/TeamsContract.java create mode 100644 app/src/main/java/com/example/ncgears/scouting/data/TeamsDbHelper.java create mode 100644 app/src/main/java/utils/FormatStringUtils.java create mode 100644 app/src/main/java/utils/PermissionUtils.java create mode 100644 app/src/main/java/utils/StringUtils.java create mode 100644 app/src/main/java/utils/ViewUtils.java create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/custom_toast.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/layout/activity_auton.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_pit.xml create mode 100644 app/src/main/res/layout/activity_scouter_initials.xml create mode 100644 app/src/main/res/layout/activity_send_data.xml create mode 100644 app/src/main/res/layout/activity_teleop.xml create mode 100644 app/src/main/res/layout/custom_toast.xml create mode 100644 app/src/main/res/menu/main_menu.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/ids.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/xml/provider_paths.xml create mode 100644 build.gradle create mode 100644 dev instructions/Data Display.txt create mode 100644 dev instructions/Importing Teams.txt create mode 100644 dev instructions/Pulling scouting data.txt create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/README.md b/README.md new file mode 100644 index 0000000..21c2028 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# ScoutingBase +Base Project for NC GEARS Scouting app diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..be55868 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,59 @@ +#built application files +*.apk +*.ap_ + +# files for the dex VM +*.dex + +# Java class files +*.class + +# generated files +bin/ +gen/ + +# Local configuration file (sdk path, etc) +local.properties + +# Windows thumbnail db +Thumbs.db + +# OSX files +.DS_Store + +# Android Studio +*.iml +.idea +#.idea/workspace.xml - remove # and delete .idea if it better suit your needs. +.gradle +build/ +.navigation +captures/ +output.json + +#NDK +obj/ +.externalNativeBuild +Since Android Studio 2.2 and up to 3.0, new projects are created with this gitignore file: + +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild +Deprecated - for older project format, add this section to your gitignore file: + + +/*/out +/*/*/build +/*/*/production +*.iws +*.ipr +*~ +*.swp + +Settings.java \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..4b5e6a2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,35 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 26 + defaultConfig { + applicationId "com.example.vande.scouting2018" + minSdkVersion 17 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + namespace 'com.example.ncgears.scouting' +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + implementation 'com.android.support:appcompat-v7:26.1.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.jakewharton:butterknife:8.7.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0' + implementation 'com.android.support:design:26.1.0' + testImplementation 'junit:junit:4.12' + implementation files('libs/javacsv.jar') + +} diff --git a/app/libs/javacsv.jar b/app/libs/javacsv.jar new file mode 100644 index 0000000000000000000000000000000000000000..84e33533aea4554d833aaf7ebba525f261fd66a8 GIT binary patch literal 30742 zcmb5VW3VVex-GbE+xu+Wwr$(CZQJJAwr$(CZ5wCL>AoFvr{~@Grl%q@tMbS9Wksx2 zS(RU{B`*aG0tN7o!`d#H<)0V->OcT+0F3Nx=v0&;0f4KRB1Ezn_N83hp#cCv&VT^` z{@Ka@-_c#F#oYhTXt;kx8#%c;niv?HIQ~~2BF23wy1(sz$b<4X90K4Ud0vY)`}_a_ z0HlBb0I2?#JVH*civP?=EdI}vlenGr-~6;j)&@>a|Ge3MO!ANR|C+=_VN-IDAAx6a zr6{Ie_43=dJP$GYt>R5zK&uRjGVra*CXF?*B(X?@Z!%0#{toyH%ubJRMpQxmgVD_N zb!sXjqcrYQ3_wd=f*=ACm_nM;PBOy+mkI2nN7vM4>QbHX43wf`0Uly~av{YWdJ|Q5 znitk*w9*E-De=kDActQ>&~LtSBCC6oXg)ssZrCm))(Tx%o)2Y}lAwx9z&43qqkvT2$l1tl;V)%3;I$9ku5A#t^nv!`3OmF~Sy~Y#w`Kb;f zNFrPM`}VHGyQHe1ptnj4!%iVD+8YW*k2+9MQG=MIO)xdwnDG+5f;6{6>NSKIcsS7r zyIr*#zbZOI6lb{BJsi>s@CR+j9Ov9^!H`0Wk+-|~thfc8xK-_#rCs{sPWu?f&j@|2 zh-lEd#8iFN8reU%^4}QOU_6tE{l)m;Z=?A?V6151rf6bh=V&bGVru#yp)5ZsIVg|7 zlhh=ET_|%|Sgq=yP$x=%uyQcqFHcUXvehQJs3l{8EWYpo8tEGwMHv1D=o@F{U@O3; zNSnX)RcDDA*ob1q7ZwTaggye{}fLJ_;oLD|8 z>s%*(2_9m(1wRIdFJoxnGGfgkNx}>bm!TXpSin=djOC=kwH6YS?E+FTA2;~Gn)@R1 zZQ>HH-B4Tfa1FgQKsxo0@F%d{L58}&g&`sfGN&Wy1HH2~lIuxyg|J5oYp43Y z-mrB@e)x8N8ZjY(x??=k(}31#7Z-xBq&)V5gU1Yv^&==tPc>9x4LhL)Oda*PTPkvv zt|7JkO7H-D*_xM9{5RAv?ZT>;E7Y=T=~&kk3YrllCchWIu9vWcm!O81sYwDC)a%MS zTY82FrV2UVzoTVn>k>i@0|2m#2>^imKcS`OXyN>ypi`^{?VYrY`m;+XkreurqF6U4 z=q@2)9+meTkcSY71|<@y4;m8hOB29c?(wVV)LUjfd(kFV7BFPo+j^0rx)B*)DH|?_ z^VFI5)X7PS&80`b;paV()FQL&^IDAKwevLh^k>WKX4*(^s}a1EVST(~Mxj|IhfRm*Pm4zzuSprbtcrBY4YZuvYjTkL%;!ir^J$o#==c`=)gt z5YcNca(8XNzgZ9u>7g#Zo0Z#e(9XtvDRfl$*v-)Dw>dYhp4`~#Z3wr;u#ziIP|kp_ zCc9sJty$GuA?obL9T`__+ORLT+3=(56tdd)TcdaPFFm@6Rb49Gh65AO(QyTyg^E$b z0C}_I#S(e(IQO6)bLBYA`^doNj3`gxm4SP8H|`azsIwm0kjRtgo|v8w{x)9;VuZ-* za1e4Iv6osK{z0;H!9&dYL9bZz_<#BgDw9ees6R7LqxN*tuPiye1nv>VNe z&%uNj4^R3zl9jXV-Wl|W3x*H{NG*a7sfUa1hy+&LdjSocjVpM!<fwd z(t)h>jOrmI2v9>nJ$n0=of`Q)_|U=!g`KsFoW>%D=Ymv^n99@UZ0^=}2RtDgMe>JG zq4{(=6s;TR5f|jvLPDgB1E*7W^cL1x3myeD7AziB?s^*nnt`op&~uDMz%{2DpY?4@&r3S4OmnG3AxJ=qnYbkJY zbuGrrZq-6g&X$ZYT^N_8?-Ma`hnQF0MV2Jy2|`>%o#>?~+NF0~jHf5KSw)XD z6G8-emU#1KghLMXNC0OTCT*wMLz5WBg~9v`g) zVx@cF%qHZ~ypRFSVMim@zx=Px50)sZkuAW#)~@=HvXA-{n>g!W$hhjX$Dpzc=-@**a-z2YJ zSv#sx%SAvQ-eqJBetN1xs%8?0CJGHG-_=J+O6(xfJP{q3C>vR7Dnccowlm8|EuWQ7 zStxEyx;)}_GS#O3j=vbX@Vt_3eJF=56i_H zON=w8sXk)tkl_>oUW{;I$U6-YRAsn-9ES74guOX9g?@`+4l1C@uxH-bn7t6=AjMOm z1GS@ zXIIKs#uT2T>6VEoWsit#yCWeNX;6|I-WDTuJnwxI+VK`&hdYP$&2acJuL^ttiOxU#4o$c|(g)5n2X^^yTdx;Av!5 zZJ_AxiJ!&jVU}D74@FNV9hpp0@S>iQ*N`KIaux~)R=LzR0Zirel>OC7;w^cM`?Kc^ z&xVdj9X6ug+RkH!@YE;k<>a!4(osm9j~qExXDsPdQ^hqlbx!14v=7Od)QTrL7?%vZ z8zM7`1`=Z$U`H+bVpvi06x0G{XqFA= z!ZvA^AC}Yo&>Yt43y3~{Ob}B}qRNNHI>mJfK0Wc7Zr-A4l0 z@ikHg%fJQ+amW`)(hH^-7Eq2Vs{{}&L*P_W-p6M~cTdEqEh%>uU)&{BoYp3tODZub z*K-Q0l!LK|PAeZS*IQ<0PS+kTakGf!$bIB-D)7`~E;U-_s}`YI4XQ-7sM9Q~mYHl| zxkS3=a;kI+S1;Krlv=@4^tQ;IZzNR+d1-()tuA{W7C07m8NUHWD}OTd7F3Ai@>dgP z6!8LURK5;&;%8016qYw2rOEG1J^FMxjIa^Uu>bw|a`>pW4d^DQq$p!j$YX_7>}D?Z zlxQe)2j39FT49I~(g(<0qZ?d|+JZ%Pz4s(5L>I%V^=JMFdsqnN3_JTR_C)vV0^KmW zBb-7f8q9^lw0x35O~=4^c2r!bKX31?kOp%L>x3ljNqAN_`t@o((sJ?2ayA!R!&~n8 ziL%7AUgDbbt)~-RthhTa(YLflD8B>G#FC1VBUXh?KXAjqy=l-HU~uV_oXzCDo0}|G z%%Pk@6nIn7N*L1PVUG(tKzfG>^4k_Cw%b)tLPo({C}RUZp{QCFHdSNmb^e3Zdv;BrtJ4%GXZc-J6kSC8mT*M9@N(i3O+ z0&=Oc)S=DOw9lv8L;mFpHK*%0sp*#K)Xkdpk#62F`gl8Iv4b`e9T`jL^PPg_%^-Dz zsX8ZCsWs3umW$r0fNzqB&t~`#h>Bw3 z0ch6Upq?*?Z#JS-n8UB@r&rqV?opoyUdiP!?i_pvXun8@3!~`Mos21DP8FYoE&0@i zf_7EjZzzlX3S|aU$zb4in*_4Edz%>!pL8!hPPRjzk_>}oYVt+v^R5Metov>h?ZYH{ z)HaO)4UId?;W~2?m;+1gq-4M3jV%Rr8d&$1tR*V9q88++Plh<1mV1n-@_hen8+$d) zE!3~8;V<3nx`G8pl~5?B=gd%`*3yDJbTZa-H(c)(1SYH&i06WH*VpTEZ>+b8VAiw% z_x(An{iPG5CRd;lbD8uqnm%V6g4mTzhwK&z=w=f2e41g44Mw6{%5=C1$UXS9q2Gq! zKfH@MADBgReDqyk@pL}x$XLi)eR?ujeuy-Cb_CbG|Got&=bT|{{kvK0_*)d9{NHau zh*g|S9Ffnkd%O=_Z`@SA_;*2Bs$A| z^(L;qIGyRn_FJ>JxwQ8k@LPVgQ)UbSaTaN>(;u=^&hN+9RXc#$dZWR9CGgjJ@f{?C zj59gyXe}6I^an4GjW{Hi@*-1xf}l6$vCjQkm=~^$GUb$_ZYIpr4mT>p z5Rc4>Dr5T{bcZJy-!ZQR6g-9|I49gmt?iKsE0rcU%#+wdZrB6EJd>p)PKc;}beZoL z>4lyNWsknPIn0da_l$hZm7p%8l<~OlCaPzVB^l`ejB8CThNUDSE|wWp@` z8T*|wEBi;l&OfT4CqE#s!;&GPyH#^f!>%D-zJ&wnbgES9D7a)cKV@7ztlD9)cj$HR zQtn@Kk8J8kUh0RRckfytUwzUV^y@fsd)Sxhmf+ZHAV1*$P7Nq2By7&Vv`GG2 zmiiy5@vnN(|4(WpYRMrhAdLQ$?v>L>brQA`qK8z}{Sq01M)%O5Ps|gI%zSfIhqJHi zv~g_};SI+h3L6;$-|gDphBwZpz%~*eBklc}%I0t~CG~nbz2*XFY|9eBJJeW9*Pk?y zW-P&2#aN6+G75FbVVG>|PdD0#J24nIZNT%tQ1bx~p95)DIf z0(H#FzyE!mp)SU9tWfYxyg>HANY!EJElI%Do8N8O_N_;Jt?Hu(Ue6D%BaANs|?Yyxq2`Wn}t<#g^+|Mqi<*uDCn@%RE8VX+)ZoxXjLW;f90D7*S4Y>N~Gb~ zlIQ7(XHfQLxA@#=Sssn{ATdONT9ZAD7W#DFCO@oNR}{bVI~vHy-w2)F+#tN#U<9IL zK^=)acR@P=4L#KbCrdwVML)-WHIP5dRzxJ>gv3FqI1m&xF%=v+h9a&-3IGz#WA$z8phv8k*eqn zcqMzBH24vWqO?1LbrjF0AZMBh=6p>_rYNU{bcXXq9T}6g(R-=C4kIUe>v9D-EdqKB z@PUW%0od_@sNg-v|IcK^uMzcYsLd+3Ksz2o%erJJNYkm{(rAkQ|yq=TFWV~z7l^HUR$f#6<9YT z#03w=B(6Z{0Y_yGO`PhI5X_vAkWk(?(Gp1VN$S_r_$?^p1vRX(48{Ab0ZZK>gOO4j zoU;Nl7A(#=K{ZYDq%F>+OPic;e15F%TS3mxGn_n~|M=W)yX|)0(%$xbK3&WG_J9LG z+Ybj?EjaKuoifXtP|x#6h4zpi>KoV3jvj_$cYbomBqPte08WcWMkQYWPr{IHIYhB7 zolr0Em-1v8^hAJi|6Y3ATX8ng~`GNx`j+72}(9EVF~oL$<7^F*Ic zcL;<@g<8fx9ILWL+jK~1JFD0iga=OH(1JUwP=__E625K-cDjD=ZEIz$UC`&DJ{iPW zqBEh78FUPDf$5G}rC*oWPsvqt;tCrC243Ehnx@y+Eee`tkNdhp)donH>`(|Kvo;kZ zBi)?QkH%%2;*b?h17&@{gSPJqo}uE83**YTF0!>btj`8dXS!!p7Z&hapfU)jZX3wm z2p^sWbMtDgMjspuL)&n)+ZAS`eleB+l$lkNDHJt57BRI$YDCH;niAnSLyDn99|sxg zX7F2jZFtLVy?!$`tsX3`kyh<)Dn(jop{C(*nNgSMuo)s`+Ch(d&u-=5p1+JIG>erM^YN1qOVIZhio{UXp~CcP#GZB6Q0uH3CWM+T zidUIHT`Oqd2B#j`JlbWWfL>X5qUxNhxvq@y6`X-Wq9dE9jr6j;j68gI^Wl{Afc z&eiRmh><3aLB$NKup+E>v6@|kHDmoNso}kSY0U`~4aOPFkOs?^>_v0Ql2CezlIsRU zm(dS7^zn{E35i7x(Z%L(ZDzJp!XzQfwV`@wnUFSNULj&6$|s8nvX>b>nf4#!Z4sRSE7gPLK1T1dQfy>yoBs@{-+b$6^Jetl)c5?Cbpw7(SURmCV3~1$MsnOtL zmQ#G(XBnBI|JJau7W#1a%~g$RsQtJSIoxb+ zTSbo`E7%xume!m&RZNbJGs$X9wL1-=q?ziICI6j812KZQTw@Wa_E?iV#a~5_Sa8tTl}1+h%yR*T33}M&qez>p-U_1G zQinrP3^)bGTFcSH5)%H2*#?;+#S(g>SiaAyNWG&$i11diRp@d9MK}Nb`A{fK(gKdG zz}H5_|53+af*4x818VTD9;$V~hSD3nbt`&gss9J;YNPH(!LbRt$!PWiT8(A zbsz8S9fly|wHB(|o=zvW)Z@D1j)lEwz{ef~Q2ETrWQM!iOC{uU9}qRRZ<`XwTjaKj>BZX@p+p(%7*PIR!*g8bGJ|FkN3Igh@u5%l;cB z=SDTASGuukF)!j=B_ejMeWg3HZvwMxYiM(Ne5nhl;XNp&FJw>Q!StM5!17#|@1KL= z(`+_B0-X#>Urf7wn>c!Q5i-v1*XTs1$`ZO?(&LUv=R1ahX_#F_2i3+FT`~P?V|?yh zK|$PIL0)>tJ2`jcf+CtNsT0jNvXoRBHM24y(s|1?6PSwUw7PC=L0)64=EXz-Ja@s- z-IO~~dP?^QJ7k9jsGoaA9n*~7IFVM@A8>v(2jAibPv~#TA-jEH5Q~dmdzmazhor~h zavj=9D|0zU7(j7%FR_g7@j(x-UGrh_%zo)%Ka*nbv(b}68X30NPq--PMgJx&x2o1$NRQhuwk5^cdp`Mct zKM8Khlt|LXhEe3%iw_&TQG7mVN$5o)Ox>AWldAIlny~C0(J~|}Dww!FeJ#m~^lPOX zBUqKmFG~PAK+>S6?5^H*g0xAPv9E!#^qrTT6-oDOJCPnKc|AYUUZ&E~Eu=CFUU$29fZ;T&CA4LR9pGnY2d z(yy@`RjqKWV4TKR38BmwE^)GED37hdeoO>S$gT)rtnI#0*S;h+dMi-SYvsc^7risi zte+qrL!Fzfe?yRb6XA$K@I^hePgWh=D1~6G zv}fWwkbu0%7x6Vmh(5MFif8yROdlv;CpwoMB+32T7)*(Kg&=*R8wso!W`aAGApOLF za@YS{XwP&B6UJ1z3ksCXz*OqK3X%PB>FdaxHBNRQJ2euK96z+ZoBom5T~k(2WD;VE zDwhuin(~aQhL|2kg{bZ>xiqjDE4XWcK>a9V7HfX&d#kZ2>)>#JSq`}?0S69&ENKc9 zT$!JM+P_>LbkP8DD$uFi4UakiOC7j*4n&HAJ$2Al9kzN70I&@}FgT{)^DGd0Uox{B zj&*RlE=8~;B#>AjpgwNP2b1H)(Q$Fv9;znb_aLABYa%?)KwPOapCHHn8z14al7go93M9K1$c#a=d|5F9s=V`& zl69=^PglJ!TD2)wXXyZk9Z1ErRh+-{J%{HtGzdqiD|Un4+h}aQ6Ne=`T#+)4dIq@` z&Q%a&pxht6;eLSOeh0>L1l(%_tQh%Q3&&xmfm>PrmrjwlZxNK(ya7G7mUV@w=~&MU zoaadOdl@4U(6u2%Izp}7RYe9rkQut^hC3O>2XMpv$q_+#8slEH3uuXrcOrQs-B&o2 zzRq9|P+gXl_HvPWk%q@#)E?Z;gmQbkL~mH$lX<*JZS?ryN@+0tNR9sReX?!d^@Rb%^t`8TbP6P1E*Sq1p5F|DI3DH@j{YWhAGn#|u3` z+B6_qu0|-AMZb_SYc`w#cIP5@2bazp^`+>3<~URbAS-hGl>YEdklIf<`QDPc+jXMs zTBy1+P;85%@0}viPtoXO2(&vzshgnQBZhQOrN1qr&di{mnA+kH>w)fN6fcDa2G~{( zqL-PE%?R%myIa-ZVX;6^&C>XZ-}Ab|4=vpwPkR_aU(jh0)tkSg%ozYQV%gS=0ozbC zV2CHvw;AT2@KTCk*xS?}cFRZb1C{m0m%IZm8-h>LbuQ^Dn}7X%*HgbLBuctF6nze6 zJqM~y4-s>HVjO^{i~K-#~CS8^Xx^P4d${HFTU=l zmQNyV)w+Wc&`%EU4H)I{r%(8cXsVAd0Guzx>0H*TphZKle%-rnCjJLTe6i6Y3BL%Y zd5T`S+@OqckkNLV+C(BtpR<63(tw1kED^Xwa)KQB3yhcft%iZHH26JLT~tqWCew2o^ zkfh}}dj7aPzP*>Ch2)}007L8=&2oMHJ*dtFqUGFW>6i4ig0Hdub4hU=H8arWXG-VO zf|R}+2D2F*gQ7>A3=Km~3@^5)WE*p%V|!|Ev@w-umxRx?Z&z^^KdEuF;k{X`$bOt(^rE{T%sd}wn=c$zGpys~EE_6daZ-t2 zXCecC{9AcufaX0W4^i*}*|=pp&$><=Dhiw?4yh4y4C0vdoMSz*8_sZ=RVGz=FIy!No1GWP@vz<~;pMrKqkp}`Gihll?Z&K+Tft|a9Z|6w-A4h1F4%ef844$Tkx z;e{xYUxb+=fq7wsApOxi<0fe+X%i)V^=+u!P0hDY=#g02I9XP)7Ozw%OP#|`GsYvV zJV#ZvE4et7sjx$a`K{^9-2=hx_{NWoOU13w4`xaiLSa$^a@dGJo1ufW{a%D_Ty%pRUYg;xSGZfJ=+&SU;Z`(r)qv;r=?kT;95Ze;JG!-aTAo`K-1Sw< z9ji~4kHN`0ZBY2LV^V$@hL+icoh0g8qA@W$>E04*nqu9^NbEr(+&iG*eYUU^X+3Kyl`m^1X@wT`hhWLTC_$1yA$>ukc8A8f& zie0_BH=lcyHZ{m6b+XTvExqHNCnqK$xRwZ9OC*l;!t-Jx4e08N(097CRtnR$ ztn_KYm$4?o>82vh&!EYQ-X&3~hZvZM#Vr2H1*SbtX-6{RLgcxh=ySZ%aDi4E0$wmp zw{cz)eYc6S;X12izfJYZUo{GRf3WY_3x+4ARk+BIVI3jX#@9K+VlxW0nODOjQWD&u zpZvnzz45u-JIPl<2fFWZEFZITS{GO>k*ZrM`Lxm~LWC z*sT=!-spnNUC$HATeUM&pfmJ|RI6dVGj=Z3b}Y*Rt~%XzL}hWOeYG<@Sg~%j)a!xD z0s;50?J&K>*gb)Ba=b*m0U|{{UP7MO(PE>wswd(ea@akq1%w`2*h8%a$ghwm<{p}y zf!Ctb`@)~f#fzXy@JbV9mer07s5X1omfk-HX03qeC z2?u+7$^x9dv82ML+vrkXXuV0?Wx)KjA8N|Es6pp>pY2e1fc*z_OG#bRaso%#29O8HhYU6%~g73Vv zDPs4!9x(XH_y>~j41ZL71LMZz9J;??e#ev9Cviv2PAI(cqmO7y`u%2zMX_IkS{3U`Q9% zr^_BP1eF+}P4`8a!=21~UkO3e|Gud6N82Z9!uedVyb{~23&*Mt&U66ij!9cEz>ySl zCgzSjcE+jATXaVyJ8aGlMCC@cJ8EZ-xvUFCKa}o)H@h!n&%(B+wHx->3VwVC*cl0P z0Q^0~l@jAZ35Z^SqFwah5J5RoYzafFl+vaxGXlOe-6l!Xw`_^YTcx^(^^Cz=fHx|p z!c(IncVJ{mRHHPz=lP7oo1f_rv=N5AoYf|QJ7~5H|K{d`_FJv`tpIdQpTV}?`m1yq zxm9EMt$_ujRg1_Wj0G#J3d*|0wohk;*}C5J0M81p$6!13vs&b>#04I&DfN)xl7QQ~ zdXQ)(>8<7&1+Ou;AHEvwYt6F%aE0J&3XI!;irZq-eL{AC?h3)z!fa2?6+>>b{VgUZ zZg(T(O|KKAw-J2*^#$RppLQ7kTETs!2Wxi22;!=q_)0SI1w_ybDuE|#Emth!#T9Bp z2BpDGv7$R_;fg2O;fuUgX_Qy+{RNV;PEH}=n{kkhkVO$w=0uJM^G170jYG>KiW!}Z3*17?j6&v3c7evstny`c z={lgmBM@K*2SUMn0K_&@S>7hF+}uH5WfSw9;A_X|yJ)&j@*n6W2!ajg$OHAe%sW4T zb0I;2Qa#t(9Sz9*r(Yt&XLvhwbWn%s8lfBvDzA_c*?Mx5$+-ay3w3KCB8}YPJV}bq%vMDW41*8v zU@dxP?MdnH6;!+)OzA|n0O&k+oLWzLth&*5k8K034n2oj-{SNFI;|uJr?t;N_YHTEdx1#n zK%%e>1lU?_Jw3NO?w)rlZgvzG0ei&b2t1u%;mWLnFQ)gRnG~AJhP_m5gYm$8#u;DF z1PInJqNp=vH^Bt+#!%mDX7pSDN2R+VsQL?3;>9cX89gyV7qG~So8@IM^CI!WI4ikALqN-<*?Dm^-hIbURzQq2A9KNf;P| zZ_)F*>LF5OpmbtsEx?9zqv+Po$}iJ8T2TgoT|%{nNw>jxUJ!JHO5gG`c0+fc^N<(3 z?kj!(h|Y;|u6x3hE;^Kz$QhvJ__sf`gDW3+j4`ku?*+>)a&E%W#J=VYYvXH9LA1vG zE#16_0Em9Th0h2=_$ zsFco;7U`Oi8ywD65d+H_G^jh2#YejSG}%09Dcp7}w)k_|tX!y+=aA(hWIdUcKQxJr zk+e$pz@`>&tGh-p*82#G`wEhAiV;!I+PWcbIx;b#`8!`jZt&~{$IX3}`vo3dRukPt zP7`({v(bwv+L2BGtnY)zU245im^2B zk;8Nq<78nB_hwP=I_}!1TM5@0(zdo~b7HWa!O7R(+D`6+e!pg~&*U0|<09{1FH zT`KgGMhTtuv7mcc)E+s!f2{|-_pHz!3_LQc9xal4F!?EiA&wqdg?o0{$-N=1975}z zumiYS#HV|tdcV>zRxWAo!MP#wYB*T#zNRKC`)U4`cdLBgX`UR_6B_z?lst-W<)APb zHutJ-{N~YnSXS5Z3!1c5L$9Aj^7_=_cd_%bMaRgNO~J~!VC^(Qby%)0wWD>U2uZKlEAaAwtipJXy+ax#`Y0(*YrsJXzLEjA-fi{84UMQoZ%u)q zlJFi^Gf_Kqs1vUA=`ej#8b9tXu#^WT^Ied=zgjmP;jVbx&MCfNluU zdhmnzl-lfEPluF8<|^Q$r})8#Y|S0_*TH@H0?M|egcpO2^*o%qwni5|(6CpYBluUn zfNR?z^WnOCqifi#5Myr{n;5XLdlZ}EJQO1I#(~MXzz2g>hg#eOQ^OnxjgPCe6R`TJ zKQg+NXHfC+^}>TD|9$VTfLF^yPuzt!*s=Yf8f}xKlWSL^4>kfjmRoHul#Ky*J04_!~`#tn5;8l z@p)vP3bGHxwJ%7JHzl6=*``1_%iBi|lt=Wr-@Ty;U$EMvyB9@I;B5hZf#cqyS+gA1 z37Y%1e?U{I0O2VhHMV@=GOy^CVx~oDquNbJvVoCL6298BCD}NN3u{OIsNCQDs?ht(FSQ z6w1H9Y$n3O<2qfaDWa6lBfhd6!RY;A? zsK*ox&MFD%zR7CVd_uXL)Akh9IA)$RMr)GpDy_7kg@ycbz^Xe%u|0m|SnIfs-;Wd6}u z%+0J>T3T^VDXC=ffjIgB{P$nP7Z&{KA%C?kQGZ1YB>x9(i}YVzi;3fZBx{+J9gs%| z{ZWdC0y_8(4GfGlA8K1pUn&$eY9~i$vxUkvhfOV_=}Ln(Iv4=I%a3N#Nw-~lnqp%* zFOVL+KG9KFNMcFZ(Xqt<$Mb4ly(f>#@lkbHYM~2U^hFV&MoA zkp5%nHB1zM+Q{Z!`P7wASw(iNTEymQZ==^vw&ZNd)#67QPZM*!aT#BS!%Y!jvFNI7 z^R}X5J9+U!kz@`RYAdI+4s-q^6;``4CTR#-DN&VQWF+^C?IfU}+?$gd@S9I^hdtKO zWcPtvB;BB0a@R4J>iMSf;{8Y>;#3o>FoOGxQG zp}UPXW}TA@w)cevpwy~;iRy>dq0njZ@dyO`Pl1&d85fDyRX1Wk=;$#K41WOplJB!i zkZdz$a$mcWm`;seW_N%00(K48gmJF;xVux%GYN>*5v-wDx1V*KAufeEa$jH22j7REypjTwV$|zQ!KC)fB%H~-C z+*F6Q2dE2nSC90o&(c3Mj{>6p!Z56^yU6KQ9{uBo=Bnp~eUB7vKLf&;7Uk?XPX^UnUt#16PB8 z`qXm%8tN+lS5w`#mW|UUE7G5;sW-k~JsF~wDC;*eW}b(WGA8S`KBujku1py%PC^Os z!=Z#Of3@bTC%wD0I}q`|L`E%2yM4uJ4C~i)xI5LU{kvz~aua69`GQ>dNf&P=rX={? zXUyw}8~qoFCM@Js39S{o|t4!>+9|0 zAvQyCI`;xALjjHCs56zwjH&mTXk;VEt& zO^OJ!lI-v%+Jk|6hKM>#0J!-Qgww1~tYxqY7~Vr50f2Oo`*+bx<`g5A1-%q$0eVL3 zLqYKkPYRwQr(n-PAD6!auzWbVdfBY()MD)MmfDH7vmHrmwSy1f)H9xwTvdLEOsgaY zTgk(PUhoD!fJQ?nV@tBjpM5*K`nr0dv2^fs_3~iMNnEVNW+Yub%-U=m-+q4!)!yCK z){~JF4VI=@K1mII&e%%FHfWvdt3aF%V&5-D+!;uALST*c&GQvZApIxNEi((Jn-uU4S&3l{;Kdyll8+tSe{0n-)4N`gx1t$_HY0(`H zIGa>sB=m^_zQ#93!YgSd@jkc{cZ^qHM>%jhWeTFGL zA^P~p%zjfLJ4W^}SQquZVytw)1>Oq9OpWYTh%#Qq&idA}wMT%ej&qtNYO$+){*xyp z)E<#u_HkbLkDhtUYkT%~J$6X&dj@|H6t`;n`1z;y5LWhY|EYega1q=w(T!{*4Fe>5 zSyFGBW5V7m?#pWRE-*EsR6OFwC(>F8P2!07IRqi(iGV>JFsX~;3=<7O0@`V#kw=MC zlu48`M^$+~T=%mg0BveJ^Yr>N_4Bd3MQ(BT;xtAag-~bWwap}PU1JFl0bC#eLN{Du z(BpwvoH;z&y|8ekHTArtp+I&o{!UYnHqFCr!2aYDb6?uBX?TnbUiRzn0KGx>kaOt7 zw_bXGH3}IFQq0-~2WD0~~<6-#~3MM$uQ8AVH{w*(Gg2@zgNT_9E(5 z%F_IvkDQ*(}^Z5)V-N5Wi#HabQ z4HTr}pP(+PwLg2;>MTC!cVxdf@9(jm(g@%U)gDRoTi&zi{OUp3_V~EWdKqQ1$;x*Q zn3p;_rs~I;+R3HCba|~yFM?HwK!@VJ4hsg1uzWuvbTZUUk8sLV zcnL=@@*s9!cO0~9H9F$6ze7z5zM}MhbO|IUEOwNUZ2W&91C?2l};UV0x4oO*ZW!yb6 zt7&f(Tdov25<6{K#}0Ksp^64ZyxLe`V8ODon`MA%gq6kXv=RQnR;-HGCJUzC#UGR= zMXZ?8Cq!EUUk^fQd}z=tnO@524*GV2LR~*LB(;wx>gdLHRyZT0`rH|{FSuDlMJaKJ z^LbhWf$R;qfSNo|`pEEV8qVgp2}3yzDBOiq<&w(9a6RZwBOL|`!lZ$G#)m*xwW!Ox z>Oj+j@JJwVjpq_7h4E>Qz1XU)KepV>UJDU2(OzKC4cWmrKThDNwUK#d8eM@RWl$NK z;)H2^yBbaHx0abi=FU!JY!Tic+!!U5`HB>c8POVDn)zYz{f!{+mkic*^89n39{==b z_y#>SaixHav~SJhw|0`Kvo+w6>dWfaS&vP4AHb|@1l5F75t3Ct?=j=@O`s};=Bx;;XEfuPi)*3 z3HXKid5q-)o$k#A30HM0ObA|n^z^8*qbgIP3xf7uju1rd1UrA<*h}*}!4b&_+Jb|Q zR7Q5kl@|bGgg!PGmy4J8M3q-6GH7vCpcEFNwFhco4NX(V;m)}sHR@Fo9 zu6A*%e@wN?MXTj$zH3=p(L7eiE=O>^6tR*XR{s=kE;y2=GImG;p!+ncU*9CAi7G83 z_gbYrF@JWzz;(tfS6#jcY+eVSkfAsZ)>yis7H8BzPw&kMh9=)qB)uoMdv7W8PI!-+ z=y*@sPg{h-I^O~P-M_VeRD*w@hx8Axb~oEr<_CVWL}j{P1VZ=QPCORx)gO4Rl})%5DlOq&$xP!B zrZ??Ptvzk6#G#F;gN(XvWW2wdgiFm0%{Da@2D)U<`86^pd)BGQC;ahyjaEIXT?(QxDg1fsD zG`N$?>F)cTOF$^P-Q}4!C>xUOih<&zDxe$&McWr zjj2tLR^(Pd$(zP}20(Evi1dx}2r;ygoD-bo*b_?w>%MMs8cb!=>ucY-!49_kt|d1W zXS{4aKf@u&6uYAfR_Lh=Pu+9vn+??U$(4O-RjH@XO#Cw4;@of8!qGn>zGoPA*;(j` zP~WXd4z05f_C>K&H%o0nP802`Jq`&1S@#7n#Aq-?di^IWq3rs^yt32MlTD8a;;@2) zBE1<*zCwoh99(D$cE4yVvgfn2qgyaDm!_*PZHr=Ds}j_()%+5TvFlNv1BxG1hL6kI zBt31ewiz_VPY3B4yr1o8UiQ`=T8P#@O|b}!_farOZjy!TRVaWStD7cUiXm;QyG9_! zCpvPzztbn;)hYuCcFh1c4T$&zoIO*m)f+_A_njuw!WVSh2ptJ*5LNF+nPY$-l?u%48`RFD= z=CQkrq9jg4o`sjhPh~nWwzP85dj^9ADo81iG@a3=2@xKiY%nS`VrEYwwY6N7SnvfW zT*|fXrizCUtmSz7WE#Q^mWtk#fJ#!s6##BBn9$m;FTET2*!11U-Y|)}x~+??Pk;VG z{XVC)OD8MqzkLevi{ge?y-Hd0VXg?{v{io~aE_dk(mxe9 z#8JQI!4eYg*ndJSrYRaAvhkTBDoX}+3m&lD{O#I2(<#LfPguZN z(6kY=_SOa(oSgthuz*l_n(KT@nio})QJOZ-Oi*-4 z7&|BmU(lkbI1xAaf%Neu;Q{eBSB%v9u%JW?IuUOxK*#Z13vQry0?J&|y@KH|ig!I@ zKvP*@8qtK54mgo4W1OjG4Lu57M4Qsnr`3xQbje1}vg}GeU7%qO8>Y&^x8DvOoZmxO z-9u2>Lqys`Uq68cW})$(Em>U{AO2^pjX#bNiXiytlt_Sphx~*kQohzZ6ciKI^sRBBT5HuGFRi#X zaK;?*CyU~t%8g%BL_iO%S#Tmnc9xPpck1cZb^%n8aq)ln_k)M4$?x-|*3=bmq9%SZ zaf{!mzM?hx?ut@`Nh?8d!u475UZ%f>^ux$7)x=T&#RV;W&Iu`X9+cwZY+hOX{tG_C+`HO3BXxLN0jqZ zk9BQWWFDFZM`+H&g}SmmM$%%biMkAy@e=8WuAX3Jm__XRgan=}bXx8r!cV*$Mjq{y zn`^pm!&j90Hl=l>1d10OuA?)4b;WuPo*Gg){wC~7_K>&^w77lF%*901JG5Rst`Vff zV5&R}o7f&77L`~f(!C(+wId}?0OPfs7~1}Y8`Y$K7^SiPA_mDHWYyA9j?CDC&!mB= z9PhbgP@D(UmA_w6e?vv^F}87$)gjExtlsMRd~*8z(A3rTatGFjz6iU0PgQF(%;bs` zVs^5PM`8rm^h3_##s{2^Am%>RHjg$6J_814XIX^C&!3mZw~%pb+57V1)~3F#e-G*4 z#!^{dvnR>$Gr3Aj_)`T2J0R1xP4LpWlwZ z7Bx!e>#8hr>;pG10m-n*=gwr&osmO7As1s%UTPhl z$L%T1?igBzB|iN{gl)_3rCfXmM315{y&het6g=~+iOp$kt-2y5K8;u*EIiZd5 zE$^yNjWogMM+ytsd4m*!vw_h2+t>o-SUFhMWFk0aXQZ)a(5sV_=rglKDgG&c z1%9*6u-Gun*>Dh%ZdVvSF^A0&7;Y?7Tj$7*VXVoS(sMMRD7R1t0fEU!$l1}VjJq-m zYfUnjXU~z1dhmVreoWX(z@(Q+1!4f+;f*s?RlB7e}ktip? zx4PBFJQdR;f@ohZ0*~Sr1HCXuK?S+sm;H(ix{-aJsktoH=UP+A=4cbT4WEK3&ARSJ z2mlMYGqu75+T2DRciwj5Jz3tsA6`4cV(;-1+`>NzQT-en-5B>9*dV~RUNxMN>$AIe9rA$X5M1!1Is~ zZ$FXx(0#%s^fOPD#6`G1>0)8$N3#DgAuzAN@MAfe8^^YfyY9)GY zO+!6nl9$s&Ba%h=?Q*VWDTh&@T_%fr7%@RsS@*|*zlzm ztexhiRqiwHx|9fOmz{h`mB6t&Rq6XnPCb4>c-WY{)i$b;6-4BLtQQjTg}z;Bq|YQ0 zK@R{{P|i6H73j(Zk4p%uftX$#Z2G}&#{qS$7=+ACrOD&9SRjQC_vIfzbJSYl7G4p_ zF(j=U7ND;LDsp<6vuQ}AYe%S_qnXu3jVwC{R6OY)8MCY51LiD%H7GzwI23ht50e_< zS*yqJ#w`~!+G_s|;ZEf=c_kzb=T(XTMGsbCvDJeyw+ z_&!~29H*hkp&fBGddCg#(fhX@tBJ&@v5FlH>jT9hb!vJUi2e9zbvh#fOut}KR~%}2 z*o$mxzJ2*1CV^R5SyRACY1wPQ$hEpb2(c7jP#sl1u;<00Oz7mkHr9@^X6$Maij!Zd zCG?3tud1`U5}yCPD%Z$4BBRaH{qh05!u{D1pL06R$QWTIl{E(WT`Kp74vyt8fS&mr zJ)x{8ci3_&>vw$UXQu&goczYUB*Xc;jYyn(S~}0PL%P;t>u;JU!o!0urIqv5`cxwy z?mY`6<8_yf@9(GYSEADq-%%yHel1N%+V@M!Gu2VyT%iA|tS&yjWp~680QtcZ{#+SD zcCtfDsB}$m9adf4g07iEL#c*kE}Kspf9TlgM(u$nSl*s@ul^}T%_HB4pdb1b2*aP1 z_wztvA@x^G_kqwMH=Z;*vjZ4alf=rrnFC#SdKJN_+U~}CHzhJM_kFt~XK)?1hf`jS z-LO1MoutGE1@q8hXg#;GH;pgA1Db2xExLs=(AI`JVJKk zje&2ZZS;?wSmF)zG6RclQQS_ zOEFY{dSMIu_IQH;uIF`*@r*#}X=2x&D2veAYRCOr(15RbHj#Y3ZqE{=gIEH^$Aj0) zD`u~>_eLqELe;6I_1vD!=^d;hYc8t!8i|<5f7i#vroB69L<$`)tDhQ|yWE5oq6nib zDURub8R1YTCGggdM(SGBE(fcD`eHRh(kYhr(Ts*Df+!nJ1f<-_>K%WgDwvg5w1qTq z&6jH3NxF{F*tJ~iVdft61mQacU^)#@aYm28xQ|O@%O&b*o2+mrZMhbBOSMA%Z>+Iy zjL3s0XH`T~W&ItsSD^T6k$Q4}d_%G<)(FEJ4Y(}~kd!H!H|ndCqd)U7tXjm?KsTI8 zE%kP&)OGwX z%`82k&I9+pGPAh+ATb0Vv=x+aK@wVMRnh+R&j30O5UB;6y>$bu+R6CICkJWx_i6lv zNFLA3Xt>uQw{EZBA?M*r^6bwVygqJa`7TAN2nT%e?L-M}=go)6378rMMbTKu7)-kG z^k8GK37Fd`<@Z_?vC)MuiE6yk32=ejBRsu{GH+}4~H)Y5Ox(5Hamqsq%kz+Lfw&Z1IIqkuF{|Eq!?OS!w z00=?gSAwOs1o*U!AAyKEnv1)4a}6u~TAI1&M-CJ7vjzP80r}m~`-CS`&G1NfA=%(w z0AzGhf}uYD`m&gVDd~3rkiDqmJxjxj>a`C%0y|XwGa4*NyE2z(OcY{CxRXv=fe8y@ zd3kHBUX!)*`o}467N3Njif%GqEs_jI?;$UvKAaL&oP~~2?_v%dQgMw8G z#q!dhW+YV->e;aKrh?)ks0+yf;!{$iG{RDBq593f+b269$nkTm*5oCAy+^_~HV_>2 zRAntZJMmOKdL=LpbGs<;PU8>(0U?5c*^BT}_;tXnFtUe%(DNp^UcOje;^FK8%2bs}`)@P0x|a5%WeUifMfXXa zYK!?~UEPfS4GoNCC%*THD0^gs#7IDh(4mUxq*yU1CqufqVf)9f0xv_I-G^eyRaw6*@CnN)? z9hcznH`Q&(8>lq?ufQ&X6nX_!p!2P35wdyn@`);AC6q^tm&0q+qn(DwX>b^Kw{gI4ukm1Sg;qq${~NLiKBRy%CiKgcLpyQ)$jMiqZnb;+K76yQ*V zuOLZaAp)UEO#AK?LS$_h-^}W+x#ZKx_wCo2xh!C z=$n8L&pyBoA+ilw63OKKwoD${>mvfS3c_R5dp1#C@Y*N^tNpZ*u zPwUJA9{)kjidE_Pfod{OS1NMxVBX6TS~SYLsy2zPha`xloT=l2**d+K*VC{M7&*zvgF&Y$S{l{)M-*SG27dZR-+AJbGw7< zw(8Z`0fa>&PI$sXM`x?4ILZ^GvzE`_hiAJe7|^+wR}Lr6DTX{} zYDnCcjoTN&x?szzm}vkvm~-$&$$9BTA>S-1%{U6Rmwm=HL=dQ&FPnqRi(35js<_a0 zbhAFboVpfG094gDH@nVP)vaN{-oZZXXa}X&saX#d$=F2h(asTzK-hx*uBm9ve)k3% zVX%v%q5)zx$^DDf>jeOHQqfVXgKwzue$gmF7P8K!65>hnO<|;8hXVfHkjW1of4?M# z!;`F)M{0eZ5-k%NTpDez=eeq-t%}pBGw&jL8|!DC$7lDaU|GtE2|f)~ z8;hg+3j^(`@O=k4zTB5G6$YWwMJiX5r?Q3or88r~kxqyRw5lTQ(PSL0ulp8clB~h6 z4lUf`@#Q5?WDy^*X?91XnrWiIaifz5q8`BePSodR8p?uN9EkmAXLk`w9^o2dE1wJG z{VGac`VIQ4V_o=JxsC!#PkfF(-j||Q)*&>9jN1g|oyuTMaO*c6Ef2a-SyUKbBW#886HR(quERP#3O_otk2PI-2&gn-DSCG}G$3^)nq=z5v3=GFv*3+2sp7?{71ncN zbuRLN^=G%ini)$D?lTxr`z|Nf4nkC9kh>%mqNb|T##r!>af^r_GI6+UWG@n$5wLK6 zYuSE`IoFlcyM%& z!hkC5u}gu_zg@aW3>17_8m*!%dm!u5NBt1Rr0l7$Iz1%I5ahEHZ{tV=!CTSMy?n3; z-^ogd)DQGQHPPdkmX?xWQIR5}7CHTVaUa6_SsmL2$^yjF>WN_9*?sR|$ou+3rZTml zhzQ%eh3wo9vtMi>6J&)^yrHkZSkSR7$nczXo!&s8+3?#bv{4bj4=P~;Ga{#VXnfi^ zbDs}02pZ;4#`Vt1cXI}_DfR;8K>-N$K-Xp-ETtciWys_rW0*dp&Ni{DH-Px3cV%5M z0RUWZG^;-J{oKdhUMb*AqG)1bPfqm*70&m2gZMi~xOrAh&?N%z?3?WKR@XNGFDFra zfgN?YWGtegFM>SWa$9Fv?S#IE0t@*0*zoUd!Y{I1lZ!X!=j+41sq$ykOXyiUW+3#W zNGRHT!!FY|L6-%qsU!6Z1&O0UgDEb&G;M7#gy=NH4XXHlX?MK!&g71sM?Hvqc$svG z7pg~HV$FFsY9d(V_>1wEj`H}Y%l<6^8h@1)&e{I;TGP8l@219E+&!BeVjcXxVv>(K z8nap)_aft=c0*daQz3CX`^l~CD%%mdU(BetTk)ngNnXTbpwZEE^Qmpz$HNuU#DMDZ zsRh-A4A{+b3j;*f27ow^HG+X#8?+RpnIk%T6*avqr1Wk{GjNYu=iw-WMK;uf2CD>X zNVfBpQ`Ji!^8z&P1tWuz40uSTo{`tOqF^GLqP|dRw{Q7ohMz5?#>0I=rkJoddg$WY`XrG3D`6LvBTxupf!3&4wP}`0Y_`Df1h_hI0(cAbK44-OC<3e|9 z4UCTSJbr-&(^Jt!>Ap$_B^7;?iAxoE^bU&{&DPdb-D-u%0^^X#1>?yib;@PM+dag? z^&eNWXcpl%fh9|p{AyqDs+!H@DWb%qsN&4jJ0$J zmGr6W3I6+ee=^tZWa*u0zAc)now(Oq`&4DJT144^vUWRbXL@x3+t0J}RAy_)FArcvOzLYY|&T_}nf{XHG}i@s@3A_P8U7_M@C00Ea3$GOyO9wDBs%0cxO5 zkfA7Y646wC!3jpP5O3!3{TdEj>9nA!hW0ycAX))!jO16zyVF5A zR8={xr1;&P(QgpGez!Jpv3Xi6o5{#H&2t%S`_X3AEcIy&zm3aG^Zrse&Zy}jc~Wq0 zK#N-nl5?^Cx^K9#2}jtm&_j)=ip@=oVoN$4f-?;(4oXICTw+^5fr^v%Mq_O5 z`m}rAqx7@oZt)R-pCfag-43_eXv8IDLyW2f-T90ZKbr(*iXXM(c6^(sbkR;YlSp$$ z?~-1=rO6WM82okJnu>m5oau{IkUS}g^ygOK2$YO#Dt`z7km3CQD zChlGT2vzou={&nr7>`9%-3w4tL%@3-uG9gJoMp*{l^Wz^Z8-~#Ep+=5{XHf7%Ruzg zyYl2wy{@zq!SFh7oI?;rgf7Qeln%xvZ@tA8G<%$qVksEGAvI(Fl_f@h)@-%LxeqDK&UI<@>T(=0t9-{x=ghYn+E{ zV-SmmJd7TN(z$-pxa$@kH$JghL*Ht3_zVzRze$pp8@bIXh(j`3FNo+InXv03sz zaLYbM1y2qrTA2*4O+#C6f;C#;IGdf-^Ul;Wyhk0RJJH5+EAMVC>tByFTM25hst-FU z_Wm}9oP^F_bt55x6ZlF&MSD@4#;9?He+Z%n=pl)719d~nKGnai ztNG~*y&T3S1Nk=|$wM$EkRzV9$KkZrgV7Qw@{&)GYNKKC5_-&fDas@&eoohKp~h z+ilbt{k-M7u=#RMDFfemOg6Z3&~<7Cpk%4^n$tI4=JV;=H!vHX9N!o`92KKTt#mz# zOFT1Aq33OCz`L9m=N&w%GfAIxG6B*Utr0;rc-JnIb!&~(MaJ5cvxZ?e80Z+?>QrSD z_L8n(+4H>YE#elK+KjN9$sU0hRvJn^{MFQ1H_u|NbV%b|4T=D=3P)2r!6KZsthPbm zgkTqzvuU0^jYre9Tqgu?fApd$Zru8sHIb*cj66^as?*v?F9-yZa0r%h@Ni3^DUG4| zbi50P(N!1f*aY-hDSh@+!AH|MD%A zRW`?ncZY6n7{qltg;P8w|4@1-4}{gDBg!6XgM*}=3Z=gAogPqYXuL2_2w?%c1iJJ` zpcP?gyEb9y=Pp=rlyAt1>ohsS8Ymh0Ia*e^r3<2sPQyV#`0v}u_*=S-sNtDQWLtOQ zt24;FDQ~JA!$W5*@A6-YTH5l-ignZWVEvvV6(>n5y{vcU&vvv8j@lq*U4|}*YoWdd z(IbbI-7j%ssV+=e>*6kTN)BKaV5M2pzzE}Ogw3K1`j8jM(=rF{^7M?v!-h2m5F(p@ zs3sA&Kx6eH76b{*n+1@0Ou6{bD3pb~d@F(kol=Q=Lnn!)ZQ(k#9TCI+OogP^R;Z%i&-ZD_(hOQEms< z2KmRE=m7{*3F?8JM1;ya8Qa8tj^j#>IUD&lkHx4kDj+ve0{sHANFErf&t;8%)0{#; zo}Ex~nP^~>RT#dV>#xAwot1aOg3|$}v8Z2l!!Yg@MVCxzfSc}gw>gasn}@6EoQ^OA z=8-|r-z34IYMJ0L4X_{>>yzXTJiKNW;L+_LS_+gSJ{HzD1q@2H%LlN9E1y?#VQoz; zHUU`E01sm>k3$wnH|pT#In<^${+1GGx+t1%>Maq9sKy_4lM+-VcE;gSr{(SO*U;)E z6+(_zx2jU_zk1^&2l3Qt8Z;~;m|K`KyQA-$e_%-(!PFBi?#2-)KcactUE*gXuh{n}<&m0_5eTw~GKr^MT96zs&hhNu);sX|>n|Nzw{IH| zIJiibhT}# ziJPM9HlQGuZ)Ve>D^H(}FumuiV3Ce4QgIBv9hc3c`G$eAfF7<9i;EFcMn14)J-~z_ zWUQNhPz@t}djF~2*hymR#2_){!ah}+GC48|COfH%vWG`nxfwuphI#Jx~zEh1=}`FyW! z3CekXr%WGDN1*}AJ!+?ghrpC#7Zn{FOJqHoq`iC)bTv&XQmysAc=C${pNAi?;9T~; zMU3uT`@6_|nuQdd3@|ij9O^ntY_PLJlC%B&e~5#ryn(K^$!uY7jE5GQd}L& zBfy~5WVhq}uAZHgr0()K>r~DNe6({gf}9C@JIRP3t!mCrvER!|Mug%ZEk zv3PxNxW(yH-niV_E8nl>MD2-H%#&}WM6_?ZyT7Ha{fpA{_i1a>W7aeLNRZ!uaG9;< z%b;?DpAa>Yh~3I#>%79uvL(>Nu= z^zeRP*Ea9^;YQ$E#=phsjr$ zV8LQ6_Wm?&6{@M*$BgjCW8)FJAiraWqND_N?DCiu!gM=Pt!F-~NErt(GIS|(*{&e* zo#Y&H@;VETSXu*Yt>MM}q1-HhP02THtiW#`K^6Pcl`qI%R9V^*L19qumNIld8}UF5 zC=SOzFY#o4buO;p;nD#a3Bks%R!w5`$Kg{zgC3OaS<}%=Cp1vMUstFB#_z05aNnS=6<^KL$} z3rM$Dn3r9X-FyQ7b^7OF>(eW~^(XvWfBq+%HX$1;TT3HXfP3RxXm05jO^H$^xnwGCCaxJ$wbzsE`W@Jla)*{20uj&I z#Jg@|^la4I>ysx42Y?kGy&sOnvOrEoKbZJtvT;mi#z2ovXddpFa^HJ(XI;2B{tFfg zex1i$Y<6^~S<3AxLn+)*Fqy{0lF9!X9vJ4Itgy%?eK?M@}s9wfO4E~yq`gmgrK+o(>M z@MxQ}jUn=CD0IrdZW%IJJQ5x^o`+9fyP}1L5Hm>P65M4)$b6zqPj0OoVaLFn6-_8C zpOQnNoRRP=Bo7WI+rGv#2}wFoqZl8*kodsB9oxmP)J?s_n(IXpXjy1?4KeQ;e91La zK0{v@)1H47sU9hmGk?3$ehwimAR{gUP*kFq7WoIovGmP1@Hf$}q(?`jBQT3ZdB1ib;)&DFcN8lZ{o_7ptJZ% zUZHuuj|;yHrwNx-a0o}|xr)7EacgmHd81_lgAjoJzQJHXSZ|;Cj|URaslXqvhX3$5 z1plYU;s3D={5jIUI~@KT=}p}GACdkfd@3uw#r%y8;Xh;k>4f*I+u{Gl1Om$U4f?m3 z|Hb?8?*aa5z4tSq`P)qXyg%RK1gZ$M$?q^6Wu-`!b>L&O1Ab$0S_!%M% z=`SIE>lX3%@P0KN_!+MehH!cR z8;F1Q66ych-TghNU)k_KLutO5kp9&e{C95re@FXwX7)eP-V)c_6ys(84cad}?Kgx! zc-p^R82+5ZzgE`&+@1}#=a_0a#O>4 zv}XhKa|V73_lMW+e;986o_~MteoEV)!u^ts-y;8!jsGn&IK + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1f32fe663f8ec4f0811b746917728042599d66 GIT binary patch literal 183841 zcmeEt^;=Y76ZY9iu|30Mzmz>`E85DBVHTb ztlo1mGz@r;r^U~|cihyREz3ei009Te{QvF$kqJJXcQ)#4AC3jMX#4I;H*&WeWyI?E zo=WHQv|KRaeQ~zZR=zXvLfIi3EFipF-dn1 zbV`*y#%W22A|vx%SWfjMIN^4A5U^HPjG6tU5Ph1@hxpqhr@BuYb43-==)O zTa!KZSWK}|#)8I#cc3Ya16J?`S$rO{^B*Oo)Uy|{MYb)ApL!Ii;h41pB{u)de9F6Z zZ4?d zAN}0}?}1wUwwN`YZmtI-3CITFvbX;+3%WRskNOG5LYv`oj|~duCm6)ytlxBP)80vw zXbl12=mm@zx1v8H5+|VMr9A5L)y>C-X?QRE_1$^{cF{EXi7$Et)84sqcLrGz3{V~g z9MbFgX6i~`;*;OKqtP)K2=GJGic>o-4r1V4F#Lo_0?~}#*6d~TtDt>~qyGq^G-Lr^ z@JxVHZys{1-4JuT`)?O4-zNv52`@8l&{c7*|Fzg#1sSn>zxLHN4v$0(z<(6lX&0se;<1^wAa@K#oysGe;DRAudPbskgZzJTB#NExA#hQD)HR=; zv1#vMwX{FpmQ4&Cg%cnK%{E%~jc!_a{MJ_gs}oNY5CdkoBGUedT@QFff_#KR$KCL7 z)9C!U(aQP1D&bdnU=?a1&QBLpu#D7$ts^;g^71G&_sL+uudX}S)xr~p{-->C4EVs5 zg&%KK5JiMNorzSr`+%4u%uSE?A$@Vz^?xN^4}CyHv`&0LFt$cV&X`pGr3BuPIu3+k z-j=IkSG*4~|M7CClq($~3M5ASYkQ`^)7Lpl9weong^i3Erej;=|1*LWVdai^2L8$x5G9Fc{BlPIw95`B{4CJ0AAvzuFPY9P?uqU z>iy5VJ8b!&JPbK?4<>mAr0LYdL)gVffh!tDgsqZoEHPij$AJQ!14@P`XX@pat7T4o z<=7AfrPin@60F#i$LK`VRE)pXK#bo+#q%3q#cO_=zqL6ZU9XX1jlIt>{)fY@s2?{{ zc>&M>`toA|VvTv?U$?ayP79bBs#;~LMTT<>4>y0=cg*I)MYyWdiU>}O-;M$*Z9MJ8a2|Wgoc&xBoo&;cX%6> z`=`~oZ98(zc-yILw!EYN*`{NuSGIsC4x3mh3ar*2mk8&1C0ExZ__^PE!rX}#7BKjP z8^0{b=a#R|`?{=eL2>8iHO?c@fvUEo>kZ%k4B>(`$l@#XM8oIF_u)HDRDgs(<7S?C za7u^c8cqSPr>53P$NWP?u?Pfv1-Y5vB&*|(K3L~%7eSLXJ&r=Dx)IFj#txO99P_<} zIK0o9+3;!Mb0so_L2CuMqwMWvPVla7qd!0%Y8<+3fN9^IMnXQuSLhXN3u7F%OEGhy1P z+UdO#?!ejJl8;+{Z4l>Of|$0N9=>oUHGuCcnVpl}yB^Oz7#F8HE0aqvaWoBjx4l_& zx^)KigG*Y^wPfs++HRZ+XV;+(ykky#TcyI+cbl!Jr(>_Ie31T4IGbTJ$d)n$Bmxqk zPE{Dg>(`1Km5+V#AN3M}MKwfoz~@M-`OB}2pB;<{f!!ac@B>R$RrkavONL< z`{CaBXW}Bs`+S)f(`3mcBsmxjX6G>PIEmTlS@MdUxn8Dy**Rreo4#jkbG@IxM4t=| za*ReN#4-Np8L|6#!%il6m&u3U|Ae zG-WkcXqV!7K3C*PBkolT@yjbQvEeKx%8U)!&n=35P*=lXror0$?!Ieg+x&?g8CXQ< zx*R)D{B84kkZe$g1Ed;xS=e(*A>}P^P%!i{zs*c z72y}!Ja5yP3^k-H6*i@62;O=YF=l_Y{y6`LB=08 z=L(rvK5iZ&z+aLms`oxj`t2(FoO?z1>ir0Sg5)U;h_cxl=0ptkuq^jA7D-^h^3yaQ zACvkan_ZWc^j(kgk3?uBJaAEzBO0^WVtGdQAKkf=3?S;jQd9T;FCLs%{vOm^$NA-j z|3OlCU2{-?VBGKwvFWJk4vtaAZH0AD!c9sJOGR%@B@^$2miL=AJHr&tJy#k&CBdtQ z{M3Y|gHrOHOsV{F){i3Ht|cV|#;24@^cP zuLNLW-;^*Xa)UzQ3zxjQt%s_Y^igR(c@UI`=HVoSsx~zpFU}q@D2kQVyDgIw)S=V|i2y$GMwbQ9KCzT8r~===VDKM6Jo(;SceTnxX& zOIWBSO?2>L)KO1G{qqaB2sClI%u8A1!PWFEC3Wjbx@bgBDKXtvdR^@OMKwJq*>C<3 z%xouf6(TIyJRZBw=%*|>4#Cd7l;0~>`2OcyhHgFQv5w&Phx>}(C9z~)XPRm_uU!k2 zU&tc^Nd4flUwL0Igyn6xLot(r(lv-qeXcE~Fr-%tec#`|)*JlhYxJ!V3fEY!gpX4Z z@6Pu$Gve*0aPXb_Fw$>5OWd(ix(lteNmrbr69MFUZ)4%!=k`Wdzp+Y8ldZq&InSnu z0DkZ&*fgZ;X}&v-G9yYX9$QwR|M)I0;%ii5ZmAjkQp&HQ%J}O1#@eJ6&lklZln*CW zr6rd{4aB{dJeSz{z0v48%T@VPg!H#yDL&8z3Ebmj7|R1jgzXPwRr%thtVa z$H6})d@ElZu6%Bcx!Omq2$P@SFP>j5x<7nEEHW$a7%Bq9N<%UR%a|-gjSt8#L)taJ z--;|&tSo2^`fY6+m!Fe{UrglWJqFN1go3R?pSyEl%FUyYg;27OP7*tcLPm%{2(-w7xI1e zLRcZvHD%%ig+6VEXDBTOrs;d{2&nlq_j_QOcI6xdrM`G(8;D-d1? zmf>gGc{7Gx+7vc^VC_ck*ev6i7j5sLzW$)C_zf9=2zZQl*AH|;$q%4_2x+V;=Z5n>)s~c&-W>7Vr+k{pOqF&A3fuT zox#NLyQFwPzowVJ|JZ*{t#R;>8gPzzA58$1tN$|!!w`tfJF-z6)_f=6$q89%jq-ngyv=^tL)uVvV-g4Ndr{TM8NThYsb%pwxR^QqqFA((l0ujTJh^w znhX325eHY0KXn=DvC8u=%CcXa5Q2Zll;z?^2NJ69LN_~;t%Zz4ILY$R z%CRR!v(mIcC|5sIK#C3PDovXxEyl?YhyY^lvFBfDNI(1BZO1Ws-%}&0i1U+`K)Okg zRP4gZ0J$i+xX&p`07Nex3h2(BCLbMLI=wqSD7OHiJ|S=^qaM;|yGnMnk);l*nqO|f z`@9~Vy(K^h(eyOISu+>4$bdDFOk&g>_^>UXZ^Rxg8IH{Nq=sS0Cg1@$Z~DGMoqbf8 z2@(4R*ZgybGruM#sR|SOOy~&#sPc#-A4^Te1IOc)AWfsoe*t1az=d6j&EM?3J#g|_ ziNb-t$TKc)rnYXYfi;zbwycpaaWvVi4CLynk!Ueom^KizV($9)? zlh5eNyPFe4JT4Z}IK_B80+H!Hhul+sO%<1HttA&+x1DL`3QKk;WpmR53H`O##^0!) z4W(cLCDNKa8`)(IwBSbOgu}jcR&a5tkpmKotRM}}>&k~wU|~#4)e@1l=UH6pj5+!f zPh2xt$hc-QclM`Zt1ZBSw`; zzpw+J-~~ajT^%qAeFio4V6zq>cO?T!M1)6thT-|FFhSCoI7nWLc&$E_XcFlp3n-^{ zV{2Acb;4xyX7GxRyco9+xsGZOb!@^(DyN|94kh=?1NQ$uoHXdYCY4w`8A4}GkPL6* z_W7P9+tUEAcM^sUyZ_Z~750rl0Ta0Oz={X*iFnsV&80a)AralJv^q<3%?puP^PvL2 z;zEfHgIK_epKANN0}xw@YUWeVdzR`inMTh&mLl_G%?{h7F`ie4O4xgUV|Qgs>Q%{` z%d!X-D%tdfF(P$48*r4{T+kC+Lz>kqSma4G?y58#Qqc27#J4L7o}u^gLZyW6Rt1vo zL-ccA+%n_iiY44o%W&g-a?Kf7C^Qx^f8J0EGGb_`$j*2i*mKe zY$0}FIlOuD)AY)ma^aFR!?J^%X>u?8;q4#00CwO_PFgSHz8vPjpzfupHmy;?{V~+K z)6jAKm@PhI-m{D-sVJX;Yb)n-d98c}K-bTS3!Js#a}UVqZ)P!X@97)=rxY;w&`9#E zBldiDi9dQ5i>s0@{+TBo7TKR68Pny{%7@j00#e~XoFK}I7x-CIBv>pD7=71jk3l5Rq7$KX;XK$1!1ZQA3Wu{ZPAKnCvT1opO=HH#!EW6#C-PSr-gMR`fZio zRYf*kK+I!1`5ORnXlWslz68!)u(Rgx{w=ITu=v)0^57QsP&;7OYcq9Fj}4BtWulED;$LZ@kUu7k|}z8|1c z9^Eam#ll8mzwxAPj?7B>x*gXNYgVA*`I8q!@E0k=_Dst36`%m51-_iN0l^z52&Y1MD6YwY%O z20<4plM+8QJO9$$!*d!t-Y-HM`|kJ@?6jEpV8(CLD_3j#)A?xsCba-ReKGx&&p{WJ ze9Zw|J8t}*Wf9qXV^HVW3K0Vt#`v=+TnL`UfkK3@v3!esjDHY82G4%|^ukK08Jz*c z1Con5qXH|oXEhyTmf4t1e#`UoA_eK;2uY;h3qr)fYYB5oZxJ92Yuh6+ABI(P}5(2&?9Qk=sshrq-9@hUCB6m=q45o;fD4w+SpA z4IktC;5zGwLkAZP?qbLDA3IjsX(9tE9v-Bo{5Ocp735d-q@RZt@A=^BEu232bn6yg zs?O?fOY;(1{O8PGaQ~sA6IQ6euYdp>3MqQUSGP64tM9rK;P(-XvfH3(<;h4IuH03> z5t5|elNDspBnNWxcYS-Cr3FoQxS5@Lx26*co@IRjN%kP&c z*?WjMvvE|{$2Ol`M0rsNJ6)JF_2Y<)x>QU)*|;>yGo(g)5hqd*fHIdOG*r?t(8EYx!;0tBY7@x2xj!;nyLK@$L8nWqz zqh`EdnjFe4s*NO2xv&N~dP7Vv6BxO-%m#Rle9B~HFm%5fcqAhXMnC#f=&Rqr(-fw~>HoBZ86je!ka?JGL*8if`GS0uHKzLM$iCKQ#Q{ao` zCgrU)tO>N4Khql@(=kugU7cBFKxQ9p>|c3wsUsb+ny*luA(7%`J#sxqbB$c(=9QxhPUro|+k=(HxZHQyLTp};5#(XHEH z^?h*N)qvg@L}p}&4=GivaPj&q-xIT@{YiZOBNHh&i%fT}^*kp-CH1G*Exo?ewcUX+ zrNVIyh4b}woRnIITS-_a4Ph?ZZEy1n^X)0ON)kbl_rpWLCH#r4i(yFKf zXh(iap71a+^1x2HE$O5{Lt1avMJg?0(9!w)h1fZqKhNc#j}vOM^o42#T~e4K(yNlO zyj-|5|G1JIU;^jj%A^?F*A{t(7-IX&UL#vTqDy&5Uo<&{9^wmlb>DG`d63?5yGBlD zr#H7$_R@7BDH7P9B7}?Pby6zH+~gT5@JLGD56>Ygdg7S%;7Mu1%b#|RL;Jjq=;&Cf zVW)L2{i(5gE6L*Q%yuvO%d3@RzG^2bcvcV*ihI0SVPt37Y!aUh32kofwYO8URv{^# z5Hi)#W7GZE5I+#I{~P;*03ZkM5~%_jkRxVlES9k=xh1+T+v7n$UDGd*q+ZFgU{ z5Jjb5h=}HxjNHzD#?mM(^CNA`g080_=CSKYA6uY0=hl_idz4dN3J*jf-uT}9QUOL!sVc&e} ztSra*JOB7g{8?OqqA=elt=|{Gn4Kl-bN23HcK?lbW7r)t6cnH%rSnNCU5KFD)VImg{YZnvd|NUS1d=bm>xr6Cdc%A zgST8O%>W_whm9AvEuhIT9DQ;l+{6z`2>g3br$&zJzZDFv{;l;g)p0=v+g;Xx^dd%BPeV@z9`eydmOx;Dd0lC~K(s2_3M;T6i zdkfuTwR0iKB+|06$Z+4B;Atc)yR!CSx$?n3wyPU|s6Vz(63n$Z%Ssf3eko5gCJBk5 z5!~BRx@nV4rO)~0cKPeQF&9nik#IuGl^d_v4cC#hum3&7UFtl*2y&cy3^uJMKpb1n z%&#uAonPq<1>AZ=3@Ltz)R8@i$z16&8*LRsthSjzFHPj%H;_xcWSV)&1n*y6C~P0! zEO*cCU0&roPQ9Mh!`p1159*EJ&sD-7_V$EjpNp94l+(R;xzDq=5EHc_ByFvVpaAUN zfik0j`i;SbfR$NPrd~_r&Ga_ek~zwY37Zr-<0^u{h&@!zES)KvH1Gs?gWY%%u9`x%FGXCQYEpy`Xc6RyG4snONF6F z^FdJXbKFy*BXO!GDP472&}IF7gK(!BcxLHi#bQGXKuOd}9*aXI8xOWHw(V z#_yviQKKnkJhdZGcU%+qDRU)fwqpZZ2qd`7D!6H?$GF8If$tk~XBWVh$G14YBE&b< z;_{Nm;r$Lx%(T(|SUCa&@v6@DuiBnuUn^Tf5s|oXNLS>9KaQec4s2E{6!iFC#;K>< zVM@=YV($qXV`L8J4#MhD;7N^rF6rrz57&zvh>QvK-aB{q%(DSbPXk{^{M3W*YGdeq zzl%@gJ`Tw#F-Cibew(5;m|AAT-& ztOiQ#$r2`ZMzWHEjtt`gSSXWp$jp7_8f=Te|tv%txaG(YtX1%bnou+S4~1qicrm~ z+2L|w_R**IdQnJyWknt0m-yLD#F~8aHcHEuwG_&P;)%~(ced0{ptTtTKPEP3q2)A9 ztRcy5;@ZULS)ThHj!ZW=LZdG+WeNbne^}qOKRoWXB);_BE?mD(0@DtNY02nf+5!yk zZ=#P2W=3+_Z>!l>Z)1UFbd%nn;_=bL@VBvZAs1psKAe5L9b-J9x7~Yzyx&pi~PdX4#ni<)oIc;-q2I9xqcM=L6!0zSvXjB;mHMy$$91K z&$O@5(L(V?V5q+F2T9;5;b@sd;7W{-)6_`MD)#1v9QaQ$;SMF&^v2Av?+fNM?1^wzk<#-M1WFTGO?{O{ePA^VotdH$TwCDUkMi zbcGA;<>9KS9v7z^dzNM9(E19$uA$j+OuT$2LauJL*JIvgGKvCVoM?CH zK#n^;Pu>uV-`J}z8)`sAB~Ayn()7BaC>ho1&|bc`RSd?lqoO{WxD*1bxAA~-4Ee+6 zN$`ROMDY{Buxs2zDK3ytF_2)RL4TzTOj@XkcfahcsmVT*7lE~^rTseJ&v?vDVfm(i zZ&P78Q1=0@^o~gw1()PLd<;~u86*s~NudC24oH!$o1=WO{CdM!L+R4WNdwlI zmmZP)v+6Ax?(&bX#ku+lETX@|3G`{6G1*pTr%2i6`2d^w^X+R|0UqP2*kxF27&W~} z+t`}Y?uZ?G!Ig$mz_}>$E-2;4*agJ7;{(FDp=(eXPV5CF&4c}c7#~HF*|rAsx%gX? zj6a2xw>}JBMU2}oIwJf9|A~Fens`>W0@AiGd0f5trMWfi$8~Eo2U`GNP_R5eAoU*f z%Lsx(yJij^?whF&dec4O0@3$T~Jz^Zu|xu(D{2~{i~aLpU)`vzSkF`;MWOQTv^#T&c2GFby~Y19cbA3 zFg(0(>b1aP6yz2@KNY@yYpdzwi)gyCr`}vlj_j02#yF%2I%O;ai{h>ExLYT$Pkj;6Jrq8E>dp_c8-7f*b5w-C=kI`Zx zyD6=0T`^nZy74UCDa8_u+bJx*g?r;4n8hX{xYzaa)7;O0I7xjbf-z?~Ax*|V2@k%0 zD%i7cKQd%)%SK}TbU}+Opv6iEf&wJJT(jH|;$?qzYjhs>TgPX?VmXZhwC8-tq&Fa; zkygXnR8R94KNQKtgG~JW7|~ROv-rzzCq$AEA=;!_#`!Y;x=Jkwx6Gn?_3#;s&mYkK z`h(?}WF*H^B*R3o9t}V!ZZfsvXYE-}ig9y#;AT>H%aC@!Y934m6)+~IeY2`Q*wy*b zaSu-EiQ3ij@}rSbyn;ax-|z}%Zv<~_xHFk7a~Gb6U8WT&$Ki%9*hS;7PZN?x;AW7X ztuq-lzr&|VGkZGpPN20|G5~D~j=(>%o_v{(?PX!?kb)lDLnc!)RxOIyfWteMFU!la z>|=!_Lt#NMXTG_o@iPyNgN5My$IcS(QbVRa!=^Jd0;*_<9TMVv3MmgI=*WyyLWdV( z)4nFS6xU{>OV7CjlG|3)})6NQqLvg zK60p)yw2u4c&WNa9(CjPeIXM3RbX68d=x$~qF8!{s)wEH5+sUjlRq3)Kh1V?1wwG- z2&h71{=%H@jsW{@E2Utu0`&A|2CnnUw^wH8TGa` zr+7xfRWPu*;pOh%!YJ(P{AAj=^gUVkB7CtUk`$6sh2=hB3QiEjAiJO`K!Qg7X71Bh zfb`PI%}6f&XAk${bFwGR;UUn1ZIdwSvH+L1-l?$(*w3SBf2b%2-F+8f=wf-(v~zI^ z)c&ePTpLFuBBxWUv;dZANH0blxA^LWlHEVuAtV-pklxW;9bCT#z^GpkgqO?xVZCHc z2}Q7Jl^k_rNPhi~3gvlQS{r!&%${{HkIG=zQh>L=dNrsvNO}68u)H;|QL-*ffegKO z`-=V7l<}$NOT+E#Ph!iI zMz)*7XH&Y86Szff?HoO*#||$Gv>tce;YQ%@&{UgQ-ppWe9!WH9bbqc(>V_&8jy!pe zJK8cFIBGT^;*lA{-(9U6QeAYQM{DMnwN_ptSsnv(=fs55=@l1aDer2f)Y$lUwi$`s z8&yzT@h1AD)Z&vEwe2E%5-%54Bb#jcYOX8I#>U`IIj_lkoT)H&yuFz~mGzL1V&Fv^ zE)Z&7(g!QKIk>3VB>$-%n$U8yZAAs_JiIPlc&y&1rC^spX1cHEgW}wIfp4V1EPMV= zv$l-LZDo#KdjmE=_JMH%jFNt!WU343D+KRz0I5wJLxf8ILQuOO*xgq(`!BIbccEuu zvguAc>|t1+INw5Gzxt&prDWdZkK!9U&Oa5v!3KG!_X5yb1E;4wbRx=}!L6OZWuuTe z9XchLa}{VBWRxhaSvH5Z2&sQY88YNf92zhMB;6QK-*0yQ9$Tr$DB%rj)QgBou8C#` zTJo{{4j7S=N2lhhN>qU}{|W-qg69tHbz~lLe2V!}r)e9ba}tJT+yHByO?Ip{7e9*s zHWT|6{gonJ7bX+Dt@hQe=vv>m+bRbK_mrV6p53(XX2hT%fe7ODn}xKr2=*^*+IX&4 zYUtCD#)FsyK-a$RVdCx$U%l>~Kf?jh){j#dEXj;k51CyI>#Tyi9Nw^!!H};n-&PNP z9LrImPQ548EPYYrgR$pSp6ilH{Z>W}j%G1SoLu=+9uIoyC?H&4Y_4MS-d+V@JrNQz z(x8UmS}2cG9zJ*D@{aSXq{XCY9aQ0)x>jW!1*X-VbixY>Ly)vwWHy_!h>o+@%DjL! zK{`b4QN-_*^!9H)Ek7b>zaJFYd(yG0%kXWR4U;Y6!kS*`-Tq`k-XyCB~?Wyy0pbd$hPglz$H>KCl-~&ZIs3vp&iPTI77@K~@-6Yl-x3 z&VfDc)5V;!Vm>krw2-Bm$@yHpZXk&@0C(;WK2fck_2w;`SR4RoMEt$& zq$N!RQcbx2i298ik)`8Fw_l3R+J^nQSemOlDX(?xTEYLd6VXxNyYuAFya3BGSGimn zrK$P?1;|85bBNBa#3aMNhQ8?Cmu+(26K};DVx9Bmh##>GsDCN@K``}m2Q_GYsjAmp zYV1Tj$uaxcy$0*SSJ*!kO|QhLt+ro7kMC4IWB3Qne2uAm?*=ZIrc`^2L@Zx@0@4g$ zs7a{S7;Zl1V>f4iHj=|p)iM@4yK<6luiQ45(D~btx&23303~hn?elv3|9M-wWPQr1 zGfX&(TQ6wT?yk#D7%>|NvRq(Ne4j^JSWdF4*ci7|T}8PjE3NulbGw}`?V|)Aub1cU(;z2}}>@b;4&Brc<{Tm}f;F@ocmF6>9pcwhHIeFJmXafuKEvgN&r^Wu8 z&((${W=3WHx!0BxeNzyKs^+{fThd-tMa`qosmh5Tyc7HOF(4O3Xd4lue!6JO6NPZ@ zXUzvbYD$>H|FBk8W(L#7TU=N++PGNA+KMZ-@ATPewHzR{#EyWRBff6(Dt3ykufaW0fq;Ml%>mx2?FHWmeTR z8`W9*w&Z7-?5{@R=#K5-sktoW9*1X#;!7TNy&dOl$|f!SeK^kdOByaW--0yUMkom` z>Qx7ZR=mBk)02y=3bMpsr$$QZ2%<`7?y2H4U|t=O823sqgk0r#(`Rz?OS~{&yVQkT zk7(BBqS`znW9g+oUP*$?~JHVbbMk>2>hD1%M)og$5)hGYkgGcUD z^3c}6=!D60wan1#hCzqG0E}owKMt@zHAs!0&;nFPh?M@|7*diSs}lE08_O<5vyM^d zU7Jfd3%IhL3r4hrMfUn5gL?okRJ4iEz~r|37Z&HCL)WbVaBLwP@p!15l$4GBm!cmm zM*ysUtN6VLyExS{onj-f=PhA$D0R0w5{D&}bXYouS2 zd^=3+fdaHnoU+^-Iv-~k-F8|Iuq+c(96Avrly>nQGoK~)RH&YtuBDN7yxl?wDAZmH z6&6MYkk~br>eShwV$_i-J+D9)NhgwHPv~})=hEbMnT~Fhe6*D%Y&sK{(OV=_xSg}O@IdJaT)T_z6H2Ru-yjS7+ln6Aq%sra9tW8R@h7@9>?8#kUw4v z-}}4f&}PjYY`pE)#M?s*&5QXdUcDZBO8e1nbxt}?Y3VPkU<^s7eXe|Pj}T3BFVohG z+dU@1=2vj$-8)_`QmCAJvRTLV_3p_fqs_m}_<0^umI|*O$M5bOB~6lAfn5ZIk2|W` z!s9032higmG?umJEH1u4#G%v?#s`_o|5nV$c!O4JKH%^(nB|$kSLq4+s~3aJb}qXG zF16oECCg;z2KmCDpPZ*|$nD86XVkQq zaG$lEo80W%(9L^kqiwLh797Xwp8``cv3&u z`yJu*K&E4PZksXv=YNG-L!fXkJODGiECr|1j*BJF?yUm8wnZun_HGx!Nex9lg;eMK%9G zapO$9kX~{pcb`p&d;LB+PF-lizZ+y1Pb(BlVOdSeRq@ z!bX6u?>JWd4Ekr2?dqDtO7!#ANPQr|tCd=pCQYI^&EPkX~x|&kmWb5a?E4<61r5W;qi({4q=2Q;^a$%d;xV zhci0c3`7V-8+++rX?4KSwS6<^{F^h&_5E8$k^|XP@G@8FygUCV_NTfU;LL|SDSbGk z4{W?yqNwB3GeQVk;muciw2&fQnS3?7gEvsaOuT+`p2bF3Y4@`83&tq!X0tL?uit$U z_M_3KS!=ydw%|OhuIh}sCtnDxU9yW7W#6UGTQ$-b&oCD3WKEbbXRnxMf0-ZIdQGhR zLpLigNNS(aXcsQKt}L*e1G9PGO2;Hr3OhVvDVV&Wi>o-OY&sp8QJRsi0K!vQ8>o^- z(MWGQdwAN?S3PoKrN*HH8~UQ_yGER?&qjC6!*@(_YJmIHXzXxn4SxN$0U3w6*}j0i z-C@*7SKM{ETceHyxwH}>1p_^iU9s04=lG(&>hjwq$2ljLSwf#AB93gxAs0bOAi2ScWvy%t9#t-z-X|;1yC_T| z)!MBzh90VG0Dovf`3qKQtwi_Kqm*N)hJ34n$Mt+PrkJ|k&E%~au>O}5k>rK=Ugul; zz9%)VnrQd&c{O-hJAI?Ql=Lm153L!bHAirWSEFTkE=2?SH3U7r*ZLbmUEVs`&v`c$#AJ|91+(QwK7 z0JT(YIG7)Gf6N3(^htkcP!J~;F|_N37g_dG;W&ad>Vca$=lj2M)-Yjt*=Q}meexz| ziVCsm{sEMU_t5Ko;#tAO6JC(%SJm#b z2u&-k!YdNazlMaSPt#_M(nth_-;6>~@^2wkgEcjIN>SF?*r0B-czK>!Xn)OJ8{>cf z7bepJPJNT-PF;M4iw&H?p~mtiIo|gS!v!WKgWp$J)WF3*{=LLr;G!P#&mK=#(cDAu z!WuO5URtnB$JDtVetM+iPC^7&$kr1K?^JHMlN z6Qek}HCu$9w`dUR8=Mh)5)j0+kbe*TNfM5dce*yHN`0XChT4#(q`a2VMnL8*P-0!t zMw5ANgOtt(d=r3!GzGx3AI#Fk&}JBKJ*xsn%+N-xiuq+hfZD#p+@^<&UW7-hJ%^H? zR^+Ewj3fVytoV83f7`KzDteVYVosygWOWlpaOVIz46?hNG zMPiW{9vs!Q_$MBBl*z2@4(GNpHE3)P+11~2=QVZlZ`X`8SE>KWn_eeG*u(tdX6iiK z>D3t-SeK4CrxM;@7~VSK*KPdO$Ss||uA^Jnd}HU4j=*oZVo7G^$qH;9&uQ+Jngbao z(iVTRH9gj*eCk4;CHI3^U(nOY-uCqqa-OpBwQQI)?d}*$KmeEbxgEQMCt2SLjKHD4 z!@~|7lWRy`rSx|lZ6=#n^z@1GxFaj|mB)6V_$(vYDT~JEOp9xALB@wNu3vljXn8@o z`76~!w(?ANsH1h8QHWhp#e(F!5U0hj%d$eP@Lh-_>VvL@*MW_v!%LRh+6lUf(JV+t zQ3Lvxge&5!It`guN)*2#S+ezT$oF^T!td-HwQ;@eimV02Mt(FXF6ZnPHOF?zf43)U zF15N2D_MB?Ig$3J>aQXB?XcuE=>neTd(Et1#25!krGPH>yxm0)+@DgU@$Hpqp9>WD z--%vk8^9It`8PeYOdag=iQnG>7^;4U!kElw^nI%sNJhT6Ne1RDbaFTA_?!f6laaz? zjSPV@bI7`CLzUBQ;^ygnQu`)m7H6nJc+gO1_YGaq>dfvRHh^ngTJOw$pfs%vdPJ^w zpI&~?nmKvlf&9(S_ntGdjtVDV=ygO;3c*FOaP&m|j~J!vq9VUCoUtVv`El|jDFd02 zEdSit1Trrq1l3Td_W04!SbLz$k^Q?ox?C+9z`HF56fYmeV+Fm{V5;^JM=o1PCg_2= zB!6(N2r)9tTpZ$+SeFL!S?YB}e-$ln^2-qN>@CwhGZ@?+hu1&)GIOj8(QWrop%bH! z=H))=U9XvP8Ysd9&5-6BZr12_b|2g5JdeVW8V`Kgj4vA-GT!CF3w%ixf8d~{gR%K3 zok73vT1@C`W4qdfD|M*#Pin2t&ngn^=L^o9)p;WFtwM5I{F#v6_eobzpe1Fwu7M+* zXMZ8O3m=chV`oaCwu{?T>>^r;pCK+|)!r5F(zh zeUN?#8Zsk9I8$Y7sUo#p2)`TUxt+@%je&P=?I-^U*ZGoodIm8I6l%)vjrwfYe;-tl zPddvw&N88LKg(Kj6fhuhklC&=%M}r7kLMJa79?{tWdEHLXdG%&PBc~8;+_5&<#&zY z)_z}XYJWfLodfe0$vNwpEC{m%G18QyKL1M#ynhR+b2A1ll!;Rt&Hl4e(y5~BUVmg> zwyr5M618Z}6c~}6{H7 zym$KS*_8qI-^joud)so-TP8vP(@d66nHOafpCM(nUK(8U569~MLcnVrg-=LR7E|gLZj{ls6+>fm67%^#qjz__X8Huk=;m(P^yCMj=yj#Fw;h?=DmA{+ zy`sPTd7)U>!kYji1wfqot?y*|4!ls*(FSu?TQ7FN3l^PCW!#nX_8~v}La6lnXZPvR zr13z+HWGDGIg&Mg*>J~J+v|-i%Iu``(w(1CI625{y@md)eq6WWF4V=J$$c*5b<6*Iz$$gCI+gleQo(D23^~wzXr1@mi-7tI|{bt{INYKGRhDt zP&(ho55Muk4@^M=cLkkzAiU{cHus?yiEOwP>#s1i;1mwC?wrs$9M;JkwQt~qy7h6I z>-)y~1uX{TK$#Ce^-bj_35N91s89;Zrc7(VSmLLg zw;xVXByJK`;C}_24}`uS@NAC=Ei?9C%(awVR<6^rjCUSpHqwFDsS>0G*sG~5iK_+dH<2b8`-(yH04bmgJ^QFwi7`1!ZcvaX5N^ilU<@Aq|#lI(&-Qa(%mUYmvr;Z zIp_WU!E-&=-fOQr*1b-&^>xT)ciN%0%X^BS>POW`UU|HFJJURYTHWGsHckxev0-r5 z&fB?Ddr@NgRCV3$EpAjA@#vt9P^(n%wLJ<3vFvp|N5dLyhnVIW_50eM_&+gQTtm`*T z3w-z`-;n|AF8F*}x-inTQ8_^b29rRzVe8S~C*aHPCoey%x^gp|k4Ru={@Qr(mHO%{ z&Lkk<_;2`@1XlRylH!D*FcfJmSyX1?-;{H;OZ|_T5=scjLyhhiggD2wx(=*mt|#3r z8qj3E_&2+n9{y-4_}D)6ju~{Epdu#Hfb!1;MJOVe`CuZWYW%zI_;tD$4R6JUaC&G7 zVzaivsw=o`32(ZRoW~pe%kty!nGG7wc;OQNOz%D1#OjOUxqy#P(}#%woiUL-lguPk zzNC`#ZNx$yQHrr)K@MLdIKU33nUI&b$K@YcS~K!umZw>YSPuYD>P+k@V!bLw1a!*s3v z-#=cS1J7$u;*ja`~+`JyMH!X%(`U{+*S-|P;SW*+hV}LS@ z`=QI22`PL^Hh*|*r8Z~|iS=p>U+ET#3hpU^@DC~9A`glP5$JyoSe^qX>a0oA$BR~k z7MnIF7oH?Fwxns5C1?F2o>n(mtyf<(B5&DTXQYLU$N;VGKl6HnHJY?3SG;e`lD!VQ zT`9UK$^P4qxT$Uob?BL=(f)g6Hd~E6*ELqXZh6GeKZY-kXN3(F*?Qa2-A!~P6>k-a zp{%@u@cWnTLLnmxP=-~O3ZD$XzY+R}{qf4g)4gv#=~7PzSdnw=dy4Zz5SDG{3WuuP z(E7#3eyEHi(JO3U96I*(k&Kqe%rF>yyioT_H-9SY;KR}n(WrtlU;dk1Cxuq=&BOI? zFp1C8*)W;j)mM|(ea`hsq*b8k8!0Gz0lGHMepiDcW=QOUZtz12$(s+(y1?g%1W7(E zzkxAGJ=OrK?gMo5y)EreKSbWH6@G&MuAW6F2VXSoLc3g2sVr&JroKe|0Lo4&mL+nv za#OThiU+fJGlmike?}!gs{IeY1mL22ZNAeVT@2jXFsPw_6Lx7GMm1l8D)Yh3qrXrD zZ27|ASbEh!Y&7Onga^ENZUieLyP?SNY(00F6xjR_i{a#v$goljx0(vtlapVVSLu~Z z3Ul;@iDY8C9rqdWW->WR4)h!^8Hot9golLmkiOCaLnrfbI?9Wwa=Uh|){Bqfz0s~m z7D1=R5~mWplfDS^fU74R$ayZj#UF)eI3EnN_1qyIufh9A5Psx`4cJz!EnRUt(y}03 zU$Jn(4JkXqmDi~7`Oo=Fq({pMiv3HF)~(-6y|D_h*~gk`$Crx{f-|oRPSb4WUMVIN{>D(Dc~XJ&(~wEfKuU)07mU*(^#;AP`*E>pdJAJyb}s-{j;x8%RI zsk$Fb8j~~WG6e|RiphBR+;Wc0$afBH0twIBZM;@LdXxrAF6z;{JR$rzS@a4{w;>0G z%Y(3gwEw8QGQ>Xek!a35fro~LyI^TGw1iU4tet-Ro|#>8--+j-=EAt*RD7|j9TbvQ z^l5grQ7S+T6FxUe*X2pynXoh%`*n;E-Zcenk+5dpsSCYrkdDPz@dR%5xO!gz20Mhm zNKeu*G95c} zVg@%@PHkem)5x;>pUR6QxM7IC4XXxhdSZE?ux)PQyzb?%;iH}-j#MfKfqilOFFNL{Pl zm*qKZWEg}ngj&M*{OHW$nK2v9$D<_K47HV)ouM-gmX!i8hJAhGU@~;Bxsu3vfdjB& zCRq*%|M@lS9Xpiy*c25`jVI2lccaJXp^aANjTTG8RpI5Jw_c$<#^#D9j!{vb*aaq85h-L;IRsrpl5^}`Owwn5D!`7F0=&JxA^qrM;_jm z3(W5L`LxA6Um$Zab*)Bm#ou@iaI$y*`jtjJ)!Y}H7|A%6p(O*dg?OvZ^6fS$PXF%I zGv_F*J#3wHEI1^lLq_WyQLr3w+J8y~>@*l*0#<(q4xF(yIlTJXYz=H;zqg@1Atm8! zLXa$7zVC#+EI?5iw2WXmGvF|nc3vZWDhZnqvF8@t_@%ngEXxZC2tSfUmfsjO_NW-S zN5{SK*A-y{8^bZ|8mSY`02!5Gy)YfwyZ@To@ss)J7wKfXfd5js*u%Vj7vx)Q7mPx< z^&PXDa^tBe%JI{bf4*%yx+A%dzp}n)3h=@qi01wW8i?4dXFIdH6C`O)!FJ&kw7U6i zhJ>Q{5G*m*hV)j~aR-FWnyxg;=Pc^)J0%3madLi!nD+DNl|prB-)}{jEGzm(Zx&l@ zVp`o=S!Y(3PrSCc>M5_c-6}Yb42j=BmTMoAoX3HgpLE%&yC!y7(6-*`yCSz5q6ms9c z{!8$B*OTPPnPun&vVwQ-ks&U)@0|^b@reL(YSx$th~|x0V8Unec#F6Ln!d`za11ry2W5MCi87&z7R#+U?78H;+r}j zb!FPiT4umxCJIXSeQmEZY@+AV*?>n$rq1l4z}Mj4PbuY=%x`F_Mu;q5Gs0=F#)zm@WgVw+FHta}U?E2o{q zqtI(wI-&JbeL|oD5|}|%at+Y@l{B@f&IuU_W5=X5EF>R-@0Jq6wR0hy`|X4vCLj^{ z$3*jF;*SH4f7FopN!;bd`?=b6f<6=8mgz#q|BcGXGVGL+tb<8nA^ikF7*Q2>gpl ze}5tBAYQlBNb2=^b&$~6y;`in9A&r!6MGBv8I8VUXPsN~nGJ7N6>J6btZMH2mi)>lnSWf=`)I|NegZY(4wNqbl}ZQhShu z|CM9_GSZ_9Zb(T!`+;IP{e-Ev-_7kj%hjFFmVVe=Cyz=!lZ^iMrr;A(!^AB(U_bg! zi^}^-;W>M(JKcPeUM{>-+v_iHJt)|!F0qGe2$|`$LzEDv3aks&op7J2u4fgT9uu|L zNE=in-J*KwafPC_GumJYT9yi}oFwy4?Tf2n$INONVgbkBj<@SoJJQ!|OR4D@X!5?} znmSPl!?_2IFP;fIvHpbtVd&+noA(K;YvOw9YHISV{mfC#rGcYNl=1#tOoH~xYA*ko z>b;%ra+*v+|1df)o%rDYzlX4{%Q~IOQ?t z3ED%Y6T41~H+qqi0m4oxI`VT~uu3I+v@|xb#ic>AE+Sp8@JHg)j4+8zCs(@l;(XXZ zwdb2egP@cwImx6*BDH$I(z)0CTp+FJv-nEm)xs8N^Vls#MD5HeWWQ|dF=%R_}rB~{J-mHg|8J+-wkJLoHa%mU1` z?WYvGJ)ts-qI@4KO+3e+#eMdNYQe{0a09c65QOT*!c8hSgIJj7vJ^wjcZQK&LKduUIF@)e~*bP*rvFBS-LJni9A z!?n!vR`c_#TW9fr;c#YcoZCwGnLe^u3$e>v4RXec@^)9!T;DVrO zgtsA?-Y?zu)$c4{Ou~k3iVh%WK1moW6=_(SJOR1}2(rrT0uzP{7s9fen=jtE#0O`l zGrMAoCb<{c^+Y8?fyIU-oBx^Fp(bJh2JeuaCzVku)vgRus0gOF>*%whPJ?Vd3@>>% zG`hZ>&M`}V{>hih>(CcX@GF)Hyd8||E4aR%j4NB>dHw1zLH>)`=4m(YZ_$gTizRpB z2>ROY1N0X%iTge&i`9q=Ds&o6t1K&=WB9#CyMW+E@j^ zPp^a(Wc`Lk2&Kl72pA_PP*A{k0LMKtA|(a{mfoAc58}vVMjJJB+=X;xqIrgU2vQ~j zw{TG42?hO{4iMN@8V1P~O1veedF`u5%=}8-Pfotof8m4xJ%%?hkcI=c?qI?nbALPx zX8$wcOF2~Sh^sUIOR57jQNg4VDR`A!s-V;sgIkOdC|a9)wxSq}34%Fq*PdJ=Z$Xv> znm)}xCcr-x)4l1n+Q^P3M;w0<#WcYT(fkgSNo7#L%f3SRL4m)wSh!czk+Jf(3v;6* zyo;=>5i&7HdpR}q-IHl8r>Wu(9ZXs5JY}cD3^F&fCeyjugTV#Oan{T8VN-XgT@HuA z`SXxmCG0S4uF^tATrzGX9Q?{nVby8T41{(jN zd?g2}c6Zi(L+|l(a!IU_QkO|H!l~eLZsCn?Y#&)RwGQ8hWv)M69M*~vK z66B!-UfdB!$U+^4M(F)1g@Z>d6fhTi+=948MfnvDj3BB9S}FAO_7W&&GU#%DAV9ACTHFYD+i zS-?mrE=)CQCunpWYlrU1|}roz>VMzer;)lxACZ z*}qG%5)!2@a5FJK3GT+iP$eNDO!&+up24`1NIDE1DnQY$*`nw?ZJE)hFAG%OBWp!@ zHm>j)#KiuXbcq>D_i7`Pl&RPnBdwJt{<)yIX??Ip&Qywgn#_Z{Et9y{X({P8-Uf>RKYF+j#c zET*@bM3dJs^!a-a+{&+;P!Kk7tW7q6;}i4)ZR5%>c@dhs3>!Y@XBuduAA0GurF7FT z7rq?dem#UXas92Uumme9PN-60<0@Uiptn8q{GBsmC2PO7dBn?|&!7>NKTc_L3DQsz zjhGmE@89Z#zDMO$X)7;@2E3#Lg1$3hNXhj)P7iv=i8(A!6!6ah3ZtyS1lB#FZn-ou zgSV!nAn~d{82X*g)&!w?V_;Vna`Qt>+?WN(v>U#L7S;@laWH=@pXI&m-lk9#w3c3o zS#OJ0K3I&xgT9VP#@d?Emf7t0J-vaj;M*%6_ma8LP%sfpg-zUJkJi4!o-?MB`LhDI zn8RX7xVdk`bRe{lb~iNnYnc@&#YcZP&t;DTwaP`Y_G3ivw0b)5oNMZ>zg{i$|5pJ$ zLQsn9skK}lbQj9d;r*)ejHbV@_p84+Tk9$x3?y7X>^!`IU`Q_Fp0M({JjTis@x=t} zj5P7A8=dRY)KOk!C<4XXAeAzd0TK|&gdsf@(Y=cEXU&)7GIZov9}hPOZ$i;EVRl@E zN0;Nwd1FY@H93I%Zr+*@m{kr^wN*Q%g`8fQi9xNpFwAJc7TUI#;1{83zidb?QR?k`b5F;smXAsG}9X z2(#Cs7RD4Aim9uf#)U6TeC|C%=1Qc=jz>R-IjSPu9jSA?ox?wG>M&&JK9exEVf1Zl zUoNDieB8q*knMp(HeCvIN2bnWD6tk ztwV2;Y6bxBGZvWX>ktzVtoV9s1%-&9psJyyUQ=XYYr|W_0!N5pK#^lUqc8hIDgHkr z)L;kuu*Pw`AZ-YUoMhF8EVQM-tWlOdz4D zfklH9rf%QKfF2%9%n5BcP#$JL6)4_ysE$;N=te1ZAS)M?WO#5WSn?*)pPmD`Cs7>0 zenMlGE;XOCeIJvR@AzM%hqMUul(+3l1LuoF9zMzIBNpO67(m%%qYf*1(0S`?cIkb- zEUY5;PI$6&CHLZRs&l(CkF){>CvmmVheMHV&hT;V?Z-M&QtLYD4}Y5CB5#mfwq zH1d$u!K=~wkfB{#bf@+i=?H$^Gr#{k|F_8oTy&YT`!b@sbyMvhL+Dr8I6CJu6;IhM zqm*a#%u*hEL^xFYG%>Xt7S1l2Ix%)7|H{6u~P6*sJ3R}V@`9O zJ(zu`o-`CTu`?91XbNJ+Lf{W=A`>o@7+^~{1{z5~l}-g>v-nh)IjJz;Q|QBfgP?po zE?O?rR?gs!R^PGs%@z8BU!}gfo~MtmoN~yKnPE0>X)AHOMhS#D%<`k_HcjwhP}r3C z77ecT(bue#ITNSx&7GR@&24z}JmrBwsl9Q`mK=w;gO~K0Bn&FRlIGqpg$waIZn=1Hl2Kh8Y0mp+p}M>X6cTbEW@MTOZq=G zKNkz!M{+lg)N8iW;|59 zFYDXYp};rGVoYdt!_Dl|#a@Y8%Kb2Oc8rr2FJz4PyCE&{a*@6~IeZsHY;F6xEcXxGv_6{y*5ibB#Okx4<+!lBZ>g*AK-u#n6KR_KRSu)Cb?uy?e{ zsyN7g$z$Izjl8qX@}+h?rKC17EtD&aPl}XMA*Ug$_YqNqqT8A65_q#mfBvEt{ux#4_*;t?iDF9t+9Kgg*#K~xH>1?YLiZ{}Z7Dj@*mej0isENiB z`U>KH+&&6Oc4kJEpa&Qv^FaFrI>W6+3ILWlTFe8gGiw43TBr)|MoGfF*Iq)LIxJmZ z0O8lCBf@ip&5t9_C4Iv+E)cG1OKVkhU2JG0wbl4_E!emRXjo2Eol6#ztkCykdhbFc zQxzgm8&%yPWLAc>5^{d>2RqODkF4_W-bBr)*}Qj}{Oycvp+67G0|ZrNdpsrqmR=ihNZ*6dW+CY|txf)=QC@!FyK|v@0gmXeh z|9)vi6db-WD(gbG5M0-Dt$<~)Z2D|olkXHi#`O1kOx4P|_vDTI|60tW%=hU&^w?JZ zpHJw;f>U(yTlBg|PYJy991E!3q!+Wie=#LRn6}L(EXdqFqFi#`L|w@&gc6Kc*nX=a z_Y?@ZE~UJV#bXtj9fkT;K@pbj&8Lf#%E%-)@`$(9gBZROXor?+;ga9v*Z6-9=k0NI zy!gO}-%&XlfqQQ-S1v1bwm&BnkXSeTIgp#}ePUZ1t^*1W@1fyYW!?BaA8zhRudd6% zJoHe_UVqz2qh0GCSa{FdRbk1L(+|J4MlqltU}~#JZyU{v`WtcHmh`JT%$vZQnl)YQg&LmEq{WJ5@yLyCBIbF4oyVi9n-OKbhei9BsfEBAx8!cWv_ zNB#`CkB)Tr)J!Aw+rLbH4^)V9#kLQ9axkD1F%bBw@alPRqV+Nz$_dlJGq*R(`e9o^ zi`LBignyF0IN>C`$nq|@(Y|`_lW^uVdi&0SRA!qjxbW3?<~$ps%SbZ?L0i>WLxb!H z<1Qt%k@J`I1_v7LUxk=PRs;6unycPl9(PPWO;A17gn6)k^{VS(Z*bF!-RISL!nB53Lr)R-HxBHieDxeY@a1m)eu*k! zK78DU1uA&~1Uty+?1E!gB;+ivtPt;cFIQDmsQ7W0&8S3>7jz4`A0H{pV>2WYQQGPM>(?1^Flc3UoX@@Me^1_CL<$qLl~ zC38uY0ig_J!d#;YAuP0NhtT)bfB$2Pef9ukv-RyyMd!N#0(<}4B zDvx#ax8*DTdunM9D~uDyKX4E18M_V&O}t_;4dq<4xx+`)Wwh^4utBeN#=mdQb5JpA zP_)8lZs|hoNXbJ0l!*X;r!qjign&FDhnKUJuV575=rV(qZ~)TK{w~zpj-*PdX~ZXZ z+4-fsZ3i)G4IQhAixKguk?xkH_@iaJ)#<0~4E?qt_8>j_pFE*Z3J_&Q=%4g? zw?y|VlL*C(23*iLwe{7#dy*KK6R?}aFBh2^uy)#BStL`~m3s|UZ;ktx+yV*&U(TBT zZC_uN3U;&$6}ArK)`&a^rB?zyfmxkRwI z?Jsn~lE)mRz@Hp^#fOnB;sz-I{x3=Y5LxFw6|8ClnX<9K@jX*a(yCvL#3J@XG>;SR zn0p+S$>8S?-186QZ}&WSjjCOn9|*`L{9Yv43_o;?nLECM$RGI|v!x0}2@-12SP`c(bOaw{_s8(En4u`9m-=H83(1kGLgSkQHmeD4)B>#BVx3hiK zLL1W#sTg9FP3wP9-Ow)a#=G8*y-Rs7{xx+Vd`V^AS1P9a9edWBd8iz-9&Qw;j0%4~ z+-6)(W47_G55p(Ml~G{elXoku!-EPA2LW+2*7zxJ_Y~GdU-Eaqb_s_ENB{5-(-wsO zNa%(tyhW7eeX?f~>FRlYm}nW@yoh169Cf}Ls7mgn(<2$Lo$n-Km@`=;8gzO0{8A)T zbGJBX)|Tv%ETPraG#d!Vxr zW2MPCZj;`Kuh}|%rPC>WrP*?3*6xqU72D{J^l-Cr%lS&Hy+dT(Lta6!(%&%Ucc%Mw z&Fb=oncs0R%gtGOYV$-tai=@!w2m-P!LOcI8?-Ax%R1`aAYcM&v1 z=+}9hgJVsqaX-}D5K6L2uZv1v78{}fg^POU4Ky)rH7y?r3 zcPF2$*i{zOH9WWM8NjamMoSW&UZe4J@AQpbFKkmUH(V-R;iiqTMsfy4uKBehY2vR+ zvb625(NfHB^yCTi*23wmfQ+nX+!^p%KlvPek%P3z{c*R{ntm@UY2W!i7hzYQXc4f# zk<*biMiINO$4y2f(7k<;+Oj1!QOFYZ&O@;+`FxU#0ghsJ(r(O>$)0s~tgg>2LaCE* z{BwpQHP60%pBV36k=mK@l^tA(nFkh!V@j+lN7t3{2rjb3rYI{bB9fx}vgHr2M|p|z z$t!}5G;=1^R}#xxG=(RNzhz8W`F?b(!J1OsTskM#LOD`pIuq+LF~rEHcmMRf?d*HS zH}&qNeyWDKy>tN50Sv?Xa5=7ZY2YjNfL;FL|6kE>X5z%s9iP12JH4(HgZXTpad8za z4t=so_-&LK?8}a!T~F*f%bv9CLa*zyCR=(t7u2xQgl^jS4u9(KI(OKw?P29@yI;Rx z_!%j|fWqn=(X-7+WH_L*XyZQ#CLir2?x!4_E~*k-UM*baq?UjF@V)+*VaNx60O{!z_{Nv ztYX#Wi)&TK1xJ7Ueh!ujIA9Z_pn`^1kKl$VbbU?OZgXy;aba~?C&kcH8z?|_V`*Bc ziC&qBfhD7M@cj-Di0?*7u&oVDIN9!OmT{`LyhnYkfql$ryCg-(qjdscQfr{{1M!F; z>o@d7DEKy-@>cgd0s1%ek=VMNXw)#p>SsyLYQ&dob)B!&A@F4H5f^ths4wHp9oDNN zV`+Z}#c!OI{g=!^Skwb4S493Is-^3k=+)b~!|u5s(gf~p{xTG;dshFUCb%TAh3Bi@ zY1d$GtfBWVTfkn%b7W}okc;Z!T6rhft$cwJ-JlV)G|~?7m{MTCN`L+{)c0Dc#%{r8 z^^3|EJ!~(rqi=7jkPi4OdVn}irSI73=T$N)q|GRkg_Yanm|H8HeioWL%(FZ1V~Hx$ zEp0g6)j#eXF(+URKlAeH(6?2f{M{?DuPLNg>) z0UH+NG(5bQ^*tj#j%X3gDAqK)i7WJz8y!J$Wuv%GOpgHEaV+EIc?HeVC;I?CDCiwD zSYyQi6goWc>l!Tp*8%Wa91x{&Ld&y4RrV-Z1_F$szz`Ei^vO5V+5aSQ;b0HtK-rV1 zL|vV4s^lGIXoAqJOOV_yq7^3GsZiFdqKUB+G?|EsQ%yEwx|_60?e(ynzC!dr(qhtDnYgQinx zMB+f1GUm@fB#76xe*WsmjWiy>@CkomlCQ6s?^+cL6|Tww4{0kl1W;r1AnWBP;Rv<; zk#|P?^*2?vJu`((yyWzEs7Y!M@E7O~cmBu78 zx9vhr##GO|E}zwmx3W}k64flvP9BiE@;?2^dt~&&R&0f&@G4 zbnMiLmwtATG0MU#h{eoKVxZAm2!5n=PljFK7Z{=~{VQiS(|<40cXn@g%gaR6ON7*9 z=VSJ^Zqv8DrQq`7vS&hER?-SqrwgfU&0~M_l=eoy&dX{Qj_;WaKL!MEFKjG#sYV3q zyT1e$k?x%6ZUsvGD3~tww$CR6==?+Xvsg1)aTp?>Y}4B-IKdaCEAMT>CvSc?73$DS zJr)R_>9m=tyEZvV$#-;|)*i{_ULK&V7&u84`of?~@6uu8LWEH{vV5AOzSY7V$U3LE zIb?iU9y0!0#YVh3mDcd( z$&iWaAmzh37DZKirR%QLfJx#-rEih(avo{$l~wG~pAT62H=&rrj+v3z#L!TeP4MVhL#VHJQb`e89iJ zoGta_Lrr;yb+oVqIgBn7C?{=fAzcdK#|e7Q{d12h&Hwjw5!{yZ^EtUPFGKwL5(xU#}dH>+xH(aU+wx|f4V=&KYkx$-RW(a2!Z#0_mc(i*`2@C zZfMcDsA`xaXukUB)jAbl0G9!vhk}{(;T2J05S{?wZ>7T0pulAFP0ur+Fr`(g~&hsRkhO zatnt)E>5R-;|66;HOex5)y@u&vqPxj2 z(s~)at$^=baD=AnT+pgr>dMbYXv0QYFnTqH^EX6lH;s#O7kJS6h<`LWs%93ZMYDO< z?6B<{Tgv(Hby?`Y>0hgK7#&M*5kKVoU;n4zAQ{=Wy}irpF$4{(>cKaEDjhDe_rDp} z&susLkxng%tnnZx9b z0)t6B`gJMpfe*-55j7jEcQc>O)fRim<|y^>AiE~NXR{4`xaJP|X^BtM5sEF^E-TA> z&5tV76rsS;Pb}%i6MmC7u*{tA7o)qQ2N=G~$XGVk^$t7)0{Bn%b*3Lb_Eg@=Tq667 zJG?FSd67>9u?jG6PS=0-DU_Oo$fHx1_`{(NrH!8(Fen0<+Z{}B^hOMwFeBN~=L?u$ zq#X&{vAN+6vLi=!9hwEh-zuI*_kPPCG)eZwX0N0$`8X;yH*jRM7<^!q`o$|jW=Rvc zwt0Etq7ZM8ZArND6NMvfc-FMK1D?N(hr?~@AEMMwnO^k#Xp8AVbA5 zLixhq2C^7Jb_KFlgohtQw@mX9_AXis%T%&^0YV0N=gi6oCh^IbjepU~BaQFo)XT=)|B@KQGgdY4yTh;v7DO?l@96XRV!5td>SFbwtTY5X;?h-)-qY_PccuZ%vU}2ho!D4d2Ok5`^Kfy5Z%7i$_L|K5%V<9?&i zU1-IQ#P|RC9|VJhF+;UEOF64Qf2G*ZuP)F$+s%DlvsYN^ubNsWWe}V7Cqupcx8H6L z2F5^vkl8DPz7`0cxVFUgFUr@_9mETn^b7>DNUvU(`#ED%P#{9mCb;}C*nvIpES+wm z%ZOhX{mV~_rv~&-!cRW`3_-0KdU{SqMt4g$^=QG#XeM~WyBX=;)AUNY=TKYJz~-mf ziUe6-(@7us|DEB~pC?Kv9M5cwpYOSVDklRl>~NySf2&GW5KT7`LYUQ8h;D!=g1~vZK3n8N8QR~TClX=K7x=zrp&QPT(&Y=4dUH@m04l$w zm8ypfGWc!Rt z4QUgpp`j$;GV#k4kdrRnOJc`4YpE93s zoGyw7y~5xYc{=rL+tJJFx`4&K?2Eqz zce8(epA0JImmy#>Pz+XNIItT$1n3Van+S%Vr=y%MuIuE7BbSN9Iq*WkGC2T44jdLL zS$f@u!hv?mGQjtKycFko&+u3~v5ie~4bJAMUlu-(#<+K58)hvnng#ECAfgk!atD!_ zy}eV>85gw{Xoap@|HPCb7P0KUD@j=+HK7vG4h-CJM_pS9M+p_qaWIDEjN<9~j$7F< zW9c;_udU=y>{iwpg>s`3lYXKk!sP$3sXz08#qFdq&sf=A8j46r$GJT40? zqteJR(P(FvP%tq|bGUaoiJ;9(J?ryi>?0Vlo*`8ebNXpj%}H_bjl5MI#d_hVd{ae=rvH_5|_o<$7v7}{=jR4LXYN{$l|v6Zoj2mSG7_A!JN&lZ*Sw#{~y`(&r_5n=e2 z()7XL(c)LQls&l??FN^Vrf}1)DXkOp?I3T>XB?YMM+0CHJ4DMm6vCk|bg(PCMr-6m zbSXHtJK$9(QpX7pCczN60&S3j;(5Xnggz!po=CZJuNTD7oD8)c;kQt_ zZEQgk5hPL$QaD~--{gk9Y9}rtfu`ITpn46%fb3P2Ak}YS4#Y2&Z}rInj*RFZZ)^m( zS^!$)=q3iq!eU5hDPe7^F-84&tp}=6q-ag5k^@I@pz&AL16@LL;GH`^aP;FM!KuccWn^D*O$}oeo_0>A(Ofn#6c!O!5ue2b5DA zqDF_lKnhSp(6HUoihhnKdWwgoYK00&o-T3oKvJVBwPI`LbR5%yayo%;FUDd1YM$^dTAHk%WfJ!j?7 zLLH61?L03G`p+OU<=6}!Dm2ljceN6;YOnp&IZ^Es{)!5EWcDSM+c&mFt`!VKuz&Ve zzp!R5vay$VoLj<5MIP23s1)9)@VHzk2lgWc?<{-U21=;cRk_-9}iC*jP?}B%j%6ryIaNV1BsKJbK=uKq2fo^AO7ZWJ@ zy8BR>YPW*TiQJJ0Ox}q?!9djVc+8Zcpjok~N_?+RJ-HTF+iw*%StJDB z;}M_27M|%n+7e`T5{@H|OLR2&-4VLYN|Qg_Y!elDu+4U4^n$wyviQs{WXQ zv+ufO;436RCCUQ_%V*>sJ)b&C&LzQ5BG-UFv@q z_cxz?ehn)wrPqX4CgF3{*_G5x7}R=Yx>qVuGe&L=a`f=zGW7+3FBJ~La@DTT8*onF z6r!|cv&tW8FsrXrCd%Y&{$a31IWwc@Ru42g&c#XCV{L}hrHZKA@SyttRkohqMFm@i zXZ%Lnk7P!}X5?i*zaFak{io6JpyK8ytY1$S4M)|gPYOcnkdW9fnhS>n{q6n-o$Id8 z`QT6g$7Qh=?}E8K&lnn|wsvYX>Pkg6yXs%_7*-g%i6Iq#VzN`S1jyk#_vghaJVkaSXZX`>+*eSx%#1#C6 zHww}4E$k=ybzWNZ`M|>5+c?Y#d=hA2iqcL?-i!dcN9L|iMNvC+@x>i~XP^9yHpAUb z(-GawS&1#0`6nUfn-m?BZ~C(MnTM6?ZV%XR1>FNlld(cfM7wih&vXLEO+$N;Fh`5F|ACyWzlc! zLrO7sMiB6x=d+EAxP`L{?Td^7bE+mi*459S2G8Corp7Vo`T#)*lHSfM_CM~AM(bjh z9^y$n>J&}RQ!IYS7NB4HQVhI!`C5^yEQKOgVHl9?X6SDi(0hKwE^M2?1-UnL&;$)?}&5TSzX@L zklNwhEBs%(;lpd|AJ!IgQsEEVZ6fBsAVda{Mi%%|%6D()+b z+Em+SmK`&fpkvs=gu*F{u{550+SKhucZuqUfk(iE)X*e;W;%sKTeK3*Utb59J>9;^ zNiDY1T|BxY&1`fM-11i2I|w;UVx4f`F*%yjA}iH<+4i!#f?$0V9x7*mFF~{gkAPOT zjR$vqW*Or<&30D8kCNSB)bG+jtT@2!iBX5q4Sp>%hk9S9o}=B}XDfprYA> zg!-+zl)KgXq;NBH<}fsuytw<=f6Ka&Fwqp^@@%!=bF}n0;Oh5Ww%JrB*z!E zQqPEAN2_SJ_-#7orrX=4J@K~5%w*y|@2%@Zq7FJL`CHQ$u=4i-)%`&y?*7PN!~X&l zDf09K@_T~sbAKw4iLMK(kad6>%e-)?!Nd+2*uDig{$LP=*6ZGDGrP@xO1xSO6*JHn zF&w>dbAFQMT>=9g=6!t$vT!W20s5_+X*Wjx)Wj;rLvGsP(H15q^@{`y*S8z4R@hmu zAnc0_)#0DdnNMF)g-Sg|b#4t`6C1$$H6&{DM=U9aw{0UzNp`?uOzvHYQhGh)9BD9> zUW$M#uW=sd|C}jIAA@;fysxFj3j)0+?T(0-t=r%UT=AY5mbf@<)hD!ip^Cd`c&t0kMJ$q8^7on9i z!(%+JC9z#ooM@oRV&gX_H#AEub5?<)NE?!zm^o>(!l+hVzOL;3L%16X{#oev3tZYv z!caBFj?!gQ)otFmeK(R+Lf1PcCD%NIV#k9{4uN+g{lSr0$b66`xe5`ZoD$)_amGjM zO=A~VmM9?p@9xWJZryOSf38oBz7%UD$-?XX%en!8gXi+HuiOKN#-E>M+$wFme)Rp3 z=cHI7YF5(~PlNOwYL*3ly7RQ!cxxO@Q-l$?9mgB$&&|WK+C?YMcc3npTxE8(uVMPH z{6YKw7>>**VCF2WfnhSLAT>^Te+g&!i_jb9eHXzk5=yOQc@5-~nQCI-)wGn8x8Kup zrL)9+iMEnwxyfywl)m6a;_RvV1%-J5O7Mf?`t zQG7Ayl1LKJkV=>q?fubYw(J^luPMzJG42=T4KOj( ztdKhlU!?SXc>Gk!e1*HVLoiVKMC(m8Y5QBj?qi$wpD*KsdPsabDTQch2&yU&u9y?9 zu&U!@!~g&63JOnonvk4H8u84|DytD9q&iW9- z*8j1H=GHSp>OobvpM*=#U?X&LEXtWx&{=>6FXz$6@k3(pwUm8y>|xCuC0uF}*Lexc zS^oE$03=prg%i5~@t*(t*w5aF6brwMYC}A0vKYdpGE*4+{xgpnC8=h9|D{Lpf`rRJ z!PbPy^K92;@W-94D!Y~LjKszBsRZr{375(Dq({3U@|)RrUS}fTNchJNcbTnfmXnm0 zBa?Ier%9FHBn3ZR4H%sQ)yhE0JIQDB z%*bWIYMYLHbM6;f=Na(wLB=!)HWyn8x20cD(v=~liBoN-ZCHfV+t$TE@j{4jv{$gB z^)s_~XoI<)!NOJa!wI_GNsq-dY@e50T^BnGzPP4G1Mgn#aH1f$H&Te3lNQ>%u!oV& zrSR_H+#a~4x~pIL|38+_GN{ci+QLb2cXumZT#I|rq74qki@TE`1&UKB?tD;Myii<% z7uN!%xCRaGa&zb2nasR@GjC4LIeYK5o>k-c<;dTJ7xK0uHsdIbID8tk`S38%UL@)Y zWuj8qqD!{=b9#gPIsaFLj;sZjuM-yAf@+);d>r^bu%OJ~;ErTj8reMfarY$cH&8tl zMrRoe=Up32@aYuxuxII;SJchqpVYwJe{>@m005cmO^$4I0QkqkoO3v*3lu3=_`KsQ zl5N4%KxM#}`}erFt=ZT>ClAYu{+_;Bg(!sQ^OR$9hy|0brT&=ji|zEMIt;B+ADb0L z!1^`oM-n{JN1r&%Z~oYT^&gQRhH{lSb&%5D8LXnQ_N1TAFT1FlV%H@*yJ4v4|Eyen zH11a6B~=}LI79Dn@+`{`x38A=j*X*ECK$&K=|N04GY=4`s*Jv42;=9Z;Mw0Re^FF1 zIxPzeA_UPODF5iWuVgA6FDpIOaGGCHGJ?r0do%&CZse+>LwX-1uklLGnn#df3qj!TT7O1|2 z4w+HR36yJ<-peI<+`|BbW3R$!gSYn2CEob|D|~kzAgP}Lf31y;oc6!#VLAO6AI_Bq zwNbsFYJy;9j6T*~1rc_5&={ROr6KDb8KgWxwo$ty{!`2gI=5RJ#UK;A3H>OOA5ySX zFB8RnuT+|AJozJJs7K@bXR@mc+2dRN)P!x>t@2X!4F{p9P?O~DEa`x6@k(v!O(QmM zSG|R2UyMP}^TiM3<1A0HG6fM`L#UzeFd`EpQjLdaO^_xG)4{)sy+(YtBJrs5>}bjq z3G@Xq$s_?ySY}G-dt>(WUii?^FL+ zTz(WB0p=N%Z8LNbie4bUoP(HE^=zzfJ>a8cj_%rY+>#pQFE@&VeEcecTTgl6@Y+V7 zEp9reDz)-@!TjDhAL6}lOZ6S?WR*dtb=DPBc#*n`=r)+{Zjo<@pnZsp&nWFZuP^S& zf$~Qa4w0!DJ@#MqI%kfWdk#KA8`h&|oqZvZggMsr>)-bvnnlVs|z?Ykp`eA-NmvWn^0I*s%$hOpI<2wC|t*5x_bpy7};9 z8XJHx?{S+RE~U(9qg#*gm@EC>Cf?-l1cs1Ob6kK|@CYxv2o?Bv1?pohl{0R6YOViq&p{ znUNlt?873Nr@ZCCH>29b{IskhZ21q(W|Uuhal_8qWb*H?0l65>=n~ zL@8G`0Iwr(PTEZgCG_MTMrnw;M1kH7#;gf{Fv|?1BC~c7t^NQIG9TqD|Krv$-|u<%19!(&Tlo8JUx+$C8{YJ@cuJ$8PZm{Wp256v&Y$4Uk_l zJ}GoBiES^*Ir&EG2k9yye_yM#I)G6*yzBiXX~|Zn<14F7@wu4W8l=qT72&BGb&Y#t zZ;&zVy$dCc!t0SAberjW99%dixFtnH7cXP-{O98N#!ut&5SwFQq)-I>+B9|96LtKJ zW%yyn-n+DJ5O*KvoOu8{&zdCqUQc)A-S0J6$Zaq`-J>_9k9&ihhJ_Y#R|tf4ET;sfQ`Z;ES89 z1YF1%WCK}LAO0B%3 zzHx9Zk$!Oe4>Qy4J|q`Tn+QqPUGHIPZb4m>!yIK1_0vA5-E#PsD(7nwAmD{6VgHV@-yuGBOzfkuSlaD* zje3dY0HxLEZE)j9Hh@QL#28C{#r|}ujDgPIT6u{rDwicpM!TP)4Ys{T@kt;sij>sC z#CZ#kxkgb>s3)ZW2;jM7wC%x1ZTSjt>VjWS=Y!kq+Y=bd?qaF+!O#-K9V}V*>QCa* z1nt3NwPPKcHSrs>fuHZcqM!V_;K-*bpFxe#6~|I}Pg~&X&vFhE2E{ysYQ9-09+SPP zYqTSow|El%Sa65`(SEJxfTS_$g|;&3iN=UNn66U0BgvONEV^w=RTVD1-2wo0} z%Q=In^ra&DS`a$cVY>uH?T3W(Zmo2cZ<^&6^1`P{QsZJ*3=Gg3infcy|!o;sZfhn`# zPas#gmK@30GVr1c6?6)WX<`%ihovT&Xo%1 zwhyP~X>ylmxOVZOIaA4P0P_LQZ^q*-iV;XZC<#r>TvCi!c3@C;93Whzf! zJCd6RV@&<5BuK^3ud`f<_3d;EDO*V_J5B^=Onf-Lu2u9uZeH*3We17LCi@O+oRRsz z`ACNfa=|Bq8#^P_nd2vse>NyyNBk|(qMPc*t1+6}bypcrjIqkSRRv!|C=T6MVwCrh zvG+|Z;D)_mu;=D`u+ISskIa*3wb=feyUq0e&Hmbwjia)UCtM(&MpY~HY^F6NeM3cbHSQ7Q>E8Ww)& z@2_Aa1L*$9Gl*Iwe(QI?jCOc8&%OstZ@6nfYj4{FJ7!L-&HT#9e(!WTCMs`LaM%Ke z?PqiH)y~^r>SStlfJK+IkTwKiHm@}%x70+^lmKRoiz1q6BUvO8>a#M*i^>0Q-phY( z=WvM^%p#*3sm2NZOIciq;kOg(`s+21nBVpLbSG>0y}nR_CE!PD#m`3gGErfxScG8P zi`1X{-R?WvJ$r$Hs!~0Q&VKK#>5d)GOJ7c9F6+5Ur2NWu<5A@uq5rmo=UL)n;E;0{XO%|Sc(^uQDxaL{PD?Sc^Sk4DFl6NUU*Dr&?VUKiGS)n)-2`{9F$&Y}H%x;{aP?jn8cDhk%tg4%+ z`oZG?^-K(!4uLrp%#KFZ`lf2U!#C8rvvB#&%q!eHX3MczT+wgzZR_aZ{bd5nzp?WV z?bFXbd?xrc+-ksNDNQKZ|VA)?IqQ#7_XtQh%Q!rKNF)=~KA~sK#wrwdEpbpZX@RN#Q z_J$~*k+7~AgLjP?I>pc*?ZQW%^iuKv`$h}5-yu?rmJzWvLugVkTpZY<)7VnBCTfZs z%XJ(44WgP+JpB3IeuAFt-h=#f&+_Ms2O#C?9pK%UeQ6e0rsd5rK&}WC5TsuIRyoCB z>Dty9D~0`aM`_?K0V!eFD}oy>tQNk{z0DH1hz$Otf01>T^z!fwR+E#mv1b~mMZSdI zH-yTJB=SWpYQ}Xm^&xMTL*I_T|J9Y$5mkzsf4X`fLgL$eR4n&|jT_vB^R!4%cMb2h z9zPSSJL#vXka*UwDh0G(r_NTi28y9wVZ8G{TbZ&9BKQb*I5s3GIcZZZZa=VwH?5(} zX8f~mJ*BVe-nO1wf#Blty-?X5%l4tMTMor#Lk90uyJB)kWCwrfyMH))D~YhUBO~v+ zrzh_`7qz>0w-$Jhrp*DUI~7KInMF)_ua;lo1H=8x6zaD7`RccCF~EM0nJw$L!H!u^ zR7a@bv9+9@oWy1;Ex$Jz{^WI4A~7Pv#}&ujK;K;VfrIDDdMObo4mAn*5D(^Z)?@4Q zO@&nbpL0(}?-+4w3YK_QtXgX#%P0mACtsC%LS%bO zJGs)bZAHC*&aD-e!bOB$5_d2{e~Sbo<~IR0EzM1|8q@6xtt)zJg>B>`QeH=+C9-0dhvfI^2ej=q9d!&>Eq0eU*!a^_EG4pP*LWW+*l1gQx0(Tj#>0g2a z*k7=^>LJjrQ_DW(9t)jX)8I>Ao}54u4Q(&u7ik`;GjATLD@pRaAQ~Kwf0iEi3t)x4 z^`B{th%|Q`4sghqYskTS;v#)GYY$ zV{cF4A>42sO+KQljo zIi=Rq#J6T<7!2htH`A^SmqQ?OQCuGm(&ars`iOiGbK@2Kv)|2}_ZE##YtyVF5K7tFhSJdR=BGDZQ6;IeUAV94XYCXJO!|BP<`5ar*aPcG2( zHor(@xZn~kdtQzHZ_->tE>X7#%3-<6+$%+Jnq%+M<0pReW|Vn48-A$^u8%6u#J`4~ z$!IJ>F-DW0K^jTA*W>c{WcWY2i>;o3PY=>O#Z|#)o+JM&n!ZTx*2sRu04r179*`hD z@S?#DzpV{okL+eL1V;)!iPZ<)`R^A4;3`dMSm-|)5(nRlx51arE$Zzw;AcUA`O%X%^iXC=5J~c_0Kv^ z892D>6E1YoV(=+508`xU_eCe)rf-mTvg0pCw*O^ zs#^0Rqpk@iq&Za~!sP5uXTd608y z&VSy!U8jcF%bG`}3%qs!kBFw8@W;7_pD!11k-bip@Ing+{RIkUEKkv|lq3hNV{ZZJ zLJ1Hqh@9BUSk3Cgu(SK@^XiZw2)NgMPQ#NMO2Tcw3OguuM@GboVOl*V6g)^CU+{uh zx?xMDvdVpz1jUe(?$YN~qB*lG%!8)Ys6Y8mF27l=+E{@%=Es;)*$O_E+W)2YkzOiZ zc1C@>Sc-LSh9VgkGItZ%2^qvRR#)cs>h^E;e*U_$E(+FeccZVbO8$XFi1h zM3{9#1;3RG4_2YIywb~W^;A*tTy8KvaW~W;T{%WI>QaA5sEgSKBTE3s) zlI41w^(a(E+`WzFe(%Nf|LRST>mUY=Z($LC-VExdVV3US7MJ1yH_9vxp3ylMBR{-lr1@LSOl$~5#D!}ao z2=Etsr_l@Rk8Bwg-P_i*mlf_o^)Ea6gr5m9W0Cwt@g=M^u-+|Y&tKv22-2JweaDrB z#C{y(etNAw4_DkuWGwtVRnOfp?dz6HnJfkw^vRwV0ud6~{*f)&Zwb$?%1xz5Axyl( zgO;K1um0+ESKBSq25?sBpUNhKZX@)$P>@eyl8dO;Nn2_BWp-p|48iK?Jvh-XbF$Ta zZi;<Ms z)#)8~HsU3~c+3`@BK~ft<*rmi?|5xwt685B&}Q?~HI5 zf7CZ}2n+z#D^MTi&>%A?QRp5x|E1~)*M%#^h+=nZhF550`VU~xE6t`ym**u zel@Na9q;GX%Hlk}LJ-my2^#^r;TW;{GF zUgwcKUi@|zk(p=D*rU|r|Hs*)__$*ve!^zyMxojl_MgIY>**y1$RJCtCFOdOB|2Wm zOGL4f3+cq^yvG57Wcx-+We20bGxRjR@L7c(5Lk8WDD!AskAk=FEo99y#fqAa);h#7x}XnhG-FK4E983Rr7{R zsF~7Yq*Q!DnKVM)(O(A)MuLTm2?qKm6c8 z_Q1K~yBq0b%B#%S2M)(n3w>w7@->OO?tXn47gj4x@mQ2I5&`E=|JTPaV!aD~baiRD zKnu`kx_zBgd^hYS%&?nF#)K$6Zj>y;{WjmE|zB*G=KCiOT} zs4s(YV1HpRo88(Ei}PgV)YUGZ+>}cP0;Idus7b%it)(=WZ*CL@T6)XQ1n7y0|d z`{1sPGl#tr*k;Z+XYMl9FLSXKT4^8eM9u9oh1nJ%0>trKcvI5{L(xRTPp(stEl$dA z5%edV7o02AXLM(zJ%8ttPNPWH9QPcdPH4Be!aUMTQE*>vyM)8m0MXe!mT0gH&_ja@ z0s?f<&SpR6e*;1<#7Vv#r^|s}@*{2n*&*Bz{hlZDV+6vvsHA1(=GT=55bz~mhyiN+ zYI_};kN)^iH)V#rr5bz7#|KMY2FPr5c*y=1;Qs)Ef>2< za~f=4(DMMoZ;`Br|7#p~pWV9{F-1jP?dQ7h5KVX{K{hAjqaR{){hv@4>+ERe?M$s( z_(2O=SpELHQ(n+SC^jY$M+U6au&G7%m~qNQHm9V}X(#SR;sO|QadjsP0-%=f9@rY7 zhvAnCh6;Wkxh?a)PdGF4UEyXfc;E2lbz~@StWG5iQNUaCUjo9g=^^fXO*7z1d#7>! zy>@OnhjXNwvr7rs7(Q+LyJ5-kr)Z8uB|u!Z+p~(IItD!@#82pvLbR{_GvH#Y6fE={ z`Tr{e7qHrkjFE&&@2foUI{9>{_1Lvw0I}6;{`!eyp$0gJc%`BCXktB4sCq7wEdh4! z;3cEro1rfoyg@02-UE$+8budCX!?lJEB&7a*LqUdClUn*Ks=rb%?gU*Gf+eo@le^; z_kuVY$L3c)3SxuCuTp*0zU!-LlXZlbOoB#%7(-r;Qt#w0k@ixzwu*SKs3@A=NS2OwZDGU<_lx!+F4AHe zurX|jy|0Z1zcGMVKCDD+O0dd5E_}?N!3=Ipyl4r6kwNtbxM1yMjO&?YzmR3}+-4{b zClDY*Z<79{Q7J!K|*pi4zFYZnu^RNT2Oa zKY#fEltnlpg>JII_?e)cP$u~rt9MclLX;{m=!5w$bXUzXF^0Ldz2}0d#>dUj~70dS^ln6k@))wl?H@```JkPl&C zVc2DxuJ>!GWvN$mdzsuOWxb$Wq!jS;(9y&dV)SdZ*QcufjFwmxJtc6TS=b_9WlN6z z%X_n!tA{Sr|L53&pnt?<(R5}alW6qSPL5O`He{5t-w9O*xtq-xo!E0`qjOAL2RpQD zFv9dlWPWQtDWoARFJ0 zwEg<+5VeX$Mvn_rX}+qHLc0BzPf-*2o@A%Ao}{}J!kwv-&+~6ZGDc!)F#=yFb|<3M zP6u7NCfeSFC#-oggfcmdm|XM9Kc;8w7Y4a&dt_XEGDR_?68|p!{`oq5-l_+qW*oa>uDx9w^+pqJs1n2w?jje@{S$K7xfCV$+3^NV z{jQ)I?_Cq1pwdvc>vgEfU6(LA_nw_f>d7m(baLfz8a#l3nPgx%mcIH^Q4P(@*s^mK zCgW`&Qx|#pZO}S77FwuG{0^WR2QtztxDs(m|qKx-Yc8|4{R2bBvzj{>zy5g}IapnG|1= z4T2p0CR|d%m=+acb{jv4-RR8CLv`LGg?&->ngUEtFcY0 z9PRfi81p;K;MtYWImZjV9+RU}owu@eVF&J>J)ar$RUV@+M~qecH{RY4vxIzGV`V&z z<~V*!1|8k1eU1*h(conX)41Ql(eAXIzE~JJe}rs+NEa}6E>uSs+%lp}UwXykKx zwcLDIBkW}1bx2P~pw17}0rEc3E_KKCD>`KFk#BuL;hBUU<>ppd3Ld(Fq4p07deM7D zQxFipO5%;Snp*Ipw;?(8Aocwg4@alMDdNKJ9!l~(b9N6Vtb0$B$e*e3lqn9IoeWLVOtdshbaZ<5`G}6h9RZ~ zU#jE~AtZpVxWB>v1LwbEom9LRxt$Gu|3>(fE1h$rpO$bt*z&|LI%?zox1@qTtsOsk zJb%U{j77-tgVA1H#YiC`Pi<6!Pv{9Xp>L}*Hfd*CN&vch76xh!jZG9N`t78&NI!0t zAR!V`IBZ~mDfB~Kplr#ZtJK_wZ=X@_i&7fYtzfC>xJwGUPWKke-bFd}%RDTAOxRJoU(y#OZ*8Laz-Z89Oys4Lj%WPZqcipLT+ zXA^B#>@IrfX@|cv9(uU?M`vFkC; z&GKYbTr5`@HogRJ&%0ApxU$#jGA!c^ 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 team_numbers = new ArrayList<>(); + private ArrayList autonDataStringList; + public static final int REQUEST_CODE = 1; + + + /*When this activity is first called, + *we will call the activity_auton layout so we can display + *the user interface + */ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + TeamsDbHelper mDbHelper = new TeamsDbHelper(this); + SQLiteDatabase db = mDbHelper.getReadableDatabase(); + + setContentView(R.layout.activity_auton); + ButterKnife.bind(this); + autonDataStringList = new ArrayList<>(); + team_numbers = TeamsDbHelper.getTeamNumbers(db); + + checkForPermissions(); + + AutoHighAttemptInput.setText("" + HighMissed); + AutoHighMadeInput.setText("" + HighMade); + AutoLowAttemptInput.setText("" + LowMissed); + AutoLowMadeInput.setText("" + LowMade); + AutoTrapAttemptInput.setText("" + TrapMissed); + AutoTrapMadeInput.setText("" + TrapMade); + + + // --- Team Numbers spinner --- + + Spinner teamnumberspinner = (Spinner) findViewById(R.id.team_number_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter teamnumberadapter = new ArrayAdapter(AutonActivity.this, + android.R.layout.simple_spinner_dropdown_item, team_numbers); +// Specify the layout to use when the list of choices appears + teamnumberadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + teamnumberspinner.setAdapter(teamnumberadapter); + + + } + + /*If this activity is resumed from a paused state the data + *will be set to what they previously were set to + */ + @Override + protected void onResume() { + super.onResume(); + + autonDataStringList.clear(); + + TeamNumberInputLayout.setOnKeyListener(this); + AutoHighAttemptInputLayout.setOnKeyListener(this); + AutoHighMadeLayout.setOnKeyListener(this); + AutoLowAttemptInputLayout.setOnKeyListener(this); + AutoLowMadeLayout.setOnKeyListener(this); + AutoTrapAttemptInputLayout.setOnKeyListener(this); + AutoTrapMadeLayout.setOnKeyListener(this); + matchNumberInput.setOnKeyListener(this); + startingLocation.setOnKeyListener(this); + + + } + + /*If this activity enters a paused state the data will be set to null*/ + @Override + protected void onPause() { + super.onPause(); + + TeamNumberInputLayout.setOnKeyListener(null); + AutoHighAttemptInputLayout.setOnKeyListener(null); + AutoHighMadeLayout.setOnKeyListener(null); + AutoLowAttemptInputLayout.setOnKeyListener(null); + AutoLowMadeLayout.setOnKeyListener(null); + AutoTrapAttemptInputLayout.setOnKeyListener(null); + AutoTrapMadeLayout.setOnKeyListener(null); + matchNumberInput.setOnKeyListener(null); + startingLocation.setOnKeyListener(null); + + } + + /* This method will display the options menu when the icon is pressed + * and this will inflate the menu options for the user to choose + */ + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } + + /*This method will launch the correct activity + *based on the menu option user presses + */ + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_activity: + startActivity(new Intent(this, MainActivity.class)); + return true; + case R.id.send_data: + startActivity(new Intent(this, SendDataActivity.class)); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + + /*This method will look at all of the text/number input fields and set error + *for validation of data entry + */ + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (keyCode != KeyEvent.KEYCODE_SPACE && keyCode != KeyEvent.KEYCODE_TAB) { + TextInputEditText inputEditText = (TextInputEditText) v; + + if (inputEditText != null) { + + switch (inputEditText.getId()) { + + + case R.id.matchNumber_input: + matchNumberInputLayout.setError(null); + break; + } + } + } + return false; + } + + + /*This method takes place when the Show teleop button is pressed + *This will first check if the text fields are empty and highlight + * The area not completed as well as put that text input as the focus + * to the user in the app. If everything passes by being filled in, + * The value of the radio buttons will be obtained. + * Then all of the values of this activity are added to the autonDataStringList + * delimited by a comma. This method will then launch the teleop activity while sending + * over our list of data. A request on result is requested so we can clear this aplication + * after the teleop activity closes + */ + public void onShowTeleop(View view) { + boolean allInputsPassed = false; + + final RadioButton autoInitiationLineRadioBtn = findViewById(autoInitiationLine.getCheckedRadioButtonId()); + + if (TeamNumberInputLayout.getSelectedItem().toString().equals("Select Team Number")) { + setSpinnerError(TeamNumberInputLayout, "Select a Team Number."); + ViewUtils.requestFocus(TeamNumberInputLayout, this); + } else if (StringUtils.isEmptyOrNull(getTextInputLayoutString(matchNumberInputLayout)) || Integer.valueOf(getTextInputLayoutString(matchNumberInputLayout)) == 0 || Integer.valueOf(getTextInputLayoutString(matchNumberInputLayout)) >= 150) { + matchNumberInput.setText(""); + matchNumberInputLayout.setError(getText(R.string.matchNumberError)); + ViewUtils.requestFocus(matchNumberInputLayout, this); + } else { + allInputsPassed = true; + } + + if (!allInputsPassed) { + return; + } + + autonDataStringList.add(TeamNumberInputLayout.getSelectedItem().toString()); + autonDataStringList.add(getTextInputLayoutString(matchNumberInputLayout)); +// autonDataStringList.add(startingLocation.getSelectedItem().toString()); + autonDataStringList.add(getTextInputLayoutString(AutoHighAttemptInputLayout)); + autonDataStringList.add(getTextInputLayoutString(AutoHighMadeLayout)); + autonDataStringList.add(getTextInputLayoutString(AutoLowAttemptInputLayout)); + autonDataStringList.add(getTextInputLayoutString(AutoLowMadeLayout)); + autonDataStringList.add(getTextInputLayoutString(AutoTrapAttemptInputLayout)); + autonDataStringList.add(getTextInputLayoutString(AutoTrapMadeLayout)); + autonDataStringList.add(autoInitiationLineRadioBtn.getText().toString()); + + + + + //autonDataStringList.add(playStyle.getSelectedItem().toString()); + + final Intent intent = new Intent(this, TeleopActivity.class); + intent.putExtra(AUTON_STRING_EXTRA, FormatStringUtils.addDelimiter(autonDataStringList, "|")); + intent.putExtra(MATCH_STRING_EXTRA, getTextInputLayoutString(matchNumberInputLayout)); + intent.putExtra(TEAMNUMBER_STRING_EXTRA, TeamNumberInputLayout.getSelectedItem().toString()); + + startActivityForResult(intent, REQUEST_CODE); + + + matchNumberInputLayout.setError(null); + + matchNumberInput.requestFocus(); + + } + + + /*This method will check for the result code from the teleop activity + *so we can clear the data before the next match scouting starts + */ + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + try { + super.onActivityResult(requestCode, resultCode, data); + + if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { + clearData(); + finish(); + } + } catch (Exception ex) { + Toast.makeText(this, ex.toString(), Toast.LENGTH_SHORT).show(); + } + } + + /*This method will clear all of the text entry fields as well + * as reset the checkboxes and reset the radio buttons to their default*/ + public void clearData() { + TeamNumberInputLayout.setSelection(0); + matchNumberInput.setText(""); + startingLocation.setSelection(0); + AutoHighAttemptInput.setText("" + HighMissed); + AutoHighMadeInput.setText("" + HighMade); + AutoLowAttemptInput.setText("" + LowMissed); + AutoLowMadeInput.setText("" + LowMade); + AutoTrapAttemptInput.setText("" + TrapAttempt); + AutoTrapMadeInput.setText("" + TrapMade); + HighAttempt = 0; + HighMissed =0; + HighMade = 0; + LowAttempt = 0; + LowMissed = 0; + LowMade = 0; + TrapAttempt = 0; + TrapMissed = 0; + TrapMade = 0; + autoInitiationLine.check(R.id.AutoInitiationLine_yes); + displayAutoHighAttemptInput(HighMissed); + displayAutoHighMadeInput(HighMade); + displayAutoLowAttemptInput(LowMissed); + displayAutoLowMadeInput(LowMade); + + + } + + + private void setSpinnerError(Spinner spinner, String error) { + View selectedView = spinner.getSelectedView(); + if (selectedView instanceof TextView) { + spinner.requestFocus(); + TextView selectedTextView = (TextView) selectedView; + selectedTextView.setError("error"); + selectedTextView.setTextColor(Color.RED); + selectedTextView.setText(error); + + } + } + + + /* This method will change the text entered into the app into a string if it is not already*/ + private String getTextInputLayoutString(@NonNull TextInputLayout textInputLayout) { + final EditText editText = textInputLayout.getEditText(); + return editText != null && editText.getText() != null ? editText.getText().toString() : ""; + } + + private void checkForPermissions() { + int writePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); + + if (writePermission != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); + } + } + + public void decreaseAutoHighAttemptInput(View view) { + if (HighMissed != 0) { + HighMissed -= 1; + HighAttempt -=1; + + displayAutoHighAttemptInput(HighMissed); + + } + } + + public void increaseAutoHighAttemptInput(View view) { + if (HighMissed <= 800) { + HighMissed += 1; + HighAttempt +=1; + displayAutoHighAttemptInput(HighMissed); + } + + } + + private void displayAutoHighAttemptInput(int number) { + + AutoHighAttemptInput.setText("" + number); + } + + public void decreaseAutoHighMadeInput(View view) { + if (HighMade != 0) { + HighMade -= 1; + HighAttempt -= 1; + displayAutoHighMadeInput(HighMade); + } + } + + public void increaseAutoHightMadeInput(View view) { + if (HighMade <= 800) { + HighMade +=1; + HighAttempt += 1; + displayAutoHighMadeInput(HighMade); + } + + } + + private void displayAutoHighMadeInput(int number) { + + AutoHighMadeInput.setText("" + number); + } + + public void decreaseAutoLowAttemptInput(View view) { + if (LowMissed != 0) { + LowMissed -= 1; + LowAttempt -=1; + + displayAutoLowAttemptInput(LowMissed); + } + } + + public void increaseAutoLowAttemptInput(View view) { + if (LowMissed <= 800) { + LowMissed += 1; + LowAttempt += 1; + displayAutoLowAttemptInput(LowMissed); + } + + } + + private void displayAutoLowAttemptInput(int number) { + + AutoLowAttemptInput.setText("" + number); + } + + public void decreaseAutoLowMadeInput(View view) { + if (LowMade != 0) { + LowMade -= 1; + LowAttempt -=1; + displayAutoLowMadeInput(LowMade); + } + } + + public void increaseAutoLowMadeInput(View view) { + if (LowMade <= 800) { + LowMade += 1; + LowAttempt +=1; + displayAutoLowMadeInput(LowMade); + + } + + } + + private void displayAutoLowMadeInput(int number) { + + AutoLowMadeInput.setText("" + number); + } + public void decreaseAutoTrapAttemptInput(View view) { + if (TrapMissed != 0) { + TrapMissed -= 1; + TrapAttempt -=1; + + displayAutoTrapAttemptInput(TrapMissed); + } + } + public void increaseAutoTrapAttemptInput(View view) { + if (TrapMissed <= 800) { + TrapMissed += 1; + TrapAttempt += 1; + displayAutoTrapAttemptInput(TrapMissed); + } + + } + + public void decreaseAutoTrapMadeInput(View view) { + if (TrapMade != 0) { + TrapMade -= 1; + TrapAttempt -=1; + displayAutoTrapMadeInput(TrapMade); + } + } + + public void increaseAutoTrapMadeInput(View view) { + if (TrapMade <= 800) { + TrapMade += 1; + TrapAttempt +=1; + displayAutoTrapMadeInput(TrapMade); + + } + + } + private void displayAutoTrapMadeInput(int number) { + + AutoTrapMadeInput.setText("" + number); + } + private void displayAutoTrapAttemptInput(int number) { + + AutoTrapAttemptInput.setText("" + number); + } +} + diff --git a/app/src/main/java/com/example/ncgears/scouting/MainActivity.java b/app/src/main/java/com/example/ncgears/scouting/MainActivity.java new file mode 100644 index 0000000..036be07 --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/MainActivity.java @@ -0,0 +1,154 @@ +/* + + *************** Code Designed by Team 107 Team Robotics ********************* + *************** Edited for Team 1918 By Nate and Ken ********************* + + + */ + +package com.example.ncgears.scouting; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.database.sqlite.SQLiteDatabase; +import android.inputmethodservice.Keyboard; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.ncgears.scouting.customToast.CustomToast; +import com.example.ncgears.scouting.data.GetJasonData; +import com.example.ncgears.scouting.data.TeamsContract.TeamEntry; +import com.example.ncgears.scouting.data.TeamsDbHelper; + +import org.json.JSONArray; + +import java.lang.reflect.Array; +import java.util.ArrayList; + +import butterknife.ButterKnife; + +public class MainActivity extends AppCompatActivity implements View.OnKeyListener { + + + public static TextView data; + public static String TeamsList = "No teams loaded"; + public static String postData; + + SQLiteDatabase db; + + public ArrayList teams = new ArrayList<>(); + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_main); + ButterKnife.bind(this); + + // set up Database object + TeamsDbHelper mDbHelper = new TeamsDbHelper(this); + db = mDbHelper.getWritableDatabase(); + + teams = TeamsDbHelper.getTeams(db); + + if (!teams.isEmpty()){ + TeamsList = ""; + for(int i =0; i < teams.size(); i++){ + + TeamsList = TeamsList + teams.get(i) + "\n"; + } + } + + data = findViewById(R.id.TeamsList); + data.setText(TeamsList); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_activity: + startActivity(new Intent(this, MainActivity.class)); + return true; + case R.id.send_data: + startActivity(new Intent(this, SendDataActivity.class)); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (keyCode != KeyEvent.KEYCODE_SPACE && keyCode != KeyEvent.KEYCODE_TAB) { + TextInputEditText inputEditText = (TextInputEditText) v; + + if (inputEditText != null) { + + switch (inputEditText.getId()) { + + } + } + } + return false; + } + + private boolean isNetworkAvailable(){ + ConnectivityManager connectivityManager + = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); + return activeNetworkInfo !=null && activeNetworkInfo.isConnected(); + } + + public void showMatch(View view) { + startActivity(new Intent(this, ScouterInitialsActivity.class)); + } + + public void showPit(View view) { + startActivity(new Intent(this, PitActivity.class)); + } + + public void sendData(View view) { + startActivity(new Intent(this, SendDataActivity.class)); + } + + public void getTeams(View view){ + + if(isNetworkAvailable()){ + + TeamsDbHelper.dropTable(db); + TeamsDbHelper.createTable(db); + GetJasonData process = new GetJasonData(this); + process.execute(); + + Toast.makeText(this, "Import Complete", Toast.LENGTH_LONG).show(); + } + else{ + + CustomToast.showLong(this, "Sorry! But your WiFi doesn't seem to be on at this time"); + + + } + + + + } +} diff --git a/app/src/main/java/com/example/ncgears/scouting/PitActivity.java b/app/src/main/java/com/example/ncgears/scouting/PitActivity.java new file mode 100644 index 0000000..ecfc50b --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/PitActivity.java @@ -0,0 +1,980 @@ +/* + + *************** Code Designed by Team 107 Team Robotics ********************* + *************** Edited for Team 1918 By Nate and Ken ********************* + + + */ + +package com.example.ncgears.scouting; + +import android.Manifest; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.database.sqlite.SQLiteDatabase; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.provider.Settings; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; +import android.support.v4.content.FileProvider; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.Spinner; +import android.widget.ArrayAdapter; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.ncgears.scouting.data.TeamsDbHelper; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.ButterKnife; +import utils.FormatStringUtils; +import utils.PermissionUtils; +import utils.StringUtils; +import utils.ViewUtils; + +/** + * Created by Matt from Team 107 on 9/30/2017. + * Borrowed by Ken from Team 1918 on 1/7/2019. + */ + +public class PitActivity extends AppCompatActivity implements View.OnKeyListener { + + @BindView(R.id.pit_team_number_spinner) + public Spinner pitTeamNumberSpinner; + + @BindView(R.id.pit_power_cell_pickup_radio_group) + public RadioGroup pitPowerCellPickupRadioGroup; + + @BindView(R.id.pit_robot_weight) + public EditText pitRobotWeight; + + @BindView(R.id.pit_drive_train_spinner) + public Spinner pitDriveTrainSpinner; + + @BindView(R.id.drive_train_other) + public EditText driveTrainOther; + + @BindView(R.id.pit_programming_language_spinner) + public Spinner pitProgrammingLanguages; + + @BindView(R.id.programming_language_other) + public EditText programmingLanguageOther; + + @BindView(R.id.pit_basic_plan) + public EditText pitBasicPlan; + + @BindView(R.id.pit_auto_programs) + public EditText pitAutoPrograms; + + @BindView(R.id.pit_shoot_target_zone) + public CheckBox pitShootTargetZone; + + @BindView(R.id.pit_shoot_field_front) + public CheckBox pitShootFieldFront; + + @BindView(R.id.pit_shoot_field_diagonal) + public CheckBox pitShootFieldDiagonal; + + @BindView(R.id.pit_shoot_trench_near) + public CheckBox pitShootTrenchNear; + + @BindView(R.id.pit_shoot_trench_far) + public CheckBox pitShootTrenchFar; + + @BindView(R.id.pit_shoot_other) + public CheckBox pitShootOther; + + public String shotString = ""; + + @BindView(R.id.pit_fav_target_zone) + public CheckBox pitFavTargetZone; + + @BindView(R.id.pit_fav_field_front) + public CheckBox pitFavFieldFront; + + @BindView(R.id.pit_fav_field_diagonal) + public CheckBox pitFavFieldDiagonal; + + @BindView(R.id.pit_fav_trench_near) + public CheckBox pitFavTrenchNear; + + @BindView(R.id.pit_fav_trench_far) + public CheckBox pitFavTrenchFar; + + @BindView(R.id.pit_fav_other) + public CheckBox pitFavOther; + + public String favShotString = ""; + +// @BindView(R.id.pit_end_game_location_spinner) +// public Spinner pitEndGameLocationSpinner; + + @BindView(R.id.pit_shot_location_inner) + public CheckBox pitShotLocationInner; + + @BindView(R.id.pit_shot_location_outer) + public CheckBox pitShotLocationOuter; + + @BindView(R.id.pit_shot_location_bottom) + public CheckBox pitShotLocationBottom; + + @BindView(R.id.pit_shot_location_na) + public CheckBox pitShotLocationNa; + + public String pitShotLocationString = ""; + +// @BindView(R.id.pit_control_panel_rotate_3to5) + public CheckBox pitControlPanelRotate3to5; + +// @BindView(R.id.pit_control_panel_position) + public CheckBox pitControlPanelPosition; + +// @BindView(R.id.pit_control_panel_nothing) + public CheckBox pitControlPanelNothing; + + public String ControlPanelString = ""; + + @BindView(R.id.pit_endgame_location) + public RadioGroup pitEndgameLocation; + + @BindView(R.id.pit_drive_thru_trench) + public RadioGroup pitDriveThruTrench; + +// @BindView(R.id.pit_endgame_hang) +// public CheckBox pitEndgameHang; + + @BindView(R.id.scouterInitials_input) + public EditText scouterInitialsInput; + + + @BindView(R.id.take_photo_btn) + public Button takePhotoBtn; + + @BindView(R.id.save_pit_btn) + public Button savePitBtn; + + @BindView(R.id.pit_robot_name) + public EditText RobotNameInput; + + public ArrayList team_numbers = new ArrayList<>(); + private ArrayList pitDataStringList; + + + + + + + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + TeamsDbHelper mDbHelper = new TeamsDbHelper(this); + SQLiteDatabase db = mDbHelper.getReadableDatabase(); + + setContentView(R.layout.activity_pit); + pitDataStringList = new ArrayList<>(); + + team_numbers = TeamsDbHelper.getTeamNumbers(db); + + ButterKnife.bind(this); + + checkForPermissions(); + + pitDriveTrainSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + if(pitDriveTrainSpinner.getSelectedItem().toString().equals("Other")){ + driveTrainOther.setVisibility(view.VISIBLE); + } + else{ + driveTrainOther.setVisibility(view.INVISIBLE); + } + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + + } + }); + + pitProgrammingLanguages.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + if(pitProgrammingLanguages.getSelectedItem().toString().equals("Other")){ + programmingLanguageOther.setVisibility(view.VISIBLE); + } + else{ + programmingLanguageOther.setVisibility(view.INVISIBLE); + } + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + + } + }); + + + // --- Drive Train spinner --- + + // Spinner drivetrainspinner = (Spinner) findViewById(R.id.pit_drive_train_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter drivetrainadapter = ArrayAdapter.createFromResource(this, + R.array.driveTrain, android.R.layout.simple_spinner_item); +// Specify the layout to use when the list of choices appears + drivetrainadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + pitDriveTrainSpinner.setAdapter(drivetrainadapter); + + // --- Team Numbers spinner --- + + // Spinner teamnumberspinner = (Spinner) findViewById(R.id.pit_team_number_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter teamnumberadapter = new ArrayAdapter<>(PitActivity.this, + android.R.layout.simple_spinner_dropdown_item, team_numbers); +// Specify the layout to use when the list of choices appears + teamnumberadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + pitTeamNumberSpinner.setAdapter(teamnumberadapter); + + + // --- Programming languages spinner --- + + // Spinner languagespinner = (Spinner) findViewById(R.id.pit_programming_language_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter languageadapter = ArrayAdapter.createFromResource(this, + R.array.programmingLanguages, android.R.layout.simple_spinner_item); +// Specify the layout to use when the list of choices appears + languageadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + pitProgrammingLanguages.setAdapter(languageadapter); + + // --- End Game Location spinner --- + +// Spinner pitendgamelocationspinner = (Spinner) findViewById(R.id.pit_end_game_location_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter pitendgamelocationadapter = ArrayAdapter.createFromResource(this, + R.array.endgame_location, android.R.layout.simple_spinner_item); +// Specify the layout to use when the list of choices appears + pitendgamelocationadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner +// pitendgamelocationspinner.setAdapter(pitendgamelocationadapter); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_activity: + startActivity(new Intent(this, MainActivity.class)); + return true; + case R.id.send_data: + startActivity(new Intent(this, SendDataActivity.class)); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + public void setStringShot(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + + case R.id.pit_shoot_trench_near: + s1 = pitShootTrenchNear.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_trench_far: + s1 = pitShootTrenchFar.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_other: + s1 = pitShootOther.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_target_zone: + s1 = pitShootTargetZone.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_field_diagonal: + s1 = pitShootFieldDiagonal.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_field_front: + s1 = pitShootFieldFront.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + } + } + + public void setStringFavShot(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + + case R.id.pit_fav_trench_near: + s1 = pitFavTrenchNear.getText().toString() + " ,"; + if (checked) { + if (favShotString.isEmpty()) { + favShotString = s1; + } else { + favShotString = favShotString + s1; + } + } else { + if (favShotString.contains(s1)) { + int start = favShotString.indexOf(s1); + favShotString = favShotString.substring(0, start) + favShotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_fav_trench_far: + s1 = pitFavTrenchFar.getText().toString() + " ,"; + if (checked) { + if (favShotString.isEmpty()) { + favShotString = s1; + } else { + favShotString = favShotString + s1; + } + } else { + if (favShotString.contains(s1)) { + int start = favShotString.indexOf(s1); + favShotString = favShotString.substring(0, start) + favShotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_fav_other: + s1 = pitFavOther.getText().toString() + " ,"; + if (checked) { + if (favShotString.isEmpty()) { + favShotString = s1; + } else { + favShotString = favShotString + s1; + } + } else { + if (favShotString.contains(s1)) { + int start = favShotString.indexOf(s1); + favShotString = favShotString.substring(0, start) + favShotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_fav_target_zone: + s1 = pitFavTargetZone.getText().toString() + " ,"; + if (checked) { + if (favShotString.isEmpty()) { + favShotString = s1; + } else { + favShotString = favShotString + s1; + } + } else { + if (favShotString.contains(s1)) { + int start = favShotString.indexOf(s1); + favShotString = favShotString.substring(0, start) + favShotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_fav_field_diagonal: + s1 = pitFavFieldDiagonal.getText().toString() + " ,"; + if (checked) { + if (favShotString.isEmpty()) { + favShotString = s1; + } else { + favShotString = favShotString + s1; + } + } else { + if (favShotString.contains(s1)) { + int start = favShotString.indexOf(s1); + favShotString = favShotString.substring(0, start) + favShotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_fav_field_front: + s1 = pitFavFieldFront.getText().toString() + " ,"; + if (checked) { + if (favShotString.isEmpty()) { + favShotString = s1; + } else { + favShotString = favShotString + s1; + } + } else { + if (favShotString.contains(s1)) { + int start = favShotString.indexOf(s1); + favShotString = favShotString.substring(0, start) + favShotString.substring(start + s1.length()); + } + } + break; + } + } + + public void setPowerPortShotString(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + + case R.id.pit_shoot_trench_near: + s1 = pitShootTrenchNear.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_trench_far: + s1 = pitShootTrenchFar.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_other: + s1 = pitShootOther.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shoot_target_zone: + s1 = pitShootTargetZone.getText().toString() + " ,"; + if (checked) { + if (shotString.isEmpty()) { + shotString = s1; + } else { + shotString = shotString + s1; + } + } else { + if (shotString.contains(s1)) { + int start = shotString.indexOf(s1); + shotString = shotString.substring(0, start) + shotString.substring(start + s1.length()); + } + } + break; + } + } + + public void setControlPanelString(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + +// switch (view.getId()) { +// +// case R.id.pit_control_panel_rotate_3to5: +// s1 = pitControlPanelRotate3to5.getText().toString() + " ,"; +// if (checked) { +// if (ControlPanelString.isEmpty()) { +// ControlPanelString = s1; +// } else { +// ControlPanelString = ControlPanelString + s1; +// } +// } else { +// if (ControlPanelString.contains(s1)) { +// int start = ControlPanelString.indexOf(s1); +// ControlPanelString = ControlPanelString.substring(0, start) + ControlPanelString.substring(start + s1.length()); +// } +// } +// break; +// +// case R.id.pit_control_panel_position: +// s1 = pitControlPanelPosition.getText().toString() + " ,"; +// if (checked) { +// if (ControlPanelString.isEmpty()) { +// ControlPanelString = s1; +// } else { +// ControlPanelString = ControlPanelString + s1; +// } +// } else { +// if (ControlPanelString.contains(s1)) { +// int start = ControlPanelString.indexOf(s1); +// ControlPanelString = ControlPanelString.substring(0, start) + ControlPanelString.substring(start + s1.length()); +// } +// } +// break; + +// case R.id.pit_control_panel_nothing: +// s1 = pitControlPanelNothing.getText().toString() + " ,"; +// if (checked) { +// if (ControlPanelString.isEmpty()) { +// ControlPanelString = s1; +// } else { +// ControlPanelString = ControlPanelString + s1; +// } +// } else { +// if (ControlPanelString.contains(s1)) { +// int start = ControlPanelString.indexOf(s1); +// ControlPanelString = ControlPanelString.substring(0, start) + ControlPanelString.substring(start + s1.length()); +// } +// } +// break; +// } + } + + public void setPitShotLocationString(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + + case R.id.pit_shot_location_bottom: + s1 = pitShotLocationBottom.getText().toString() + " ,"; + if (checked) { + if (pitShotLocationString.isEmpty()) { + pitShotLocationString = s1; + } else { + pitShotLocationString = pitShotLocationString + s1; + } + } else { + if (pitShotLocationString.contains(s1)) { + int start = pitShotLocationString.indexOf(s1); + pitShotLocationString = pitShotLocationString.substring(0, start) + pitShotLocationString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shot_location_inner: + s1 = pitShotLocationInner.getText().toString() + " ,"; + if (checked) { + if (pitShotLocationString.isEmpty()) { + pitShotLocationString = s1; + } else { + pitShotLocationString = pitShotLocationString + s1; + } + } else { + if (pitShotLocationString.contains(s1)) { + int start = pitShotLocationString.indexOf(s1); + pitShotLocationString = pitShotLocationString.substring(0, start) + pitShotLocationString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shot_location_outer: + s1 = pitShotLocationOuter.getText().toString() + " ,"; + if (checked) { + if (pitShotLocationString.isEmpty()) { + pitShotLocationString = s1; + } else { + pitShotLocationString = pitShotLocationString + s1; + } + } else { + if (pitShotLocationString.contains(s1)) { + int start = pitShotLocationString.indexOf(s1); + pitShotLocationString = pitShotLocationString.substring(0, start) + pitShotLocationString.substring(start + s1.length()); + } + } + break; + + case R.id.pit_shot_location_na: + s1 = pitShotLocationNa.getText().toString() + " ,"; + if (checked) { + if (pitShotLocationString.isEmpty()) { + pitShotLocationString = s1; + } else { + pitShotLocationString = pitShotLocationString + s1; + } + } else { + if (pitShotLocationString.contains(s1)) { + int start = pitShotLocationString.indexOf(s1); + pitShotLocationString = pitShotLocationString.substring(0, start) + pitShotLocationString.substring(start + s1.length()); + } + } + break; + } + } + + @Override + protected void onResume() { + super.onResume(); + + pitTeamNumberSpinner.setOnKeyListener(this); + pitDriveTrainSpinner.setOnKeyListener(this); +// pitEndGameLocationSpinner.setOnKeyListener(this); + driveTrainOther.setOnKeyListener(this); + pitRobotWeight.setOnKeyListener(this); + pitProgrammingLanguages.setOnKeyListener(this); + programmingLanguageOther.setOnKeyListener(this); + pitAutoPrograms.setOnKeyListener(this); + pitDriveThruTrench.setOnKeyListener(this); + pitBasicPlan.setOnKeyListener(this); + pitPowerCellPickupRadioGroup.setOnKeyListener(this); + pitEndgameLocation.setOnKeyListener(this); + } + + + @Override + protected void onPause() { + super.onPause(); + + pitTeamNumberSpinner.setOnKeyListener(null); + pitDriveTrainSpinner.setOnKeyListener(null); + driveTrainOther.setOnKeyListener(null); + pitRobotWeight.setOnKeyListener(null); + pitProgrammingLanguages.setOnKeyListener(null); + programmingLanguageOther.setOnKeyListener(null); + pitAutoPrograms.setOnKeyListener(null); + pitDriveThruTrench.setOnKeyListener(null); +// pitEndgameHang.setOnKeyListener(null); + pitBasicPlan.setOnKeyListener(null); +// pitEndGameLocationSpinner.setOnKeyListener(null); + pitPowerCellPickupRadioGroup.setOnKeyListener(null); + pitEndgameLocation.setOnKeyListener(null); + + } + + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + + + return false; + } + + public void savePitData(View view) throws IOException { + String state = Environment.getExternalStorageState(); + boolean allInputsPassed = false; + + // ****** Check Required fields set focus to field if it hasn't been filled out ****** + + + if (pitTeamNumberSpinner.getSelectedItem().toString().equals("Select Team Number") ) { + setSpinnerError(pitTeamNumberSpinner, "Select a Team Number."); + ViewUtils.requestFocus(pitTeamNumberSpinner, this); + }else if (pitProgrammingLanguages.getSelectedItem().toString().equals("") ) { + setSpinnerError(pitProgrammingLanguages, "Select a Programming Language."); + ViewUtils.requestFocus(pitProgrammingLanguages, this); + }else if(pitDriveTrainSpinner.getSelectedItem().toString().equals("")){ + setSpinnerError(pitDriveTrainSpinner, "Select a drive train."); + ViewUtils.requestFocus(pitDriveTrainSpinner, this); + } else if (StringUtils.isEmptyOrNull(pitRobotWeight.getText().toString())) { + pitRobotWeight.setError(getText(R.string.pitRobotWeightError)); + ViewUtils.requestFocus(pitRobotWeight, this); + } else if (StringUtils.isEmptyOrNull(scouterInitialsInput.getText().toString())) { + scouterInitialsInput.setError(getText(R.string.scouterInitialsError)); + ViewUtils.requestFocus(scouterInitialsInput, this); + } else { + allInputsPassed = true; + } + if (!allInputsPassed) { + return; + } + + + final RadioButton pitDriveThruTrenchbtn = findViewById(pitDriveThruTrench.getCheckedRadioButtonId()); +// final RadioButton pitEndgameHangbtn = findViewById(pitEndgameHang.getCheckedRadioButtonId()); + final RadioButton pitPowerCellPickUpRadioBtn = findViewById(pitPowerCellPickupRadioGroup.getCheckedRadioButtonId()); + final RadioButton pitEndgameLocationBtn = findViewById(pitEndgameLocation.getCheckedRadioButtonId()); + + if(PermissionUtils.getPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + if (Environment.MEDIA_MOUNTED.equals(state)) { + File dir = new File(Environment.getExternalStorageDirectory() + "/Scouting"); + //create csv file + File file = new File(dir, "Pit" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID) + ".csv"); + + pitDataStringList.add(pitTeamNumberSpinner.getSelectedItem().toString()); + pitDataStringList.add(RobotNameInput.getText().toString()); + pitDataStringList.add(pitRobotWeight.getText().toString()); + pitDataStringList.add(pitDriveTrainSpinner.getSelectedItem().toString()); + pitDataStringList.add(driveTrainOther.getText().toString()); + pitDataStringList.add(pitProgrammingLanguages.getSelectedItem().toString()); + pitDataStringList.add(programmingLanguageOther.getText().toString()); + pitDataStringList.add(pitAutoPrograms.getText().toString()); + pitDataStringList.add(pitPowerCellPickUpRadioBtn.getText().toString()); + pitDataStringList.add(shotString); + pitDataStringList.add(favShotString); +// pitDataStringList.add(pitDriveThruTrenchbtn.getText().toString()); + pitDataStringList.add(pitShotLocationString); + pitDataStringList.add(ControlPanelString); +// pitDataStringList.add(pitEndGameLocationSpinner.getSelectedItem().toString()); + pitDataStringList.add(pitEndgameLocationBtn.getText().toString()); + pitDataStringList.add(pitBasicPlan.getText().toString()); + pitDataStringList.add(scouterInitialsInput.getText().toString()); + + + + + + String message = FormatStringUtils.addDelimiter(pitDataStringList, "|") + "\n"; + + + //Output data to file + try { + FileOutputStream fileOutputStream = new FileOutputStream(file, true); + fileOutputStream.write(message.getBytes()); + fileOutputStream.close(); + + Toast.makeText(getApplicationContext(), "Saved!", Toast.LENGTH_LONG).show(); + } catch (IOException e) { + Toast.makeText(getApplicationContext(), "IOException! Go talk to the programmers!", Toast.LENGTH_LONG).show(); + Log.d("Scouting", e.getMessage()); + } + } else { + Toast.makeText(getApplicationContext(), "SD card not found", Toast.LENGTH_LONG).show(); + } + + clearData(); + pitTeamNumberSpinner.requestFocus(); + } + + + + + } + + public void takePhoto(View view) { + String name = pitTeamNumberSpinner.getSelectedItem().toString(); + + if(PermissionUtils.getPermissions(this, Manifest.permission.CAMERA) && + PermissionUtils.getPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) && + PermissionUtils.getPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + if (!StringUtils.isEmptyOrNull(name)) { + File dir = new File(Environment.getExternalStorageDirectory() + "/Scouting/Photos"); + dir.mkdirs(); + + File file = new File(dir, name + ".jpg"); + + try { + file.createNewFile(); + } catch (IOException e) { + Log.d("Scouting", e.getMessage()); + } + + Uri outputUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", file); + + Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + if (takePictureIntent.resolveActivity(getPackageManager()) != null) { + takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri); + startActivityForResult(takePictureIntent, 0); + } + } else { + //setSpinnerError(pitTeamNumberInputLayout, "Select a Team Number."); + ViewUtils.requestFocus(pitTeamNumberSpinner, this); + } + } else { + checkForPermissions(); + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == 0) { + if(resultCode == RESULT_OK) { + compressPhoto(); + } + } + } + + private void compressPhoto() { + try { + String name = pitTeamNumberSpinner.getSelectedItem().toString(); + + File dir = new File(Environment.getExternalStorageDirectory() + "/Scouting/Photos"); + File file = new File(dir, name + ".jpg"); + + FileInputStream inputStream = new FileInputStream(file); + Bitmap bitmap = BitmapFactory.decodeStream(inputStream); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 25, out); + + FileOutputStream outputStream = new FileOutputStream(file); + outputStream.write(out.toByteArray()); + inputStream.close(); + out.close(); + outputStream.close(); + + Toast.makeText(this, "Photo taken!", Toast.LENGTH_SHORT).show(); + } catch (IOException e) { + Log.d("Scouting", e.getMessage()); + Toast.makeText(this, "Failed to save photo. Try again!", Toast.LENGTH_LONG).show(); + } + } + + private void setSpinnerError(Spinner spinner, String error){ + View selectedView = spinner.getSelectedView(); + if (selectedView instanceof TextView){ + spinner.requestFocus(); + TextView selectedTextView = (TextView) selectedView; + selectedTextView.setError("error"); + selectedTextView.setTextColor(Color.RED); + selectedTextView.setText(error); + + } + } + + public void clearData() { + pitTeamNumberSpinner.setSelection(0); + pitRobotWeight.setText(null); + pitDriveTrainSpinner.setSelection(0); + driveTrainOther.setText(null); + pitProgrammingLanguages.setSelection(0); + programmingLanguageOther.setText(null); + pitAutoPrograms.setText(null); + scouterInitialsInput.setText(null); + pitControlPanelNothing.setChecked(false); + pitControlPanelPosition.setChecked(false); + pitControlPanelRotate3to5.setChecked(false); + pitShootTrenchNear.setChecked(false); + pitShootTrenchFar.setChecked(false); + pitShootOther.setChecked(false); + pitShootFieldFront.setChecked(false); + pitShootFieldDiagonal.setChecked(false); + pitShootTargetZone.setChecked(false); +// pitEndgameHang.setChecked(false); + pitDriveThruTrench.clearCheck(); + pitShotLocationOuter.setChecked(false); + pitShotLocationInner.setChecked(false); + pitShotLocationBottom.setChecked(false); + pitShotLocationNa.setChecked(false); + pitBasicPlan.setText(null); +// pitEndGameLocationSpinner.setSelection(0); + ControlPanelString = ""; + shotString = ""; + pitShotLocationString = ""; + RobotNameInput.setText(null); + + pitDataStringList.clear(); + } + + private void checkForPermissions() { + int cameraPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA); + if (cameraPermission != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1); + } + } + + + +} diff --git a/app/src/main/java/com/example/ncgears/scouting/ScouterInitialsActivity.java b/app/src/main/java/com/example/ncgears/scouting/ScouterInitialsActivity.java new file mode 100644 index 0000000..664ce93 --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/ScouterInitialsActivity.java @@ -0,0 +1,105 @@ +/* + + *************** Code Designed by Team 107 Team Robotics ********************* + *************** Edited for Team 1918 By Nate and Ken ********************* + + + */ + +package com.example.ncgears.scouting; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.support.v7.app.AppCompatActivity; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import butterknife.BindView; +import butterknife.ButterKnife; +import utils.StringUtils; +import utils.ViewUtils; + +public class ScouterInitialsActivity extends AppCompatActivity implements View.OnKeyListener { + + @BindView(R.id.scouterInitials_input_layout) + public TextInputLayout scouterInitialsInputLayout; + + @BindView(R.id.scouterInitials_input) + public TextInputEditText scouterInitialsInput; + + private static String initials; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_scouter_initials); + ButterKnife.bind(this); + + } + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_activity: + startActivity(new Intent(this, MainActivity.class)); + return true; + case R.id.send_data: + startActivity(new Intent(this, SendDataActivity.class)); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (keyCode != KeyEvent.KEYCODE_SPACE && keyCode != KeyEvent.KEYCODE_TAB) { + TextInputEditText inputEditText = (TextInputEditText) v; + + if (inputEditText != null) { + + switch (inputEditText.getId()) { + case R.id.scouterInitials_input_layout: + scouterInitialsInputLayout.setError(null); + break; + } + } + } + return false; + } + + public static String getInitials() { + return initials; + } + + public void submitInitials(View view) { + initials = getTextInputLayoutString(scouterInitialsInputLayout); + scouterInitialsInput.setText(null); + + if(!StringUtils.isEmptyOrNull(initials)) + startActivity(new Intent(this, AutonActivity.class)); + else + scouterInitialsInputLayout.setError(getText(R.string.scouterInitialsError)); + } + + private String getTextInputLayoutString(@NonNull TextInputLayout textInputLayout) { + final EditText editText = textInputLayout.getEditText(); + return editText != null && editText.getText() != null ? editText.getText().toString() : ""; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ncgears/scouting/SendDataActivity.java b/app/src/main/java/com/example/ncgears/scouting/SendDataActivity.java new file mode 100644 index 0000000..100b0d5 --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/SendDataActivity.java @@ -0,0 +1,211 @@ +/* + + *************** Code Designed by Team 107 Team Robotics ********************* + *************** Edited for Team 1918 By Nate and Ken ********************* + + + */ + +package com.example.ncgears.scouting; + +import android.Manifest; +import android.app.ActionBar; +import android.bluetooth.BluetoothAdapter; +import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.os.Message; +import android.os.Parcelable; +import android.provider.Settings; +import android.support.annotation.NonNull; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.support.v4.content.FileProvider; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.EditText; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import utils.FormatStringUtils; +import utils.PermissionUtils; + +import static android.os.Environment.getExternalStorageDirectory; + +/** + * Created by Matt on 10/9/2017. + */ + +public class SendDataActivity extends AppCompatActivity { + + // @BindView(R.id.matchOrPit_RadiobtnGrp) + public RadioGroup matchOrPitRadiobtnGrp; + + // @BindView(R.id.concatFolder_editText) + public EditText concatFolderEditText; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_send_data); + + ButterKnife.bind(this); + } + + /* This method will display the options menu when the icon is pressed + * and this will inflate the menu options for the user to choose + */ + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } + + /*This method will launch the correct activity + *based on the menu option user presses + */ + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_activity: + startActivity(new Intent(this, MainActivity.class)); + return true; + case R.id.send_data: + startActivity(new Intent(this, SendDataActivity.class)); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + public void concatenateData(View view) { + if(PermissionUtils.getPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE) && + PermissionUtils.getPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + RadioButton radioButton = findViewById(matchOrPitRadiobtnGrp.getCheckedRadioButtonId()); + + if(radioButton != null) { + String dir = Environment.getExternalStorageDirectory() + "/" + concatFolderEditText.getText().toString(); + + File folder = new File(dir); + + if(folder.exists() && concatFolderEditText.getText().toString().length() > 0) { + File[] files = folder.listFiles(); + + StringBuilder builder = new StringBuilder(); + FileReader fileReader; + BufferedReader bufferedReader; + FileOutputStream fileOutputStream; + + String type = radioButton.getText().toString().contains("Match") ? "Match" : "Pit"; + + if (files != null) { + try { + int fileCount = 0; + for (File file : files) { + if (file.getName().contains(type)) { + fileCount++; + fileReader = new FileReader(file); + bufferedReader = new BufferedReader(fileReader); + + String line; + while ((line = bufferedReader.readLine()) != null) { + builder.append(line + '\n'); + } + } + } + fileOutputStream = new FileOutputStream(new File(dir, "new.csv"), false); + fileOutputStream.write("teamNumber,matchNumber,startingLocation,baseline,autoCubesInSwitch,autoCubesInScale,numberOfCubesInExchange,numberOfCubesInTheirSwitch,numberOfCubesInOpSwitch,NumberOfCubesInScale,cubePickup,climb,canHelpOthersClimb,onPlatform,defense,fouls,scouterInitials".getBytes()); + fileOutputStream.write(builder.toString().getBytes()); + fileOutputStream.close(); + + Toast.makeText(this, "Successfully concatenated " + fileCount + " " + type + " files to new.csv!", Toast.LENGTH_LONG).show(); + + } catch (IOException e) { + Log.d("Scouting", e.getMessage()); + Toast.makeText(this, "Failed to concatenate data.", Toast.LENGTH_LONG).show(); + } + } + + } else { + Toast.makeText(this, "Invalid folder name!", Toast.LENGTH_LONG).show(); + } + } else { + Toast.makeText(this, "Select an option!", Toast.LENGTH_SHORT).show(); + } + } + } + + public void sendMatchData(View view) { + if(PermissionUtils.getPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + Intent intent = new Intent(Intent.ACTION_SEND); + String file = "storage/emulated/0/Scouting/Match" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID) + ".csv"; + intent.setType("text/plain"); + intent.setPackage("com.android.bluetooth"); + intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", new File(file))); + startActivity(Intent.createChooser(intent, "Share app")); + } + } + + public void sendPitData(View view) { + if(PermissionUtils.getPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + Intent intent = new Intent(Intent.ACTION_SEND); + String file = "storage/emulated/0/Scouting/Pit" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID) + ".csv"; + intent.setType("text/plain"); + intent.setPackage("com.android.bluetooth"); + intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", new File(file))); + startActivity(Intent.createChooser(intent, "Share app")); + } + } + + public void sendRobotPhotos(View view) { + if(PermissionUtils.getPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); + intent.setType("image/jpeg"); + intent.setPackage("com.android.bluetooth"); + String dir = "storage/emulated/0/Scouting/Photos/"; + + File folder = new File(dir); + File[] photos = folder.listFiles(); + + if(photos != null) { + ArrayList toSend = new ArrayList<>(); + + for (int i = 0; i < photos.length; i++) { + toSend.add(FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", photos[i])); + } + + intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, toSend); + startActivity(Intent.createChooser(intent, "Share app")); + } else { + Toast.makeText(this, "No photos!", Toast.LENGTH_SHORT).show(); + } + } + } + + private String getTextInputLayoutString(@NonNull TextInputLayout textInputLayout) { + final EditText editText = textInputLayout.getEditText(); + return editText != null && editText.getText() != null ? editText.getText().toString() : ""; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ncgears/scouting/TeleopActivity.java b/app/src/main/java/com/example/ncgears/scouting/TeleopActivity.java new file mode 100644 index 0000000..e14b8cf --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/TeleopActivity.java @@ -0,0 +1,1362 @@ +/* + +*************** Code Designed by Team 107 Team Robotics ********************* +*************** Edited for Team 1918 By Nate and Ken ********************* + + + */ + +package com.example.ncgears.scouting; + +import static android.R.attr.value; +import static com.example.ncgears.scouting.AutonActivity.AUTON_STRING_EXTRA; +import static com.example.ncgears.scouting.AutonActivity.MATCH_STRING_EXTRA; +import static com.example.ncgears.scouting.AutonActivity.TEAMNUMBER_STRING_EXTRA; + +import android.Manifest; +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Environment; +import android.provider.Settings; +import android.support.annotation.NonNull; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.Spinner; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.ButterKnife; +import utils.FormatStringUtils; +import utils.PermissionUtils; +import utils.StringUtils; +import utils.ViewUtils; + + +public class TeleopActivity extends AppCompatActivity implements View.OnKeyListener { + /*This area sets and binds all of the variables that we will use in the auton activity*/ + + @BindView(R.id.teleop_high_attempt_input_layout) + public TextInputLayout teleopHighAttemptInputLayout; + + @BindView(R.id.teleop_high_made_input_layout) + public TextInputLayout teleopHighMadeInputLayout; + + @BindView(R.id.teleop_trap_made_input_layout) + public TextInputLayout teleopTrapMadeInputLayout; + + @BindView(R.id.teleop_trap_attempt_input_layout) + public TextInputLayout teleopTrapAttemptInputLayout; + + @BindView(R.id.teleop_low_attempt_input_layout) + public TextInputLayout teleopLowAttemptInputLayout; + + @BindView(R.id.teleop_low_made_input_layout) + public TextInputLayout teleopLowMadeInputLayout; + + @BindView(R.id.teleop_high_attempts_input) + public TextInputEditText teleopHighAttemptsInput; + + @BindView(R.id.teleop_high_made_input) + public TextInputEditText teleopHighMadeInput; + + @BindView(R.id.teleop_trap_attempt_input) + public TextInputEditText teleopTrapAttemptsInput; + + @BindView(R.id.teleop_trap_made_input) + public TextInputEditText teleopTrapMadeInput; + + @BindView(R.id.teleop_low_attempt_input) + public TextInputEditText teleopLowAttemptInput; + + @BindView(R.id.teleop_low_made_input) + public TextInputEditText teleopLowMadeInput; + + @BindView(R.id.defense_rating_radio_group) + public RadioGroup defenseRatingRadioGroup; + + @BindView(R.id.power_cell_pickup_radio_group) + public RadioGroup powerCellPickupRadioGroup; + + @BindView(R.id.low_port_dump_radio_group) + public RadioGroup lowPortDumpRadioGroup; + + @BindView(R.id.under_trench_radio_group) + public RadioGroup underTrenchRadioGroup; + + @BindView(R.id.power_cell_placement_rating_radio_group) + public RadioGroup powerCellPlacementRatingRadioGroup; + + @BindView(R.id.control_panel_rating_radio_group) + public RadioGroup controlPanelRadingRadioGroup; + + @BindView(R.id.counter_defense_effectiveness) + public RadioGroup counterDefenseEffectiveness; + + @BindView(R.id.end_game_location_spinner) + public Spinner endGameLocationSpinner; + + @BindView(R.id.climb_time_radio_group) + public RadioGroup climbTimeRadioGroup; + + //@BindView(R.id.cycle_time_spinner) + // public Spinner cycleTimeSpinner; + + @BindView(R.id.cycle_time_radio_group) + public RadioGroup cycleTimeRadioGroup; + + @BindView(R.id.overall_effectiveness_radio_group) + public RadioGroup overallEffectivenessRadioGoup; + + @BindView(R.id.trained_drive_team_radio_group) + public RadioGroup trainedDriveTeamRadioGoup; + + @BindView(R.id.observe_Power_Cell_Pickup) + public CheckBox observPowerCellPickup; + + @BindView(R.id.observ_died_back) + public CheckBox observDiedBack; + + @BindView(R.id.observ_died_mid) + public CheckBox observDiedMid; + + @BindView(R.id.observ_dns) + public CheckBox observDns; + + @BindView(R.id.observ_fast) + public CheckBox observFast; + + @BindView(R.id.observ_fell_apart) + public CheckBox observFellApart; + + @BindView(R.id.observ_fell_over) + public CheckBox observFellOver; + + @BindView(R.id.control_panel_issues) + public CheckBox observPanelIssues; + + @BindView(R.id.observ_jerky) + public CheckBox observJerky; + + @BindView(R.id.observ_not_much) + public CheckBox observNotMuch; + + @BindView(R.id.observ_penalties) + public CheckBox observPenalties; + + @BindView(R.id.observ_played_defense) + public CheckBox observPlayedDefense; + + @BindView(R.id.observ_slow) + public CheckBox observSlow; + + @BindView(R.id.observ_slowed_by_robot) + public CheckBox observSlowedByRobot; + + @BindView(R.id.observ_smooth) + public CheckBox observsmooth; + + @BindView(R.id.observ_average_speed) + public CheckBox observAverageSpeed; + + @BindView(R.id.observ_power_cell_stuck_intake) + public CheckBox observPowerCellStuckIntake; + +// @BindView(R.id.observ_hung_up_power_cell) +// public CheckBox observHungUpPowerCell; +// +// @BindView(R.id.observ_fell_off_switch) +// public CheckBox observFellOffSwitch; + + @BindView(R.id.observ_hung_up) + public CheckBox observHungUp; + + @BindView(R.id.type_high_shooter) + public CheckBox typeHighShooter; + + @BindView(R.id.type_low_shooter) + public CheckBox typeLowShooter; + + @BindView(R.id.type_feeder_bot) + public CheckBox typeFeederBot; + + @BindView(R.id.type_control_panel) + public CheckBox typeControlPanel; + + @BindView(R.id.type_defense_bot) + public CheckBox typeDefenseBot; + + @BindView(R.id.type_counter_defense_bot) + public CheckBox typeCounterDefenseBot; + + @BindView(R.id.tele_shoot_target_zone) + public CheckBox teleShootTargetZone; + + @BindView(R.id.tele_shoot_field_front) + public CheckBox teleShootFieldFront; + + @BindView(R.id.tele_shoot_field_diagonal) + public CheckBox teleShootFieldDiagonal; + + @BindView(R.id.tele_shoot_trench_near) + public CheckBox teleShootTrenchNear; + + @BindView(R.id.tele_shoot_trench_far) + public CheckBox teleShootTrenchFar; + + @BindView(R.id.tele_shoot_other) + public CheckBox teleShootOther; + + + // @BindView(R.id.type_of_bot_spinner) + // public Spinner typeOfBotSpinner; + + @BindView(R.id.summary_input) + public EditText summaryInput; + + @BindView(R.id.issues_input) + public EditText issuesInput; + + public String observations = ""; + public String typeOfBot = ""; + public String shotFrom = ""; + + @BindView(R.id.save_btn) + public Button saveBtn; + + int teleopHighAttempt = 0; + int teleopHighMissed = 0; + int teleopHighMade = 0; + int teleopLowAttempt = 0; + int teleopLowMissed = 0; + int teleopLowMade = 0; + int teleopTrapAttempt = 0; + int teleopTrapMissed = 0; + int teleopTrapMade = 0; + + + + + public String auton; + public String matchNumber; + public String teamNumber; + + private ArrayList teleopDataStringList; +/* + *When this activity is first called, + *we will call the activity_auton layout so we can display + *the user interface + */ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_teleop); + + ButterKnife.bind(this); + + Bundle bundle = getIntent().getExtras(); + auton = bundle.getString(AUTON_STRING_EXTRA); + matchNumber = bundle.getString(MATCH_STRING_EXTRA); + teamNumber = bundle.getString(TEAMNUMBER_STRING_EXTRA); + + getSupportActionBar().setTitle("Match: " + matchNumber + " - Team: " + teamNumber); + + teleopDataStringList = new ArrayList<>(); + + displayHighAttemptInput(teleopHighAttempt); + displayHighMade(teleopHighMade); + displayLowAttemptInput(teleopLowAttempt); + displayLowMadeInput(teleopLowMade); + displayTrapMade(teleopTrapMade); + displayTrapAttemptInput(teleopTrapAttempt); + + + // --- End Game Location spinner --- + + Spinner endgamelocationspinner = (Spinner) findViewById(R.id.end_game_location_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter endgamelocationadapter = ArrayAdapter.createFromResource(this, + R.array.endgame_location, android.R.layout.simple_spinner_item); +// Specify the layout to use when the list of choices appears + endgamelocationadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + endgamelocationspinner.setAdapter(endgamelocationadapter); + + + // --- Cycle Time spinner --- + +/* Spinner cycletimespinner = (Spinner) findViewById(R.id.cycle_time_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter cycletimeadapter = ArrayAdapter.createFromResource(this, + R.array.cycle_time_spinner, android.R.layout.simple_spinner_item); +// Specify the layout to use when the list of choices appears + cycletimeadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + cycletimespinner.setAdapter(cycletimeadapter); +*/ + // --- Type of Bot Spinner --- + +/* Spinner typeofbotspinner = (Spinner) findViewById(R.id.type_of_bot_spinner); +// Create an ArrayAdapter using the string array and a default spinner layout + ArrayAdapter typeofbotadapter = ArrayAdapter.createFromResource(this, + R.array.bot_type_array, android.R.layout.simple_spinner_item); +// Specify the layout to use when the list of choices appears + typeofbotadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// Apply the adapter to the spinner + typeofbotspinner.setAdapter(typeofbotadapter); +*/ + } + + + /*If this activity is resumed from a paused state the data + *will be set to what they previously were set to + */ + @Override + protected void onResume() { + super.onResume(); + + teleopHighAttemptsInput.setOnKeyListener(this); + teleopHighMadeInput.setOnKeyListener(this); + teleopTrapAttemptsInput.setOnKeyListener(this); + teleopTrapMadeInput.setOnKeyListener(this); + teleopLowAttemptInput.setOnKeyListener(this); + teleopLowMadeInput.setOnKeyListener(this); + controlPanelRadingRadioGroup.setOnKeyListener(this); + counterDefenseEffectiveness.setOnKeyListener(this); + endGameLocationSpinner.setOnKeyListener(this); + climbTimeRadioGroup.setOnKeyListener(this); + cycleTimeRadioGroup.setOnKeyListener(this); + overallEffectivenessRadioGoup.setOnKeyListener(this); + defenseRatingRadioGroup.setOnKeyListener(this); + powerCellPlacementRatingRadioGroup.setOnKeyListener(this); + trainedDriveTeamRadioGoup.setOnKeyListener(this); + powerCellPickupRadioGroup.setOnKeyListener(this); + lowPortDumpRadioGroup.setOnKeyListener(this); + underTrenchRadioGroup.setOnKeyListener(this); + observsmooth.setOnKeyListener(this); + observSlowedByRobot.setOnKeyListener(this); + observSlow.setOnKeyListener(this); + observPlayedDefense.setOnKeyListener(this); + observPenalties.setOnKeyListener(this); + observNotMuch.setOnKeyListener(this); + observJerky.setOnKeyListener(this); + observPanelIssues.setOnKeyListener(this); + observFellOver.setOnKeyListener(this); + observFellApart.setOnKeyListener(this); + observFast.setOnKeyListener(this); + observDns.setOnKeyListener(this); + observDiedMid.setOnKeyListener(this); + observDiedBack.setOnKeyListener(this); + observPowerCellPickup.setOnKeyListener(this); + observAverageSpeed.setOnKeyListener(this); + observPowerCellStuckIntake.setOnKeyListener(this); +// observHungUpPowerCell.setOnKeyListener(this); +// observFellOffSwitch.setOnKeyListener(this); + observHungUp.setOnKeyListener(this); + typeHighShooter.setOnKeyListener(this); + typeLowShooter.setOnKeyListener(this); + typeFeederBot.setOnKeyListener(this); + typeControlPanel.setOnKeyListener(this); + typeCounterDefenseBot.setOnKeyListener(this); + typeDefenseBot.setOnKeyListener(this); + teleShootTargetZone.setOnKeyListener(this); + teleShootFieldFront.setOnKeyListener(this); + teleShootFieldDiagonal.setOnKeyListener(this); + teleShootTrenchNear.setOnKeyListener(this); + teleShootTrenchFar.setOnKeyListener(this); + teleShootOther.setOnKeyListener(this); + // typeOfBotSpinner.setOnKeyListener(this); + summaryInput.setOnKeyListener(this); + issuesInput.setOnKeyListener(this); + + } + + /*If this activity enters a paused state the data will be set to null*/ + @Override + protected void onPause() { + super.onPause(); + + teleopHighAttemptsInput.setOnKeyListener(null); + teleopHighMadeInput.setOnKeyListener(null); + teleopTrapAttemptsInput.setOnKeyListener(null); + teleopTrapMadeInput.setOnKeyListener(null); + teleopLowAttemptInput.setOnKeyListener(null); + teleopLowMadeInput.setOnKeyListener(null); + controlPanelRadingRadioGroup.setOnKeyListener(null); + counterDefenseEffectiveness.setOnKeyListener(null); + endGameLocationSpinner.setOnKeyListener(null); + climbTimeRadioGroup.setOnKeyListener(null); + cycleTimeRadioGroup.setOnKeyListener(null); + overallEffectivenessRadioGoup.setOnKeyListener(null); + defenseRatingRadioGroup.setOnKeyListener(null); + powerCellPlacementRatingRadioGroup.setOnKeyListener(null); + trainedDriveTeamRadioGoup.setOnKeyListener(null); + powerCellPickupRadioGroup.setOnKeyListener(null); + lowPortDumpRadioGroup.setOnKeyListener(null); + underTrenchRadioGroup.setOnKeyListener(null); + observsmooth.setOnKeyListener(null); + observSlowedByRobot.setOnKeyListener(null); + observSlow.setOnKeyListener(null); + observPlayedDefense.setOnKeyListener(null); + observPenalties.setOnKeyListener(null); + observNotMuch.setOnKeyListener(null); + observJerky.setOnKeyListener(null); + observPanelIssues.setOnKeyListener(null); + observFellOver.setOnKeyListener(null); + observFellApart.setOnKeyListener(null); + observFast.setOnKeyListener(null); + observDns.setOnKeyListener(null); + observDiedMid.setOnKeyListener(null); + observDiedBack.setOnKeyListener(null); + observPowerCellPickup.setOnKeyListener(null); + observAverageSpeed.setOnKeyListener(null); + observPowerCellStuckIntake.setOnKeyListener(null); +// observHungUpPowerCell.setOnKeyListener(null); +// observFellOffSwitch.setOnKeyListener(null); + observHungUp.setOnKeyListener(null); + typeHighShooter.setOnKeyListener(null); + typeLowShooter.setOnKeyListener(null); + typeFeederBot.setOnKeyListener(null); + typeControlPanel.setOnKeyListener(null); + typeCounterDefenseBot.setOnKeyListener(null); + typeDefenseBot.setOnKeyListener(null); + teleShootTargetZone.setOnKeyListener(null); + teleShootFieldFront.setOnKeyListener(null); + teleShootFieldDiagonal.setOnKeyListener(null); + teleShootTrenchNear.setOnKeyListener(null); + teleShootTrenchFar.setOnKeyListener(null); + teleShootOther.setOnKeyListener(null); + //typeOfBotSpinner.setOnKeyListener(null); + summaryInput.setOnKeyListener(null); + issuesInput.setOnKeyListener(null); + + } + + /* This method will display the options menu when the icon is pressed + * and this will inflate the menu options for the user to choose + */ + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_menu, menu); + return true; + } + + /*This method will launch the correct activity + *based on the menu option user presses + */ + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_activity: + startActivity(new Intent(this, MainActivity.class)); + return true; + case R.id.send_data: + startActivity(new Intent(this, SendDataActivity.class)); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + private void setSpinnerError(Spinner spinner, String error){ + View selectedView = spinner.getSelectedView(); + if (selectedView instanceof TextView){ + spinner.requestFocus(); + TextView selectedTextView = (TextView) selectedView; + selectedTextView.setError("error"); + selectedTextView.setTextColor(Color.RED); + selectedTextView.setText(error); + + } + } + + //Teleop high shots + public void decreaseHighAttempts(View view) { + if (teleopHighMissed != 0) { + teleopHighMissed -= 1; + teleopHighAttempt -=1; + + displayHighAttemptInput(teleopHighMissed); + } + } + + public void increaseHighAttempts(View view) { + if (teleopHighMissed <= 800) { + teleopHighMissed += 1; + teleopHighAttempt += 1; + displayHighAttemptInput(teleopHighMissed); + } + } + + private void displayHighAttemptInput(int number) { + teleopHighAttemptsInput.setText("" + number); + } + + //Teleop High Made + public void decreaseHighMadeInput(View view) { + if (teleopHighMade != 0) { + teleopHighMade -= 1; + teleopHighAttempt -= 1; + displayHighMade(teleopHighMade); + } + } + + public void increaseHighMadeInput(View view) { + if (teleopHighMade <= 800) { + teleopHighMade += 1; + teleopHighAttempt += 1; + displayHighMade(teleopHighMade); + + } + } + + private void displayHighMade(int number) { + teleopHighMadeInput.setText("" + number); + } + + //Teleop Low Missed + + public void decreaseLowAttempt(View view) { + if (teleopLowMissed != 0) { + teleopLowMissed -= 1; + teleopLowAttempt -= 1; + + displayLowAttemptInput(teleopLowMissed); + } + } + + public void increaseLowAttempt(View view) { + if (teleopLowMissed <= 100) { + teleopLowMissed += 1; + teleopLowAttempt += 1; + displayLowAttemptInput(teleopLowMissed); + } + } + + private void displayLowAttemptInput(int number) { + teleopLowAttemptInput.setText("" + number); + } + + //Teleop trap shots + public void decreaseTrapAttempt(View view) { + if (teleopTrapMissed != 0) { + teleopTrapMissed -= 1; + teleopTrapAttempt -=1; + + displayTrapAttemptInput(teleopTrapMissed); + } + } + + public void increaseTrapAttempt(View view) { + if (teleopTrapMissed <= 800) { + teleopTrapMissed += 1; + teleopTrapAttempt += 1; + displayTrapAttemptInput(teleopTrapMissed); + } + } + + private void displayTrapAttemptInput(int number) { + teleopTrapAttemptsInput.setText("" + number); + } + + //Teleop Trap Made + public void decreaseTrapMadeInput(View view) { + if (teleopTrapMade != 0) { + teleopTrapMade -= 1; + teleopTrapAttempt -= 1; + displayTrapMade(teleopTrapMade); + } + } + + public void increaseTrapMadeInput(View view) { + if (teleopTrapMade <= 800) { + teleopTrapMade += 1; + teleopTrapAttempt += 1; + displayTrapMade(teleopTrapMade); + + } + } + + private void displayTrapMade(int number) { + teleopTrapMadeInput.setText("" + number); + } + //Teleop Low Made + + public void decreaseLowMadeInput(View view) { + if (teleopLowMade != 0) { + teleopLowMade -= 1; + teleopLowAttempt -=1; + displayLowMadeInput(teleopLowMade); + } + } + + public void increaseLowMadeInput(View view) { + if (teleopLowMade <= 800) { + teleopLowMade += 1; + teleopLowAttempt +=1; + + displayLowMadeInput(teleopLowMade); + + } + } + + private void displayLowMadeInput(int number) { + teleopLowMadeInput.setText("" + number); + } + + + // this method sets up a string for a group of checkBoxes + + public void setString(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + case R.id.observe_Power_Cell_Pickup: + s1 = observPowerCellPickup.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_died_back: + s1 = observDiedBack.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_died_mid: + s1 = observDiedMid.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_dns: + s1 = observDns.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_fast: + s1 = observFast.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_fell_apart: + s1 = observFellApart.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_fell_over: + s1 = observFellOver.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.control_panel_issues: + s1 = observPanelIssues.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_jerky: + s1 = observJerky.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_not_much: + s1 = observNotMuch.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_penalties: + s1 = observPenalties.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_played_defense: + s1 = observPlayedDefense.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_slow: + s1 = observSlow.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_slowed_by_robot: + s1 = observSlowedByRobot.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_smooth: + s1 = observsmooth.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_average_speed: + s1 = observAverageSpeed.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + case R.id.observ_power_cell_stuck_intake: + s1 = observPowerCellStuckIntake.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; +// case R.id.observ_hung_up_power_cell: +// s1 = observHungUpPowerCell.getText().toString() + " ,"; +// if (checked) { +// if (observations.isEmpty()) { +// observations = s1; +// } else { +// observations = observations + s1; +// } +// } else { +// if (observations.contains(s1)) { +// int start = observations.indexOf(s1); +// observations = observations.substring(0, start) + observations.substring(start + s1.length()); +// } +// } +// break; +// case R.id.observ_fell_off_switch: +// s1 = observFellOffSwitch.getText().toString() + " ,"; +// if (checked) { +// if (observations.isEmpty()) { +// observations = s1; +// } else { +// observations = observations + s1; +// } +// } else { +// if (observations.contains(s1)) { +// int start = observations.indexOf(s1); +// observations = observations.substring(0, start) + observations.substring(start + s1.length()); +// } +// } +// break; + case R.id.observ_hung_up: + s1 = observHungUp.getText().toString() + " ,"; + if (checked) { + if (observations.isEmpty()) { + observations = s1; + } else { + observations = observations + s1; + } + } else { + if (observations.contains(s1)) { + int start = observations.indexOf(s1); + observations = observations.substring(0, start) + observations.substring(start + s1.length()); + } + } + break; + } + } + + /*public void setTypeOfBotString(View view) { this is the original line of code before I copied and modified the following on 2/15/2020 ATB*/ + public void setStringTypeBot(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + case R.id.type_high_shooter: + s1 = typeHighShooter.getText().toString() + " ,"; + if (checked) { + if (typeOfBot.isEmpty()) { + typeOfBot = s1; + } else { + typeOfBot = typeOfBot + s1; + } + } else { + if (typeOfBot.contains(s1)) { + int start = typeOfBot.indexOf(s1); + typeOfBot = typeOfBot.substring(0, start) + typeOfBot.substring(start + s1.length()); + } + } + break; + case R.id.type_low_shooter: + s1 = typeLowShooter.getText().toString() + " ,"; + if (checked) { + if (typeOfBot.isEmpty()) { + typeOfBot = s1; + } else { + typeOfBot = typeOfBot + s1; + } + } else { + if (typeOfBot.contains(s1)) { + int start = typeOfBot.indexOf(s1); + typeOfBot = typeOfBot.substring(0, start) + typeOfBot.substring(start + s1.length()); + } + } + break; + case R.id.type_feeder_bot: + s1 = typeFeederBot.getText().toString() + " ,"; + if (checked) { + if (typeOfBot.isEmpty()) { + typeOfBot = s1; + } else { + typeOfBot = typeOfBot + s1; + } + } else { + if (typeOfBot.contains(s1)) { + int start = typeOfBot.indexOf(s1); + typeOfBot = typeOfBot.substring(0, start) + typeOfBot.substring(start + s1.length()); + } + } + break; + case R.id.type_control_panel: + s1 = typeControlPanel.getText().toString() + " ,"; + if (checked) { + if (typeOfBot.isEmpty()) { + typeOfBot = s1; + } else { + typeOfBot = typeOfBot + s1; + } + } else { + if (typeOfBot.contains(s1)) { + int start = typeOfBot.indexOf(s1); + typeOfBot = typeOfBot.substring(0, start) + typeOfBot.substring(start + s1.length()); + } + } + break; + case R.id.type_counter_defense_bot: + s1 = typeCounterDefenseBot.getText().toString() + " ,"; + if (checked) { + if (typeOfBot.isEmpty()) { + typeOfBot = s1; + } else { + typeOfBot = typeOfBot + s1; + } + } else { + if (typeOfBot.contains(s1)) { + int start = typeOfBot.indexOf(s1); + typeOfBot = typeOfBot.substring(0, start) + typeOfBot.substring(start + s1.length()); + } + } + break; + case R.id.type_defense_bot: + s1 = typeDefenseBot.getText().toString() + " ,"; + if (checked) { + if (typeOfBot.isEmpty()) { + typeOfBot = s1; + } else { + typeOfBot = typeOfBot + s1; + } + } else { + if (typeOfBot.contains(s1)) { + int start = typeOfBot.indexOf(s1); + typeOfBot = typeOfBot.substring(0, start) + typeOfBot.substring(start + s1.length()); + } + } + break; + } + } + + public void setStringShot(View view) { + boolean checked = ((CheckBox) view).isChecked(); + String s1; + + switch (view.getId()) { + case R.id.tele_shoot_target_zone: + s1 = teleShootTargetZone.getText().toString() + " ,"; + if (checked) { + if (shotFrom.isEmpty()) { + shotFrom = s1; + } else { + shotFrom = shotFrom + s1; + } + } else { + if (shotFrom.contains(s1)) { + int start = shotFrom.indexOf(s1); + shotFrom = shotFrom.substring(0, start) + shotFrom.substring(start + s1.length()); + } + } + break; + case R.id.tele_shoot_field_front: + s1 = teleShootFieldFront.getText().toString() + " ,"; + if (checked) { + if (shotFrom.isEmpty()) { + shotFrom = s1; + } else { + shotFrom = shotFrom + s1; + } + } else { + if (shotFrom.contains(s1)) { + int start = shotFrom.indexOf(s1); + shotFrom = shotFrom.substring(0, start) + shotFrom.substring(start + s1.length()); + } + } + break; + case R.id.tele_shoot_field_diagonal: + s1 = teleShootFieldDiagonal.getText().toString() + " ,"; + if (checked) { + if (shotFrom.isEmpty()) { + shotFrom = s1; + } else { + shotFrom = shotFrom + s1; + } + } else { + if (shotFrom.contains(s1)) { + int start = shotFrom.indexOf(s1); + shotFrom = shotFrom.substring(0, start) + shotFrom.substring(start + s1.length()); + } + } + break; + case R.id.tele_shoot_trench_near: + s1 = teleShootTrenchNear.getText().toString() + " ,"; + if (checked) { + if (shotFrom.isEmpty()) { + shotFrom = s1; + } else { + shotFrom = shotFrom + s1; + } + } else { + if (shotFrom.contains(s1)) { + int start = shotFrom.indexOf(s1); + shotFrom = shotFrom.substring(0, start) + shotFrom.substring(start + s1.length()); + } + } + break; + case R.id.tele_shoot_trench_far: + s1 = teleShootTrenchFar.getText().toString() + " ,"; + if (checked) { + if (shotFrom.isEmpty()) { + shotFrom = s1; + } else { + shotFrom = shotFrom + s1; + } + } else { + if (shotFrom.contains(s1)) { + int start = shotFrom.indexOf(s1); + shotFrom = shotFrom.substring(0, start) + shotFrom.substring(start + s1.length()); + } + } + break; + case R.id.tele_shoot_other: + s1 = teleShootOther.getText().toString() + " ,"; + if (checked) { + if (shotFrom.isEmpty()) { + shotFrom = s1; + } else { + shotFrom = shotFrom + s1; + } + } else { + if (shotFrom.contains(s1)) { + int start = shotFrom.indexOf(s1); + shotFrom = shotFrom.substring(0, start) + shotFrom.substring(start + s1.length()); + } + } + break; + } + } + + + /*This method will look at all of the text/number input fields and set error + *for validation of data entry + */ + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (keyCode != KeyEvent.KEYCODE_SPACE && keyCode != KeyEvent.KEYCODE_TAB) { + TextInputEditText inputEditText = (TextInputEditText) v; + + if (inputEditText != null) { + + switch (inputEditText.getId()) { + + case R.id.teleop_high_attempts_input: + teleopHighAttemptInputLayout.setError(null); + break; + + case R.id.teleop_high_made_input: + teleopHighMadeInputLayout.setError(null); + break; + + case R.id.teleop_low_attempt_input: + teleopLowAttemptInputLayout.setError(null); + break; + + case R.id.teleop_low_made_input: + teleopLowMadeInputLayout.setError(null); + break; + + } + } + } + return false; + } + + /* + * This method will verify that all fields are filled and highlight error to user + * along with change focus to first blank input area. The radio button values are obtained + * A file is created on the dvice to send the data to. We add the teleop data to the arraylist + * delimited by commas. We create our message by concatenating the teleop data to the end of + * the auton data. The data is then output to the file we created. We send a message to the user + * about the saved message. We send a result back to the auton activity upon completion. + * We then clear the data of the teleop activity and finish it to close and return + * to the auton activty to clear its data*/ + + public void saveData(View view) throws IOException { + String state = Environment.getExternalStorageState(); + boolean allInputsPassed = false; + + if (StringUtils.isEmptyOrNull(getTextInputLayoutString(teleopHighAttemptInputLayout))) { + teleopHighAttemptInputLayout.setError(getText(R.string.teleopCargoShipHatchPanelError)); + ViewUtils.requestFocus(teleopHighAttemptInputLayout, this); + } else if (endGameLocationSpinner.getSelectedItem().toString().isEmpty()){ + setSpinnerError(endGameLocationSpinner, "Please select an end game location."); + } else if (StringUtils.isEmptyOrNull(getTextInputLayoutString(teleopHighMadeInputLayout))) { + teleopHighMadeInputLayout.setError(getText(R.string.teleopCargoInCargoShipError)); + ViewUtils.requestFocus(teleopHighMadeInputLayout, this); + } else if (StringUtils.isEmptyOrNull(getTextInputLayoutString(teleopLowAttemptInputLayout))) { + teleopLowAttemptInputLayout.setError(getText(R.string.hatchPanelTopError)); + ViewUtils.requestFocus(teleopLowAttemptInputLayout, this); + } else if (StringUtils.isEmptyOrNull(getTextInputLayoutString(teleopLowMadeInputLayout))) { + teleopLowMadeInputLayout.setError(getText(R.string.cargoTopError)); + ViewUtils.requestFocus(teleopLowMadeInputLayout, this); + } /*else if(typeOfBotSpinner.getSelectedItem().toString( ).equals("")){ + + setSpinnerError(typeOfBotSpinner,"Select bot type"); + ViewUtils.requestFocus(typeOfBotSpinner, this); + + }*/ else { + allInputsPassed = true; + } + if (!allInputsPassed) { + return; + } + + final RadioButton controlPanelRadingRadioBtn = findViewById(controlPanelRadingRadioGroup.getCheckedRadioButtonId()); + final RadioButton counterDefenseEffectivenessRadiobtn = findViewById(counterDefenseEffectiveness.getCheckedRadioButtonId()); + final RadioButton overallEffectivenessRadiobtn = findViewById(overallEffectivenessRadioGoup.getCheckedRadioButtonId()); + final RadioButton trainedDriveTeamRadiobtn = findViewById(trainedDriveTeamRadioGoup.getCheckedRadioButtonId()); + final RadioButton powerCellPickUpRadioBtn = findViewById(powerCellPickupRadioGroup.getCheckedRadioButtonId()); + final RadioButton lowPortDumpRadioBtn = findViewById(lowPortDumpRadioGroup.getCheckedRadioButtonId()); + final RadioButton underTrenchRadioBtn = findViewById(underTrenchRadioGroup.getCheckedRadioButtonId()); + final RadioButton defenseRatingRadioBtn = findViewById(defenseRatingRadioGroup.getCheckedRadioButtonId()); + final RadioButton powerCellPlacementRatingRadioBtn = findViewById(powerCellPlacementRatingRadioGroup.getCheckedRadioButtonId()); + final RadioButton climbTimeRadiobtn = findViewById(climbTimeRadioGroup.getCheckedRadioButtonId()); + final RadioButton cycleTimeRadiobtn = findViewById(cycleTimeRadioGroup.getCheckedRadioButtonId()); + + + + if(PermissionUtils.getPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + if (Environment.MEDIA_MOUNTED.equals(state)) { + File dir = new File(Environment.getExternalStorageDirectory() + "/Scouting"); + dir.mkdirs(); + + File file = new File(dir, "Match" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID) + ".csv"); + + teleopDataStringList.add(getTextInputLayoutString(teleopHighAttemptInputLayout)); + teleopDataStringList.add(getTextInputLayoutString(teleopHighMadeInputLayout)); + teleopDataStringList.add(getTextInputLayoutString(teleopLowAttemptInputLayout)); + teleopDataStringList.add(getTextInputLayoutString(teleopLowMadeInputLayout)); + teleopDataStringList.add(getTextInputLayoutString(teleopTrapAttemptInputLayout)); + teleopDataStringList.add(getTextInputLayoutString(teleopTrapMadeInputLayout)); +// teleopDataStringList.add(cycleTimeRadiobtn.getText().toString()); + teleopDataStringList.add(endGameLocationSpinner.getSelectedItem().toString()); + teleopDataStringList.add(climbTimeRadiobtn.getText().toString()); + teleopDataStringList.add(typeOfBot); + teleopDataStringList.add(shotFrom); + teleopDataStringList.add(powerCellPickUpRadioBtn.getText().toString()); +// teleopDataStringList.add(lowPortDumpRadioBtn.getText().toString()); +// teleopDataStringList.add(underTrenchRadioBtn.getText().toString()); + teleopDataStringList.add(defenseRatingRadioBtn.getText().toString()); + teleopDataStringList.add(counterDefenseEffectivenessRadiobtn.getText().toString()); +// teleopDataStringList.add(powerCellPlacementRatingRadioBtn.getText().toString()); +// teleopDataStringList.add(controlPanelRadingRadioBtn.getText().toString()); + + // teleopDataStringList.add(cycleTimeSpinner.getSelectedItem().toString()); + teleopDataStringList.add(overallEffectivenessRadiobtn.getText().toString()); + teleopDataStringList.add(trainedDriveTeamRadiobtn.getText().toString()); + + teleopDataStringList.add(observations); + + //teleopDataStringList.add(typeOfBotSpinner.getSelectedItem().toString()); + teleopDataStringList.add(summaryInput.getText().toString()); + teleopDataStringList.add(issuesInput.getText().toString()); + + teleopDataStringList.add(ScouterInitialsActivity.getInitials()); + + String message = auton + "|" + FormatStringUtils.addDelimiter(teleopDataStringList, "|") + "\n"; + + try { + FileOutputStream fileOutputStream = new FileOutputStream(file, true); + fileOutputStream.write(message.getBytes()); + fileOutputStream.close(); + + Toast.makeText(getApplicationContext(), "Saved!", Toast.LENGTH_LONG).show(); + } catch (IOException e) { + Toast.makeText(getApplicationContext(), "IOException! Go talk to the programmers!", Toast.LENGTH_LONG).show(); + Log.d("Scouting", e.getMessage()); + } + } else { + Toast.makeText(getApplicationContext(), "SD card not found", Toast.LENGTH_LONG).show(); + } + + Intent intent = getIntent(); + intent.putExtra("Key", value); + setResult(RESULT_OK, intent); + + clearData(view); + + finish(); + } + + teleopHighAttemptInputLayout.setError(null); + teleopHighMadeInput.setError(null); + teleopLowAttemptInputLayout.setError(null); + teleopLowMadeInputLayout.setError(null); + + + } + + /*The method will clear all the data in the text fields, checkboxes, and + * set radio buttons to default*/ + public void clearData(View view) { + teleopHighAttemptsInput.setText("" + teleopHighMissed); + teleopHighMadeInput.setText("" + teleopHighMade); + teleopLowAttemptInput.setText("" + teleopLowMissed); + teleopLowMadeInput.setText("" + teleopLowMade); + + controlPanelRadingRadioGroup.clearCheck(); + counterDefenseEffectiveness.clearCheck(); + endGameLocationSpinner.setSelection(0); + climbTimeRadioGroup.clearCheck(); + //cycleTimeSpinner.setSelection(0); + cycleTimeRadioGroup.clearCheck(); + defenseRatingRadioGroup.clearCheck(); + powerCellPlacementRatingRadioGroup.clearCheck(); + overallEffectivenessRadioGoup.clearCheck(); + trainedDriveTeamRadioGoup.clearCheck(); + powerCellPickupRadioGroup.clearCheck(); + lowPortDumpRadioGroup.clearCheck(); + underTrenchRadioGroup.clearCheck(); + observsmooth.setChecked(false); + observSlowedByRobot.setChecked(false); + observSlow.setChecked(false); + observPlayedDefense.setChecked(false); + observPenalties.setChecked(false); + observNotMuch.setChecked(false); + observJerky.setChecked(false); + observPanelIssues.setChecked(false); + observFellOver.setChecked(false); + observFellApart.setChecked(false); + observFast.setChecked(false); + observDns.setChecked(false); + observDiedMid.setChecked(false); + observDiedBack.setChecked(false); + observPowerCellPickup.setChecked(false); + observAverageSpeed.setChecked(false); + observPowerCellStuckIntake.setChecked(false); +// observHungUpPowerCell.setChecked(false); +// observFellOffSwitch.setChecked(false); + observHungUp.setChecked(false); + typeLowShooter.setChecked(false); + typeFeederBot.setChecked(false); + typeControlPanel.setChecked(false); + typeCounterDefenseBot.setChecked(false); + typeDefenseBot.setChecked(false); + teleShootTargetZone.setChecked(false); + teleShootFieldFront.setChecked(false); + teleShootFieldDiagonal.setChecked(false); + teleShootTrenchNear.setChecked(false); + teleShootTrenchFar.setChecked(false); + teleShootOther.setChecked(false); + // typeOfBotSpinner.setSelection(0); + summaryInput.setText(null); + issuesInput.setText(null); + teleopHighAttempt = 0; + teleopHighMissed =0; + teleopHighMade = 0; + teleopLowAttempt = 0; + teleopLowMissed = 0; + teleopLowMade = 0; + + } + + /* This method will change the text entered into the app into a string if it is not already*/ + private String getTextInputLayoutString(@NonNull TextInputLayout textInputLayout) { + final EditText editText = textInputLayout.getEditText(); + return editText != null && editText.getText() != null ? editText.getText().toString() : ""; + } +} diff --git a/app/src/main/java/com/example/ncgears/scouting/customToast/CustomToast.java b/app/src/main/java/com/example/ncgears/scouting/customToast/CustomToast.java new file mode 100644 index 0000000..709287f --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/customToast/CustomToast.java @@ -0,0 +1,55 @@ +package com.example.ncgears.scouting.customToast; + +import android.app.Activity; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.ncgears.scouting.R; + +public class CustomToast{ + + private static Toast currentToast; + + public static void showShort(Context context, String message){ + if(currentToast != null) currentToast.cancel(); + LayoutInflater inflater = ((Activity)context).getLayoutInflater(); + View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.root)); + TextView text = (TextView) layout.findViewById(R.id.message); + + text.setText(message); + + Toast toast = new Toast(context); + + toast.setDuration(Toast.LENGTH_SHORT); + + toast.setView(layout); + toast.show(); + currentToast = toast; + } + + public static void showLong(Context context, String message){ + if(currentToast != null) currentToast.cancel(); + LayoutInflater inflater = ((Activity)context).getLayoutInflater(); + View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.root)); + TextView text = (TextView) layout.findViewById(R.id.message); + + text.setText(message); + + Toast toast = new Toast(context); + + toast.setDuration(Toast.LENGTH_LONG); + + toast.setView(layout); + toast.show(); + currentToast = toast; + } + + public static Toast getCurrentToast(){ + return currentToast; + } + +} diff --git a/app/src/main/java/com/example/ncgears/scouting/data/GetJasonData.java b/app/src/main/java/com/example/ncgears/scouting/data/GetJasonData.java new file mode 100644 index 0000000..0c1bc93 --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/data/GetJasonData.java @@ -0,0 +1,112 @@ +package com.example.ncgears.scouting.data; + +import android.content.ContentValues; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.os.AsyncTask; + +import com.example.ncgears.scouting.MainActivity; +import com.example.ncgears.scouting.settings.settings.SettingsEntry; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + + +public class GetJasonData extends AsyncTask{ + + Context ctx; + String data = ""; + String dataParsed = ""; + String singleParsed = ""; + String[] teams; + + + public GetJasonData(Context ctx){ + + this.ctx = ctx; + + } + + + @Override + protected Void doInBackground(Void... voids) { + + + + try { + URL url = new URL(SettingsEntry.teamsUrl); + + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + InputStream inputStream = httpURLConnection.getInputStream(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + + String line = ""; + + while (line != null){ + + line = bufferedReader.readLine(); + data = data + line; + } + + JSONObject JO = new JSONObject(data); + JSONArray JA = JO.getJSONArray("valueRanges"); + JSONObject Jobj = new JSONObject(JA.getString(0)); + JSONArray Jarr = Jobj.getJSONArray("values"); + + TeamsDbHelper mDbHelper = new TeamsDbHelper(ctx); + SQLiteDatabase db = mDbHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + + + for(int i = 0; i < Jarr.length(); i++){ + + + String teamNumber = Jarr.getJSONArray(i).getString(0); + String teamName = Jarr.getJSONArray(i).getString(1); + singleParsed = singleParsed + teamNumber + " | " + teamName + "\n"; + values.put(TeamsContract.TeamEntry.COLUMN_TEAM_NUMBER, teamNumber); + values.put(TeamsContract.TeamEntry.COLUMN_TEAM_NAME, teamName); + TeamsDbHelper.setTeams(db, values); + } + + + + db.close(); + + + + + } catch (MalformedURLException e){ + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } + + return null; + } + + + + @Override + protected void onPostExecute(Void aVoid){ + super.onPostExecute(aVoid); + + + MainActivity.data.setText(singleParsed); + + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ncgears/scouting/data/TeamsContract.java b/app/src/main/java/com/example/ncgears/scouting/data/TeamsContract.java new file mode 100644 index 0000000..b878981 --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/data/TeamsContract.java @@ -0,0 +1,22 @@ +package com.example.ncgears.scouting.data; + +import android.provider.BaseColumns; + +public class TeamsContract { + + private TeamsContract(){} + + public static final class TeamEntry implements BaseColumns { + + // constant variable with Table Name + public static final String TABLE_NAME = "teams"; + + // constant variables of column names + public static final String _ID = BaseColumns._ID; + public static final String COLUMN_TEAM_NUMBER = "team_number"; + public static final String COLUMN_TEAM_NAME = "team_name"; + + + } + +} diff --git a/app/src/main/java/com/example/ncgears/scouting/data/TeamsDbHelper.java b/app/src/main/java/com/example/ncgears/scouting/data/TeamsDbHelper.java new file mode 100644 index 0000000..c7c1cfb --- /dev/null +++ b/app/src/main/java/com/example/ncgears/scouting/data/TeamsDbHelper.java @@ -0,0 +1,129 @@ +package com.example.ncgears.scouting.data; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +import com.example.ncgears.scouting.data.TeamsContract.TeamEntry; + +import java.util.ArrayList; + + +public class TeamsDbHelper extends SQLiteOpenHelper { + + public static final String TAG = TeamsDbHelper.class.getSimpleName(); + private static final String DATABASE_NAME = "teams.db"; + private static final int DATABASE_VERSION = 1; + + + public TeamsDbHelper(Context context){ + super(context, DATABASE_NAME, null, DATABASE_VERSION); + + Log.d(TAG, "TeamsDbHelper: Database Created."); + } + + + + @Override + public void onCreate(SQLiteDatabase db) { + + createTable(db); + + } + + public static void createTable(SQLiteDatabase db){ + + String sql_create_teams_table = "CREATE TABLE "+ TeamEntry.TABLE_NAME +"(" + + TeamEntry._ID +" Integer PRIMARY KEY AUTOINCREMENT, " + + TeamEntry.COLUMN_TEAM_NUMBER +" text NOT NULL, " + + TeamEntry.COLUMN_TEAM_NAME +" text);"; + + db.execSQL(sql_create_teams_table); + + } + + public static void dropTable(SQLiteDatabase db){ + + + + String sql_drop_table = "DROP TABLE if EXISTS " + TeamsContract.TeamEntry.TABLE_NAME + ";"; + + + db.execSQL(sql_drop_table); + + + + + } + + + public static void setTeams(SQLiteDatabase db, ContentValues values){ + + + long newIndex = db.insert(TeamsContract.TeamEntry.TABLE_NAME, null, values); + + } + + public static ArrayList getTeamNumbers(SQLiteDatabase db){ + + ArrayList result = new ArrayList(); + + Cursor cursor = db.rawQuery("SELECT "+ TeamEntry.COLUMN_TEAM_NUMBER + " FROM teams;",null); + + int numberColumn = cursor.getColumnIndex(TeamEntry.COLUMN_TEAM_NUMBER); + + cursor.moveToFirst(); + + if(cursor != null && (cursor.getCount() > 0)){ + + int i = 0; + + do { + + result.add(cursor.getString(numberColumn)); + + }while (cursor.moveToNext()); + + } + + return result; + + } + + public static ArrayList getTeams(SQLiteDatabase db){ + + ArrayList result = new ArrayList(); + + Cursor cursor = db.rawQuery("SELECT * FROM teams;",null); + + int numberColumn = cursor.getColumnIndex(TeamEntry.COLUMN_TEAM_NUMBER); + int nameColumn = cursor.getColumnIndex(TeamEntry.COLUMN_TEAM_NAME); + + cursor.moveToFirst(); + + if(cursor != null && (cursor.getCount() > 0)){ + + int i = 0; + + do { + + result.add(cursor.getString(numberColumn) + " | " + cursor.getString(nameColumn)); + + }while (cursor.moveToNext()); + + } + + return result; + + } + + @Override + public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/utils/FormatStringUtils.java b/app/src/main/java/utils/FormatStringUtils.java new file mode 100644 index 0000000..8845e81 --- /dev/null +++ b/app/src/main/java/utils/FormatStringUtils.java @@ -0,0 +1,23 @@ +package utils; + +import java.util.ArrayList; + + + +public class FormatStringUtils { + + public static String addDelimiter(ArrayList strings, String delimiter) { + + final StringBuilder stringBuilder = new StringBuilder(); + + for (int i = 0; i < strings.size(); i++) { + stringBuilder.append(strings.get(i)); + + if (i < strings.size() - 1) { + stringBuilder.append(delimiter); + } + } + + return stringBuilder.toString(); + } +} \ No newline at end of file diff --git a/app/src/main/java/utils/PermissionUtils.java b/app/src/main/java/utils/PermissionUtils.java new file mode 100644 index 0000000..dbdb3c3 --- /dev/null +++ b/app/src/main/java/utils/PermissionUtils.java @@ -0,0 +1,16 @@ +package utils; + +import android.app.Activity; +import android.content.pm.PackageManager; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; + +public class PermissionUtils { + public static boolean getPermissions(Activity activity, String type) { + int permission = ContextCompat.checkSelfPermission(activity, type); + if (permission != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(activity, new String[]{type}, 1); + } + return permission == PackageManager.PERMISSION_GRANTED; + } +} diff --git a/app/src/main/java/utils/StringUtils.java b/app/src/main/java/utils/StringUtils.java new file mode 100644 index 0000000..e377ab1 --- /dev/null +++ b/app/src/main/java/utils/StringUtils.java @@ -0,0 +1,7 @@ +package utils; + +public class StringUtils { + public static boolean isEmptyOrNull(String string){ + return string == null || string.isEmpty(); + } +} \ No newline at end of file diff --git a/app/src/main/java/utils/ViewUtils.java b/app/src/main/java/utils/ViewUtils.java new file mode 100644 index 0000000..de5bc1b --- /dev/null +++ b/app/src/main/java/utils/ViewUtils.java @@ -0,0 +1,15 @@ +package utils; + +import android.app.Activity; +import android.view.View; +import android.view.WindowManager; + +public class ViewUtils { + public static boolean requestFocus(View v, Activity activity){ + if(v.requestFocus()){ + activity.getWindow().setSoftInputMode((WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..c7bd21d --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/custom_toast.xml b/app/src/main/res/drawable/custom_toast.xml new file mode 100644 index 0000000..5d64170 --- /dev/null +++ b/app/src/main/res/drawable/custom_toast.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..2408e30 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_auton.xml b/app/src/main/res/layout/activity_auton.xml new file mode 100644 index 0000000..d79c7bd --- /dev/null +++ b/app/src/main/res/layout/activity_auton.xml @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // Begin of High Power Port counters + + + + + + + + + + + + + + + + + + +