From 5243adcb8c50d16822e4d6288f16210fe9b1c20b Mon Sep 17 00:00:00 2001 From: Harrison Mutai Date: Tue, 15 Dec 2020 11:41:21 +0000 Subject: [PATCH] Remove unsupported S112 SoftDevice build support --- .../TARGET_SOFTDEVICE_S112/CMakeLists.txt | 9 - .../s112_nrf52_6.0.0_licence-agreement.txt | 35 - .../s112_nrf52_6.0.0_migration-document.pdf | Bin 18085 -> 0 bytes .../doc/s112_nrf52_6.0.0_release-notes.pdf | Bin 21906 -> 0 bytes .../TARGET_SOFTDEVICE_S112/headers/ble_err.h | 93 - .../TARGET_SOFTDEVICE_S112/headers/ble_gap.h | 2023 ------ .../TARGET_SOFTDEVICE_S112/headers/ble_gatt.h | 228 - .../headers/ble_gattc.h | 715 -- .../headers/ble_gatts.h | 845 --- .../TARGET_SOFTDEVICE_S112/headers/ble_hci.h | 135 - .../headers/ble_ranges.h | 148 - .../headers/ble_types.h | 215 - .../headers/nrf52/nrf_mbr.h | 241 - .../TARGET_SOFTDEVICE_S112/headers/nrf_ble.h | 617 -- .../headers/nrf_error.h | 90 - .../headers/nrf_error_sdm.h | 70 - .../headers/nrf_error_soc.h | 85 - .../TARGET_SOFTDEVICE_S112/headers/nrf_nvic.h | 486 -- .../headers/nrf_sd_def.h | 59 - .../TARGET_SOFTDEVICE_S112/headers/nrf_sdm.h | 358 - .../TARGET_SOFTDEVICE_S112/headers/nrf_soc.h | 964 --- .../TARGET_SOFTDEVICE_S112/headers/nrf_svc.h | 90 - .../s112_nrf52_6.0.0_licence-agreement.txt | 35 - .../hex/s112_nrf52_6.0.0_softdevice.hex | 6143 ----------------- 24 files changed, 13684 deletions(-) delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/CMakeLists.txt delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_licence-agreement.txt delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_migration-document.pdf delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_release-notes.pdf delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_err.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gap.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatt.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gattc.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatts.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_hci.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_ranges.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_types.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf52/nrf_mbr.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_ble.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_sdm.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_soc.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_nvic.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sd_def.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sdm.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_soc.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_svc.h delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_licence-agreement.txt delete mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_softdevice.hex diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/CMakeLists.txt b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/CMakeLists.txt deleted file mode 100644 index 9125e60859..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) 2020 ARM Limited. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - - -target_include_directories(mbed-core - INTERFACE - ./headers - ./headers/nrf52 -) diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_licence-agreement.txt b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_licence-agreement.txt deleted file mode 100644 index a71adee7b9..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_licence-agreement.txt +++ /dev/null @@ -1,35 +0,0 @@ -Copyright (c) 2007 - 2018, Nordic Semiconductor ASA -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form, except as embedded into a Nordic - Semiconductor ASA integrated circuit in a product or a software update for - such product, must reproduce the above copyright notice, this list of - conditions and the following disclaimer in the documentation and/or other - materials provided with the distribution. - -3. Neither the name of Nordic Semiconductor ASA nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -4. This software, with or without modification, must only be used with a - Nordic Semiconductor ASA integrated circuit. - -5. Any software provided in binary form under this license must not be reverse - engineered, decompiled, modified and/or disassembled. - -THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_migration-document.pdf b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/doc/s112_nrf52_6.0.0_migration-document.pdf deleted file mode 100644 index 642779343494a66543a84954d539d4a1e700c348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18085 zcmeIa1yogA*Dwqc(jY1&$RVXq(B0i7jU3?6dFWE<29<8<79^!hq#J3J2BoD-zJu3$ zulGLpeaHWd?|uJ&jDI|5=-8XJXRI~XTyw6y_MDSWMM8=d%*KIBx3oMohKmK}0Du7Y z##Xoj0zd^zI~Wvh=?OChfPo4CFb{}_6Q~RTa{(m*5O!_|Pzk^Z)Bu3Fxe)C#06hQ) zHx~fR%V8iSgbTAXy`cj5*B>sHI~->AgA*?<7U<^>%mw&y2eA92jf)%fFKyia(8kNn z^LIE12m=0>HZYj;U)mrb#CUIhfAWPuxFLUU1Ko`54>)Hy)Y1k9$HhX(NF5;_gfM_= z_V&(z8wLP1psbylJpj!9+r5OI04EO*2S`**3?e1LDap+%3E`0B;pAcGmV$sG;vAA7 zAptRQQE_e_30_WKPAOh)4hd0^C@+MY2P6&wi%If;AwmW~6*$cGM%3IK2?0c8PT2neVEvom+L z0DwWNOg(o%XRG^)0#Ohd6BP;Y z^}QlOnGy=RZ*)MKI&{lY3h)LU1B7HLK`@Amg;1KGe1EFX4}t#FMn#x2)D-FrMfCcI zWR+c9AGvc9s{5v%+wP4Up!NR!Vy${ zXR8KtvUh=-z?=~3B86aZa{(h((+>_(5X6ePxf2pXOtHO*I?P!Qh**?9mB+E%s_ZQPnA*$}T~un4Unk;xKQJ3hC+ETmA&viWFP6^;}owUo-s z?qrrjyt^K`F8=T~?GRMmBl^K^<;l|7`{)YPC_{{v#RGHT-lE%XS&L6WBTq0(PygAV z{8B_fj><>|mc{D!CPW)# zXsQD2U$P9y#`6QswIu|2QY6s_nQ1KfXmqm=^{e)$6|kF#$mRQAy9$g&NbCo?Cck>; zP&F2?!WPt&E~{s~#97bN(LRv6|3rmn&|-yHz`8#*-~2A-W;K8Z{=x2gkLvkr0H%!< zu$&bGz~xE=ow;Mfx0{CLx0hi!(WA9-s-!j`i66%h9CdVlwKm=TUUdFe?$k?AwFspb zt0ZSEkqGuMuKzA_wBcgXl0E2~_f(ju-tgq5c(;ry%jMfO=uRUyu2vm_l(QyUDo}t))a8~_XJ3;{S+m1LfgEDRQaH9~dO;_a zXpO-x?Z~dKC1#B0>zS0{9xL^t54A{NxG;QvWNDKrgn=0mA1S~2Fbapv(}=59x2lxq z+tb@&(+*#|YTLHm18MPCPUk7NU<HNc^T9+`+n5k zgk%=8x>$Xd4UU75%7(Jkkpv%q!dHnB*~ST$E{CQ$Ps03rb{?hl!G)s8lQR1`J4aq? z-{;VaYU=F&{ARlTJO(4-q~N=B_NDBMJ)Tfn6^L0PY)8}M)j=1Tk}(oflAbk>&{!|? zZN`D9I$xbf6nV!35jocnzC9&V$A0gXyZX*NPKUWZa|RZ||K-(q{1=)A)0_`6@zpQP z&KyW|{e+Qr?Y|3a%wfL8A(29@siy*+J&^e$}Z1 z`GtMv?c?oaHYe{m)JeNZ$+uSyq>oTro+_-faf>aPV7`-}`u=1fp}y`NdWZ}5Gkc_F z=vkM?V*K?9I-WfWO~Mg4biWenDVsWp|LCROc}vKZ>^Fn##lD7beO`0y6-#siZ=;q) zQtXkot~$n0c!gghZOI0Xl_d(4_l`h5r)M-hLoTd4%=#xYdSh#TnglVZ6YRzc0cBt| zt}tgy6DX^gy^SeQ(hlJiEbYvJT9$UAc21Um{H^X{?0jQ5Z>%TyH-mG7|BJ!7v0wis z_5TaPKMea%!s7NWHx?BrWeIn32Hbdegh5w;{(1kyxc_eV|Loik$e%PMU{20@Kg_)v zP+LbAL4uo;8)3`=AcTAU&1C=dB^s8_HZTS!Fc|X04sOQj4zRT}heMq$?d<@j_9ia2 z2+1ERdp)ktZSYL5 zu|@!RxS?wg$~)TquaVEb-8l+>oGu%Iw1GbWNik@7A-v(gCt4^hTXh^TJD7}qbj?@d0s7i|)}!&(NW%S9YHp0KDz7g8 zx_n&2g;(#WtUuPs-#Hy0)8#cHyuG<|uf^QU^gOy_?|ie^IL11n zPA4_luEYz9uekFe`Tb7RAw#8zysU?Xhkf#Dv1|3PS|Cy?1ixHj!qZfp?{JjFY1LKQ;i3>aE##TJ5d0MPace=v6i2!Hn zhjDggNwGS`-D3-?LQJKP<=QQ8?tS zSU)*G%(^`%xG7>$h}=rV?rcydEOO_iX>$PFuaTVr=Ux-a1GXf4GxPf<-Y*m6dx#$f zMs0n(O)3PPqQ=^dQ3lw`U;Y56inLenwnQ&Ct+I7K0Lg{&4#gSnCX z0aahcRI34WN3M5aXJFbc?Su6#U7*ml$dYko0iYkB$B)W<7p_tVg~f;mjd z_B2(CzYaKJ8t{@Fwcq|iwOK&D&)2KPM0KRQ?Hli&{Z81S$fZ!@NlFzeJZqavei?(Y z_(ifF+K`H9a-nHEsR0#FdI`R0gYp57H2^1vi7SjnQ-j;$t)Vn0vO6u%3ZBGS#D-;b zV0{<%1%j5nBCh&M5!pWHtb&1?Y>pT8u_eBITw%fJQV|&-V2ha8 z(=HU_`&fw&Y%YfLt?N}ipl(L-eK+!H4VBCbr#`YkL;6FOlqC@~5R%u_s489fr~N=j z@3-Pl?FQ`((>Acyec!BmHLZ6UEQ&3tT3{M|`^*#Dk0u#MGn+ zUOW9Xh|2zzW|E$M%jIh8qQ{2?CL;c1c`Cnco7>hlgSzV@NGl^Mo=J|Lmew^pzO~aQ z+$|bf-0R%%7#2IPOn_A{X31PUp&I{^dZ-yn6|$tQ8OO!~8!4HfnRG6lF4Yuj#wRZl zs83@9bZ2cE5ml|~L4~ZVH7nPvc>%2A?SbFvyPKRqeYe-t3n5kBCDQPEC&I%i*9C%UG zQ>j!d0ZaQeToj#N0>?DfYjRE`pE_>|tUOrOz_4A&XVOjL+aq>vrO?8O(&u8BjY=Q8 z#q)aB>g=5V8>75~R}Hs1|o9q?s~nww)M3yIPlZ(=j-L|{9=4z?*Q~S;@hcV$!FuR zq3S-*hAoYTDEayI?|af1t(%Uwet9c5xk%j? zMv;EuTARKToSX0bCcg8Im&jbZ#%X@4n`g55=`?Cw^EL-yjzL+*|4XJ9kw9ewc^fAV zY(#4D%vahV7XRU`_%Dv(4XJ##x1JP}MW)7(e8^OL(l#|dTcb%+fb{^Kq@@P5&gf_9 zq!bn7p^qs0zfwNi{C?`Kts-s56DV;^vdIqfwyQ{n;UGby>~B7*q&NU^Pi51Z&^-( zIL$kZs5A0ZmBRF)oA{c0Y>In~JE16awF7XEDFKmOK^6^`0Im!Q<+2Xc72j3meh(Spk%F7Lv zp^~aSZeI&Omvj8T0*~k^bODJDGUopz9Nq+7WMa8G~FM2VtR1?*D&_S## zsGOQaXOgHJk8kjWw_2t{0lkaW|LW7xlN?=Q#h@>^g$b}cT`ADC*p>z_coTC+9Z143 z?l*691aNySm$p{T4+3ezC{yYHu&LIg$BN;W)V2cnEwR&v>E}?i228!ZX14UT2I2)R zFZqtumd`*TLvKU<#tRR}tEbJ00&7VNrwORBSL>Z0`3YLiIiyE!`|xPACFUqhS>-9i z(K*X0)QvJWMzcVqbg*@AUj{?bJ)pbUO@plCzbGtmsgJJ614DnneRPhukpPKY502Xjs z#{~SqoDz}~*rjS&QT;ickSBweZzVLbGrj1$ri-S_k;!S-Lh$12ZZgd^#TeXt|GveA zgf>clYM^OpWtVUFckG#KUWV|kj|;WW?oB(tPA-|?6lx){&|GgHagyg|0^WPUbiR>Z z|KQT6Jm)D>Qe4GAIFV_a`9*m=^}P;SVau~Voa;CC8LTTofPk;4?im)}G)BakR*b6E zxav3z;_Kq6nzW+HaSfhlqLG|)lZ2LZ&qml7tYC#;ednB>rBrRUkufyLIuds9q01&OW6c_KXML|};PT)n!v;-kr=_Ld_>mNNDW z_28XQ6Q6;X;pi)`JwI!{7Tx@?i}@w}*sQouU&P-cQd^vl_Lfk0KCN(LjAXOIIPQg6 z4s0uiUz{YRmHCLyb#02yg)B`ovb%VqK%Dk69|GtN3sEz7dD%Bg7$f>|t+!fp0Y7rJ z0#!EPc2aCz5Z9Vo9f1<{ofzNkfhsWGQW!|7JM2=ERgpxSaBj9O=(@_^7UTBp3!DK5 z9Y0#WDUljH*HU;l!DH$>cwDu-+NHhJ5$LWuiMvMc?=QJ>6y!m2R34+LqV1?AM&WRh zR-p$_>7fkm>G%b-`ztUxll0~G+$ojGqDPses)djkM`V83tL{%B5E>2)E|X*v^cLqm z4KfW08oH~9^rX1ab+39bZjU>PlEiK z14P?P+n<{%$-mV1j{m}^#pIN#Xeb9vDClWD>Mf1vc93#6p$MY~7KsGk%4&4xyBF6( zngbK0AMgttjyZPa&?=ma>A=%P8#uk^Z_ zV%*M{#S!XTD}3y6SkL&azIuam<&h?TVG#V(pxCz~_0E(wGKPdEI+ljy8|M7ycHsG$ zW}H>cg~w7osqxfxhPOi;Re33%Tcx={R$a<}>siNPVH`-ww1-fzjg|w~slKKs3NuA0 ziG%S~9Sc>zj2GctD_qurfLZ0$?o@L@C)BEswuYR+67IxbCyVD*0pR{n<0&_J+4}iQ_4w7^j-(MLcEc@XN4{6 zVP0?X3^r}Acx@@3&a4@Dki@H05llQRz?xl^oDUmI$Rzg^he&j+W6BA}mweOJK6Qy? zYzr;n-Jim%i)$k=!Qqq(DJp`iUIY}pE>an#m(WbIoTg>V(-*5MrC-&#nfn9+P0jV( zZt_Rt)wv1svGO5r;_i?RV%V4X=TRN-iCB)fQ*huWZ_6JL=+e&hG9-nXptj}z| ze!%Wgsh`z|SMw7A<=&-af&VSRCOkP4S=$Rp?4++ADV>vU*or5`bGs(IqPEztD}*;w zhzDh^AhA#6iYswsGvujQS|XE_mBXMP07DPxW9WGy33OKMvwDP&)u}7>Rm5WvOO4BM zhUy+liioGNbf}|nB(tRc68a$!yA^~r4kJFluzSfdN;*m>_xk?>9rMW#; z5qF#e{`Ad>a7SxBMN?fR`D*x#+q(}c}hC13SZ@wbY$4_Rqqkl zeGbG-;Y;H9^0JOal+gBTY+&9@QXRmW*Y|XqUdawhkR0xe4}#P^uXt0^*n@V@wW5li zSViWs-GLvYHJme$K0O)QdQFvm}^~ojl@R;bcepJaSH!k$zUA zpMJ7pFJuj4*6!iYF0+dtBa7td8x7yc-aGYi>BCdlj^OPf@cZfpOBQ34%n z<}`r>&(z!pnNa3-l8zwKjt(}e(cC}-F}wm68+yb)T#mJha@j0@T-nzS<-P?JHsUwn z^weVn9v+%}HtBlJ3_jz=_;5Go{FlaGts^ zWzPA+(dw16#4z&riukqi4?R5mvrp@HJ(E@L`Grvr?Oeg?OdfzF7K-2t=98tB6O6_*AJ&X0Dkiy*oMXK}uCr5F@lYESLa@yPH9kpIYQmWN!kHg%q; zg^Bl|?%=xk2Me}OJ!`>1qk>na48mh7N)0K~@S3#J_>`>^dqN>hc>smn z<&~ZcF=fM0D*Q=n0Iy4CLuO6uK4CU9t&*VcA?4F%@+CvI4-&Y@e z`-~7w_a#fFHSs9*T8{Kcn(fTz*m>nk$HyZ{0t@O6W+7=Sypg33hJcHPYk^V=Rjk@h z6l9@}l?Zk)ceb57#>9@x`bgj81PLzs81b%#41HEoOV@6asBS_n^6IoYrZmOZ^2S|dgUx;Y(8^JwzCR!MCs+Y zOq90Y-O16?Z)rY`g3cQsj(v<4j%53U|BRyP@@RD^p(!6f(Xkh@-@YsDXM+_NL zk8v+vjAEoFI2VBbIH)$*@?1(mR!4LBI8NS4P>kMGwlM0c=C(((d4R`frP&)!**?U4BLrl%Si3f0NfY*7hoZbBbBJJ?vR>$Su12Y(}?` z^I6kOS@+xlRTDPN+Y{LrAH9htKX`@BV%3hfbh~;}pODWkx^njWl0_p&&%RNRD{@S` zC-e1-Njj8Y&$&1_pkl)!ef2DA4d!k#(yuOAIh5{+2K>^e()#u)(5E;l=xZ8KRm^XD z#;S}km}l=;`#so4JKE7_zE&Z|Z1nJ!gDUQ(`kcLv^YQ=+o1nS8_7*IB{Oet&GW4?9 zY7%ZiSDddKi@~clDN~A~L0O%}y-(KY45fNoC(;CO?+CFpoLPWBU2eYfycJzT^WIFj zuanx|^l&<|Yf~6PR6Wz+l9bGmQ}j)a60*D!bqIIeTED0tcDJjMHv6m(?7!;EY89*> zQ|CMjT%ONa8uV{VT*7QJFAo>(+x)cw?v0 zA`qaIH=hA=^nRpQX>IAoqV-zJlU;Ig)#}c3cQmWv%)#Z;yBNtO@nZ$gw$7orj6VF= zsCOC$xbRO-ijQh0Yl_>?O8F|hR^1q5Dp5<6u}S3=DA+Q)Qr{!RWR@rywd#4SwymG6 z*o)9oXVWe%6^NRS80q5X2x3l-F};+7O4i+;Equ2ZlsTT6Q_Cy&t6?`P&wPll7L$D)ZPmrKn!aw45Bz zkdteiSi@`Op6{{~Oz+B{E?mA_pRv7?W3?!#&BPudR!0gEs>?;m=T*Ssa1?bxDmK*B zRY9RVc3xYPbLGFl@a_xl47Q70RdXjnonfs_8DrvOQW2=?JXKaJz1WDyxQcgiZ^J^# z)!@=guPLD+PxoLa1xj!3MBllmSNWhudRLOS8Tb&RAt~Dau4V**^IM3~3Z| za=oGzB{J@AlCYih;4uK%YVK2lVSwG9K7hcicGa+jG`VTJHld}pg}dxC9{!HjZsC41 zSwc`|kYFYE4htq`xSNlF*DkiMuYB+GyYZWangxTKA z_RPi~x#kyWFdw@7Q>Byj>U<3~MjY#sto!~O+eI#@aO>u6~1EdtHe_*lXI^^B*r_0xvV zl;$xjIodBO$hZ$IVvUr3*S1xG1%=Ufk`)R1-QGEXR%DP8*w((o6;qU zDrk4;BfTmb9JpUHRP4gUWmH}aF_P_+99vM9I9+bCPD=Z}?zFo0afu*J0hB|*=3v*kx{Ss5e^o62q)NrE0 zgul_#`6`g<))K#uZkM@L-KwzO7=_;TXLyMs2sBOSF$AbhebZa+M^j z<-`^E-4r807I50>IBPY>X^%g1{2Ybza6)P2Y2~VGQ?ihPf>qL3={C>XOKfEl%3TnO zDDu@t@xK34wE)5GW)^YAfd`B}#|%cKd9$ti+tyU*ub-6xpniF{l62E88CCq0`-Yu?x#Q1oRt0|?Ku7li5%(^Q3-4u2cvX*0fD zx7mNexA%U(t@F*|=a#pqgxntOpBSX&y>mZP7UQDaGlcVfBzjqrFSEzN)->F4ve1ab zoteK=5lg5@>X2TO7PNcao=m-fUq%m|@j5%dI&wJtdf9T6f_~4cI@Gh3adMWTTa%}^0a<};gTdPn?sdrE=sQM(M6X;B!W(LLnA z9;}8}rwV~+$ES0tc&S$u8N|QW;6D;a{prpOGi)aQWWZ z`|gUvT5qh$g+@e8mwtBSo**|$YR%vp&sSYQLo#yo#E|s6_t96ZC&eLaFAQr{E%EtY zd|zoY^ZM%M>bi7a(PSxVV<5m(W6y_T_p%!Mz*b1#@3DMBE^GZ+`CC z)l)smCl_{Z2T#p}TdLLeh*(?B;{wMKZIxdz&ZU` zl-|Oq+;XZ7w!>Ys?X3jYEQRV+v}Opg`8TamG3Aq?fM8!r9D=8+;K8 zOa*~&8BMJ#&|iwU_f1$WrKmM>gyP<1u_UZ6)No~|;~wY@GvkU+2=m?>w6JB%r5Lcm zFi$yHVbMGABF0I&$NsieBiV@@N9j=0$so67;N!bd14Xr%`%QvVpi_TYlw2*gGTtI$-Z{k@x>^GhWDNg zxwNQ0-gYL-C39j_?fhek6 zCS4w5leYCOmO5RPDnc=}@eqm*E>k%1RwIdd`PE@~GJnj%tE~CxZc!aj>IWLsh})JA z&7j_aSXgqk76OW@E9(xfDXs4sFSj07mjf*9h#hy!IvBL!2aZ|;x7QO>0;5@OgT$R5 ze5hMp-9Q^D4_BVAaob3BSK2Ign{aK4U*`LyvmRaJwsQHju$xGOh6?s$Q3U^4{hcZJ4TH3wmo{^ z8ZsTLZX=7m9W16DERthdnu(S!7um}ED0aSes0$kBcg-#QfKtm+QpqIO6htU|^hoD^ z1xFY}Zq$;RI1e!E_1=m~!S_fl@=Tm?>m#&b{gJKx^}9*y-G-<}hnn3(&rY3|$*-yH z4h=^+d7gHllH%}(D7m7Z>(YH4Vae-rA4+0Pe1y`{XN9i5ITSUf?t5)`YmA1aONehx_xLQx$OIQQI$>3xD09>>0!Jiz>dSSqr_Z z9Ur7_9n%_0Dap`+r}8T3uCR}Y<~xPzz^~;)rX_9O^xrci>rmZ19%taIE-NS4BjG-_ z62PNTDNRtwMts-ixTr4&dBtC%@Ei`_--r7a&Li2!VF2r%7T^{y1tut3u^|hcdGGN0 zoM_)+s|ItDwX&wjIV^XM36KYORE!?CX6gzU8x5(M__r|N|4+UZ{*SqYU&0Ij8<)Vv&HY!GFbkhWgdDGHEr638RsGyn z212)K)3}Ir6#4I(^Mqi?D$uIYG4cYhh@V-xi9ScAn~lBeM!($WAi2{vJ@0Rza?LZ8 zA0_|l`3No5SU+zDB3Snsc|!eD@>kYfG%amcKs=`&%E2yWww_b~l_SaWf%PLC{Dbc)l~i{PZ9XKS?-?xyYHDk z(haAo<#kP^o~(Fcyd}8?*8Ei&?2E$fa<$@d7TWaRXnNbZMtX4=LB_F?4iv*7$dq5% zP5M(qvW2Qi={S_CV(Jj*P^nxd#sbD<`*@0^>|G_}pT_PPLl(HyH9t~GYxsURJiXloA*Y=A?rRWiu$|N&X z(H0gK)*ZtWX7Y+&q~cU$GZt`h{*_dzr@;j{;a}cG z9WAm==980?;E+kIGMWK_jpz?u`4MjJy&F86UdgC@xTn>z*BRUBx67XZk11!3BJ8lJOA?K5IcQTYR;%5;3fPb!6I6EcGAkyA}_tkt`$61 z&R2k$aOD&eDrII0_c%*VZT7MqJC;%4rF0iZ7FVjv_s*A}K6{y4&|}Vs4bclTMhMFZRCw<@TTukxM!*!*B}t{HGazG@tFdLht7-5Mx7%3JJ~OoUlAu=O6?6o zGOBBt>KKco_U|}Dt7=FM*6KV@2bjH5GCbw@NLr+46Z_BL<0Eah09Fq2~w(x zHU$j2*S_|A9J`P$=MlBl1?Aj%LZ`wI(p^DLL(E)pCr-Oh>M;%YY#6(#J1Bc4s|3L9 zG4G%1%u8gdzJ|8MMMqLRy5h-5h33inJTJ4)-IQ@1L~8g-MYufSQ%)tUC~O=>hah+h zoRKaaGjUZu?sPviK28&)2JG8rLJ53X&&ZrKa#5K>_RhYB7E5#Io`SlqIqvi1IJ=#$ zwijnen|Wwrb=Yd%n?mc{C-R}4LaWWVN0%oDhpS&24lg@6I-idbmnnU26cF}OQT4`4 zGexqdWpYzwR&SyiTbr(=>3eSkItM_A8M<^$)$fs98hZ>%&~#%P)J+z_wUpO%>{G%>OA4PO` zH!@9TH&H$3=I(n|k}R5X`e||J{c>~lh#kc;lwc&Ww(k3bnM+QNGZQKI4N3Q8$ZY#D zour52*KKr<@tk-?e@1lN6_7#=C@)#=-VvXD6?UE;7Q+G)u$d541b2C_fV)`IiEn0g zz^Ykb=`*e$sP52i!yu@YvI&33yczRS?tFOXltAv@^b{a!LD6_2<^+Wzcw2@-jPl6? zmTT9j@U(8NTWVQqI8ecAYqxe)1(AKgYg91wqzvO)B{6$Riu zB;y|S^ovUz_cx4HPbLqdc3iuLyk25#6=s|`t*lz;g4Pk=c~twVyZCsv zIpINfY~G8FjyS#b%&5VrQY6YVMkXjtX_Il-YfWUqf=(NjZ^TF-cE(%y&{b6s|gcvL8W)J*bdX2 zqEJg6J5%+He=$+Lm9bvro5h!nI>hv=N9`GZE9`GYg4e%pz4e%rB$>6sb|C^*Dr(a^+e~AJA z8Su>x;^hYZo*kgAsPG%!?`c|px_SX&cL%76HOv`c3^TX16Qtg4XrTsJnhH{DaVmlo z9mHW4mNK4jn7XHuhKZ-O39l)&un?AjJDdu} zAV3I&6#>EOHq|@fq?&ngu(LwgHNYHvATB--nS^&#b}!M^t`={e=!f zrhJIpJX04F7+lEmCNU52V>tngJpf=0c5Mv-;9o#~LH!|eK8c?>BeD`gE-sd)d{8jE zF$X6?eRxfbxmY<&K|HLyyk;D%T*e$=4o)6!V`DSZAHq>o{1x|K=*rq5@<8oOV87D^ z^MJXzxj|j$fGuZERf5H8QuBi#1nLXSV>MR6x zaIirn2i<7!&FBPxe?IyNF95vJ>|Zqfw`KIB6|s&GOBnda8vgO<_x1L_cKvf8|7$D& zfd4T0w}ks2as5YJ|CR*)E#UuX*MG$IZ%N?a0{)M7{f~(Y>(93UL~RE_YB$6l{~unv zepJo){R`R6{t>bLxY@cfNbue4Awdub1kBFP3j!f_e~&<*M~pzk*6&vUb_hF|1H|=X zd-xl`?>je!f7-eIlEwS8ng#&O@ka%co4O!eoSf{O07Si#ALTzlH+4_`tOWA2jguGg z=5+J>vx*1@F9h)l`PVj1Fz4T^jerqdMSM{E3mh1P80X*HAYcx}``TaOAncrf=Zk>) zmx?A}4hW)Wf5YW~@cb(-`>$0_ejtFkIXQpf`!AJGz#Kr?|Dg&ehYNyUVt1Tm9<$&0q0mUd+V2m>2J6+{`>D zGxyQTjJ?jHncS| zrjs_dF?BKnu&^=n@;W*>80%X@yJbcxkK3%%BX-_XJz?tp>iQ|xV&;b~?gs$zF!T3E zrU;7`<|IDs{k<=DspzvH8?i>OXI8eEwz`?8^JgR+OrDs42D+5}RVxniP7(xr&>h;A z*x&ZWN2DL<>d*8s5W58Q=={cU46%#@cGli5CI%E7GHgP`h?1(D4`NX5mnkRR?m!A+ ze|)ig6LIFWkhoXo2*;#Bsi=eL0R3B$bcU$jARrYjw-Lofp{nzOXlxr3%ObQMYrn!l z^uEkqk;)ERi*84B}#rWFD85ofA5Fg`S%|(J=w;l zYF8yjk_P6p=1c|!^#9^4^q=)5q*BQYZ9%PqzvRH_W{GJ8Gt(Z`$5q8%)JnlOD_HqL;q9ARdh)<+$R$d3{N%$f z*}CfDQZEtHx0#6}ZHzR*%X#pyG+KU7W0iw>skSeG;|^C~)p(_f$4P*eFvay>JfKI~t`!>OUI|}{V zQ9_$e^xNV;$YuaA{>!8&BY^3j6W;INw`qs((f};~x*}t2WUeo0>!wNnon+x)p=D$T zuro8zva@UR^8Qonf9lHieeHkxvM{l6u>6;|B};SNVS^RfJEul(v7225Dg~%7W1D(J zwi8E}@J~|Vk|w1^aD3`SEJ{3)`tJg{&2Im~%G3lJzED&8O?E4%pUi;Q>BT>nKf8l^de^B_By!?J zJUKwEh5~*7-+inPY-o@eWPbFC^sB~+68}CkoG=wh3-ptU0MArEGqQ1?Svt`~sMzW}QT%Qz!MfkCl3)>M{5Gk0&lzt_=(eDGiP z3xUyP)z=B74X@*TO=%3XRd@ZdMkp?ci<&mwPx||RSc5H%5rZT)^B0qrw~#oO2>mz*31hc?^QA(Z~V5-`4EYsp~W($fWJTh zJgq()2%#>6HO0=Qp)QB*z^i&IUfb;i?eUZd1x3TEz<yW<7wjCj(Blm|+&wdYU^h@2ETY_?Sr=t0*nt0OT^5J~v@U9D2vlU43euX9lZ08< z9m-f~EWrTBB8RuQtCIAIkn_;gd`Q34NE@d68*C8aIt8F4n->-5z*hrJ-$X1WQ1p$H z(rDC9);XC$0cqG}B9$CLyBZ6nZ@t_M>V{)L9yy>2HC8N#nY5n-nF^?l4i|#g+$hq$ zb}@24u{mI&r68BRl&QpjFBgOf4HZ~Y6QG1b1%9Al&PC2#;O`H3hQC#p7!QpFBw+Qa z7qh2CneXM!Naug=!L-XQDaGf70VVz`6r*0zy-aT^DB_xIZ$t-5zGg$ zx2maO7X?2@w*`%*d}Ek}!bmkK05QCC$*O9V24-ze+h{w6G=}{Fl_t2yeXR1sC@S`( z2!=J3Q}Uh#w+wUd;y0L*zgA^|IUWgGdc{@11&*k+XD}V`(E5$oOE^mqICP0o-h87> zV;)UDlq0!4gZpDAhK~uc{up*qxEczoMeYKa9hMdJBU~KQV@k#JIgti2k4C!ygp9n> z{)rv@q~tD=*_j@9JJbpSPH{uDeIWx5FuMUH1%gx3O1fRqulQV&i&-IMR>q@v{DuDH z{P)^`@}Au zF}EQL_iEIBN6-2ukq^BrSi1f}T(W z#5#3_zsg_%>YCAH@#f#5WS+fFJ*>FyZYGrE48y00rVpHc1j3QDDxPClZ4~4Y>Px1D z_juI0<3x&&0!^E0pCQH-b(`3ju{T-~E<^J)gpDoAy9P^=Z^h>CrHlqc7AdVV)F0Qo zI!ltru=a20ll>Xf?jpF|Hgk~O9YOX+H9Bufj{2`rdjLL4n}dXsocq2#t~=Vp!5w{~ zY$_g{)sd-LbBXjsd1^EzCU2 zl}J{w0*S2-2IZ%N0Jfta?l0DPQ-?AJu~GsyyLjpFSptHe4t!^6ll%|jIB=vh!di%8 zI$E$M_v~my(^+|lMjc3~1+AFU>S!1NtC`WXj=a?`P{zumvAdaP)cW)xqV^22O>N;Y zAO(Aby=1UL641?x{P^De{9~k)v=H^H9w9Fm^Fd;PU}+OSrUbLa+(yobve7g)Qw?7a z0KNPJlc7XotRE9s%u8)~SH9FcY3a}o!@ZCiBdKw_K8AuZSUH(BU$59YtWZ;ayql~- zDOxkyWD4xtRoRcjD-p#Vk{93y{FvU3UtBu=2{d5fHNQ)iX4XMe2AYrARBEZtNzKYT zcFHM3gw((nm9MW_Tk5+QMk#X98!1HX+Y5>dnio<=ND%Tc|?Xt#>#u z^}^>Zv=>|Syj6AC4q4f8+RNMUZTyX^-DRKOdLLyP%9byl<{Rc48rX8Wq1r9BU4(wp zzWX&wpxoV8=Yl2Y8hStQ0boDtGb6n zs=KbnHmlG4*(T+k)ehVJT|IAsb!cD*Cv!sDE8cQ(FFk$*?$rA;XeD`QTBC2}RPWOK zh||5ZSax|n^HO6Gim8DAz@O5y@413=<=?pJ8fkd4czuk15#3 zcHp*yG2j-MBIz!6ypCX(3Bu;3#zfbCDZwpR0vmtP5 zjZaYVfwx>mP-)BKTvI!LJHzjZis;!+21OT}`T3OE8jF(h%*>c3Vqua-cGANz=qOnE zmRxz9*H+P@sgnVmV4;||>lG!9>r=)efxqAVXjb;D-BHt?SN$eZ4CQpY=Ns>_ci4P! zR*wbpf{JScZwXCiH@pHgp3C7aQ-J|ttLHopf%11|0N@ohVj!ivq1>|AylKb?`7YFA z`)(nDaYDOoP;gkbsj3|V+lpN*t=|MGKbFn=TN9*@mfd_Ec&O@8Om4LVI5?m*BEBu%V)8V}`oFQ)Tsim(GB#BS=X0xkQ zJ|vfE?4XuTO^fmGd#^k~xXdg)6vd1Xx#|4r;?Vq)-8=kbL>)H)5ZKBrjeTA$@ZXuZ zeMry?#zszWdzXZNh(`>U2SeSur}B5ql50ui@CMyZ>jxJEX^I-$Df%pA0f@04t}CZ^ z)1k`-P{mMD>W`6|=JjsS0#oqEK+^!LIk#~Q3Hvzmq#bYb z2MXsEn~k`@q;OP^bTwLl&>L|y6So_)=GmaTbI3*eV~D2}-4&4DJf!pvW%Zz3e|UtR z)Hq@dQqc*SWr^6^f%lYw+=R%tE!06IlX?ZXfnI2kxLykBv$XqBrYxiKwN9is*rz~l zaC%xH8ULWcXfSkI-(M$LDW^X`HGbDtnb5T}MCkdSQ zA^B^Zu1MP&zC$Y3K?~A~G7oY5t5+rD)^@EUx0B|arkL((a(*cOX_9&oqQlNo$3mR&w4e?`zt8NnTa-r+?Ll`W zAcOBW+aPqM{?=~4^)P!vzLwS1?d0U~{_SCZcYD!7w6#5RtuTYCIWXrsoPuV>{yu;% zOIhm!18nE;dhJc4k{E@XT||aH=TP*=U*DkCI}H%< ziNI#2(^6` z;Ce#}#{XV`Q zh`7HeA}@R>!IV3o#QPzpqJdnL-^(=_))BInW1sSbV0KjBMgxW2-ABYzQNv$k9l%YP4RvfAobkt?Jx`Br$?bDL|CP`&ToG^ZFf4*uzah zW_$bgpV<+{zFcJ|dBO&EdR;|wRWmV{!MP_V46qR29}{T^fl?%YT~5smvMxlRr9#L# zA{OE+@4+{xT1fcZC;ABSa=QO&fh_Ip4)O=(IE_iLANj4#`{<}P;7^oxgg(`a!^=aR zdE@wzFdv4ZYw;cdpPm$PZsDe7EvHP4`bkY&0G8wJ^?J9sx{9PQ1U+tIS~^iAM$*kt zwl->;8K5wtFU@k>R>o&Qbdd>MWMRD7WU(Zhlfn8ne9vjsS!i-gAVhtt~ZM<#6 zzfNC|wlPVviS>bG4_ZMUo?`we>k+SFL?SvvvV`m-}Go<|c8AKLRY3T|~ z7N8Mzg`gg}@D*lU1_=&{h1=YAh6!RR3*~o>!UO%&@=Nw$V}rlPXjli$RtDJGJX{SdlkfdSS==tTb2vL#-3Jg>0gMdUenuu4jv`+ zo>h%7Lt(KHu`hFlZqjF+;Mt{ws9pmc=10p5Viz?9s>;Hd_(_{QAnk1R9w0_P7>a}o z_Dqx$;`|)T9pADuFT}S8n25aPWLFmM9v)bbz*$7lOnuQ8dKVt4y?u=eYi7i^BP|#i zzv-|jpR5ww5z#06kSgm1)Jt=sXmD3>cpfxUj+R#4Reys4UU3Mg&C0)I4#RpD2Ln>58Nc{|pkkbix8SA&|%{NPumhHx#NJ@1o^D^R-^?j<2N}R&MNTb4x^Sm zahm<(D~ z-)>&&E!!K@NX0_W``rxne>Ee=F|&?)hWD5q3Di;6OwY?^7!?8Sdr}4ihlB7pAuIIF zN_f;-S&}#rRhz$tI$DXJq=kx@dwpVdZB1qAV(e(SjTj4uE|#;Tb1|p$R9%N%Dh2&! z&_KtA69!!68MKA5N+K|0feIcy(|7KOy&03qnWBDq8G{s6#7gA8^y82I!oE@uuxXR# z4n$}x*V)n1>O4i&5iCFg_F{o_b+c-g!zxY9Z0Ub=m=7g}XJO9Te&k8X8@tj2TKxms z0;)YZ%hdrji(z_IWct1GhW-54F1BXhBxCcS^1)*Yeo+K|KD(w( zmh19jPQH=*Kza8z%u^>)mfnD9?Yj$)7ivg3Vx`%$^PjQm&ALn;*G0fDvhGU}zFLdP zazCD99v`L9GyXORtnFh>;_@2=2$^5AHZAT-_0Qwmr)PiBMLG$07D&Pou6egUTVHsk zIxlv+-d##N5e=lk8SmUYJw=OvmiJ$*8QwVge&LmOn`MZirn<6N{o*?q=pNCdh_+SR z7m%bQOYj#vVT*$Li;NNvKOc+GqE;c7!d4N(w!Ez7supo*;qF@3+S97F<)u?e%eTF? zwXr{sb^mnxmFHk{?}LbUF2bbuL}r2%*orXOAM={t@Az~$Z)>&O6h!`v_eW(}MYjo# zi7J(Js{-xgJn)k}F{O~<^YZfSe6M8aSQn$BT4w?wm0w*_yV%^17^A#nxFI#25wpDsNAa;)5)b703Fy=|;$RQiy2 z!IPnpCS12!&%Fmlq^UaG3jmG)OQ*iwm9H{eeJ&!_5uIA~40_r-VwW+o|7QWd8F}spN z1q&v7JMGR~=K#uHDCZ#RWEg*+B(>WCz^Afq5nKO6mLY-rMruXvIm~R<^Tv2#GI@1Z zZ?T$>cj1vwWWbpJ=clED&&ZPVmaS7n;Zteti9@As$ABD~63e3ep;4#)eA9c$q$LM! z_eO8G^CUjFr4fg{Y)w?&uh9~n3D=IbUkDKuq;}4L6hny`zHOQwx#^Q(#x{&uXMW0; zxmdD_zrHG)ybVpWis74HVVu_XFWqd zO%Zoj>{_jm<09-mc-F7pcZJ9A6MVN$$guctgvGJvWQ>s=Hkyr_dt*?=7^6(KE{*UFQ_&Go~6AhOF!4YF)X_e8xG*2;A@ zI2Pc`B$qDGHUV>{a?}g6kI;ToW+^lAGsckSe8$kv-%vCE~B$To_EQU zpEudC+*W$!Ag$=`5>>b|T9p-|i6dfle-Oxh-VFLsu1wCfUT+QBI{5-Da67_ae>I<| zzimV;`(TU6%k(p*fZ*whAgIHRFvJSX>vq9;#{Y-+nNJj|nNS`&ww6hU>_q{oPLB z*qCth*LGB4_|%eMGgh~S-L0fp>TK`)l4iYW!Irb2`?Q4PJ<;{hxx0qIb$%brYtwtg zp1r10Uw{Z&=S@t78~6Rl_W6O-oSo+|{h>@VZTeIyPGYp~Qg(1=lQCmt)LL=b>1HnL zYS5c?Vj*GzGbg8Y<24Rvn()mbh{^6T@mkeg-Gxf434e>HlW!4V$eHxl75n8m7K85C z82XkGZNh|}$SIeaYOQS%rCPP-{&TXPqzWmDi1PT^|Gf{! z@Q-fsZ`#CvIAQ_BT{>tJMV=xA(hPHSjuO-J$lh?28`(?6P#w7HEXozTCO90qMV!S5T5 z9sZS~*Z!8044pKY=-Fslm;o%zjI@j_0A@xuT4q)N3kw4+3&Vd=dl>%FjQ*!`4OdX+-#XIfFSv6^gk`1$(NQnMGUDW)M+q_E4 zjzA`31W)`lUf|Jvey~RMk=~Lc10E;rYlxJ=NSHr8I6oL6-VsP0zVIPj&8hu*76!Yx zKiK{YwPJv5OdX}<<--(KkSGJo{5M8R6dUYPYg@Wz$DNCUsN>@B)CzX2wQT@ zlzj)+f1FT^Q`$WqXHMUO)z>ze){9K=O&>IoP>K}{zKsM%z{uHrXY`C^O-BN*6mI3) ztw^q#a6`pzW;`r=424K;2o{!+!pddlT(c{mn}LXhItKx#w$>mjmbBJ%UJcb1>2LXTsx?)7{C8{~hQY~F1C%n`scRA{bcA$u`C|W0~1fz~n8nV<$n#tJ; zUqd~5jZYLp8ljoS@fd0CHO-CMEXBc^G6`xDHSS`K5kZFy`sN4Qga}5qDv>!z*bC1f zBPWEi$yoIep#^}69RCnWj7ar@!3yA^5+CwsulUBf2iofu8sKXNy=(@;R3V0q21TnJ zw`mFHNoS21qwhg-0L9f_5g2jH%6ldq!18Ae?=pgNGB63s|0XO^AUL<{kkm@t@g=uM zc#Me;gb~@=Nev+o3LJ|MCCjB=&@>0rl#mHjEjkj9hoIt{%G@`)ifD>ytXd;D1<@cG z*?8c4Jp*w;^u+;$J{3%U6xSd?WC~h^EEVrW{yYuL72W`xE^}cuGrFp$8Wxv~dxN(I z^hxqCO#sG~1*bp3WEvnk1))KbOl%%IcW&h?N|XiX>+rA4|1{41#UWlhzY1`6nAMpp z#AnD;F_8GD0aFk!;+b$aNSyyvF;&H&kOa~zgq43C>!4BmGZQ^5XC9ja$1Lere4)T9 zeM#P@8%NaS=xT0ULtiCw!N#u z!}ZaZOj0t8eP*(H@Zf-<+VYhkb!4KupB*w2SO%ysQb!dE`N+bY!05;d>E1YK5Sa$3 zlZdvZ%&XSe3MC^rXc(oX%o9p=Ws?58@xy@c$9E2y2~*|+E8$#{enINUYIfNaBbrw$ zt@Xm*D?Yn}&B5k@O-KvKPs0%#^H(QC>!It3#w(M`W0)`WN~4)XrBapwkM#W_P;^#y zsYa|7h)-=3BtEM(g9aEKLHm2S0XRS?h64P0MO)QPadd{1!gW@BGVERrVinntS-;@+-_A3?ozvFBcSd$vnnk+ zBIZ<=M>id|Q@6+WE&Hg{8!x)>tT#^@uw7Rao46XU@0vC!pR3i9m@2&mD}tYw|4p(@ zx7M}Z8TYpyZ(ge&YyQ<^e)dTB^fgb>VUheP;jT8RA5v_5EYneXWR*!RtWSu#TH&BH znSpK2a>>W3s_Ua{((qco<`Eg)lWDGcZ_+^Xc4neoZ{s?j)Wt-Q$V(8rb3s(Aku1_< zDdi+Q+mKJAFalw9jZ^gw)NQv{x2L%P(=;EqmhfwLxq2nBw?%)mysaf7*t)6uO;>Db zai{9Bz0EcLiTiBx2m)7oyFOnD=hoh(ZZN+prrRhZzr4>=#9Pwl8;kx0DlD zD-qR__JFFM+p@0|s|s96%Q|g1K0E^6?}m;b@h^23NOqBOE>Ii0E#Hrh6p{tcyg;%3 zcKdZznTRJrH+R&EcDi+!mdjlyS(B3O;)aIt8kPq)3(cttV-`AP z0S)H+O^C_1nk7pY&^|jg<#Ukx&Xb>_Q#ip&kDPz5OfLeQX?Jx4>5y{b;PV_t;^?g5 z2?J-TCiO`UpjcfxV)`wAj)T=ce;8I~x8UjJKrwVruL=>$KY(U;nSodv6{&gmct1Z` ztI%b*hcS#>s$_DNw&0e}X_jdB=zH&C4uqQKS<=L4hHxp6AMhyu)L!Dnz_S|PVw0Js z9p|`!CwO`NBoXeK1#o=S`C)~e7W8h&L2{#!v6lBHXOssUfR(Ge_m_AIx{Xg-`&03k5`g(heUWIxzq+2e7ej? zcH>Zh5USb=^FSTu-H~!F@Y%uma%?C8nP+f7@>mvlJT{FCn}Y9 zUT0Ab#*nei9jQ4~L8w$+XzccUR)@W4>Dpw~X@%G#Y-5C|aEz zqL2Ew?jsc!ASQ-C4t6r~(doMVG{@$nzZ=0rH&twvFXJ6K{CGCuOm|_WML;lucBjm_ zK}E(pv(ndH#(wi^jV4gURB*v+qMRfukp8#tmyE*x=#R*b?wJwbU}vsOw7SCS<3n_7 zjf(~L%Q_CD7bvDMaE-~B!%sUfd=^saKqP#vVY|jE9Mu9rM+yZtFljBG{00oshXA+z z2srPkkK8LDB17zYI7T7|_ZM${uiWI9eqpk$pCh`W;jX?tUOyJ(c3&gp3%_Ad1{(@8kPjy!kd}U}!1I6qQ z;!O(A%PPLVczf*V3UZVafxg8+MK%>(0A@SEaueMojF#)3q?PN@(vlSm$1V@OJp5Cd zn(fWo^|I{b;{2-b^0@o*0Yu^<{+N`zb8+G2;qiL;GJkQu`Z_znBsKCIuT}ta?>v_b z$BU1PukEEXn9+vMv5^AOU>oamRi$BqdJbz5{>k#k^|pyUvZTE7rC5a zCQ)Lj>8GaL_BPX*cZ|(n=hMiKs+(u-zV9Ns==6QmV!{K`JrhsDk5R^&f_QxzT8l89 zK7vymxP7bz6kq-(cgubu2oOax{STPVKM`F2cc$|%U;Y0>sv}@yW9#Io`7i#WsQteY zO2+WN6nM$R!2HdH{v+}-OXHvUXJqeVwF$#cG(+GCSlV~e@y3ECK?>rmg(Z&&@Hjvi z3lupJdDR`u+X4>{8<2~Ye3>!_CrJCT^mJNx@0a(T3CFEEAqbtsiUU&`Em@DWPtHsB zwBa9oGJY&J;)T%o~7=K-ql-k%#qhvb`khk&$dI z`g^uXJiHe_WPdhvFyB8Y#R2+*5L~d&V0+&W{9Gc@qn{@Nxt>)Oojk@(VPNn%KNhQk zSiZYa3~mXfA>F;$-K+w5gvF&+MEv2p5Kv$k!l8~rsLS|32w#XXXT~GJ0tKfeBe$-e zo4F?fT6DahRu`|c;Z9te-Fo=IG$5=F=MLW%f|MmY!jq^I%XyV|Q>ZBpJfcM)B#Wb- z%gwpxD`629Qb(3Bl_!Yj{Jy{-rO0|v)^=VHdQ-vd)&Mjd;#Ngv+o0>Va$ifB=c_0Snd71`wHnOxA# zL?Mbsx##G~5MhoLh(+ysfb$VZ<}?0y7X^$=FsrIS zGQnd7U<~K`i5q!U(CC3uM_G}g2u=iZ7921DiDy@=DDByQE2Nb|3j!LswkiH#wJouI zq7{5nNl5e|$+qk1w4nY*$0w1XMLn!DXr*@C1cKuY8#{b$3gmEMRt)ZkwGZ(OxUgSz zr@Kiic?H2V!85;`eU4{uSK~fBs>=q8!v+iUM`ITFSlK?lIGw|W0+`!z9RJ8BH;(vRbRkj)Vt2~gnyD{Zho8pG@R+~+BMiE|GeuYgnbgE^s z8F>ZofIuhs1Im*_yRT8(_^Cgnc21#RRI?~&?(ir`wWkzJP&?wVxV*V5JetFZpTXSO%~QQ$|&yU?Osm~D}R!!l=b z7IPNgPRWktdF#I6eCnR<(vc(@*}4wX%vjAyk`mh@`_#Z;Ry04B&x`Kxwn%+&y7qFB zJeD~4LtAq%obClJ2j-Qr3|IRNuJhGj-@wg)Dv)1#UJuM14_b>fWa@^ohE{$mXZVveXf!ris!N>NtfSeOn z@=ADm%_;UA(CIwSFMKjS=8VOsSeExiZ|$bn_Roib61AG-zeRs^IezrG#2Uz%Z;#v? z+OyZzdl)%yWuM)>zQeO)vrC@wKn^7v+sSu-5!FyV#p20wP+>Py;orquS76I+Z%o-H zS6;uKcLfoW7(a7QA6=`?zkZl>r*BfLMZ~nUu-zX%T#mw12$LI!J=Il@S=Vtbs%t8f zG`CWvv(~70OluITtI~|)*YCw{;yDDft$9yfA*jP_i9MZ$wA?>8EK?lMmZ;(HI3Q$< zRO+whm92QIwp6ZBW|02qS5db$P6hjd_KrX9f$w4}&G!-j6=vbuxMq^)K2T5aEFhB@ zK8a^n8@~S@Q}?zhoF!EvQ%pTtD2S!$_X`43S9e(gPE~~0VC(a<(b_x}rK&ET@v$hu zL!msq0++7R=F4^59z`-Ai*Sb#^d9Zg7NoV)_n2HJhZ|ssKqr1kliys1&%o_#@>myl zj3Y<^B4P7Ya?jTL@N|g`@Yk=0A?0Ooc3tUWW~1)F{M>Ybv|M+0`~HH0TcJFBRqQB z&xpnGm7cPR24Wy+=?IKjv+bOCtfaQ}N^NCJC5G_e-};ptjo3B{GRNJtMM{%(L;uf5 ziy&^Jf#uJ4bf2`qYP8^|qrlYMf3jGg)M!<9%%)q;k0{`Ho8oL!isl9%0(qTDw_e z09SktU4J0_)S$pTr(vL((<7L~!v~ACRRS3Y>u7F5EV=p*Do^-}{I)J1AF;-RDd4Ps zQ?SRpgILcME9Q@}iVWFptH6vgaz5pIpJmbT$?4|FG zF4R~ooU8Ma`~4RU?&5N(5Vm_|EvK>Jfg<&JvZhAux)@_T=Kj>8yA|)xMJj14<{;^G zEY-cpRyNWcAoumDgTNX-(U(mm0KToz>;QpyANv!UF?4JGmOgiv8-69bjEt+@eXv*J1Vd@nWH!W;dQ=5jZ&O-+*+39Ge!r$ zOiplSa8onksppp<9*ot?rIWKKi)P-KSL&DLuer3)lrP)(=b|Gt$Ax_ zxxCXcp)BgNNN<+~{~V8EWlgV=a~DklUUX`>`1;Z-oy#p^qc1v_SbWC|-dPUI$xhM| z(epSjLC!8SvX-C2XV^UK$;pi+YvxrxpC;cc(Lk_gZr1;m=S|o$&#hu(h6~0{0H6#) zmUsxMG*^J0)(6fSX`j<}@*L>mV7WZ0#GbpnaL0r(_jd{E=>-I8?46K6)D_;odVxOH zosnES%I1vd)SA)@=BzRGQbY$)4J52{1Za@N1`{Nf&>X|oBy|tBDn&==G`amI8 z4O&{fb)AN3j?Be>3siW1;|OF2p5=U{vbx(toTtviilL8(&$ckWT^P^J;MiGLlyCCss*a{ayn9_L zl6&gKX1;;(!`<*Um?OY}Zdlc02k7WjbgukeGATheLQThc5*IP8jokQfeh#cd-sO2h z&voDtAIzX!t~hM`Ih1>Hg#UN^&p8fDgwSCgE$`2+wji4&#PeO|JjN#m%Vp1akLJ|{4lh>x z4!szaPYxj(DrcXc$Jm00b!953N}I~)50gki#M5VVzqSt7CE>)aEpZA6%$F4$IW(qY ztNVY=nErN7njC+S+we*I__-R&0{%asQ~#`g`S0k||M3+#|8K*082;DR;;=I?{a60< zy%y)c@h9m+5| z0^C?m)2G?p6R#wfUr_tMqm9V7qQ368 zl!$Y`l@8Y-1gyx2jMgp3Vp%Xe<0xy~aHwLE%ESVM?&esj;`-vi0)j^^OQr_k`UH{E_{2erC4Nw7 zOeP$!Jp+a3m*ms_m3CXvcZvN0%D{?Yx9~*!Ho*r<$=`Kj`HH^d7B|!{goXxEEsJw* z#WQBqsFiAx;se!865|{9XKs050vKbY#1+ZKQp9HhYm^n`0GCY6g@7b-zG1sRxF`NG z>!V$i?d>%vUjT=#WE!NaF@Rp8Z0HBG8bmy(1yF!CisCQ=Xp6$IfZ7yFf3Jt;Ar+U2 zaDsKv$_Y(xOZWv%rsf>5$JxUZoZI?eD8(BBVOKTGBR zUXs8xsuSa;_3x}51a3=R=$%^%{Sz0VL9ZZ6kybK{4z;Z~-hEkT(Z`(=y#8hnRS2_vuylQ=<@aZCHLflBS72@YWC3#3Dc zxr{m>M%iQ2Oo1Ak$m=2aH3uYz9FZJIZ^#>rBmx?BOar9-<<)V3jOR`lzr`KVG$aX^ z7Z>XveI|UdKq0iTxvL^=SrM@feqw1PQk=>!eyAXH7~=ZagS4?fIB+J&nF#;DZ%4yH zw;QLk<0vB;Dv=uhD0Idkvh>FyiKjO6U9zB&p9x0MKdk3Rm#q+80^%BTYSas{OyOf5 zE4_I+4y!h(gk>#idqg8L1&U!5OJ){7cSh%LQLbYFme0%7iOPgBNyLgX3b9>=Fw2TF z6--Vg5jIwrmJ(O`S1S^}TOnW70OV2c6ahpYlcf=r32u@I6<0XjJP(I@@oZRwQ%cOj zf|*1jq2~$*Cd~#AM#~9;9W6D&Of}?T5NxAm5!Igx8l4y}m=K0>ad*l3iMH_vcFLK| zPz=c7ywdNUC#ud>eInO?ExONM+&LL+7qQri#Q4C=Rx}J=%4O6A4yY&#Hkd*i0`!J4 zHMYT5ER7fnTi%HYleu+A;E*-|iUV|lTnWAlmQ{o6Lx|JBgS|0}zpstX!CrC{tG6JS zNrE%+I2(NCg>fAU)v0^MF)}|P#u?||M;pkrW1>dTi_*y2H?cx6FcXe@j9NV&>C~CE z7nsgjQc-qpseuiqqk)fV7Rl!i`q(;)Le?Tt? z1ANItq}zC#d@WUTnqvE&dUf~wCy-IzvyUar;}M-9s33Qh@dV#N0bqVPmi3j|*tf7D z*AE&dG%g$jOFarZmB<&%5MQHwpiYU;xH`q+l0I|)vQFyAqpo#}fe|f{AW0&b$#=i6 z_XiujC?)jWLfOJ-vOL$AQKMdp1(|~p^mIpWTv>lXCloIK*b|*7t({w<;D9(bD!9(q z7;`bEVc%c{Or+JuiUO%{JnwonFa!4v7UKFO`&qaUTDM>u(jk}!#t-yNjEqs5rOBRRvV1QA$?PU)%2Wy^zwW1XbKqql4Y z(qxb6sf*`WKnj(eYoKJGE6MomCmjJOz*0FQp#Ui)KvXifQE;OOB)`o$De(A4BofVO zmH%vLTuUpE*NG6N9SlXn@49rlQp(DWfA9*;%wvf_+Qp?n7{*#v%wT{%i}wRMqK zk2|uhUJDjUBR9uAscSuE`l@o7!MP*=r z`Ov0RAb+-R{NQ>9>PM^zBdxUF?7Iu7iA(|21-{buFX>AY_27!6>||NJviMQpqRuky zID@g6rr-+<%6*lBvvYejNmG?F-(J1+c$KlD^7}fa!$RA7P4vA`yO$BWCtqr8_~rBX z_&9|?htg?0R#sGEBS@ukN$%Y`te#>Vn zmWbjobjp@)!(DX~gnR6l_imYU*y-FwpFW^f$Ho_mm=sYX1;+?P$7(Hp2|RQCqR)d` z)@myj8u1vaJ4n!B84b1UQ&g?SVMcMJH7&Hqqc15h=FUC#-k|9Ja%;_D-bz#+^MI|&VZ3HX6#aF zZ_P`4uvToPzK5Jo4KZR7LaV8oPwhS%xq}BN{`2;wKq5ruiG5GqcRmj$GhV}ij zc}rj`OFwO~t@j;?p@zysG(k8mriRw`ciUH4sKM*4vz*Nt1=9+xB4ii2X~fxqMAL#R zQQ=Q3wP9or8KfK zB?rBVmbtM}i`|K9NCrI|KYWIWcpug_qlwNB`s&ywjfi-lJUDifV?#NZyvUPKt$22cAvaV`EJj`=5|_UTaV1%0a?Cuhh0%MB}d4(`56m zY$^L?xVa?DCA2wMxSqw0lR4Gr?kq{kGAk{KsG*ee*B!D^!g3RsPM)BAw8P5@>-QD& zAhSv?PhBN2f52Rk#Ym!qFMzpXehk*aj7OxfiwX=;9@uYhY-r0xh7_mlw;a2wCHPgK z%|G+d0nqj>M~x86fRRF%6$%e6-t@h0E73w=iX{mO1ehwbD%N-3Ok zmCt1yI0r?SB8Hs~raY=~az=H2zbL&(sZNlTysOcPp6T!zIWF2(k?%&U&_Aua@d z^5=4CZCf-~Lj;}F3F`RM$kEEv)-t9mi{MmW81$xQp}<*%$aVEXHwq*zl-`qk@1Yu%Z6Fjdb z1n;OzJp)Z3zGqN136+y4I%E8q{u5#!Blksn

86QE>U#8)D?+^!yY;%+3cW?iluK z&DOG#@6+3_j6phQ2vX*9(+9oHN5M7pbw=AT?xcn+9+58zzcwI+;{rKf2qYkWG%U_? zy@o8a>apW)Y9m0qsKWaqf>-ANa^-1HpmB4t0);h(l*Q1ymSgp&?1jQ0&z1#l1+1Of z44qSs^tP@Nqeqt|iKnF`61d10vXTn+{^1dWrSm7QnH{d^+xxc<7yU9GxC=q1fQkEH zZEFx5_LTxDc457F_M{XVAQt}Cvi$;)Rs*=KbQ@swd|5cwp{Y)6!yVl0*h-ukny#^< z&D!YVyCp7w{+jA9zx39{CVQLzEtg;OG4g1M7 zN&FDB64SZ5%a-lw>I<8cN2JnRoW-*!Lw%wq%K6hNi|~jD26S z)sZ4~CZ{M%mV_x;3MC;rsFY5M>>-C^=g{|#PKD0*eO=#oU1$Dz-{+p^xu5&F-}`;9 z=eh3t_cJtyOh~Co+A1823DCPL`&P*RY1ne+AA=8TYB#7TSnSMvpCNZe&FEgV3v>94 zXzrVQ+t_$dkBq1`^0`3&&OJ)B`U}+p)y9fbdYVzWvPCuT zHSB^EAeZ}--EzB@gP`s-bWXCqbckBF*N}%<(OI(rW=WHu^IT80=u*g3SRG5k?r#qG ze+SQ5IX?e0`BJzp8VdYBNFCt&pgIUFVf9g;4b{Q3Q>EQN?qjC_PIY=0-7CA~(lp7r zeXKUnNGCbvVZ65dUUJ6V|?IS zyj#VuBRX~KlpHpn=?HLk&B=+CeNKl~amh^inNJ9I9DoJv-6`F?CnAO`)2$UYYp!xT zCU;*}uVPKwc$x+5@oAKMlpvLT8i%NPHkAg+7FCdOVT z{Fr={Q(jVBM_Us9H~mvExax_bKGj5~eq*oH{>V;m?_oeoFV?tW7&5eEHh%sJJ|70% zru#^qZ_a=?^Md1q$cEbz2U8#^ZMG1pz{lDK^s9~fHR6vF3ARH|f%2dv|({^vJZQnT**hug4RA927O2&&%8@OZPe9$yK?e)%(k@YPpeNr zz4Ca}VLn2XKFgP_u>4-d^h^_r5D%vg?@X z2YHKpkBM(67~(!oG){p;%C|^2W|6SG&$lZ{apspxpwO`6&7RWb!nc|#Ir)_=6w0+1 zZ3ECnktZ@S7!6S~-TXVkw_33J6KF{xA$nltq1tG!9OazO`u*~u)R&pV(RGd| zt)%~Yxs$f&$lqrb?>FD{#JoXDCL^Ls0z-mQE}A}yL2s68 z4$V$UR2J``Z#9?P9F*Hu^CnSz-ws?B!MCDjN-Jy|rP<=OqhNGt^$w>SwDcKPd`URc z_9lOK0X6Kb{;Q*Mn>~->Tw-{1jPWMIVg`@q7`Jz^}~}a8lVd05w?f7yK&0g zW}Xs$;0~%wm!Ld{_G$ZFi$Oq4a*r=~PAD*?0gSvPP{jrT*t|^^?6hIU~wv)glcqZv4~!0tfB>JGld5ul#xQ7YNDR93N7rs4jk$?F{kjS&wujX}{%eKv`WM;?Scdg4=iZQLtRl6*a2*qEqxcizoS6R!v zk+++SyC!U3lEHVdbI*x#{=B&M>X6Lgt53g7q}>jl>Iy z*Q8mQN`)rofWq?fT#(#7!0zxLUoGF!b$A zac``0)oCvp$-ZfAb$Qy#f_0Zb>Lh}RF3)2-{&9{%0sdU?ItcvGH}TW>~zHP*>G}SRC;1=+aPA zg%)3ZfeZPUhz|+##=P&cR5CVJS1r-+M{_Ri^|B5{KPtMUyRdn$N09Z6V{>J>3t-;0 zFt$6=3c_nWy>;Qz9`KaSDtP&#$v5d%WObqlZ$;BWa8zn#crJY0Pn^UQfw%|NpRUS1 z-RC%^Vqqvm%g!xKXlXATZajpl(}ssu2?QnHk-^JvksEzB9DV*rZZc(dM!?RUMXOER zKOAp<+`iOPv)Fa($Ki{4g$wc{#g}pJ-Zmb~6-FM_!CV1%>4u}&Q z;e!*}=P%7V4o0U0_xw^{YOfWmXm=pPCg}PJYBb_w)eUCq0oX309X>uEGv%BPxp&0D zyuMX#k4oc*dOF@Oc1e5dN! zl38BceT3CW?Tzy0c`AHlk>iT(@advo-};J{F*MbG(b9X*bSRIoW^gvyyz>ZP2n0Lr z9BZecIo(cC6qK0eE!I7OaT=Iic2yOl&xJI*;raLxwUGfEmZ`sXOBW{u?XcbNO_7JN zVNMW^6}4l;=e@9UU3*4NLmI3p)Qsb29*r+1^}cZjqZv;Lg{2GndnW1f~9L@Z@JG!Ysi(+ zUrEkZ+J7a4Rw&p^eHc^l~oYH4d4qFxQ ziPMeE$_Cd2Em^tICsTdN42lbJzorM31lOT~%!3q~8~iYZra|+jd~SbLzN-H3`;~u( zUiKdKuXX=dy`U@T6p$?OvvvR8+Lf*E_p1Hs3sYw*#mk5M9TTj|-x*OzU`--B7@+J; zzd3XT6$V~bNbjHkyDQlG^xsPGgSCraX!broU>w}Q(#8^oR05Q6Agqf0+OX|MuJSvZ zmCu+>5NYL2{t_N5inNFfBGtnU{#gqB6kcGkxskm;aqX>AxvB^fRHqFRPr|ehAQ1o_ zfkdJJEP{Xl6cB(c0wF60*8=G$859rNf9?g+1Co4P$aENGg&A;V5m4s&Nf4*^AD_z+)yP%H+6!a!Z2pJiAK7!&Ltl=hbliNN4N2d|T1ao|GM$iN2M+iPS< z1Off642K2Z<~98g2s}tWxK4(~64uX)K;v=WjKu*+Ff+PV9}a~8k5KDmXzcp60SGh- ze8y|~0SGK={k#AQj|M-SYx*G(c=URk!P-@J%&h4L;0TEIJ^-IKVf|PnICQ;zpzqm% zyha}qfo6ZN*UG?!d@BP`t9-?v6Dd?Ooy~e`0743($WQrh18u0CGB`8A8H+^YFyP{` zWB`l8p@|qGiQtSQW6`ceRb>>>6$KzkC=!W`als)0EFSGb#uAA*jEgIo?wW)SI&mB>Q^NDPKgMn=a}m+xO`8>OuP diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_err.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_err.h deleted file mode 100644 index 1b4820dc3d..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_err.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_COMMON - @{ - @addtogroup nrf_error - @{ - @ingroup BLE_COMMON - @} - - @defgroup ble_err General error codes - @{ - - @brief General error code definitions for the BLE API. - - @ingroup BLE_COMMON -*/ -#ifndef NRF_BLE_ERR_H__ -#define NRF_BLE_ERR_H__ - -#include "nrf_error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* @defgroup BLE_ERRORS Error Codes - * @{ */ -#define BLE_ERROR_NOT_ENABLED (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */ -#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */ -#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */ -#define BLE_ERROR_INVALID_ADV_HANDLE (NRF_ERROR_STK_BASE_NUM+0x004) /**< Invalid advertising handle. */ -#define BLE_ERROR_INVALID_ROLE (NRF_ERROR_STK_BASE_NUM+0x005) /**< Invalid role. */ -#define BLE_ERROR_BLOCKED_BY_OTHER_LINKS (NRF_ERROR_STK_BASE_NUM+0x006) /**< The attempt to change link settings failed due to the scheduling of other links. */ -/** @} */ - - -/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges - * @brief Assignment of subranges for module specific error codes. - * @note For specific error codes, see ble_.h or ble_error_.h. - * @{ */ -#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ -#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ -#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ -#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif - - -/** - @} - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gap.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gap.h deleted file mode 100644 index 2bf80e2d10..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gap.h +++ /dev/null @@ -1,2023 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_GAP Generic Access Profile (GAP) - @{ - @brief Definitions and prototypes for the GAP interface. - */ - -#ifndef BLE_GAP_H__ -#define BLE_GAP_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations - * @{ */ - -/**@brief GAP API SVC numbers. - */ -enum BLE_GAP_SVCS -{ - SD_BLE_GAP_ADDR_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ - SD_BLE_GAP_ADDR_GET = BLE_GAP_SVC_BASE + 1, /**< Get own Bluetooth Address. */ - SD_BLE_GAP_WHITELIST_SET = BLE_GAP_SVC_BASE + 2, /**< Set active whitelist. */ - SD_BLE_GAP_DEVICE_IDENTITIES_SET = BLE_GAP_SVC_BASE + 3, /**< Set device identity list. */ - SD_BLE_GAP_PRIVACY_SET = BLE_GAP_SVC_BASE + 4, /**< Set Privacy settings*/ - SD_BLE_GAP_PRIVACY_GET = BLE_GAP_SVC_BASE + 5, /**< Get Privacy settings*/ - SD_BLE_GAP_ADV_SET_CONFIGURE = BLE_GAP_SVC_BASE + 6, /**< Configure an advertising set. */ - SD_BLE_GAP_ADV_START = BLE_GAP_SVC_BASE + 7, /**< Start Advertising. */ - SD_BLE_GAP_ADV_STOP = BLE_GAP_SVC_BASE + 8, /**< Stop Advertising. */ - SD_BLE_GAP_CONN_PARAM_UPDATE = BLE_GAP_SVC_BASE + 9, /**< Connection Parameter Update. */ - SD_BLE_GAP_DISCONNECT = BLE_GAP_SVC_BASE + 10, /**< Disconnect. */ - SD_BLE_GAP_TX_POWER_SET = BLE_GAP_SVC_BASE + 11, /**< Set TX Power. */ - SD_BLE_GAP_APPEARANCE_SET = BLE_GAP_SVC_BASE + 12, /**< Set Appearance. */ - SD_BLE_GAP_APPEARANCE_GET = BLE_GAP_SVC_BASE + 13, /**< Get Appearance. */ - SD_BLE_GAP_PPCP_SET = BLE_GAP_SVC_BASE + 14, /**< Set PPCP. */ - SD_BLE_GAP_PPCP_GET = BLE_GAP_SVC_BASE + 15, /**< Get PPCP. */ - SD_BLE_GAP_DEVICE_NAME_SET = BLE_GAP_SVC_BASE + 16, /**< Set Device Name. */ - SD_BLE_GAP_DEVICE_NAME_GET = BLE_GAP_SVC_BASE + 17, /**< Get Device Name. */ - SD_BLE_GAP_AUTHENTICATE = BLE_GAP_SVC_BASE + 18, /**< Initiate Pairing/Bonding. */ - SD_BLE_GAP_SEC_PARAMS_REPLY = BLE_GAP_SVC_BASE + 19, /**< Reply with Security Parameters. */ - SD_BLE_GAP_AUTH_KEY_REPLY = BLE_GAP_SVC_BASE + 20, /**< Reply with an authentication key. */ - SD_BLE_GAP_LESC_DHKEY_REPLY = BLE_GAP_SVC_BASE + 21, /**< Reply with an LE Secure Connections DHKey. */ - SD_BLE_GAP_KEYPRESS_NOTIFY = BLE_GAP_SVC_BASE + 22, /**< Notify of a keypress during an authentication procedure. */ - SD_BLE_GAP_LESC_OOB_DATA_GET = BLE_GAP_SVC_BASE + 23, /**< Get the local LE Secure Connections OOB data. */ - SD_BLE_GAP_LESC_OOB_DATA_SET = BLE_GAP_SVC_BASE + 24, /**< Set the remote LE Secure Connections OOB data. */ - SD_BLE_GAP_SEC_INFO_REPLY = BLE_GAP_SVC_BASE + 26, /**< Reply with Security Information. */ - SD_BLE_GAP_CONN_SEC_GET = BLE_GAP_SVC_BASE + 27, /**< Obtain connection security level. */ - SD_BLE_GAP_RSSI_START = BLE_GAP_SVC_BASE + 28, /**< Start reporting of changes in RSSI. */ - SD_BLE_GAP_RSSI_STOP = BLE_GAP_SVC_BASE + 29, /**< Stop reporting of changes in RSSI. */ - SD_BLE_GAP_RSSI_GET = BLE_GAP_SVC_BASE + 34, /**< Get the last RSSI sample. */ - SD_BLE_GAP_PHY_UPDATE = BLE_GAP_SVC_BASE + 35, /**< Initiate or respond to a PHY Update Procedure. */ -}; - -/**@brief GAP Event IDs. - * IDs that uniquely identify an event coming from the stack to the application. - */ -enum BLE_GAP_EVTS -{ - BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, - BLE_GAP_EVT_DISCONNECTED = BLE_GAP_EVT_BASE + 1, /**< Disconnected from peer. \n See @ref ble_gap_evt_disconnected_t. */ - BLE_GAP_EVT_CONN_PARAM_UPDATE = BLE_GAP_EVT_BASE + 2, /**< Connection Parameters updated. \n See @ref ble_gap_evt_conn_param_update_t. */ - BLE_GAP_EVT_SEC_PARAMS_REQUEST = BLE_GAP_EVT_BASE + 3, /**< Request to provide security parameters. \n Reply with @ref sd_ble_gap_sec_params_reply. \n See @ref ble_gap_evt_sec_params_request_t. */ - BLE_GAP_EVT_SEC_INFO_REQUEST = BLE_GAP_EVT_BASE + 4, /**< Request to provide security information. \n Reply with @ref sd_ble_gap_sec_info_reply. \n See @ref ble_gap_evt_sec_info_request_t. */ - BLE_GAP_EVT_PASSKEY_DISPLAY = BLE_GAP_EVT_BASE + 5, /**< Request to display a passkey to the user. \n In LESC Numeric Comparison, reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_passkey_display_t. */ - BLE_GAP_EVT_KEY_PRESSED = BLE_GAP_EVT_BASE + 6, /**< Notification of a keypress on the remote device.\n See @ref ble_gap_evt_key_pressed_t */ - BLE_GAP_EVT_AUTH_KEY_REQUEST = BLE_GAP_EVT_BASE + 7, /**< Request to provide an authentication key. \n Reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_auth_key_request_t. */ - BLE_GAP_EVT_LESC_DHKEY_REQUEST = BLE_GAP_EVT_BASE + 8, /**< Request to calculate an LE Secure Connections DHKey. \n Reply with @ref sd_ble_gap_lesc_dhkey_reply. \n See @ref ble_gap_evt_lesc_dhkey_request_t */ - BLE_GAP_EVT_AUTH_STATUS = BLE_GAP_EVT_BASE + 9, /**< Authentication procedure completed with status. \n See @ref ble_gap_evt_auth_status_t. */ - BLE_GAP_EVT_CONN_SEC_UPDATE = BLE_GAP_EVT_BASE + 10, /**< Connection security updated. \n See @ref ble_gap_evt_conn_sec_update_t. */ - BLE_GAP_EVT_TIMEOUT = BLE_GAP_EVT_BASE + 11, /**< Timeout expired. \n See @ref ble_gap_evt_timeout_t. */ - BLE_GAP_EVT_RSSI_CHANGED = BLE_GAP_EVT_BASE + 12, /**< RSSI report. \n See @ref ble_gap_evt_rssi_changed_t. */ - BLE_GAP_EVT_SEC_REQUEST = BLE_GAP_EVT_BASE + 14, /**< Security Request. \n See @ref ble_gap_evt_sec_request_t. */ - BLE_GAP_EVT_SCAN_REQ_REPORT = BLE_GAP_EVT_BASE + 16, /**< Scan request report. \n See @ref ble_gap_evt_scan_req_report_t. */ - BLE_GAP_EVT_PHY_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 17, /**< PHY Update Request. \n Reply with @ref sd_ble_gap_phy_update. \n See @ref ble_gap_evt_phy_update_request_t. */ - BLE_GAP_EVT_PHY_UPDATE = BLE_GAP_EVT_BASE + 18, /**< PHY Update Procedure is complete. \n See @ref ble_gap_evt_phy_update_t. */ - BLE_GAP_EVT_ADV_SET_TERMINATED = BLE_GAP_EVT_BASE + 22, /**< Advertising set terminated. \n See @ref ble_gap_evt_adv_set_terminated_t. */ -}; - -/**@brief GAP Option IDs. - * IDs that uniquely identify a GAP option. - */ -enum BLE_GAP_OPTS -{ - BLE_GAP_OPT_CH_MAP = BLE_GAP_OPT_BASE, /**< Channel Map. @ref ble_gap_opt_ch_map_t */ - BLE_GAP_OPT_LOCAL_CONN_LATENCY = BLE_GAP_OPT_BASE + 1, /**< Local connection latency. @ref ble_gap_opt_local_conn_latency_t */ - BLE_GAP_OPT_PASSKEY = BLE_GAP_OPT_BASE + 2, /**< Set passkey. @ref ble_gap_opt_passkey_t */ - BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT = BLE_GAP_OPT_BASE + 4, /**< Set Authenticated payload timeout. @ref ble_gap_opt_auth_payload_timeout_t */ - BLE_GAP_OPT_SLAVE_LATENCY_DISABLE = BLE_GAP_OPT_BASE + 5, /**< Disable slave latency. @ref ble_gap_opt_slave_latency_disable_t */ -}; - -/**@brief GAP Configuration IDs. - * - * IDs that uniquely identify a GAP configuration. - */ -enum BLE_GAP_CFGS -{ - BLE_GAP_CFG_ROLE_COUNT = BLE_GAP_CFG_BASE, /**< Role count configuration. */ - BLE_GAP_CFG_DEVICE_NAME = BLE_GAP_CFG_BASE + 1, /**< Device name configuration. */ -}; - -/**@brief GAP TX Power roles. - */ -enum BLE_GAP_TX_POWER_ROLES -{ - BLE_GAP_TX_POWER_ROLE_ADV = 1, /**< Advertiser role. */ - BLE_GAP_TX_POWER_ROLE_CONN = 3, /**< Connection role. */ -}; - -/** @} */ - -/**@addtogroup BLE_GAP_DEFINES Defines - * @{ */ - -/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP - * @{ */ -#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ -#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ -#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ -#define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003) /**< Attempt to modify the whitelist while already in use by another operation. */ -#define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004) /**< Attempt to modify the device identity list while already in use by another operation. */ -#define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005) /**< The device identity list contains entries with duplicate identity addresses. */ -/**@} */ - - -/**@defgroup BLE_GAP_ROLES GAP Roles - * @{ */ -#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ -#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ -/**@} */ - - -/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources - * @{ */ -#define BLE_GAP_TIMEOUT_SRC_CONN 0x02 /**< Connection timeout. */ -#define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x03 /**< Authenticated payload timeout. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types - * @{ */ -#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public (identity) address.*/ -#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random static (identity) address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Random private resolvable address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Random private non-resolvable address. */ -/**@} */ - - -/**@brief The default interval in seconds at which a private address is refreshed. */ -#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900) /* 15 minutes. */ -/**@brief The maximum interval in seconds at which a private address can be refreshed. */ -#define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */ - - -/** @brief BLE address length. */ -#define BLE_GAP_ADDR_LEN (6) - -/**@defgroup BLE_GAP_PRIVACY_MODES Privacy modes - * @{ */ -#define BLE_GAP_PRIVACY_MODE_OFF 0x00 /**< Device will send and accept its identity address for its own address. */ -#define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01 /**< Device will send and accept only private addresses for its own address. */ -#define BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY 0x02 /**< Device will send and accept only private addresses for its own address, - and will not accept a peer using identity address as sender address when - the peer IRK is exchanged, non-zero and added to the identity list. */ -/**@} */ - -/** @brief Invalid power level. */ -#define BLE_GAP_POWER_LEVEL_INVALID 127 - -/** @brief Advertising set handle not set. */ -#define BLE_GAP_ADV_SET_HANDLE_NOT_SET (0xFF) - -/** @brief The default number of advertising sets. */ -#define BLE_GAP_ADV_SET_COUNT_DEFAULT (1) - -/** @brief The maximum number of advertising sets supported by this SoftDevice. */ -#define BLE_GAP_ADV_SET_COUNT_MAX (1) - -/**@defgroup BLE_GAP_ADV_SET_DATA_SIZES Advertising data sizes. - * @{ */ -#define BLE_GAP_ADV_SET_DATA_SIZE_MAX (31) /**< Maximum data length for an advertising set. */ -/**@}. */ - -/** @brief Set ID not available in advertising report. */ -#define BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE 0xFF - -/**@defgroup BLE_GAP_EVT_ADV_SET_TERMINATED_REASON GAP Advertising Set Terminated reasons - * @{ */ -#define BLE_GAP_EVT_ADV_SET_TERMINATED_REASON_TIMEOUT 0x01 /**< Timeout value reached. */ -#define BLE_GAP_EVT_ADV_SET_TERMINATED_REASON_LIMIT_REACHED 0x02 /**< @ref ble_gap_adv_params_t::max_adv_evts was reached. */ -/**@} */ - -/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format - * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm - * @{ */ -#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ -#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ -#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ -#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ -#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */ -#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ -#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ -#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ -#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */ -#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */ -#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */ -#define BLE_GAP_AD_TYPE_LESC_CONFIRMATION_VALUE 0x22 /**< LE Secure Connections Confirmation Value */ -#define BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE 0x23 /**< LE Secure Connections Random Value */ -#define BLE_GAP_AD_TYPE_URI 0x24 /**< URI */ -#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */ -#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags - * @{ */ -#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min - * @{ */ -#define BLE_GAP_ADV_INTERVAL_MIN 0x000020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ -#define BLE_GAP_ADV_INTERVAL_MAX 0x004000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. - @note Support for values above @ref BLE_GAP_ADV_INTERVAL_MAX - is experimental. Values above 0xFFFFFF, i.e 10,485.759375 s - are not supported. */ - /**@} */ - - - -/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types - * - * Advertising types defined in Bluetooth Core Specification v5.0, Vol 6, Part B, Section 4.4.2. - * - * The maximum advertising data length is defined by @ref BLE_GAP_ADV_SET_DATA_SIZE_MAX. - * Note that some of the advertising types do not support advertising data. Non-scannable types do not support - * scan response data. - * - * @note Extended advertising is not supported in this SoftDevice. - * @{ */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED 0x01 /**< Connectable and scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE 0x02 /**< Connectable non-scannable directed advertising - events. Advertising interval is less that 3.75 ms. - Use this type for fast reconnections. - @note Advertising data is not supported. */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED 0x03 /**< Connectable non-scannable directed advertising - events. - @note Advertising data is not supported. */ -#define BLE_GAP_ADV_TYPE_NONCONNECTABLE_SCANNABLE_UNDIRECTED 0x04 /**< Non-connectable scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED 0x05 /**< Non-connectable non-scannable undirected - advertising events. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies - * @{ */ -#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ -#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values in 10 ms units - * @{ */ -#define BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX (128) /**< Maximum high duty advertising time in 10 ms units. Corresponds to 1.28 s. */ -#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (18000) /**< Maximum advertising time in 10 ms units corresponding to TGAP(lim_adv_timeout) = 180 s in limited discoverable mode. */ -#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. - For high duty cycle advertising, this corresponds to @ref BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX. */ -/**@} */ - - -/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes - * @{ */ -#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ -#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ -#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ -/**@} */ - - -/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities - * @{ */ -#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ -#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ -#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ -/**@} */ - - -/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types - * @{ */ -#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ -#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ -#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ -/**@} */ - - -/**@defgroup BLE_GAP_KP_NOT_TYPES GAP Keypress Notification Types - * @{ */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00 /**< Passkey entry started. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01 /**< Passkey digit entered. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02 /**< Passkey digit erased. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03 /**< Passkey cleared. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04 /**< Passkey entry completed. */ -/**@} */ - - -/**@defgroup BLE_GAP_SEC_STATUS GAP Security status - * @{ */ -#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Procedure completed with success. */ -#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ -#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03 /**< Reserved for Future Use range #1 begin. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80 /**< Reserved for Future Use range #1 end. */ -#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user canceled or other). */ -#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ -#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ -#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ -#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ -#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ -#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ -#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ -#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ -#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ -#define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B /**< DHKey check failure. */ -#define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C /**< Numeric Comparison failure. */ -#define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D /**< BR/EDR pairing in progress. */ -#define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E /**< BR/EDR Link Key cannot be used for LE keys. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F /**< Reserved for Future Use range #2 begin. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF /**< Reserved for Future Use range #2 end. */ -/**@} */ - - -/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources - * @{ */ -#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ -#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ -/**@} */ - - -/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits - * @{ */ -#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connection interval specified in connect parameters. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest minimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connection interval specified in connect parameters. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3 /**< Highest slave latency permitted, in connection events. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ -/**@} */ - - -/**@defgroup BLE_GAP_DEVNAME GAP device name defines. - * @{ */ -#define BLE_GAP_DEVNAME_DEFAULT "nRF5x" /**< Default device name value. */ -#define BLE_GAP_DEVNAME_DEFAULT_LEN 31 /**< Default number of octets in device name. */ -#define BLE_GAP_DEVNAME_MAX_LEN 248 /**< Maximum number of octets in device name. */ -/**@} */ - - -/**@brief Disable RSSI events for connections */ -#define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF - -/**@defgroup BLE_GAP_PHYS GAP PHYs - * @{ */ -#define BLE_GAP_PHY_AUTO 0x00 /**< Automatic PHY selection. Refer @ref sd_ble_gap_phy_update for more information.*/ -#define BLE_GAP_PHY_1MBPS 0x01 /**< 1 Mbps PHY. */ -#define BLE_GAP_PHY_2MBPS 0x02 /**< 2 Mbps PHY. */ -#define BLE_GAP_PHY_CODED 0x04 /**< Coded PHY. */ -#define BLE_GAP_PHY_NOT_SET 0xFF /**< PHY is not configured. */ - -/**@brief Supported PHYs in connections and for advertising. */ -#define BLE_GAP_PHYS_SUPPORTED (BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS) /**< All PHYs except @ref BLE_GAP_PHY_CODED are supported. */ - -/**@} */ - -/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters - * - * See @ref ble_gap_conn_sec_mode_t. - * @{ */ -/**@brief Set sec_mode pointed to by ptr to have no access rights.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0) -/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0) -/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0) -/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0) -/**@brief Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while(0) -/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0) -/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0) -/**@} */ - - -/**@brief GAP Security Random Number Length. */ -#define BLE_GAP_SEC_RAND_LEN 8 - - -/**@brief GAP Security Key Length. */ -#define BLE_GAP_SEC_KEY_LEN 16 - - -/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key Length. */ -#define BLE_GAP_LESC_P256_PK_LEN 64 - - -/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman DHKey Length. */ -#define BLE_GAP_LESC_DHKEY_LEN 32 - - -/**@brief GAP Passkey Length. */ -#define BLE_GAP_PASSKEY_LEN 6 - - -/**@brief Maximum amount of addresses in the whitelist. */ -#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) - - -/**@brief Maximum amount of identities in the device identities list. */ -#define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8) - - -/**@brief Default connection count for a configuration. */ -#define BLE_GAP_CONN_COUNT_DEFAULT (1) - - -/**@defgroup BLE_GAP_EVENT_LENGTH GAP event length defines. - * @{ */ -#define BLE_GAP_EVENT_LENGTH_MIN (2) /**< Minimum event length, in 1.25 ms units. */ -#define BLE_GAP_EVENT_LENGTH_DEFAULT (3) /**< Default event length, in 1.25 ms units. */ -/**@} */ - - -/**@defgroup BLE_GAP_ROLE_COUNT GAP concurrent connection count defines. - * @{ */ -#define BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT (1) /**< Default maximum number of connections concurrently acting as peripherals. */ -#define BLE_GAP_ROLE_COUNT_COMBINED_MAX (20) /**< Maximum supported number of concurrent connections in the peripheral roles. */ - -/**@} */ - - -/**@defgroup BLE_GAP_AUTH_PAYLOAD_TIMEOUT Authenticated payload timeout defines. - * @{ */ -#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX (48000) /**< Maximum authenticated payload timeout in 10 ms units, i.e. 8 minutes. */ -#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MIN (1) /**< Minimum authenticated payload timeout in 10 ms units, i.e. 10 ms. */ -/**@} */ - -/**@defgroup GAP_SEC_MODES GAP Security Modes - * @{ */ -#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ -/**@} */ - -/** @} */ - - -/**@addtogroup BLE_GAP_STRUCTURES Structures - * @{ */ - -/**@brief Advertising event properties. */ -typedef struct -{ - uint8_t type; /**< Advertising type. See @ref BLE_GAP_ADV_TYPES. */ - uint8_t anonymous : 1; /**< This feature is not supported on this SoftDevice. */ - uint8_t include_tx_power : 1; /**< This feature is not supported on this SoftDevice. */ -} ble_gap_adv_properties_t; - - - -/**@brief Bluetooth Low Energy address. */ -typedef struct -{ - uint8_t addr_id_peer : 1; /**< Only valid for peer addresses. - Reference to peer in device identities list (as set with @ref sd_ble_gap_device_identities_set) when peer is using privacy. */ - uint8_t addr_type : 7; /**< See @ref BLE_GAP_ADDR_TYPES. */ - uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. */ -} ble_gap_addr_t; - - -/**@brief GAP connection parameters. - * - * @note When ble_conn_params_t is received in an event, both min_conn_interval and - * max_conn_interval will be equal to the connection interval set by the central. - * - * @note If both conn_sup_timeout and max_conn_interval are specified, then the following constraint applies: - * conn_sup_timeout * 4 > (1 + slave_latency) * max_conn_interval - * that corresponds to the following Bluetooth Spec requirement: - * The Supervision_Timeout in milliseconds shall be larger than - * (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. - */ -typedef struct -{ - uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ -} ble_gap_conn_params_t; - - -/**@brief GAP connection security modes. - * - * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n - * Security Mode 1 Level 1: No security is needed (aka open link).\n - * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n - * Security Mode 1 Level 3: MITM protected encrypted link required.\n - * Security Mode 1 Level 4: LESC MITM protected encrypted link using a 128-bit strength encryption key required.\n - * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n - * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n - */ -typedef struct -{ - uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ - uint8_t lv : 4; /**< Level (1, 2, 3 or 4), 0 for no permissions at all. */ - -} ble_gap_conn_sec_mode_t; - - -/**@brief GAP connection security status.*/ -typedef struct -{ - ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ - uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */ -} ble_gap_conn_sec_t; - -/**@brief Identity Resolving Key. */ -typedef struct -{ - uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ -} ble_gap_irk_t; - - -/**@brief Channel mask (40 bits). - * Every channel is represented with a bit positioned as per channel index defined in Bluetooth Core Specification v5.0, - * Vol 6, Part B, Section 1.4.1. The LSB contained in array element 0 represents channel index 0, and bit 39 represents - * channel index 39. If a bit is set to 1, the channel is not used. - */ -typedef uint8_t ble_gap_ch_mask_t[5]; - - -/**@brief GAP advertising parameters. */ -typedef struct -{ - ble_gap_adv_properties_t properties; /**< The properties of the advertising events. */ - ble_gap_addr_t const *p_peer_addr; /**< Address of a known peer. - - When privacy is enabled and the local device uses - @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE addresses, - the device identity list is searched for a matching entry. If - the local IRK for that device identity is set, the local IRK - for that device will be used to generate the advertiser address - field in the advertising packet. - - If @ref ble_gap_adv_properties_t::type is directed, this must be - set to the targeted scanner or initiator. If the peer address is - in the device identity list, the peer IRK for that device will be - used to generate @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE - target addresses used in the advertising event PDUs. */ - uint32_t interval; /**< Advertising interval in 625 us units. @sa BLE_GAP_ADV_INTERVALS. - @note If @ref ble_gap_adv_properties_t::type is set to - @ref BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE - advertising, this parameter is ignored. */ - uint16_t duration; /**< Advertising duration in 10 ms units. When timeout is reached, - an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. - @sa BLE_GAP_ADV_TIMEOUT_VALUES. */ - uint8_t max_adv_evts; /**< Maximum advertising events that shall be sent prior to disabling - advertising. Setting the value to 0 disables the limitation. When - the count of advertising events specified by this parameter - (if not 0) is reached, advertising will be automatically stopped - and an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised - @note If @ref ble_gap_adv_properties_t::type is set to - @ref BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE, - this parameter is ignored. - @note Setting max_adv_evts to a values not equal to 0 is only supported - as an experimental feature in this SoftDevice. */ - ble_gap_ch_mask_t channel_mask; /**< Channel mask for primary channels. - At least one of the primary channels, that is channel index 37-39, must be used. */ - uint8_t filter_policy; /**< Filter Policy. @sa BLE_GAP_ADV_FILTER_POLICIES. */ - uint8_t primary_phy; /**< Indicates the PHY on which the primary advertising channel packets - are transmitted. If set to @ref BLE_GAP_PHY_AUTO, @ref BLE_GAP_PHY_1MBPS - will be used. - The only supported value by this SoftDevice is @ref BLE_GAP_PHY_1MBPS. */ - uint8_t secondary_phy; /**< This field is ignored on this SoftDevice. */ - uint8_t set_id:4; /**< This field is ignored on this SoftDevice. */ - uint8_t scan_req_notification:1; /**< Enable scan request notifications for this advertising set. When a - scan request is received and the scanner address is allowed - by the filter policy, @ref BLE_GAP_EVT_SCAN_REQ_REPORT is raised. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is a non-scannable - advertising type. */ -} ble_gap_adv_params_t; - - -/**@brief GAP advertising data buffers. - * - * The application must provide the buffers for advertisement. The memory shall reside in application RAM, and - * shall never be modified while advertising. The data shall be kept alive until either: - * - @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. - * - @ref BLE_GAP_EVT_CONNECTED is raised with @ref ble_gap_evt_connected_t::adv_handle set to the corresponding - * advertising handle. - * - Advertising is stopped. - * - Advertising data is changed. - * To update advertising data while advertising, provide new buffers to @ref sd_ble_gap_adv_set_configure. */ -typedef struct -{ - ble_data_t adv_data; /**< Advertising data. - @note - Advertising data can only be specified for a @ref ble_gap_adv_properties_t::type - that is allowed to contain advertising data. */ - ble_data_t scan_rsp_data; /**< Scan response data. - @note - Scan response data can only be specified for a @ref ble_gap_adv_properties_t::type - that is scannable. */ -} ble_gap_adv_data_t; - - -/**@brief Privacy. - * - * The privacy feature provides a way for the device to avoid being tracked over a period of time. - * The privacy feature, when enabled, hides the local device identity and replaces it with a private address - * that is automatically refreshed at a specified interval. - * - * If a device still wants to be recognized by other peers, it needs to share it's Identity Resolving Key (IRK). - * With this key, a device can generate a random private address that can only be recognized by peers in possession of that key, - * and devices can establish connections without revealing their real identities. - * - * Both network privacy (@ref BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY) and device privacy (@ref BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY) - * are supported. - * - * @note If the device IRK is updated, the new IRK becomes the one to be distributed in all - * bonding procedures performed after @ref sd_ble_gap_privacy_set returns. - * The IRK distributed during bonding procedure is the device IRK that is active when @ref sd_ble_gap_sec_params_reply is called. - */ -typedef struct -{ - uint8_t privacy_mode; /**< Privacy mode, see @ref BLE_GAP_PRIVACY_MODES. Default is @ref BLE_GAP_PRIVACY_MODE_OFF. */ - uint8_t private_addr_type; /**< The private address type must be either @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. */ - uint16_t private_addr_cycle_s; /**< Private address cycle interval in seconds. Providing an address cycle value of 0 will use the default value defined by @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S. */ - ble_gap_irk_t *p_device_irk; /**< When used as input, pointer to IRK structure that will be used as the default IRK. If NULL, the device default IRK will be used. - When used as output, pointer to IRK structure where the current default IRK will be written to. If NULL, this argument is ignored. - By default, the default IRK is used to generate random private resolvable addresses for the local device unless instructed otherwise. */ -} ble_gap_privacy_params_t; - - -/**@brief PHY preferences for TX and RX - * @note tx_phys and rx_phys are bit fields. Multiple bits can be set in them to indicate multiple preferred PHYs for each direction. - * @code - * p_gap_phys->tx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; - * p_gap_phys->rx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; - * @endcode - * - */ -typedef struct -{ - uint8_t tx_phys; /**< Preferred transmit PHYs, see @ref BLE_GAP_PHYS. */ - uint8_t rx_phys; /**< Preferred receive PHYs, see @ref BLE_GAP_PHYS. */ -} ble_gap_phys_t; - -/** @brief Keys that can be exchanged during a bonding procedure. */ -typedef struct -{ - uint8_t enc : 1; /**< Long Term Key and Master Identification. */ - uint8_t id : 1; /**< Identity Resolving Key and Identity Address Information. */ - uint8_t sign : 1; /**< Connection Signature Resolving Key. */ - uint8_t link : 1; /**< Derive the Link Key from the LTK. */ -} ble_gap_sec_kdist_t; - - -/**@brief GAP security parameters. */ -typedef struct -{ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Enable Man In The Middle protection. */ - uint8_t lesc : 1; /**< Enable LE Secure Connection pairing. */ - uint8_t keypress : 1; /**< Enable generation of keypress notifications. */ - uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ - uint8_t oob : 1; /**< The OOB data flag. - - In LE legacy pairing, this flag is set if a device has out of band authentication data. - The OOB method is used if both of the devices have out of band authentication data. - - In LE Secure Connections pairing, this flag is set if a device has the peer device's out of band authentication data. - The OOB method is used if at least one device has the peer device's OOB data available. */ - uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. If 0 then not applicable in this instance. */ - uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ - ble_gap_sec_kdist_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ - ble_gap_sec_kdist_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ -} ble_gap_sec_params_t; - - -/**@brief GAP Encryption Information. */ -typedef struct -{ - uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ - uint8_t lesc : 1; /**< Key generated using LE Secure Connections. */ - uint8_t auth : 1; /**< Authenticated Key. */ - uint8_t ltk_len : 6; /**< LTK length in octets. */ -} ble_gap_enc_info_t; - - -/**@brief GAP Master Identification. */ -typedef struct -{ - uint16_t ediv; /**< Encrypted Diversifier. */ - uint8_t rand[BLE_GAP_SEC_RAND_LEN]; /**< Random Number. */ -} ble_gap_master_id_t; - - -/**@brief GAP Signing Information. */ -typedef struct -{ - uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /**< Connection Signature Resolving Key. */ -} ble_gap_sign_info_t; - - -/**@brief GAP LE Secure Connections P-256 Public Key. */ -typedef struct -{ - uint8_t pk[BLE_GAP_LESC_P256_PK_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key. Stored in the standard SMP protocol format: {X,Y} both in little-endian. */ -} ble_gap_lesc_p256_pk_t; - - -/**@brief GAP LE Secure Connections DHKey. */ -typedef struct -{ - uint8_t key[BLE_GAP_LESC_DHKEY_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman Key. Stored in little-endian. */ -} ble_gap_lesc_dhkey_t; - - -/**@brief GAP LE Secure Connections OOB data. */ -typedef struct -{ - ble_gap_addr_t addr; /**< Bluetooth address of the device. */ - uint8_t r[BLE_GAP_SEC_KEY_LEN]; /**< Random Number. */ - uint8_t c[BLE_GAP_SEC_KEY_LEN]; /**< Confirm Value. */ -} ble_gap_lesc_oob_data_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONNECTED. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 - and the address is the device's identity address. */ - uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ - uint8_t adv_handle; /**< Advertising handle in which advertising has ended. - This variable is only set if role is set to @ref BLE_GAP_ROLE_PERIPH. */ - ble_gap_adv_data_t adv_data; /**< Advertising buffers corresponding to the terminated - advertising set. The advertising buffers provided in - @ref sd_ble_gap_adv_set_configure are now released. - This variable is only set if role is set to @ref BLE_GAP_ROLE_PERIPH. */ -} ble_gap_evt_connected_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_DISCONNECTED. */ -typedef struct -{ - uint8_t reason; /**< HCI error code, see @ref BLE_HCI_STATUS_CODES. */ -} ble_gap_evt_disconnected_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE. */ -typedef struct -{ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_conn_param_update_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_PHY_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_phys_t peer_preferred_phys; /**< The PHYs the peer prefers to use. */ -} ble_gap_evt_phy_update_request_t; - -/**@brief Event Structure for @ref BLE_GAP_EVT_PHY_UPDATE. */ -typedef struct -{ - uint8_t status; /**< Status of the procedure, see @ref BLE_HCI_STATUS_CODES.*/ - uint8_t tx_phy; /**< TX PHY for this connection, see @ref BLE_GAP_PHYS. */ - uint8_t rx_phy; /**< RX PHY for this connection, see @ref BLE_GAP_PHYS. */ -} ble_gap_evt_phy_update_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. */ -typedef struct -{ - ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ -} ble_gap_evt_sec_params_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_INFO_REQUEST. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ - ble_gap_master_id_t master_id; /**< Master Identification for LTK lookup. */ - uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ - uint8_t id_info : 1; /**< If 1, Identity Information required. */ - uint8_t sign_info : 1; /**< If 1, Signing Information required. */ -} ble_gap_evt_sec_info_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_PASSKEY_DISPLAY. */ -typedef struct -{ - uint8_t passkey[BLE_GAP_PASSKEY_LEN]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ - uint8_t match_request : 1; /**< If 1 requires the application to report the match using @ref sd_ble_gap_auth_key_reply - with either @ref BLE_GAP_AUTH_KEY_TYPE_NONE if there is no match or - @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY if there is a match. */ -} ble_gap_evt_passkey_display_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_KEY_PRESSED. */ -typedef struct -{ - uint8_t kp_not; /**< Keypress notification type, see @ref BLE_GAP_KP_NOT_TYPES. */ -} ble_gap_evt_key_pressed_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_KEY_REQUEST. */ -typedef struct -{ - uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ -} ble_gap_evt_auth_key_request_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST. */ -typedef struct -{ - ble_gap_lesc_p256_pk_t *p_pk_peer; /**< LE Secure Connections remote P-256 Public Key. This will point to the application-supplied memory - inside the keyset during the call to @ref sd_ble_gap_sec_params_reply. */ - uint8_t oobd_req :1; /**< LESC OOB data required. A call to @ref sd_ble_gap_lesc_oob_data_set is required to complete the procedure. */ -} ble_gap_evt_lesc_dhkey_request_t; - - -/**@brief Security levels supported. - * @note See Bluetooth Specification Version 4.2 Volume 3, Part C, Chapter 10, Section 10.2.1. -*/ -typedef struct -{ - uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ - uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ - uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ - uint8_t lv4 : 1; /**< If 1: Level 4 is supported. */ -} ble_gap_sec_levels_t; - - -/**@brief Encryption Key. */ -typedef struct -{ - ble_gap_enc_info_t enc_info; /**< Encryption Information. */ - ble_gap_master_id_t master_id; /**< Master Identification. */ -} ble_gap_enc_key_t; - - -/**@brief Identity Key. */ -typedef struct -{ - ble_gap_irk_t id_info; /**< Identity Resolving Key. */ - ble_gap_addr_t id_addr_info; /**< Identity Address. */ -} ble_gap_id_key_t; - - -/**@brief Security Keys. */ -typedef struct -{ - ble_gap_enc_key_t *p_enc_key; /**< Encryption Key, or NULL. */ - ble_gap_id_key_t *p_id_key; /**< Identity Key, or NULL. */ - ble_gap_sign_info_t *p_sign_key; /**< Signing Key, or NULL. */ - ble_gap_lesc_p256_pk_t *p_pk; /**< LE Secure Connections P-256 Public Key. When in debug mode the application must use the value defined - in the Core Bluetooth Specification v4.2 Vol.3, Part H, Section 2.3.5.6.1 */ -} ble_gap_sec_keys_t; - - -/**@brief Security key set for both local and peer keys. */ -typedef struct -{ - ble_gap_sec_keys_t keys_own; /**< Keys distributed by the local device. For LE Secure Connections the encryption key will be generated locally and will always be stored if bonding. */ - ble_gap_sec_keys_t keys_peer; /**< Keys distributed by the remote device. For LE Secure Connections, p_enc_key must always be NULL. */ -} ble_gap_sec_keyset_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_STATUS. */ -typedef struct -{ - uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ - uint8_t error_src : 2; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ - uint8_t bonded : 1; /**< Procedure resulted in a bond. */ - uint8_t lesc : 1; /**< Procedure resulted in a LE Secure Connection. */ - ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ - ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ - ble_gap_sec_kdist_t kdist_own; /**< Bitmap stating which keys were exchanged (distributed) by the local device. If bonding with LE Secure Connections, the enc bit will be always set. */ - ble_gap_sec_kdist_t kdist_peer; /**< Bitmap stating which keys were exchanged (distributed) by the remote device. If bonding with LE Secure Connections, the enc bit will never be set. */ -} ble_gap_evt_auth_status_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_SEC_UPDATE. */ -typedef struct -{ - ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ -} ble_gap_evt_conn_sec_update_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ -} ble_gap_evt_timeout_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_RSSI_CHANGED. */ -typedef struct -{ - int8_t rssi; /**< Received Signal Strength Indication in dBm. */ - uint8_t ch_index; /**< Data Channel Index on which the Signal Strength is measured (0-36). */ -} ble_gap_evt_rssi_changed_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_ADV_SET_TERMINATED */ -typedef struct -{ - uint8_t reason; /**< Reason for why the advertising set terminated. See - @ref BLE_GAP_EVT_ADV_SET_TERMINATED_REASON. */ - uint8_t adv_handle; /**< Advertising handle in which advertising has ended. */ - uint8_t num_completed_adv_events; /**< If @ref ble_gap_adv_params_t::max_adv_evts was not set to 0, - this field indicates the number of completed advertising events. */ - ble_gap_adv_data_t adv_data; /**< Advertising buffers corresponding to the terminated - advertising set. The advertising buffers provided in - @ref sd_ble_gap_adv_set_configure are now released. */ -} ble_gap_evt_adv_set_terminated_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_REQUEST. */ -typedef struct -{ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Man In The Middle protection requested. */ - uint8_t lesc : 1; /**< LE Secure Connections requested. */ - uint8_t keypress : 1; /**< Generation of keypress notifications requested. */ -} ble_gap_evt_sec_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SCAN_REQ_REPORT. */ -typedef struct -{ - uint8_t adv_handle; /**< Advertising handle for the advertising set which received the Scan Request */ - int8_t rssi; /**< Received Signal Strength Indication in dBm. */ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 - and the address is the device's identity address. */ -} ble_gap_evt_scan_req_report_t; - - - -/**@brief GAP event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - union /**< union alternative identified by evt_id in enclosing struct. */ - { - ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ - ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ - ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ - ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ - ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ - ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ - ble_gap_evt_key_pressed_t key_pressed; /**< Key Pressed Event Parameters. */ - ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ - ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request; /**< LE Secure Connections DHKey calculation request. */ - ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ - ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ - ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event Parameters. */ - ble_gap_evt_adv_set_terminated_t adv_set_terminated; /**< Advertising Set Terminated Event Parameters. */ - ble_gap_evt_sec_request_t sec_request; /**< Security Request Event Parameters. */ - ble_gap_evt_scan_req_report_t scan_req_report; /**< Scan Request Report Parameters. */ - ble_gap_evt_phy_update_request_t phy_update_request; /**< PHY Update Request Event Parameters. */ - ble_gap_evt_phy_update_t phy_update; /**< PHY Update Parameters. */ - } params; /**< Event Parameters. */ -} ble_gap_evt_t; - - -/** - * @brief BLE GAP connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_CONN_COUNT The connection count for the connection configurations is zero. - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - The sum of conn_count for all connection configurations combined exceeds UINT8_MAX. - * - The event length is smaller than @ref BLE_GAP_EVENT_LENGTH_MIN. - */ -typedef struct -{ - uint8_t conn_count; /**< The number of concurrent connections the application can create with this configuration. - The default and minimum value is @ref BLE_GAP_CONN_COUNT_DEFAULT. */ - uint16_t event_length; /**< The time set aside for this connection on every connection interval in 1.25 ms units. - The default value is @ref BLE_GAP_EVENT_LENGTH_DEFAULT, the minimum value is @ref BLE_GAP_EVENT_LENGTH_MIN. - The event length and the connection interval are the primary parameters - for setting the throughput of a connection. - See the SoftDevice Specification for details on throughput. */ -} ble_gap_conn_cfg_t; - - -/** - * @brief Configuration of maximum concurrent connections in the peripheral role, set with - * @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_CONN_COUNT The periph_role_count is too large. The maximum - * supported sum of concurrent connections is - * @ref BLE_GAP_ROLE_COUNT_COMBINED_MAX. - * @retval ::NRF_ERROR_RESOURCES The adv_set_count is too large. The maximum - * supported advertising handles is - * @ref BLE_GAP_ADV_SET_COUNT_MAX. - */ -typedef struct -{ - uint8_t adv_set_count; /**< Maximum number of advertising sets. Default value is @ref BLE_GAP_ADV_SET_COUNT_DEFAULT. */ - uint8_t periph_role_count; /**< Maximum number of connections concurrently acting as a peripheral. Default value is @ref BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT. */ -} ble_gap_cfg_role_count_t; - - -/** - * @brief Device name and its properties, set with @ref sd_ble_cfg_set. - * - * @note If the device name is not configured, the default device name will be - * @ref BLE_GAP_DEVNAME_DEFAULT, the maximum device name length will be - * @ref BLE_GAP_DEVNAME_DEFAULT_LEN, vloc will be set to @ref BLE_GATTS_VLOC_STACK and the device name - * will have no write access. - * - * @note If @ref max_len is more than @ref BLE_GAP_DEVNAME_DEFAULT_LEN and vloc is set to @ref BLE_GATTS_VLOC_STACK, - * the attribute table size must be increased to have room for the longer device name (see - * @ref sd_ble_cfg_set and @ref ble_gatts_cfg_attr_tab_size_t). - * - * @note If vloc is @ref BLE_GATTS_VLOC_STACK : - * - p_value must point to non-volatile memory (flash) or be NULL. - * - If p_value is NULL, the device name will initially be empty. - * - * @note If vloc is @ref BLE_GATTS_VLOC_USER : - * - p_value cannot be NULL. - * - If the device name is writable, p_value must point to volatile memory (RAM). - * - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - Invalid device name location (vloc). - * - Invalid device name security mode. - * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: - * - The device name length is invalid (must be between 0 and @ref BLE_GAP_DEVNAME_MAX_LEN). - * - The device name length is too long for the given Attribute Table. - * @retval ::NRF_ERROR_NOT_SUPPORTED Device name security mode is not supported. - */ -typedef struct -{ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vloc:2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t *p_value; /**< Pointer to where the value (device name) is stored or will be stored. */ - uint16_t current_len; /**< Current length in bytes of the memory pointed to by p_value.*/ - uint16_t max_len; /**< Maximum length in bytes of the memory pointed to by p_value.*/ -} ble_gap_cfg_device_name_t; - - -/**@brief Configuration structure for GAP configurations. */ -typedef union -{ - ble_gap_cfg_role_count_t role_count_cfg; /**< Role count configuration, cfg_id is @ref BLE_GAP_CFG_ROLE_COUNT. */ - ble_gap_cfg_device_name_t device_name_cfg; /**< Device name configuration, cfg_id is @ref BLE_GAP_CFG_DEVICE_NAME. */ -} ble_gap_cfg_t; - - -/**@brief Channel Map option. - * - * @details Used with @ref sd_ble_opt_get to get the current channel map - * or @ref sd_ble_opt_set to set a new channel map. When setting the - * channel map, it applies to all current and future connections. When getting the - * current channel map, it applies to a single connection and the connection handle - * must be supplied. - * - * @note Setting the channel map may take some time, depending on connection parameters. - * The time taken may be different for each connection and the get operation will - * return the previous channel map until the new one has taken effect. - * - * @note After setting the channel map, by spec it can not be set again until at least 1 s has passed. - * See Bluetooth Specification Version 4.1 Volume 2, Part E, Section 7.3.46. - * - * @retval ::NRF_SUCCESS Get or set successful. - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - Less then two bits in @ref ch_map are set. - * - Bits for primary advertising channels (37-39) are set. - * @retval ::NRF_ERROR_BUSY Channel map was set again before enough time had passed. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied for get. - * @retval ::NRF_ERROR_NOT_SUPPORTED Returned by @ref sd_ble_opt_set in peripheral-only SoftDevices. - * - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle (only applicable for get) */ - uint8_t ch_map[5]; /**< Channel Map (37-bit). */ -} ble_gap_opt_ch_map_t; - - -/**@brief Local connection latency option. - * - * @details Local connection latency is a feature which enables the slave to improve - * current consumption by ignoring the slave latency set by the peer. The - * local connection latency can only be set to a multiple of the slave latency, - * and cannot be longer than half of the supervision timeout. - * - * @details Used with @ref sd_ble_opt_set to set the local connection latency. The - * @ref sd_ble_opt_get is not supported for this option, but the actual - * local connection latency (unless set to NULL) is set as a return parameter - * when setting the option. - * - * @note The latency set will be truncated down to the closest slave latency event - * multiple, or the nearest multiple before half of the supervision timeout. - * - * @note The local connection latency is disabled by default, and needs to be enabled for new - * connections and whenever the connection is updated. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint16_t requested_latency; /**< Requested local connection latency. */ - uint16_t * p_actual_latency; /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */ -} ble_gap_opt_local_conn_latency_t; - -/**@brief Disable slave latency - * - * @details Used with @ref sd_ble_opt_set to temporarily disable slave latency of a peripheral connection - * (see @ref ble_gap_conn_params_t::slave_latency). And to re-enable it again. When disabled, the - * peripheral will ignore the slave_latency set by the central. - * - * @note Shall only be called on peripheral links. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint8_t disable : 1; /**< Set to 1 to disable slave latency. Set to 0 enable it again.*/ -} ble_gap_opt_slave_latency_disable_t; - -/**@brief Passkey Option. - * - * @details Structure containing the passkey to be used during pairing. This can be used with @ref - * sd_ble_opt_set to make the SoftDevice use a preprogrammed passkey for authentication - * instead of generating a random one. - * - * @note Repeated pairing attempts using the same preprogrammed passkey makes pairing vulnerable to MITM attacks. - * - * @note @ref sd_ble_opt_get is not supported for this option. - * - */ -typedef struct -{ - uint8_t const * p_passkey; /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/ -} ble_gap_opt_passkey_t; - - -/**@brief Authenticated payload timeout option. - * - * @details This can be used with @ref sd_ble_opt_set to change the Authenticated payload timeout to a value other - * than the default of @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX. - * - * @note The authenticated payload timeout event ::BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD will be generated - * if auth_payload_timeout time has elapsed without receiving a packet with a valid MIC on an encrypted - * link. - * - * @note The LE ping procedure will be initiated before the timer expires to give the peer a chance - * to reset the timer. In addition the stack will try to prioritize running of LE ping over other - * activities to increase chances of finishing LE ping before timer expires. To avoid side-effects - * on other activities, it is recommended to use high timeout values. - * Recommended timeout > 2*(connInterval * (6 + connSlaveLatency)). - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. auth_payload_timeout was outside of allowed range. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint16_t auth_payload_timeout; /**< Requested timeout in 10 ms unit, see @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT. */ -} ble_gap_opt_auth_payload_timeout_t; - -/**@brief Option structure for GAP options. */ -typedef union -{ - ble_gap_opt_ch_map_t ch_map; /**< Parameters for the Channel Map option. */ - ble_gap_opt_local_conn_latency_t local_conn_latency; /**< Parameters for the Local connection latency option */ - ble_gap_opt_passkey_t passkey; /**< Parameters for the Passkey option.*/ - ble_gap_opt_auth_payload_timeout_t auth_payload_timeout; /**< Parameters for the authenticated payload timeout option.*/ - ble_gap_opt_slave_latency_disable_t slave_latency_disable; /**< Parameters for the Disable slave latency option */ -} ble_gap_opt_t; -/**@} */ - - -/**@addtogroup BLE_GAP_FUNCTIONS Functions - * @{ */ - -/**@brief Set the local Bluetooth identity address. - * - * The local Bluetooth identity address is the address that identifies this device to other peers. - * The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. - * - * @note The identity address cannot be changed while advertising. - * - * @note This address will be distributed to the peer during bonding. - * If the address changes, the address stored in the peer device will not be valid and the ability to - * reconnect using the old address will be lost. - * - * @note By default the SoftDevice will set an address of type @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being - * enabled. The address is a random number populated during the IC manufacturing process and remains unchanged - * for the lifetime of each IC. - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @endmscs - * - * @param[in] p_addr Pointer to address structure. - * - * @retval ::NRF_SUCCESS Address successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_STATE The identity address cannot be changed while advertising. - */ -SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr)); - - -/**@brief Get local Bluetooth identity address. - * - * @note This will always return the identity address irrespective of the privacy settings, - * i.e. the address type will always be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. - * - * @param[out] p_addr Pointer to address structure to be filled in. - * - * @retval ::NRF_SUCCESS Address successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - */ -SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr)); - - -/**@brief Set the active whitelist in the SoftDevice. - * - * @note Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. - * The whitelist cannot be set if a BLE role is using the whitelist. - * - * @note If an address is resolved using the information in the device identity list, then the whitelist - * filter policy applies to the peer identity address and not the resolvable address sent on air. - * - * @param[in] pp_wl_addrs Pointer to a whitelist of peer addresses, if NULL the whitelist will be cleared. - * @param[in] len Length of the whitelist, maximum @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. - * - * @retval ::NRF_SUCCESS The whitelist is successfully set/cleared. - * @retval ::NRF_ERROR_INVALID_ADDR The whitelist (or one of its entries) provided is invalid. - * @retval ::BLE_ERROR_GAP_WHITELIST_IN_USE The whitelist is in use by a BLE role and cannot be set or cleared. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_DATA_SIZE The given whitelist size is invalid (zero or too large); this can only return when - * pp_wl_addrs is not NULL. - */ -SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len)); - - -/**@brief Set device identity list. - * - * @note Only one device identity list can be used at a time and the list is shared between the BLE roles. - * The device identity list cannot be set if a BLE role is using the list. - * - * @param[in] pp_id_keys Pointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared. - * @param[in] pp_local_irks Pointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. - * To fill in the list with the currently set device IRK for all peers, set to NULL. - * @param[in] len Length of the device identity list, maximum @ref BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT. - * - * @mscs - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS The device identity list successfully set/cleared. - * @retval ::NRF_ERROR_INVALID_ADDR The device identity list (or one of its entries) provided is invalid. - * This code may be returned if the local IRK list also has an invalid entry. - * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE The device identity list is in use and cannot be set or cleared. - * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE The device identity list contains multiple entries with the same identity address. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_DATA_SIZE The given device identity list size invalid (zero or too large); this can - * only return when pp_id_keys is not NULL. - */ -SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len)); - - -/**@brief Set privacy settings. - * - * @note Privacy settings cannot be changed while advertising. - * - * @param[in] p_privacy_params Privacy settings. - * - * @mscs - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_INVALID_ADDR The pointer to privacy settings is NULL or invalid. - * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. - * @retval ::NRF_ERROR_INVALID_PARAM Out of range parameters are provided. - * @retval ::NRF_ERROR_INVALID_STATE Privacy settings cannot be changed while advertising. - */ -SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params)); - - -/**@brief Get privacy settings. - * - * @note ::ble_gap_privacy_params_t::p_device_irk must be initialized to NULL or a valid address before this function is called. - * If it is initialized to a valid address, the address pointed to will contain the current device IRK on return. - * - * @param[in,out] p_privacy_params Privacy settings. - * - * @retval ::NRF_SUCCESS Privacy settings read. - * @retval ::NRF_ERROR_INVALID_ADDR The pointer given for returning the privacy settings may be NULL or invalid. - * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. - */ -SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params)); - - -/**@brief Configure an advertising set. Set, clear or update advertising and scan response data. - * - * @note The format of the advertising data will be checked by this call to ensure interoperability. - * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and - * duplicating the local name in the advertising data and scan response data. - * - * @note In order to update advertising data while advertising, new advertising buffers must be provided. - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @endmscs - * - * @param[in,out] p_adv_handle Provide a pointer to a handle containing @ref BLE_GAP_ADV_SET_HANDLE_NOT_SET to configure - * a new advertising set. On success, a new handle is then returned through the pointer. - * Provide a pointer to an existing advertising handle to configure an existing advertising set. - * @param[in] p_adv_data Advertising data. If set to NULL, no advertising data will be used. See @ref ble_gap_adv_data_t. - * @param[in] p_adv_params Advertising parameters. When this function is used to update advertising data while advertising, - * this parameter must be NULL. See @ref ble_gap_adv_params_t. - * - * @retval ::NRF_SUCCESS Advertising set successfully configured. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied: - * - Invalid advertising data configuration specified. See @ref ble_gap_adv_data_t. - * - Invalid configuration of p_adv_params. See @ref ble_gap_adv_params_t. - * - Use of whitelist requested but whitelist has not been set, - * see @ref sd_ble_gap_whitelist_set. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR ble_gap_adv_params_t::p_peer_addr is invalid. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * - It is invalid to provide non-NULL advertising set parameters while advertising. - * - It is invalid to provide the same data buffers while advertising. To update - * advertising data, provide new advertising buffers. - * @retval ::BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE The provided advertising handle was not found. Use @ref BLE_GAP_ADV_SET_HANDLE_NOT_SET to - * configure a new advertising handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. - * @retval ::NRF_ERROR_INVALID_DATA Invalid data type(s) supplied. Check the advertising data format specification - * given in Bluetooth Specification Version 5.0, Volume 3, Part C, Chapter 11. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported data length or advertising parameter configuration. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to configure a new advertising handle. Update an - * existing advertising handle instead. - * @retval ::BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. - */ -SVCALL(SD_BLE_GAP_ADV_SET_CONFIGURE, uint32_t, sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, ble_gap_adv_data_t const *p_adv_data, ble_gap_adv_params_t const *p_adv_params)); - - -/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @note Only one advertiser may be active at any time. - * - * @events - * @event{@ref BLE_GAP_EVT_CONNECTED, Generated after connection has been established through connectable advertising.} - * @event{@ref BLE_GAP_EVT_ADV_SET_TERMINATED, Advertising set has terminated.} - * @event{@ref BLE_GAP_EVT_SCAN_REQ_REPORT, A scan request was received.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @endmscs - * - * @param[in] adv_handle Advertising handle to advertise on, received from @ref sd_ble_gap_adv_set_configure. - * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or - * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. For non-connectable - * advertising, this is ignored. - * - * @retval ::NRF_SUCCESS The BLE stack has started advertising. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. adv_handle is not configured or already advertising. - * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached; connectable advertiser cannot be started. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found. Configure a new adveriting handle with @ref sd_ble_gap_adv_set_configure. - * @retval ::NRF_ERROR_NOT_FOUND conn_cfg_tag not found. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied: - * - Invalid configuration of p_adv_params. See @ref ble_gap_adv_params_t. - * - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. - * @retval ::NRF_ERROR_RESOURCES Either: - * - adv_handle is configured with connectable advertising, but the event_length parameter - * associated with conn_cfg_tag is too small to be able to establish a connection on - * the selected advertising phys. Use @ref sd_ble_cfg_set to increase the event length. - * - Not enough BLE role slots available. - * Stop one or more currently active roles (Peripheral or Broadcaster) and try again - * - p_adv_params is configured with connectable advertising, but the event_length parameter - * associated with conn_cfg_tag is too small to be able to establish a connection on - * the selected advertising phys. Use @ref sd_ble_cfg_set to increase the event length. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported PHYs supplied to the call. - */ -SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(uint8_t adv_handle, uint8_t conn_cfg_tag)); - - -/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @endmscs - * - * @param[in] adv_handle The advertising handle that should stop advertising. - * - * @retval ::NRF_SUCCESS The BLE stack has stopped advertising. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Invalid advertising handle. - * @retval ::NRF_ERROR_INVALID_STATE The advertising handle is not advertising. - */ -SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(uint8_t adv_handle)); - - - -/**@brief Update connection parameters. - * - * @details In the peripheral role, this will send the corresponding L2CAP request and wait for - * the central to perform the procedure. Regardless of success or failure, the application - * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. - * - * @events - * @event{@ref BLE_GAP_EVT_CONN_PARAM_UPDATE, Result of the connection parameter update procedure.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CPU_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, - * the parameters in the PPCP characteristic of the GAP service will be used instead. - * - * @retval ::NRF_SUCCESS The Connection Update procedure has been started successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::NRF_ERROR_BUSY Procedure already in progress, wait for pending procedures to complete and retry. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)); - - -/**@brief Disconnect (GAP Link Termination). - * - * @details This call initiates the disconnection procedure, and its completion will be communicated to the application - * with a @ref BLE_GAP_EVT_DISCONNECTED event. - * - * @events - * @event{@ref BLE_GAP_EVT_DISCONNECTED, Generated when disconnection procedure is complete.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CONN_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are @ref BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and @ref BLE_HCI_CONN_INTERVAL_UNACCEPTABLE). - * - * @retval ::NRF_SUCCESS The disconnection procedure has been started successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress). - */ -SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); - - -/**@brief Set the radio's transmit power. - * - * @param[in] role The role to set the transmit power for, see @ref BLE_GAP_TX_POWER_ROLES for - * possible roles. - * @param[in] handle The handle parameter is interpreted depending on role: - * - If role is @ref BLE_GAP_TX_POWER_ROLE_CONN, this value is the specific connection handle. - * - If role is @ref BLE_GAP_TX_POWER_ROLE_ADV, the advertising set identified with the advertising handle, - * will use the specified transmit power, and include it in the advertising packet headers if - * @ref ble_gap_adv_properties_t::include_tx_power set. - * - For all other roles handle is ignored. - * @param[in] tx_power Radio transmit power in dBm (see note for accepted values). - * - * @note Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm. - * @note The initiator will have the same transmit power as the scanner. - * @note When a connection is created it will inherit the transmit power from the initiator or - * advertiser leading to the connection. - * - * @retval ::NRF_SUCCESS Successfully changed the transmit power. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(uint8_t role, uint16_t handle, int8_t tx_power)); - - -/**@brief Set GAP Appearance value. - * - * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. - * - * @retval ::NRF_SUCCESS Appearance value set successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); - - -/**@brief Get GAP Appearance value. - * - * @param[out] p_appearance Pointer to appearance (16-bit) to be filled in, see @ref BLE_APPEARANCES. - * - * @retval ::NRF_SUCCESS Appearance value retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance)); - - -/**@brief Set GAP Peripheral Preferred Connection Parameters. - * - * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. - * - * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params)); - - -/**@brief Get GAP Peripheral Preferred Connection Parameters. - * - * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. - * - * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params)); - - -/**@brief Set GAP device name. - * - * @note If the device name is located in application flash memory (see @ref ble_gap_cfg_device_name_t), - * it cannot be changed. Then @ref NRF_ERROR_FORBIDDEN will be returned. - * - * @param[in] p_write_perm Write permissions for the Device Name characteristic, see @ref ble_gap_conn_sec_mode_t. - * @param[in] p_dev_name Pointer to a UTF-8 encoded, non NULL-terminated string. - * @param[in] len Length of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). - * - * @retval ::NRF_SUCCESS GAP device name and permissions set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_FORBIDDEN Device name is not writable. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)); - - -/**@brief Get GAP device name. - * - * @note If the device name is longer than the size of the supplied buffer, - * p_len will return the complete device name length, - * and not the number of bytes actually returned in p_dev_name. - * The application may use this information to allocate a suitable buffer size. - * - * @param[out] p_dev_name Pointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length. - * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. - * - * @retval ::NRF_SUCCESS GAP device name retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len)); - - -/**@brief Initiate the GAP Authentication procedure. - * - * @details In the peripheral role, this function will send an SMP Security Request. - * - * @events - * @event{Depending on the security parameters set and the packet exchanges with the peer\, the following events may be generated:} - * @event{@ref BLE_GAP_EVT_SEC_PARAMS_REQUEST} - * @event{@ref BLE_GAP_EVT_SEC_INFO_REQUEST} - * @event{@ref BLE_GAP_EVT_PASSKEY_DISPLAY} - * @event{@ref BLE_GAP_EVT_KEY_PRESSED} - * @event{@ref BLE_GAP_EVT_AUTH_KEY_REQUEST} - * @event{@ref BLE_GAP_EVT_LESC_DHKEY_REQUEST} - * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE} - * @event{@ref BLE_GAP_EVT_AUTH_STATUS} - * @event{@ref BLE_GAP_EVT_TIMEOUT} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_SEC_REQ_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. - * In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. - * - * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::NRF_ERROR_NO_MEM The maximum number of authentication procedures that can run in parallel for the given role is reached. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)); - - -/**@brief Reply with GAP security parameters. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_CONFIRM_FAIL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_KS_TOO_SMALL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_APP_ERROR_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_REMOTE_PAIRING_FAIL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_TIMEOUT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. - * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. - * @param[in,out] p_sec_keyset Pointer to a @ref ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure - * will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application - * upon reception of a @ref BLE_GAP_EVT_AUTH_STATUS event. - * Note that the SoftDevice expects the application to provide memory for storing the - * peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key - * can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the - * @ref BLE_GAP_EVT_AUTH_STATUS event. - * - * @retval ::NRF_SUCCESS Successfully accepted security parameter from the application. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. - */ -SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)); - - -/**@brief Reply with an authentication key. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST or a @ref BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. - * @param[in] p_key If key type is @ref BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. - * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) - * or NULL when confirming LE Secure Connections Numeric Comparison. - * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in little-endian format. - * - * @retval ::NRF_SUCCESS Authentication key successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)); - - -/**@brief Reply with an LE Secure connections DHKey. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_dhkey LE Secure Connections DHKey. - * - * @retval ::NRF_SUCCESS DHKey successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)); - - -/**@brief Notify the peer of a local keypress. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] kp_not See @ref BLE_GAP_KP_NOT_TYPES. - * - * @retval ::NRF_SUCCESS Keypress notification successfully queued for transmission. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either not entering a passkey or keypresses have not been enabled by both peers. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. - */ -SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not)); - - -/**@brief Generate a set of OOB data to send to a peer out of band. - * - * @note The @ref ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, - * the one used during connection setup). The application may manually overwrite it with an updated value. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. Can be @ref BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet. - * @param[in] p_pk_own LE Secure Connections local P-256 Public Key. - * @param[out] p_oobd_own The OOB data to be sent out of band to a peer. - * - * @retval ::NRF_SUCCESS OOB data successfully generated. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)); - -/**@brief Provide the OOB data sent/received out of band. - * - * @note An authentication procedure with OOB selected as an algorithm must be in progress when calling this function. - * @note A @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_oobd_own The OOB data sent out of band to a peer or NULL if the peer has not received OOB data. - * Must correspond to @ref ble_gap_sec_params_t::oob flag in @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. - * @param[in] p_oobd_peer The OOB data received out of band from a peer or NULL if none received. - * Must correspond to @ref sd_ble_gap_sec_params_reply in the peripheral role. - * - * @retval ::NRF_SUCCESS OOB data accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)); - - -/**@brief Reply with GAP security information. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * @note Data signing is not yet supported, and p_sign_info must therefore be NULL. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_ENC_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. - * @param[in] p_id_info Pointer to a @ref ble_gap_irk_t identity information structure. May be NULL to signal none is available. - * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. - * - * @retval ::NRF_SUCCESS Successfully accepted security information. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)); - - -/**@brief Get the current connection security. - * - * @param[in] conn_handle Connection handle. - * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Current connection security successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)); - - -/**@brief Start reporting the received signal strength to the application. - * - * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. - * - * @events - * @event{@ref BLE_GAP_EVT_RSSI_CHANGED, New RSSI data available. How often the event is generated is - * dependent on the settings of the threshold_dbm - * and skip_count input parameters.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] threshold_dbm Minimum change in dBm before triggering the @ref BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals @ref BLE_GAP_RSSI_THRESHOLD_INVALID. - * @param[in] skip_count Number of RSSI samples with a change of threshold_dbm or more before sending a new @ref BLE_GAP_EVT_RSSI_CHANGED event. - * - * @retval ::NRF_SUCCESS Successfully activated RSSI reporting. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is already ongoing. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)); - - -/**@brief Stop reporting the received signal strength. - * - * @note An RSSI change detected before the call but not yet received by the application - * may be reported after @ref sd_ble_gap_rssi_stop has been called. - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * - * @retval ::NRF_SUCCESS Successfully deactivated RSSI reporting. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); - - -/**@brief Get the received signal strength for the last connection event. - * - * @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND - * will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start. - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[out] p_rssi Pointer to the location where the RSSI measurement shall be stored. - * @param[out] p_ch_index Pointer to the location where Channel Index for the RSSI measurement shall be stored. - * - * @retval ::NRF_SUCCESS Successfully read the RSSI. - * @retval ::NRF_ERROR_NOT_FOUND No sample is available. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing. - */ -SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi, uint8_t *p_ch_index)); - - -/**@brief Initiate or respond to a PHY Update Procedure - * - * @details This function is used to initiate or respond to a PHY Update Procedure. It will always - * generate a @ref BLE_GAP_EVT_PHY_UPDATE event if successfully executed. - * If this function is used to initiate a PHY Update procedure and the only option - * provided in @ref ble_gap_phys_t::tx_phys and @ref ble_gap_phys_t::rx_phys is the - * currently active PHYs in the respective directions, the SoftDevice will generate a - * @ref BLE_GAP_EVT_PHY_UPDATE with the current PHYs set and will not initiate the - * procedure in the Link Layer. - * - * If @ref ble_gap_phys_t::tx_phys or @ref ble_gap_phys_t::rx_phys is @ref BLE_GAP_PHY_AUTO, - * then the stack will select PHYs based on the peer's PHY preferences and the local link - * configuration. The PHY Update procedure will for this case result in a PHY combination - * that respects the time constraints configured with @ref sd_ble_cfg_set and the current - * link layer data length. - * - * If the peer does not support the PHY Update Procedure, then the resulting - * @ref BLE_GAP_EVT_PHY_UPDATE event will have a status set to - * @ref BLE_HCI_UNSUPPORTED_REMOTE_FEATURE. - * - * If the PHY procedure was rejected by the peer due to a procedure collision, the status - * will be @ref BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION or - * @ref BLE_HCI_DIFFERENT_TRANSACTION_COLLISION. - * If the peer responds to the PHY Update procedure with invalid parameters, the status - * will be @ref BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS. - * If the PHY procedure was rejected by the peer for a different reason, the status will - * contain the reason as specified by the peer. - * - * @events - * @event{@ref BLE_GAP_EVT_PHY_UPDATE, Result of the PHY Update Procedure.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPHERAL_PHY_UPDATE} - * @endmscs - * - * @param[in] conn_handle Connection handle to indicate the connection for which the PHY Update is requested. - * @param[in] p_gap_phys Pointer to PHY structure. - * - * @retval ::NRF_SUCCESS Successfully requested a PHY Update. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported PHYs supplied to the call. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::NRF_ERROR_BUSY Procedure is already in progress or not allowed at this time. Process pending events and wait for the pending procedure to complete and retry. - * - */ -SVCALL(SD_BLE_GAP_PHY_UPDATE, uint32_t, sd_ble_gap_phy_update(uint16_t conn_handle, ble_gap_phys_t const *p_gap_phys)); - - - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GAP_H__ - -/** - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatt.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatt.h deleted file mode 100644 index 98a7a150bf..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatt.h +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (c) 2013 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common - @{ - @brief Common definitions and prototypes for the GATT interfaces. - */ - -#ifndef BLE_GATT_H__ -#define BLE_GATT_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATT_DEFINES Defines - * @{ */ - -/** @brief Default ATT MTU, in bytes. */ -#define BLE_GATT_ATT_MTU_DEFAULT 23 - -/**@brief Invalid Attribute Handle. */ -#define BLE_GATT_HANDLE_INVALID 0x0000 - -/**@brief First Attribute Handle. */ -#define BLE_GATT_HANDLE_START 0x0001 - -/**@brief Last Attribute Handle. */ -#define BLE_GATT_HANDLE_END 0xFFFF - -/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources - * @{ */ -#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ -/** @} */ - -/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations - * @{ */ -#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ -/** @} */ - -/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags - * @{ */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 /**< Cancel prepared write. */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 /**< Execute prepared write. */ -/** @} */ - -/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations - * @{ */ -#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ -#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ -/** @} */ - -/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes - * @{ */ -#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ -#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ -#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ -#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ -#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ -#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorization. */ -#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ -#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ -#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ -#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ -#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ -#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ -#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ -/** @} */ - - -/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats - * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml - * @{ */ -#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ -#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ -#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ -#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ -#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ -#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ -#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ -#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ -/** @} */ - -/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces - * @{ - */ -#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 /**< Bluetooth SIG defined Namespace. */ -#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 /**< Namespace Description Unknown. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATT_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATT connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_PARAM att_mtu is smaller than @ref BLE_GATT_ATT_MTU_DEFAULT. - */ -typedef struct -{ - uint16_t att_mtu; /**< Maximum size of ATT packet the SoftDevice can send or receive. - The default and minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - @mscs - @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} - @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} - @endmscs - */ -} ble_gatt_conn_cfg_t; - -/**@brief GATT Characteristic Properties. */ -typedef struct -{ - /* Standard properties */ - uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ - uint8_t read :1; /**< Reading the value permitted. */ - uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ - uint8_t write :1; /**< Writing the value with Write Request permitted. */ - uint8_t notify :1; /**< Notification of the value permitted. */ - uint8_t indicate :1; /**< Indications of the value permitted. */ - uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ -} ble_gatt_char_props_t; - -/**@brief GATT Characteristic Extended Properties. */ -typedef struct -{ - /* Extended properties */ - uint8_t reliable_wr :1; /**< Writing the value with Queued Write operations permitted. */ - uint8_t wr_aux :1; /**< Writing the Characteristic User Description descriptor permitted. */ -} ble_gatt_char_ext_props_t; - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GATT_H__ - -/** @} */ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gattc.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gattc.h deleted file mode 100644 index 7fb3920244..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gattc.h +++ /dev/null @@ -1,715 +0,0 @@ -/* - * Copyright (c) 2011 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client - @{ - @brief Definitions and prototypes for the GATT Client interface. - */ - -#ifndef BLE_GATTC_H__ -#define BLE_GATTC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" -#include "ble_gatt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations - * @{ */ - -/**@brief GATTC API SVC numbers. */ -enum BLE_GATTC_SVCS -{ - SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ - SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ - SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ - SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ - SD_BLE_GATTC_ATTR_INFO_DISCOVER, /**< Attribute Information Discovery. */ - SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ - SD_BLE_GATTC_READ, /**< Generic read. */ - SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ - SD_BLE_GATTC_WRITE, /**< Generic write. */ - SD_BLE_GATTC_HV_CONFIRM, /**< Handle Value Confirmation. */ - SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. */ -}; - -/** - * @brief GATT Client Event IDs. - */ -enum BLE_GATTC_EVTS -{ - BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. \n See @ref ble_gattc_evt_prim_srvc_disc_rsp_t. */ - BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. \n See @ref ble_gattc_evt_rel_disc_rsp_t. */ - BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. \n See @ref ble_gattc_evt_char_disc_rsp_t. */ - BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. \n See @ref ble_gattc_evt_desc_disc_rsp_t. */ - BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, /**< Attribute Information Response event. \n See @ref ble_gattc_evt_attr_info_disc_rsp_t. */ - BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. \n See @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t. */ - BLE_GATTC_EVT_READ_RSP, /**< Read Response event. \n See @ref ble_gattc_evt_read_rsp_t. */ - BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. \n See @ref ble_gattc_evt_char_vals_read_rsp_t. */ - BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. \n See @ref ble_gattc_evt_write_rsp_t. */ - BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. \n Confirm indication with @ref sd_ble_gattc_hv_confirm. \n See @ref ble_gattc_evt_hvx_t. */ - BLE_GATTC_EVT_EXCHANGE_MTU_RSP, /**< Exchange MTU Response event. \n See @ref ble_gattc_evt_exchange_mtu_rsp_t. */ - BLE_GATTC_EVT_TIMEOUT, /**< Timeout event. \n See @ref ble_gattc_evt_timeout_t. */ - BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE /**< Write without Response transmission complete. \n See @ref ble_gattc_evt_write_cmd_tx_complete_t. */ -}; - -/** @} */ - -/** @addtogroup BLE_GATTC_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC - * @{ */ -#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) /**< Procedure not Permitted. */ -/** @} */ - -/** @defgroup BLE_GATTC_ATTR_INFO_FORMAT Attribute Information Formats - * @{ */ -#define BLE_GATTC_ATTR_INFO_FORMAT_16BIT 1 /**< 16-bit Attribute Information Format. */ -#define BLE_GATTC_ATTR_INFO_FORMAT_128BIT 2 /**< 128-bit Attribute Information Format. */ -/** @} */ - -/** @defgroup BLE_GATTC_DEFAULTS GATT Client defaults - * @{ */ -#define BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Write without Response that can be queued for transmission. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATTC_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATTC connection configuration parameters, set with @ref sd_ble_cfg_set. - */ -typedef struct -{ - uint8_t write_cmd_tx_queue_size; /**< The guaranteed minimum number of Write without Response that can be queued for transmission. - The default value is @ref BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT */ -} ble_gattc_conn_cfg_t; - -/**@brief Operation Handle Range. */ -typedef struct -{ - uint16_t start_handle; /**< Start Handle. */ - uint16_t end_handle; /**< End Handle. */ -} ble_gattc_handle_range_t; - - -/**@brief GATT service. */ -typedef struct -{ - ble_uuid_t uuid; /**< Service UUID. */ - ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ -} ble_gattc_service_t; - - -/**@brief GATT include. */ -typedef struct -{ - uint16_t handle; /**< Include Handle. */ - ble_gattc_service_t included_srvc; /**< Handle of the included service. */ -} ble_gattc_include_t; - - -/**@brief GATT characteristic. */ -typedef struct -{ - ble_uuid_t uuid; /**< Characteristic UUID. */ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - uint8_t char_ext_props : 1; /**< Extended properties present. */ - uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ - uint16_t handle_value; /**< Handle of the Characteristic Value. */ -} ble_gattc_char_t; - - -/**@brief GATT descriptor. */ -typedef struct -{ - uint16_t handle; /**< Descriptor Handle. */ - ble_uuid_t uuid; /**< Descriptor UUID. */ -} ble_gattc_desc_t; - - -/**@brief Write Parameters. */ -typedef struct -{ - uint8_t write_op; /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */ - uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ - uint16_t handle; /**< Handle to the attribute to be written. */ - uint16_t offset; /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */ - uint16_t len; /**< Length of data in bytes. */ - uint8_t const *p_value; /**< Pointer to the value data. */ -} ble_gattc_write_params_t; - -/**@brief Attribute Information for 16-bit Attribute UUID. */ -typedef struct -{ - uint16_t handle; /**< Attribute handle. */ - ble_uuid_t uuid; /**< 16-bit Attribute UUID. */ -} ble_gattc_attr_info16_t; - -/**@brief Attribute Information for 128-bit Attribute UUID. */ -typedef struct -{ - uint16_t handle; /**< Attribute handle. */ - ble_uuid128_t uuid; /**< 128-bit Attribute UUID. */ -} ble_gattc_attr_info128_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Service count. */ - ble_gattc_service_t services[1]; /**< Service data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_prim_srvc_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_REL_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Include count. */ - ble_gattc_include_t includes[1]; /**< Include data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_rel_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Characteristic count. */ - ble_gattc_char_t chars[1]; /**< Characteristic data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_DESC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Descriptor count. */ - ble_gattc_desc_t descs[1]; /**< Descriptor data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_desc_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Attribute count. */ - uint8_t format; /**< Attribute information format, see @ref BLE_GATTC_ATTR_INFO_FORMAT. */ - union { - ble_gattc_attr_info16_t attr_info16[1]; /**< Attribute information for 16-bit Attribute UUID. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ - ble_gattc_attr_info128_t attr_info128[1]; /**< Attribute information for 128-bit Attribute UUID. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ - } info; /**< Attribute information union. */ -} ble_gattc_evt_attr_info_disc_rsp_t; - -/**@brief GATT read by UUID handle value pair. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t *p_value; /**< Pointer to the Attribute Value, length is available in @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t::value_len. */ -} ble_gattc_handle_value_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ -typedef struct -{ - uint16_t count; /**< Handle-Value Pair Count. */ - uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ - uint8_t handle_value[1]; /**< Handle-Value(s) list. To iterate through the list use @ref sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_val_by_uuid_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_READ_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint16_t offset; /**< Offset of the attribute data. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ -typedef struct -{ - uint16_t len; /**< Concatenated Attribute values length. */ - uint8_t values[1]; /**< Attribute values. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_vals_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ - uint16_t offset; /**< Data offset. */ - uint16_t len; /**< Data length. */ - uint8_t data[1]; /**< Data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_write_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_HVX. */ -typedef struct -{ - uint16_t handle; /**< Handle to which the HVx operation applies. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_hvx_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. */ -typedef struct -{ - uint16_t server_rx_mtu; /**< Server RX MTU size. */ -} ble_gattc_evt_exchange_mtu_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gattc_evt_timeout_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE. */ -typedef struct -{ - uint8_t count; /**< Number of write without response transmissions completed. */ -} ble_gattc_evt_write_cmd_tx_complete_t; - -/**@brief GATTC event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases @ref BLE_GATT_HANDLE_INVALID. */ - union - { - ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ - ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ - ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ - ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ - ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ - ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ - ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ - ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ - ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ - ble_gattc_evt_exchange_mtu_rsp_t exchange_mtu_rsp; /**< Exchange MTU Response Event Parameters. */ - ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gattc_evt_attr_info_disc_rsp_t attr_info_disc_rsp; /**< Attribute Information Discovery Event Parameters. */ - ble_gattc_evt_write_cmd_tx_complete_t write_cmd_tx_complete; /**< Write without Response transmission complete Event Parameters. */ - } params; /**< Event Parameters. @note Only valid if @ref gatt_status == @ref BLE_GATT_STATUS_SUCCESS. */ -} ble_gattc_evt_t; -/** @} */ - -/** @addtogroup BLE_GATTC_FUNCTIONS Functions - * @{ */ - -/**@brief Initiate or continue a GATT Primary Service Discovery procedure. - * - * @details This function initiates or resumes a Primary Service discovery procedure, starting from the supplied handle. - * If the last service has not been reached, this function must be called again with an updated start handle value to continue the search. - * - * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @events - * @event{@ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_PRIM_SRVC_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] start_handle Handle to start searching from. - * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const *p_srvc_uuid)); - - -/**@brief Initiate or continue a GATT Relationship Discovery procedure. - * - * @details This function initiates or resumes the Find Included Services sub-procedure. If the last included service has not been reached, - * this must be called again with an updated handle range to continue the search. - * - * @events - * @event{@ref BLE_GATTC_EVT_REL_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_REL_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Discovery procedure. - * - * @details This function initiates or resumes a Characteristic discovery procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_CHAR_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. - * - * @details This function initiates or resumes a Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @events - * @event{@ref BLE_GATTC_EVT_DESC_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_DESC_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. - * - * @details This function initiates or resumes a Read using Characteristic UUID procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_READ_UUID_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_uuid Pointer to a Characteristic value UUID to read. - * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const *p_uuid, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. - * - * @details This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor - * to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the - * complete value. - * - * @events - * @event{@ref BLE_GATTC_EVT_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_VALUE_READ_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute to be read. - * @param[in] offset Offset into the attribute value to be read. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); - - -/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. - * - * @details This function initiates a GATT Read Multiple Characteristic Values procedure. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_READ_MULT_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. - * @param[in] handle_count The number of handles in p_handles. - * - * @retval ::NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const *p_handles, uint16_t handle_count)); - - -/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. - * - * @details This function can perform all write procedures described in GATT. - * - * @note Only one write with response procedure can be ongoing per connection at a time. - * If the application tries to write with response while another write with response procedure is ongoing, - * the function call will return @ref NRF_ERROR_BUSY. - * A @ref BLE_GATTC_EVT_WRITE_RSP event will be issued as soon as the write response arrives from the peer. - * - * @note The number of Write without Response that can be queued is configured by @ref ble_gattc_conn_cfg_t::write_cmd_tx_queue_size - * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. - * A @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event will be issued as soon as the transmission of the write without response is complete. - * - * @note The application can keep track of the available queue element count for writes without responses by following the procedure below: - * - Store initial queue element count in a variable. - * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. - * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event. - * - * @events - * @event{@ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE, Write without response transmission complete.} - * @event{@ref BLE_GATTC_EVT_WRITE_RSP, Write response received from the peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_VALUE_WRITE_WITHOUT_RESP_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_WRITE_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_LONG_WRITE_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_RELIABLE_WRITE_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_write_params A pointer to a write parameters structure. - * - * @retval ::NRF_SUCCESS Successfully started the Write procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_BUSY For write with response, procedure already in progress. Wait for a @ref BLE_GATTC_EVT_WRITE_RSP event and retry. - * @retval ::NRF_ERROR_RESOURCES Too many writes without responses queued. - * Wait for a @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event and retry. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const *p_write_params)); - - -/**@brief Send a Handle Value Confirmation to the GATT Server. - * - * @mscs - * @mmsc{@ref BLE_GATTC_HVI_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute in the indication. - * - * @retval ::NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no Indication pending to be confirmed. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); - -/**@brief Discovers information about a range of attributes on a GATT server. - * - * @events - * @event{@ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, Generated when information about a range of attributes has been received.} - * @endevents - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range The range of handles to request information about. - * - * @retval ::NRF_SUCCESS Successfully started an attribute information discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_ATTR_INFO_DISCOVER, uint32_t, sd_ble_gattc_attr_info_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * p_handle_range)); - -/**@brief Start an ATT_MTU exchange by sending an Exchange MTU Request to the server. - * - * @details The SoftDevice sets ATT_MTU to the minimum of: - * - The Client RX MTU value, and - * - The Server RX MTU value from @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. - * - * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. - * - * @events - * @event{@ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] client_rx_mtu Client RX MTU size. - * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration - used for this connection. - * - The value must be equal to Server RX MTU size given in @ref sd_ble_gatts_exchange_mtu_reply - * if an ATT_MTU exchange has already been performed in the other direction. - * - * @retval ::NRF_SUCCESS Successfully sent request to the server. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state or an ATT_MTU exchange was already requested once. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid Client RX MTU size supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, uint32_t, sd_ble_gattc_exchange_mtu_request(uint16_t conn_handle, uint16_t client_rx_mtu)); - -/**@brief Iterate through Handle-Value(s) list in @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. - * - * @param[in] p_gattc_evt Pointer to event buffer containing @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. - * @note If the buffer contains different event, behavior is undefined. - * @param[in,out] p_iter Iterator, points to @ref ble_gattc_handle_value_t structure that will be filled in with - * the next Handle-Value pair in each iteration. If the function returns other than - * @ref NRF_SUCCESS, it will not be changed. - * - To start iteration, initialize the structure to zero. - * - To continue, pass the value from previous iteration. - * - * \code - * ble_gattc_handle_value_t iter; - * memset(&iter, 0, sizeof(ble_gattc_handle_value_t)); - * while (sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(&ble_evt.evt.gattc_evt, &iter) == NRF_SUCCESS) - * { - * app_handle = iter.handle; - * memcpy(app_value, iter.p_value, ble_evt.evt.gattc_evt.params.char_val_by_uuid_read_rsp.value_len); - * } - * \endcode - * - * @retval ::NRF_SUCCESS Successfully retrieved the next Handle-Value pair. - * @retval ::NRF_ERROR_NOT_FOUND No more Handle-Value pairs available in the list. - */ -__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter); - -/** @} */ - -#ifndef SUPPRESS_INLINE_IMPLEMENTATION - -__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter) -{ - uint32_t value_len = p_gattc_evt->params.char_val_by_uuid_read_rsp.value_len; - uint8_t *p_first = p_gattc_evt->params.char_val_by_uuid_read_rsp.handle_value; - uint8_t *p_next = p_iter->p_value ? p_iter->p_value + value_len : p_first; - - if ((p_next - p_first) / (sizeof(uint16_t) + value_len) < p_gattc_evt->params.char_val_by_uuid_read_rsp.count) - { - p_iter->handle = (uint16_t)p_next[1] << 8 | p_next[0]; - p_iter->p_value = p_next + sizeof(uint16_t); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_NOT_FOUND; - } -} - -#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ - -#ifdef __cplusplus -} -#endif -#endif /* BLE_GATTC_H__ */ - -/** - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatts.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatts.h deleted file mode 100644 index e437b6e076..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_gatts.h +++ /dev/null @@ -1,845 +0,0 @@ -/* - * Copyright (c) 2011 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server - @{ - @brief Definitions and prototypes for the GATTS interface. - */ - -#ifndef BLE_GATTS_H__ -#define BLE_GATTS_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" -#include "ble_gatt.h" -#include "ble_gap.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations - * @{ */ - -/** - * @brief GATTS API SVC numbers. - */ -enum BLE_GATTS_SVCS -{ - SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ - SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ - SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ - SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ - SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ - SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ - SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ - SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ - SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ - SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ - SD_BLE_GATTS_SYS_ATTR_GET, /**< Retrieve the persistent system attributes. */ - SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, /**< Retrieve the first valid user handle. */ - SD_BLE_GATTS_ATTR_GET, /**< Retrieve the UUID and/or metadata of an attribute. */ - SD_BLE_GATTS_EXCHANGE_MTU_REPLY /**< Reply to Exchange MTU Request. */ -}; - -/** - * @brief GATT Server Event IDs. - */ -enum BLE_GATTS_EVTS -{ - BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. \n See @ref ble_gatts_evt_write_t. */ - BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. \n Reply with @ref sd_ble_gatts_rw_authorize_reply. \n See @ref ble_gatts_evt_rw_authorize_request_t. */ - BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending. \n Respond with @ref sd_ble_gatts_sys_attr_set. \n See @ref ble_gatts_evt_sys_attr_missing_t. */ - BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. \n See @ref ble_gatts_evt_hvc_t. */ - BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. \n No additional event structure applies. */ - BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. \n Reply with @ref sd_ble_gatts_exchange_mtu_reply. \n See @ref ble_gatts_evt_exchange_mtu_request_t. */ - BLE_GATTS_EVT_TIMEOUT, /**< Peer failed to respond to an ATT request in time. \n See @ref ble_gatts_evt_timeout_t. */ - BLE_GATTS_EVT_HVN_TX_COMPLETE /**< Handle Value Notification transmission complete. \n See @ref ble_gatts_evt_hvn_tx_complete_t. */ -}; - -/**@brief GATTS Configuration IDs. - * - * IDs that uniquely identify a GATTS configuration. - */ -enum BLE_GATTS_CFGS -{ - BLE_GATTS_CFG_SERVICE_CHANGED = BLE_GATTS_CFG_BASE, /**< Service changed configuration. */ - BLE_GATTS_CFG_ATTR_TAB_SIZE, /**< Attribute table size configuration. */ -}; - -/** @} */ - -/** @addtogroup BLE_GATTS_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS - * @{ */ -#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ -#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths - * @{ */ -#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ -#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ -/** @} */ - -/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types - * @{ */ -#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ -#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ -#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types - * @{ */ -#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ -#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ -#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ -#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_OPS GATT Server Operations - * @{ */ -#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ -/** @} */ - -/** @defgroup BLE_GATTS_VLOCS GATT Value Locations - * @{ */ -#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ -#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ -#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack - will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ -/** @} */ - -/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types - * @{ */ -#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ -#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ -#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ -/** @} */ - -/** @defgroup BLE_GATTS_SYS_ATTR_FLAGS System Attribute Flags - * @{ */ -#define BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS (1 << 0) /**< Restrict system attributes to system services only. */ -#define BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS (1 << 1) /**< Restrict system attributes to user services only. */ -/** @} */ - -/** @defgroup BLE_GATTS_SERVICE_CHANGED Service Changed Inclusion Values - * @{ - */ -#define BLE_GATTS_SERVICE_CHANGED_DEFAULT (1) /**< Default is to include the Service Changed characteristic in the Attribute Table. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_TAB_SIZE Attribute Table size - * @{ - */ -#define BLE_GATTS_ATTR_TAB_SIZE_MIN (248) /**< Minimum Attribute Table size */ -#define BLE_GATTS_ATTR_TAB_SIZE_DEFAULT (1408) /**< Default Attribute Table size. */ -/** @} */ - -/** @defgroup BLE_GATTS_DEFAULTS GATT Server defaults - * @{ - */ -#define BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Handle Value Notifications that can be queued for transmission. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATTS_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATTS connection configuration parameters, set with @ref sd_ble_cfg_set. - */ -typedef struct -{ - uint8_t hvn_tx_queue_size; /**< Minimum guaranteed number of Handle Value Notifications that can be queued for transmission. - The default value is @ref BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT */ -} ble_gatts_conn_cfg_t; - -/**@brief Attribute metadata. */ -typedef struct -{ - ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vlen :1; /**< Variable length attribute. */ - uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t rd_auth :1; /**< Read authorization and value will be requested from the application on every read operation. */ - uint8_t wr_auth :1; /**< Write authorization will be requested from the application on every Write Request operation (but not Write Command). */ -} ble_gatts_attr_md_t; - - -/**@brief GATT Attribute. */ -typedef struct -{ - ble_uuid_t const *p_uuid; /**< Pointer to the attribute UUID. */ - ble_gatts_attr_md_t const *p_attr_md; /**< Pointer to the attribute metadata structure. */ - uint16_t init_len; /**< Initial attribute value length in bytes. */ - uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ - uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ - uint8_t *p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer - that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. - The stack may access that memory directly without the application's knowledge. For writable characteristics, this value must not be a location in flash memory.*/ -} ble_gatts_attr_t; - -/**@brief GATT Attribute Value. */ -typedef struct -{ - uint16_t len; /**< Length in bytes to be written or read. Length in bytes written or read after successful return.*/ - uint16_t offset; /**< Attribute value offset. */ - uint8_t *p_value; /**< Pointer to where value is stored or will be stored. - If value is stored in user memory, only the attribute length is updated when p_value == NULL. - Set to NULL when reading to obtain the complete length of the attribute value */ -} ble_gatts_value_t; - - -/**@brief GATT Characteristic Presentation Format. */ -typedef struct -{ - uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ - int8_t exponent; /**< Exponent for integer data types. */ - uint16_t unit; /**< Unit from Bluetooth Assigned Numbers. */ - uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ - uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ -} ble_gatts_char_pf_t; - - -/**@brief GATT Characteristic metadata. */ -typedef struct -{ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ - uint8_t const *p_char_user_desc; /**< Pointer to a UTF-8 encoded string (non-NULL terminated), NULL if the descriptor is not required. */ - uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ - uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ - ble_gatts_char_pf_t const *p_char_pf; /**< Pointer to a presentation format structure or NULL if the CPF descriptor is not required. */ - ble_gatts_attr_md_t const *p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ - ble_gatts_attr_md_t const *p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ - ble_gatts_attr_md_t const *p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ -} ble_gatts_char_md_t; - - -/**@brief GATT Characteristic Definition Handles. */ -typedef struct -{ - uint16_t value_handle; /**< Handle to the characteristic value. */ - uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ -} ble_gatts_char_handles_t; - - -/**@brief GATT HVx parameters. */ -typedef struct -{ - uint16_t handle; /**< Characteristic Value Handle. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t offset; /**< Offset within the attribute value. */ - uint16_t *p_len; /**< Length in bytes to be written, length in bytes written after return. */ - uint8_t const *p_data; /**< Actual data content, use NULL to use the current attribute value. */ -} ble_gatts_hvx_params_t; - -/**@brief GATT Authorization parameters. */ -typedef struct -{ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint8_t update : 1; /**< If set, data supplied in p_data will be used to update the attribute value. - Please note that for @ref BLE_GATTS_AUTHORIZE_TYPE_WRITE operations this bit must always be set, - as the data to be written needs to be stored and later provided by the application. */ - uint16_t offset; /**< Offset of the attribute value being updated. */ - uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ - uint8_t const *p_data; /**< Pointer to new value used to update the attribute value. */ -} ble_gatts_authorize_params_t; - -/**@brief GATT Read or Write Authorize Reply parameters. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_authorize_params_t read; /**< Read authorization parameters. */ - ble_gatts_authorize_params_t write; /**< Write authorization parameters. */ - } params; /**< Reply Parameters. */ -} ble_gatts_rw_authorize_reply_params_t; - -/**@brief Service Changed Inclusion configuration parameters, set with @ref sd_ble_cfg_set. */ -typedef struct -{ - uint8_t service_changed : 1; /**< If 1, include the Service Changed characteristic in the Attribute Table. Default is @ref BLE_GATTS_SERVICE_CHANGED_DEFAULT. */ -} ble_gatts_cfg_service_changed_t; - -/**@brief Attribute table size configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: - * - The specified Attribute Table size is too small. - * The minimum acceptable size is defined by @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. - * - The specified Attribute Table size is not a multiple of 4. - */ -typedef struct -{ - uint32_t attr_tab_size; /**< Attribute table size. Default is @ref BLE_GATTS_ATTR_TAB_SIZE_DEFAULT, minimum is @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. */ -} ble_gatts_cfg_attr_tab_size_t; - -/**@brief Config structure for GATTS configurations. */ -typedef union -{ - ble_gatts_cfg_service_changed_t service_changed; /**< Include service changed characteristic, cfg_id is @ref BLE_GATTS_CFG_SERVICE_CHANGED. */ - ble_gatts_cfg_attr_tab_size_t attr_tab_size; /**< Attribute table size, cfg_id is @ref BLE_GATTS_CFG_ATTR_TAB_SIZE. */ -} ble_gatts_cfg_t; - - -/**@brief Event structure for @ref BLE_GATTS_EVT_WRITE. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_uuid_t uuid; /**< Attribute UUID. */ - uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ - uint8_t auth_required; /**< Writing operation deferred due to authorization requirement. Application may use @ref sd_ble_gatts_value_set to finalize the writing operation. */ - uint16_t offset; /**< Offset for the write operation. */ - uint16_t len; /**< Length of the received data. */ - uint8_t data[1]; /**< Received data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gatts_evt_write_t; - -/**@brief Event substructure for authorized read requests, see @ref ble_gatts_evt_rw_authorize_request_t. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_uuid_t uuid; /**< Attribute UUID. */ - uint16_t offset; /**< Offset for the read operation. */ -} ble_gatts_evt_read_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ - ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ - } request; /**< Request Parameters. */ -} ble_gatts_evt_rw_authorize_request_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. */ -typedef struct -{ - uint8_t hint; /**< Hint (currently unused). */ -} ble_gatts_evt_sys_attr_missing_t; - - -/**@brief Event structure for @ref BLE_GATTS_EVT_HVC. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ -} ble_gatts_evt_hvc_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST. */ -typedef struct -{ - uint16_t client_rx_mtu; /**< Client RX MTU size. */ -} ble_gatts_evt_exchange_mtu_request_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gatts_evt_timeout_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_HVN_TX_COMPLETE. */ -typedef struct -{ - uint8_t count; /**< Number of notification transmissions completed. */ -} ble_gatts_evt_hvn_tx_complete_t; - -/**@brief GATTS event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which the event occurred. */ - union - { - ble_gatts_evt_write_t write; /**< Write Event Parameters. */ - ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ - ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ - ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ - ble_gatts_evt_exchange_mtu_request_t exchange_mtu_request; /**< Exchange MTU Request Event Parameters. */ - ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ - ble_gatts_evt_hvn_tx_complete_t hvn_tx_complete; /**< Handle Value Notification transmission complete Event Parameters. */ - } params; /**< Event Parameters. */ -} ble_gatts_evt_t; - -/** @} */ - -/** @addtogroup BLE_GATTS_FUNCTIONS Functions - * @{ */ - -/**@brief Add a service declaration to the Attribute Table. - * - * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to - * add a secondary service declaration that is not referenced by another service later in the Attribute Table. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. - * @param[in] p_uuid Pointer to service UUID. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a service declaration. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const *p_uuid, uint16_t *p_handle)); - - -/**@brief Add an include declaration to the Attribute Table. - * - * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential population is supported at this time). - * - * @note The included service must already be present in the Attribute Table prior to this call. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] service_handle Handle of the service where the included service is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] inc_srvc_handle Handle of the included service. - * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added an include declaration. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. - * @retval ::NRF_ERROR_NOT_SUPPORTED Feature is not supported, service_handle must be that of the last added service. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - */ -SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *p_include_handle)); - - -/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the Attribute Table. - * - * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential population is supported at this time). - * - * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writable auxiliaries bits, - * readable (no security) and writable (selectable) CCCDs and SCCDs and valid presentation format values. - * - * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] service_handle Handle of the service where the characteristic is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_char_md Characteristic metadata. - * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. - * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a characteristic. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const *p_char_md, ble_gatts_attr_t const *p_attr_char_value, ble_gatts_char_handles_t *p_handles)); - - -/**@brief Add a descriptor to the Attribute Table. - * - * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential population is supported at this time). - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_attr Pointer to the attribute structure. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a descriptor. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const *p_attr, uint16_t *p_handle)); - -/**@brief Set the value of a given attribute. - * - * @note Values other than system attributes can be set at any time, regardless of whether any active connections exist. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. - * @param[in] handle Attribute handle. - * @param[in,out] p_value Attribute value information. - * - * @retval ::NRF_SUCCESS Successfully set the value of the attribute. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. - */ -SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); - -/**@brief Get the value of a given attribute. - * - * @note If the attribute value is longer than the size of the supplied buffer, - * @ref ble_gatts_value_t::len will return the total attribute value length (excluding offset), - * and not the number of bytes actually returned in @ref ble_gatts_value_t::p_value. - * The application may use this information to allocate a suitable buffer size. - * - * @note When retrieving system attribute values with this function, the connection handle - * may refer to an already disconnected connection. Refer to the documentation of - * @ref sd_ble_gatts_sys_attr_get for further information. - * - * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. - * @param[in] handle Attribute handle. - * @param[in,out] p_value Attribute value information. - * - * @retval ::NRF_SUCCESS Successfully retrieved the value of the attribute. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid attribute offset supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - */ -SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); - -/**@brief Notify or Indicate an attribute value. - * - * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation - * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that - * the application can atomically perform a value update and a server initiated transaction with a single API call. - * - * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. - * The Attribute Table has been updated if one of the following error codes is returned: @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, - * @ref NRF_ERROR_FORBIDDEN, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and @ref NRF_ERROR_RESOURCES. - * The caller can check whether the value has been updated by looking at the contents of *(@ref ble_gatts_hvx_params_t::p_len). - * - * @note Only one indication procedure can be ongoing per connection at a time. - * If the application tries to indicate an attribute value while another indication procedure is ongoing, - * the function call will return @ref NRF_ERROR_BUSY. - * A @ref BLE_GATTS_EVT_HVC event will be issued as soon as the confirmation arrives from the peer. - * - * @note The number of Handle Value Notifications that can be queued is configured by @ref ble_gatts_conn_cfg_t::hvn_tx_queue_size - * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. - * A @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event will be issued as soon as the transmission of the notification is complete. - * - * @note The application can keep track of the available queue element count for notifications by following the procedure below: - * - Store initial queue element count in a variable. - * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. - * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event. - * - * @events - * @event{@ref BLE_GATTS_EVT_HVN_TX_COMPLETE, Notification transmission complete.} - * @event{@ref BLE_GATTS_EVT_HVC, Confirmation received from the peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} - * @mmsc{@ref BLE_GATTS_HVN_MSC} - * @mmsc{@ref BLE_GATTS_HVI_MSC} - * @mmsc{@ref BLE_GATTS_HVX_DISABLED_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in,out] p_hvx_params Pointer to an HVx parameters structure. If @ref ble_gatts_hvx_params_t::p_data - * contains a non-NULL pointer the attribute value will be updated with the contents - * pointed by it before sending the notification or indication. If the attribute value - * is updated, @ref ble_gatts_hvx_params_t::p_len is updated by the SoftDevice to - * contain the number of actual bytes written, else it will be set to 0. - * - * @retval ::NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: - * - Invalid Connection State - * - Notifications and/or indications not enabled in the CCCD - * - An ATT_MTU exchange is ongoing - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. - * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_FORBIDDEN The connection's current security level is lower than the one required by the write permissions of the CCCD associated with this characteristic. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_BUSY For @ref BLE_GATT_HVX_INDICATION Procedure already in progress. Wait for a @ref BLE_GATTS_EVT_HVC event and retry. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @retval ::NRF_ERROR_RESOURCES Too many notifications queued. - * Wait for a @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event and retry. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const *p_hvx_params)); - -/**@brief Indicate the Service Changed attribute value. - * - * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the Attribute - * Table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will - * be issued. - * - * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. - * - * @events - * @event{@ref BLE_GATTS_EVT_SC_CONFIRM, Confirmation of attribute table change received from peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTS_SC_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] start_handle Start of affected attribute handle range. - * @param[in] end_handle End of affected attribute handle range. - * - * @retval ::NRF_SUCCESS Successfully queued the Service Changed indication for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_NOT_SUPPORTED Service Changed not enabled at initialization. See @ref - * sd_ble_cfg_set and @ref ble_gatts_cfg_service_changed_t. - * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: - * - Invalid Connection State - * - Notifications and/or indications not enabled in the CCCD - * - An ATT_MTU exchange is ongoing - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. - * @retval ::NRF_ERROR_BUSY Procedure already in progress. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); - -/**@brief Respond to a Read/Write authorization request. - * - * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_READ_REQ_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_WRITE_REQ_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. - * - * @note @ref ble_gatts_authorize_params_t::p_data is ignored when this function is used to respond - * to a @ref BLE_GATTS_AUTHORIZE_TYPE_READ event if @ref ble_gatts_authorize_params_t::update - * is set to 0. - * - * @retval ::NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, Attribute Table updated. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no authorization request pending. - * @retval ::NRF_ERROR_INVALID_PARAM Authorization op invalid, - * handle supplied does not match requested handle, - * or invalid data to be written provided by the application. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const *p_rw_authorize_reply_params)); - - -/**@brief Update persistent system attribute information. - * - * @details Supply information about persistent system attributes to the stack, - * previously obtained using @ref sd_ble_gatts_sys_attr_get. - * This call is only allowed for active connections, and is usually - * made immediately after a connection is established with an known bonded device, - * often as a response to a @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. - * - * p_sysattrs may point directly to the application's stored copy of the system attributes - * obtained using @ref sd_ble_gatts_sys_attr_get. - * If the pointer is NULL, the system attribute info is initialized, assuming that - * the application does not have any previously saved system attribute data for this device. - * - * @note The state of persistent system attributes is reset upon connection establishment and then remembered for its duration. - * - * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. - * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or - * reset the SoftDevice to return to a known state. - * - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be modified. - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be modified. - * - * @mscs - * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC} - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. - * @param[in] len Size of data pointed by p_sys_attr_data, in octets. - * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS - * - * @retval ::NRF_SUCCESS Successfully set the system attribute information. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. - * @retval ::NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const *p_sys_attr_data, uint16_t len, uint32_t flags)); - - -/**@brief Retrieve persistent system attribute information from the stack. - * - * @details This call is used to retrieve information about values to be stored persistently by the application - * during the lifetime of a connection or after it has been terminated. When a new connection is established with the same bonded device, - * the system attribute information retrieved with this function should be restored using using @ref sd_ble_gatts_sys_attr_set. - * If retrieved after disconnection, the data should be read before a new connection established. The connection handle for - * the previous, now disconnected, connection will remain valid until a new one is created to allow this API call to refer to it. - * Connection handles belonging to active connections can be used as well, but care should be taken since the system attributes - * may be written to at any time by the peer during a connection's lifetime. - * - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be returned. - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be returned. - * - * @mscs - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle of the recently terminated connection. - * @param[out] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. The format of the data is described - * in @ref BLE_GATTS_SYS_ATTRS_FORMAT. NULL can be provided to obtain the length of the data. - * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditionally updated to actual length of system attribute data. - * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS - * - * @retval ::NRF_SUCCESS Successfully retrieved the system attribute information. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. - * @retval ::NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. - * @retval ::NRF_ERROR_NOT_FOUND No system attributes found. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t *p_sys_attr_data, uint16_t *p_len, uint32_t flags)); - - -/**@brief Retrieve the first valid user attribute handle. - * - * @param[out] p_handle Pointer to an integer where the handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully retrieved the handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, uint32_t, sd_ble_gatts_initial_user_handle_get(uint16_t *p_handle)); - -/**@brief Retrieve the attribute UUID and/or metadata. - * - * @param[in] handle Attribute handle - * @param[out] p_uuid UUID of the attribute. Use NULL to omit this field. - * @param[out] p_md Metadata of the attribute. Use NULL to omit this field. - * - * @retval ::NRF_SUCCESS Successfully retrieved the attribute metadata, - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. Returned when both @c p_uuid and @c p_md are NULL. - * @retval ::NRF_ERROR_NOT_FOUND Attribute was not found. - */ -SVCALL(SD_BLE_GATTS_ATTR_GET, uint32_t, sd_ble_gatts_attr_get(uint16_t handle, ble_uuid_t * p_uuid, ble_gatts_attr_md_t * p_md)); - -/**@brief Reply to an ATT_MTU exchange request by sending an Exchange MTU Response to the client. - * - * @details This function is only used to reply to a @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST event. - * - * @details The SoftDevice sets ATT_MTU to the minimum of: - * - The Client RX MTU value from @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, and - * - The Server RX MTU value. - * - * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. - * - * @mscs - * @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] server_rx_mtu Server RX MTU size. - * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration - * used for this connection. - * - The value must be equal to Client RX MTU size given in @ref sd_ble_gattc_exchange_mtu_request - * if an ATT_MTU exchange has already been performed in the other direction. - * - * @retval ::NRF_SUCCESS Successfully sent response to the client. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no ATT_MTU exchange request pending. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid Server RX MTU size supplied. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_EXCHANGE_MTU_REPLY, uint32_t, sd_ble_gatts_exchange_mtu_reply(uint16_t conn_handle, uint16_t server_rx_mtu)); -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GATTS_H__ - -/** - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_hci.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_hci.h deleted file mode 100644 index f0dde9a03a..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_hci.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_COMMON - @{ -*/ - - -#ifndef BLE_HCI_H__ -#define BLE_HCI_H__ -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes - * @{ */ - -#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 /**< Success. */ -#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 /**< Unknown BLE Command. */ -#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 /**< Unknown Connection Identifier. */ -/*0x03 Hardware Failure -0x04 Page Timeout -*/ -#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 /**< Authentication Failure. */ -#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 /**< Pin or Key missing. */ -#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 /**< Memory Capacity Exceeded. */ -#define BLE_HCI_CONNECTION_TIMEOUT 0x08 /**< Connection Timeout. */ -/*0x09 Connection Limit Exceeded -0x0A Synchronous Connection Limit To A Device Exceeded -0x0B ACL Connection Already Exists*/ -#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C /**< Command Disallowed. */ -/*0x0D Connection Rejected due to Limited Resources -0x0E Connection Rejected Due To Security Reasons -0x0F Connection Rejected due to Unacceptable BD_ADDR -0x10 Connection Accept Timeout Exceeded -0x11 Unsupported Feature or Parameter Value*/ -#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 /**< Invalid BLE Command Parameters. */ -#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 /**< Remote User Terminated Connection. */ -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 /**< Remote Device Terminated Connection due to low resources.*/ -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 /**< Remote Device Terminated Connection due to power off. */ -#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 /**< Local Host Terminated Connection. */ -/* -0x17 Repeated Attempts -0x18 Pairing Not Allowed -0x19 Unknown LMP PDU -*/ -#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A /**< Unsupported Remote Feature. */ -/* -0x1B SCO Offset Rejected -0x1C SCO Interval Rejected -0x1D SCO Air Mode Rejected*/ -#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E /**< Invalid LMP Parameters. */ -#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F /**< Unspecified Error. */ -/*0x20 Unsupported LMP Parameter Value -0x21 Role Change Not Allowed -*/ -#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 /**< LMP Response Timeout. */ -#define BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION 0x23 /**< LMP Error Transaction Collision/LL Procedure Collision. */ -#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 /**< LMP PDU Not Allowed. */ -/*0x25 Encryption Mode Not Acceptable -0x26 Link Key Can Not be Changed -0x27 Requested QoS Not Supported -*/ -#define BLE_HCI_INSTANT_PASSED 0x28 /**< Instant Passed. */ -#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 /**< Pairing with Unit Key Unsupported. */ -#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A /**< Different Transaction Collision. */ -/* -0x2B Reserved -0x2C QoS Unacceptable Parameter -0x2D QoS Rejected -0x2E Channel Classification Not Supported -0x2F Insufficient Security -*/ -#define BLE_HCI_PARAMETER_OUT_OF_MANDATORY_RANGE 0x30 /**< Parameter Out Of Mandatory Range. */ -/* -0x31 Reserved -0x32 Role Switch Pending -0x33 Reserved -0x34 Reserved Slot Violation -0x35 Role Switch Failed -0x36 Extended Inquiry Response Too Large -0x37 Secure Simple Pairing Not Supported By Host. -0x38 Host Busy - Pairing -0x39 Connection Rejected due to No Suitable Channel Found*/ -#define BLE_HCI_CONTROLLER_BUSY 0x3A /**< Controller Busy. */ -#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B /**< Connection Interval Unacceptable. */ -#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C /**< Directed Advertisement Timeout. */ -#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D /**< Connection Terminated due to MIC Failure. */ -#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E /**< Connection Failed to be Established. */ - -/** @} */ - - -#ifdef __cplusplus -} -#endif -#endif // BLE_HCI_H__ - -/** @} */ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_ranges.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_ranges.h deleted file mode 100644 index 493dd43eb5..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_ranges.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_ranges Module specific SVC, event and option number subranges - @{ - - @brief Definition of SVC, event and option number subranges for each API module. - - @note - SVCs, event and option numbers are split into subranges for each API module. - Each module receives its entire allocated range of SVC calls, whether implemented or not, - but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. - - Note that the symbols BLE__SVC_LAST is the end of the allocated SVC range, - rather than the last SVC function call actually defined and implemented. - - Specific SVC, event and option values are defined in each module's ble_.h file, - which defines names of each individual SVC code based on the range start value. -*/ - -#ifndef BLE_RANGES_H__ -#define BLE_RANGES_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#define BLE_SVC_BASE 0x60 /**< Common BLE SVC base. */ -#define BLE_SVC_LAST 0x6B /**< Common BLE SVC last. */ - -#define BLE_GAP_SVC_BASE 0x6C /**< GAP BLE SVC base. */ -#define BLE_GAP_SVC_LAST 0x9A /**< GAP BLE SVC last. */ - -#define BLE_GATTC_SVC_BASE 0x9B /**< GATTC BLE SVC base. */ -#define BLE_GATTC_SVC_LAST 0xA7 /**< GATTC BLE SVC last. */ - -#define BLE_GATTS_SVC_BASE 0xA8 /**< GATTS BLE SVC base. */ -#define BLE_GATTS_SVC_LAST 0xB7 /**< GATTS BLE SVC last. */ - - - -#define BLE_EVT_INVALID 0x00 /**< Invalid BLE Event. */ - -#define BLE_EVT_BASE 0x01 /**< Common BLE Event base. */ -#define BLE_EVT_LAST 0x0F /**< Common BLE Event last. */ - -#define BLE_GAP_EVT_BASE 0x10 /**< GAP BLE Event base. */ -#define BLE_GAP_EVT_LAST 0x2F /**< GAP BLE Event last. */ - -#define BLE_GATTC_EVT_BASE 0x30 /**< GATTC BLE Event base. */ -#define BLE_GATTC_EVT_LAST 0x4F /**< GATTC BLE Event last. */ - -#define BLE_GATTS_EVT_BASE 0x50 /**< GATTS BLE Event base. */ -#define BLE_GATTS_EVT_LAST 0x6F /**< GATTS BLE Event last. */ - - - -#define BLE_OPT_INVALID 0x00 /**< Invalid BLE Option. */ - -#define BLE_OPT_BASE 0x01 /**< Common BLE Option base. */ -#define BLE_OPT_LAST 0x1F /**< Common BLE Option last. */ - -#define BLE_GAP_OPT_BASE 0x20 /**< GAP BLE Option base. */ -#define BLE_GAP_OPT_LAST 0x3F /**< GAP BLE Option last. */ - -#define BLE_GATT_OPT_BASE 0x40 /**< GATT BLE Option base. */ -#define BLE_GATT_OPT_LAST 0x5F /**< GATT BLE Option last. */ - -#define BLE_GATTC_OPT_BASE 0x60 /**< GATTC BLE Option base. */ -#define BLE_GATTC_OPT_LAST 0x7F /**< GATTC BLE Option last. */ - -#define BLE_GATTS_OPT_BASE 0x80 /**< GATTS BLE Option base. */ -#define BLE_GATTS_OPT_LAST 0x9F /**< GATTS BLE Option last. */ - - - -#define BLE_CFG_INVALID 0x00 /**< Invalid BLE configuration. */ - -#define BLE_CFG_BASE 0x01 /**< Common BLE configuration base. */ -#define BLE_CFG_LAST 0x1F /**< Common BLE configuration last. */ - -#define BLE_CONN_CFG_BASE 0x20 /**< BLE connection configuration base. */ -#define BLE_CONN_CFG_LAST 0x3F /**< BLE connection configuration last. */ - -#define BLE_GAP_CFG_BASE 0x40 /**< GAP BLE configuration base. */ -#define BLE_GAP_CFG_LAST 0x5F /**< GAP BLE configuration last. */ - -#define BLE_GATT_CFG_BASE 0x60 /**< GATT BLE configuration base. */ -#define BLE_GATT_CFG_LAST 0x7F /**< GATT BLE configuration last. */ - -#define BLE_GATTC_CFG_BASE 0x80 /**< GATTC BLE configuration base. */ -#define BLE_GATTC_CFG_LAST 0x9F /**< GATTC BLE configuration last. */ - -#define BLE_GATTS_CFG_BASE 0xA0 /**< GATTS BLE configuration base. */ -#define BLE_GATTS_CFG_LAST 0xBF /**< GATTS BLE configuration last. */ - - - - - - -#ifdef __cplusplus -} -#endif -#endif /* BLE_RANGES_H__ */ - -/** - @} - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_types.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_types.h deleted file mode 100644 index 88c93180c8..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/ble_types.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_types Common types and macro definitions - @{ - - @brief Common types and macro definitions for the BLE SoftDevice. - */ - -#ifndef BLE_TYPES_H__ -#define BLE_TYPES_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_TYPES_DEFINES Defines - * @{ */ - -/** @defgroup BLE_CONN_HANDLES BLE Connection Handles - * @{ */ -#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ -#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ -/** @} */ - - -/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs - * @{ */ -/* Generic UUIDs, applicable to all services */ -#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ -#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ -#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ -#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ -#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ -#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ -/* GATT specific UUIDs */ -#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ -#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ -/* GAP specific UUIDs */ -#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ -#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_CAR 0x2AA6 /**< Central Address Resolution Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RPA_ONLY 0x2AC9 /**< Resolvable Private Address Only Characteristic. */ -/** @} */ - - -/** @defgroup BLE_UUID_TYPES Types of UUID - * @{ */ -#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ -#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ -#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ -/** @} */ - - -/** @defgroup BLE_APPEARANCES Bluetooth Appearance values - * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml - * @{ */ -#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ -#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ -#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ -#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ -#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ -#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ -#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ -#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ -#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ -#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ -#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ -#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ -#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ -#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ -#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ -#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ -#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ -#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ -#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ -#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ -#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ -#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystick (HID Subtype). */ -#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ -#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ -#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ -#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ -#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ -#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ -#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ -#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ -#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ -#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ -#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ -#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 3136 /**< Generic Pulse Oximeter. */ -#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 3137 /**< Fingertip (Pulse Oximeter subtype). */ -#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN 3138 /**< Wrist Worn(Pulse Oximeter subtype). */ -#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE 3200 /**< Generic Weight Scale. */ -#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT 5184 /**< Generic Outdoor Sports Activity. */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP 5185 /**< Location Display Device (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD 5187 /**< Location Pod (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD 5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */ -/** @} */ - -/** @brief Set .type and .uuid fields of ble_uuid_struct to specified UUID value. */ -#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ - instance.type = BLE_UUID_TYPE_BLE; \ - instance.uuid = value;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ -#define BLE_UUID_COPY_PTR(dst, src) do {\ - (dst)->type = (src)->type; \ - (dst)->uuid = (src)->uuid;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ -#define BLE_UUID_COPY_INST(dst, src) do {\ - (dst).type = (src).type; \ - (dst).uuid = (src).uuid;} while(0) - -/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) - -/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) - -/** @} */ - -/** @addtogroup BLE_TYPES_STRUCTURES Structures - * @{ */ - -/** @brief 128 bit UUID values. */ -typedef struct -{ - uint8_t uuid128[16]; /**< Little-Endian UUID bytes. */ -} ble_uuid128_t; - -/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ -typedef struct -{ - uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ - uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is @ref BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ -} ble_uuid_t; - -/**@brief Data structure. */ -typedef struct -{ - uint8_t *p_data; /**< Pointer to the data buffer provided to/from the application. */ - uint16_t len; /**< Length of the data buffer, in bytes. */ -} ble_data_t; - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* BLE_TYPES_H__ */ - -/** - @} - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf52/nrf_mbr.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf52/nrf_mbr.h deleted file mode 100644 index cc5971c7a3..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf52/nrf_mbr.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2014 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @defgroup nrf_mbr_api Master Boot Record API - @{ - - @brief APIs for updating SoftDevice and BootLoader - -*/ - -#ifndef NRF_MBR_H__ -#define NRF_MBR_H__ - -#include "nrf_svc.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup NRF_MBR_DEFINES Defines - * @{ */ - -/**@brief MBR SVC Base number. */ -#define MBR_SVC_BASE (0x18) - -/**@brief Page size in words. */ -#define MBR_PAGE_SIZE_IN_WORDS (1024) - -/** @brief The size that must be reserved for the MBR when a SoftDevice is written to flash. -This is the offset where the first byte of the SoftDevice hex file is written.*/ -#define MBR_SIZE (0x1000) - -/** @} */ - -/** @addtogroup NRF_MBR_ENUMS Enumerations - * @{ */ - -/**@brief nRF Master Boot Record API SVC numbers. */ -enum NRF_MBR_SVCS -{ - SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */ -}; - -/**@brief Possible values for ::sd_mbr_command_t.command */ -enum NRF_MBR_COMMANDS -{ - SD_MBR_COMMAND_COPY_BL, /**< Copy a new BootLoader. @see ::sd_mbr_command_copy_bl_t*/ - SD_MBR_COMMAND_COPY_SD, /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/ - SD_MBR_COMMAND_INIT_SD, /**< Initialize forwarding interrupts to SD, and run reset function in SD. Does not require any parameters in ::sd_mbr_command_t params.*/ - SD_MBR_COMMAND_COMPARE, /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/ - SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Change the address the MBR starts after a reset. @see ::sd_mbr_command_vector_table_base_set_t*/ - SD_MBR_COMMAND_RESERVED, - SD_MBR_COMMAND_IRQ_FORWARD_ADDRESS_SET, /**< Start forwarding all interrupts to this address. @see ::sd_mbr_command_irq_forward_address_set_t*/ -}; - -/** @} */ - -/** @addtogroup NRF_MBR_TYPES Types - * @{ */ - -/**@brief This command copies part of a new SoftDevice - * - * The destination area is erased before copying. - * If dst is in the middle of a flash page, that whole flash page will be erased. - * If (dst+len) is in the middle of a flash page, that whole flash page will be erased. - * - * The user of this function is responsible for setting the BPROT registers. - * - * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly. - * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying. - */ -typedef struct -{ - uint32_t *src; /**< Pointer to the source of data to be copied.*/ - uint32_t *dst; /**< Pointer to the destination where the content is to be copied.*/ - uint32_t len; /**< Number of 32 bit words to copy. Must be a multiple of @ref MBR_PAGE_SIZE_IN_WORDS words.*/ -} sd_mbr_command_copy_sd_t; - - -/**@brief This command works like memcmp, but takes the length in words. - * - * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal. - * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal. - */ -typedef struct -{ - uint32_t *ptr1; /**< Pointer to block of memory. */ - uint32_t *ptr2; /**< Pointer to block of memory. */ - uint32_t len; /**< Number of 32 bit words to compare.*/ -} sd_mbr_command_compare_t; - - -/**@brief This command copies a new BootLoader. - * - * With this command, destination of BootLoader is always the address written in - * NRF_UICR->BOOTADDR. - * - * Destination is erased by this function. - * If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased. - * - * This function will use PROTENSET to protect the flash that is not intended to be written. - * - * On success, this function will not return. It will start the new BootLoader from reset-vector as normal. - * - * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. - * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set. - * @retval ::NRF_ERROR_INVALID_LENGTH if parameters attempts to read or write outside flash area. - * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) - */ -typedef struct -{ - uint32_t *bl_src; /**< Pointer to the source of the Bootloader to be be copied.*/ - uint32_t bl_len; /**< Number of 32 bit words to copy for BootLoader. */ -} sd_mbr_command_copy_bl_t; - -/**@brief Change the address the MBR starts after a reset - * - * Once this function has been called, this address is where the MBR will start to forward - * interrupts to after a reset. - * - * To restore default forwarding this function should be called with @ref address set to 0. The - * MBR will then start forwarding interrupts to the address in NFR_UICR->BOOTADDR or to the - * SoftDevice if the BOOTADDR is not set. - * - * On success, this function will not return. It will reset the device. - * - * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. - * @retval ::NRF_ERROR_INVALID_ADDR if parameter address is outside of the flash size. - * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) - */ -typedef struct -{ - uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ -} sd_mbr_command_vector_table_base_set_t; - -/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR - * - * Unlike sd_mbr_command_vector_table_base_set_t, this function does not reset, and it does not - * change where the MBR starts after reset. - * - * @retval ::NRF_SUCCESS - */ -typedef struct -{ - uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ -} sd_mbr_command_irq_forward_address_set_t; - -/**@brief Input structure containing data used when calling ::sd_mbr_command - * - * Depending on what command value that is set, the corresponding params value type must also be - * set. See @ref NRF_MBR_COMMANDS for command types and corresponding params value type. If command - * @ref SD_MBR_COMMAND_INIT_SD is set, it is not necessary to set any values under params. - */ -typedef struct -{ - uint32_t command; /**< Type of command to be issued. See @ref NRF_MBR_COMMANDS. */ - union - { - sd_mbr_command_copy_sd_t copy_sd; /**< Parameters for copy SoftDevice.*/ - sd_mbr_command_compare_t compare; /**< Parameters for verify.*/ - sd_mbr_command_copy_bl_t copy_bl; /**< Parameters for copy BootLoader. Requires parameter page. */ - sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set. Requires parameter page.*/ - sd_mbr_command_irq_forward_address_set_t irq_forward_address_set; /**< Parameters for irq forward address set*/ - } params; /**< Command parameters. */ -} sd_mbr_command_t; - -/** @} */ - -/** @addtogroup NRF_MBR_FUNCTIONS Functions - * @{ */ - -/**@brief Issue Master Boot Record commands - * - * Commands used when updating a SoftDevice and bootloader. - * - * The @ref SD_MBR_COMMAND_COPY_BL and @ref SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET requires - * parameters to be retained by the MBR when resetting the IC. This is done in a separate flash - * page provided by the application. The UICR register UICR.NRFFW[1] must be set to an address - * corresponding to a page in the application flash space. This page will be cleared by the MBR and - * used to store the command before reset. When the UICR.NRFFW[1] field is set the page it refers - * to must not be used by the application. If the UICR.NRFFW[1] is set to 0xFFFFFFFF (the default) - * MBR commands which use flash will be unavailable and return @ref NRF_ERROR_NO_MEM. - * - * @param[in] param Pointer to a struct describing the command. - * - * @note For return values, see ::sd_mbr_command_copy_sd_t, ::sd_mbr_command_copy_bl_t, - * ::sd_mbr_command_compare_t, ::sd_mbr_command_vector_table_base_set_t, - * ::sd_mbr_command_irq_forward_address_set_t - * - * @retval ::NRF_ERROR_NO_MEM if UICR.NRFFW[1] is not set (i.e. is 0xFFFFFFFF). - * @retval ::NRF_ERROR_INVALID_PARAM if an invalid command is given. -*/ -SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_MBR_H__ - -/** - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_ble.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_ble.h deleted file mode 100644 index ad6b58f42f..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_ble.h +++ /dev/null @@ -1,617 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup BLE_COMMON BLE SoftDevice Common - @{ - @defgroup ble_api Events, type definitions and API calls - @{ - - @brief Module independent events, type definitions and API calls for the BLE SoftDevice. - - */ - -#ifndef BLE_H__ -#define BLE_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_err.h" -#include "ble_gap.h" -#include "ble_gatt.h" -#include "ble_gattc.h" -#include "ble_gatts.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations - * @{ */ - -/** - * @brief Common API SVC numbers. - */ -enum BLE_COMMON_SVCS -{ - SD_BLE_ENABLE = BLE_SVC_BASE, /**< Enable and initialize the BLE stack */ - SD_BLE_EVT_GET, /**< Get an event from the pending events queue. */ - SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific UUID. */ - SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ - SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ - SD_BLE_VERSION_GET, /**< Get the local version information (company ID, Link Layer Version, Link Layer Subversion). */ - SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ - SD_BLE_OPT_SET, /**< Set a BLE option. */ - SD_BLE_OPT_GET, /**< Get a BLE option. */ - SD_BLE_CFG_SET, /**< Add a configuration to the BLE stack. */ -}; - -/** - * @brief BLE Module Independent Event IDs. - */ -enum BLE_COMMON_EVTS -{ - BLE_EVT_USER_MEM_REQUEST = BLE_EVT_BASE + 0, /**< User Memory request. @ref ble_evt_user_mem_request_t */ - BLE_EVT_USER_MEM_RELEASE = BLE_EVT_BASE + 1, /**< User Memory release. @ref ble_evt_user_mem_release_t */ -}; - -/**@brief BLE Connection Configuration IDs. - * - * IDs that uniquely identify a connection configuration. - */ -enum BLE_CONN_CFGS -{ - BLE_CONN_CFG_GAP = BLE_CONN_CFG_BASE + 0, /**< BLE GAP specific connection configuration. */ - BLE_CONN_CFG_GATTC = BLE_CONN_CFG_BASE + 1, /**< BLE GATTC specific connection configuration. */ - BLE_CONN_CFG_GATTS = BLE_CONN_CFG_BASE + 2, /**< BLE GATTS specific connection configuration. */ - BLE_CONN_CFG_GATT = BLE_CONN_CFG_BASE + 3, /**< BLE GATT specific connection configuration. */ -}; - -/**@brief BLE Common Configuration IDs. - * - * IDs that uniquely identify a common configuration. - */ -enum BLE_COMMON_CFGS -{ - BLE_COMMON_CFG_VS_UUID = BLE_CFG_BASE, /**< Vendor specific UUID configuration */ -}; - -/**@brief Common Option IDs. - * IDs that uniquely identify a common option. - */ -enum BLE_COMMON_OPTS -{ - BLE_COMMON_OPT_PA_LNA = BLE_OPT_BASE + 0, /**< PA and LNA options */ - BLE_COMMON_OPT_CONN_EVT_EXT = BLE_OPT_BASE + 1, /**< Extended connection events option */ -}; - -/** @} */ - -/** @addtogroup BLE_COMMON_DEFINES Defines - * @{ */ - -/** @brief Required pointer alignment for BLE Events. -*/ -#define BLE_EVT_PTR_ALIGNMENT 4 - -/** @brief Leaves the maximum of the two arguments. -*/ -#define BLE_MAX(a, b) ((a) < (b) ? (b) : (a)) - -/** @brief Maximum possible length for BLE Events. - * @note The highest value used for @ref ble_gatt_conn_cfg_t::att_mtu in any connection configuration shall be used as a parameter. - * If that value has not been configured for any connections then @ref BLE_GATT_ATT_MTU_DEFAULT must be used instead. -*/ -#define BLE_EVT_LEN_MAX(ATT_MTU) ( \ - offsetof(ble_evt_t, evt.gattc_evt.params.prim_srvc_disc_rsp.services) + ((ATT_MTU) - 1) / 4 * sizeof(ble_gattc_service_t) \ -) - -/** @defgroup BLE_USER_MEM_TYPES User Memory Types - * @{ */ -#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ -#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ -/** @} */ - -/** @defgroup BLE_UUID_VS_COUNTS Vendor Specific UUID counts - * @{ - */ -#define BLE_UUID_VS_COUNT_DEFAULT 10 /**< Default VS UUID count. */ -#define BLE_UUID_VS_COUNT_MAX 254 /**< Maximum VS UUID count. */ -/** @} */ - -/** @defgroup BLE_COMMON_CFG_DEFAULTS Configuration defaults. - * @{ - */ -#define BLE_CONN_CFG_TAG_DEFAULT 0 /**< Default configuration tag, SoftDevice default connection configuration. */ - -/** @} */ - -/** @} */ - -/** @addtogroup BLE_COMMON_STRUCTURES Structures - * @{ */ - -/**@brief User Memory Block. */ -typedef struct -{ - uint8_t *p_mem; /**< Pointer to the start of the user memory block. */ - uint16_t len; /**< Length in bytes of the user memory block. */ -} ble_user_mem_block_t; - -/**@brief Event structure for @ref BLE_EVT_USER_MEM_REQUEST. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ -} ble_evt_user_mem_request_t; - -/**@brief Event structure for @ref BLE_EVT_USER_MEM_RELEASE. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ - ble_user_mem_block_t mem_block; /**< User memory block */ -} ble_evt_user_mem_release_t; - -/**@brief Event structure for events not associated with a specific function module. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which this event occurred. */ - union - { - ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ - ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ - } params; /**< Event parameter union. */ -} ble_common_evt_t; - -/**@brief BLE Event header. */ -typedef struct -{ - uint16_t evt_id; /**< Value from a BLE__EVT series. */ - uint16_t evt_len; /**< Length in octets including this header. */ -} ble_evt_hdr_t; - -/**@brief Common BLE Event type, wrapping the module specific event reports. */ -typedef struct -{ - ble_evt_hdr_t header; /**< Event header. */ - union - { - ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ - ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ - ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ - ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ - } evt; /**< Event union. */ -} ble_evt_t; - - -/** - * @brief Version Information. - */ -typedef struct -{ - uint8_t version_number; /**< Link Layer Version number. See https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer for assigned values. */ - uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ - uint16_t subversion_number; /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */ -} ble_version_t; - -/** - * @brief Configuration parameters for the PA and LNA. - */ -typedef struct -{ - uint8_t enable :1; /**< Enable toggling for this amplifier */ - uint8_t active_high :1; /**< Set the pin to be active high */ - uint8_t gpio_pin :6; /**< The GPIO pin to toggle for this amplifier */ -} ble_pa_lna_cfg_t; - -/** - * @brief PA & LNA GPIO toggle configuration - * - * This option configures the SoftDevice to toggle pins when the radio is active for use with a power amplifier and/or - * a low noise amplifier. - * - * Toggling the pins is achieved by using two PPI channels and a GPIOTE channel. The hardware channel IDs are provided - * by the application and should be regarded as reserved as long as any PA/LNA toggling is enabled. - * - * @note @ref sd_ble_opt_get is not supported for this option. - * @note Setting this option while the radio is in use (i.e. any of the roles are active) may have undefined consequences - * and must be avoided by the application. - */ -typedef struct -{ - ble_pa_lna_cfg_t pa_cfg; /**< Power Amplifier configuration */ - ble_pa_lna_cfg_t lna_cfg; /**< Low Noise Amplifier configuration */ - - uint8_t ppi_ch_id_set; /**< PPI channel used for radio pin setting */ - uint8_t ppi_ch_id_clr; /**< PPI channel used for radio pin clearing */ - uint8_t gpiote_ch_id; /**< GPIOTE channel used for radio pin toggling */ -} ble_common_opt_pa_lna_t; - -/** - * @brief Configuration of extended BLE connection events. - * - * When enabled the SoftDevice will dynamically extend the connection event when possible. - * - * The connection event length is controlled by the connection configuration as set by @ref ble_gap_conn_cfg_t::event_length. - * The connection event can be extended if there is time to send another packet pair before the start of the next connection interval, - * and if there are no conflicts with other BLE roles requesting radio time. - * - * @note @ref sd_ble_opt_get is not supported for this option. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable extended BLE connection events, disabled by default. */ -} ble_common_opt_conn_evt_ext_t; - -/**@brief Option structure for common options. */ -typedef union -{ - ble_common_opt_pa_lna_t pa_lna; /**< Parameters for controlling PA and LNA pin toggling. */ - ble_common_opt_conn_evt_ext_t conn_evt_ext; /**< Parameters for enabling extended connection events. */ -} ble_common_opt_t; - -/**@brief Common BLE Option type, wrapping the module specific options. */ -typedef union -{ - ble_common_opt_t common_opt; /**< COMMON options, opt_id in @ref BLE_COMMON_OPTS series. */ - ble_gap_opt_t gap_opt; /**< GAP option, opt_id in @ref BLE_GAP_OPTS series. */ -} ble_opt_t; - -/**@brief BLE connection configuration type, wrapping the module specific configurations, set with - * @ref sd_ble_cfg_set. - * - * @note Connection configurations don't have to be set. - * In the case that no configurations has been set, or fewer connection configurations has been set than enabled connections, - * the default connection configuration will be automatically added for the remaining connections. - * When creating connections with the default configuration, @ref BLE_CONN_CFG_TAG_DEFAULT should be used in - * place of @ref ble_conn_cfg_t::conn_cfg_tag. - * - * @sa sd_ble_gap_adv_start() - * - * @mscs - * @mmsc{@ref BLE_CONN_CFG} - * @endmscs - - */ -typedef struct -{ - uint8_t conn_cfg_tag; /**< The application chosen tag it can use with the - @ref sd_ble_gap_adv_start() call - to select this configuration when creating a connection. - Must be different for all connection configurations added and not @ref BLE_CONN_CFG_TAG_DEFAULT. */ - union { - ble_gap_conn_cfg_t gap_conn_cfg; /**< GAP connection configuration, cfg_id is @ref BLE_CONN_CFG_GAP. */ - ble_gattc_conn_cfg_t gattc_conn_cfg; /**< GATTC connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTC. */ - ble_gatts_conn_cfg_t gatts_conn_cfg; /**< GATTS connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTS. */ - ble_gatt_conn_cfg_t gatt_conn_cfg; /**< GATT connection configuration, cfg_id is @ref BLE_CONN_CFG_GATT. */ - } params; /**< Connection configuration union. */ -} ble_conn_cfg_t; - -/** - * @brief Configuration of Vendor Specific UUIDs, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_PARAM Too many UUIDs configured. - */ -typedef struct -{ - uint8_t vs_uuid_count; /**< Number of 128-bit Vendor Specific UUID bases to allocate memory for. - Default value is @ref BLE_UUID_VS_COUNT_DEFAULT. Maximum value is - @ref BLE_UUID_VS_COUNT_MAX. */ -} ble_common_cfg_vs_uuid_t; - -/**@brief Common BLE Configuration type, wrapping the common configurations. */ -typedef union -{ - ble_common_cfg_vs_uuid_t vs_uuid_cfg; /**< Vendor specific UUID configuration, cfg_id is @ref BLE_COMMON_CFG_VS_UUID. */ -} ble_common_cfg_t; - -/**@brief BLE Configuration type, wrapping the module specific configurations. */ -typedef union -{ - ble_conn_cfg_t conn_cfg; /**< Connection specific configurations, cfg_id in @ref BLE_CONN_CFGS series. */ - ble_common_cfg_t common_cfg; /**< Global common configurations, cfg_id in @ref BLE_COMMON_CFGS series. */ - ble_gap_cfg_t gap_cfg; /**< Global GAP configurations, cfg_id in @ref BLE_GAP_CFGS series. */ - ble_gatts_cfg_t gatts_cfg; /**< Global GATTS configuration, cfg_id in @ref BLE_GATTS_CFGS series. */ -} ble_cfg_t; - -/** @} */ - -/** @addtogroup BLE_COMMON_FUNCTIONS Functions - * @{ */ - -/**@brief Enable the BLE stack - * - * @param[in, out] p_app_ram_base Pointer to a variable containing the start address of the - * application RAM region (APP_RAM_BASE). On return, this will - * contain the minimum start address of the application RAM region - * required by the SoftDevice for this configuration. - * - * @note The memory requirement for a specific configuration will not increase between SoftDevices - * with the same major version number. - * - * @note The value of *p_app_ram_base when the app has done no custom configuration of the - * SoftDevice, i.e. the app has not called @ref sd_ble_cfg_set before @ref sd_ble_enable, can - * be found in the release notes. - * - * @note At runtime the IC's RAM is split into 2 regions: The SoftDevice RAM region is located - * between 0x20000000 and APP_RAM_BASE-1 and the application's RAM region is located between - * APP_RAM_BASE and the start of the call stack. - * - * @details This call initializes the BLE stack, no BLE related function other than @ref - * sd_ble_cfg_set can be called before this one. - * - * @mscs - * @mmsc{@ref BLE_COMMON_ENABLE} - * @endmscs - * - * @retval ::NRF_SUCCESS The BLE stack has been initialized successfully. - * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized and cannot be reinitialized. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by *p_app_ram_base is not - * large enough to fit this configuration's memory requirement. Check *p_app_ram_base - * and set the start address of the application RAM region accordingly. - */ -SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(uint32_t * p_app_ram_base)); - -/**@brief Add configurations for the BLE stack - * - * @param[in] cfg_id Config ID, see @ref BLE_CONN_CFGS, @ref BLE_COMMON_CFGS, @ref - * BLE_GAP_CFGS or @ref BLE_GATTS_CFGS. - * @param[in] p_cfg Pointer to a ble_cfg_t structure containing the configuration value. - * @param[in] app_ram_base The start address of the application RAM region (APP_RAM_BASE). - * See @ref sd_ble_enable for details about APP_RAM_BASE. - * - * @note The memory requirement for a specific configuration will not increase between SoftDevices - * with the same major version number. - * - * @note If a configuration is set more than once, the last one set is the one that takes effect on - * @ref sd_ble_enable. - * - * @note Any part of the BLE stack that is NOT configured with @ref sd_ble_cfg_set will have default - * configuration. - * - * @note @ref sd_ble_cfg_set may be called at any time when the SoftDevice is enabled (see @ref - * sd_softdevice_enable) while the BLE part of the SoftDevice is not enabled (see @ref - * sd_ble_enable). - * - * @note Error codes for the configurations are described in the configuration structs. - * - * @mscs - * @mmsc{@ref BLE_COMMON_ENABLE} - * @endmscs - * - * @retval ::NRF_SUCCESS The configuration has been added successfully. - * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid cfg_id supplied. - * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by app_ram_base is not - * large enough to fit this configuration's memory requirement. - */ -SVCALL(SD_BLE_CFG_SET, uint32_t, sd_ble_cfg_set(uint32_t cfg_id, ble_cfg_t const * p_cfg, uint32_t app_ram_base)); - -/**@brief Get an event from the pending events queue. - * - * @param[out] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. - * This buffer must be aligned to the extend defined by @ref BLE_EVT_PTR_ALIGNMENT. - * The buffer should be interpreted as a @ref ble_evt_t struct. - * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. - * - * @details This call allows the application to pull a BLE event from the BLE stack. The application is signaled that - * an event is available from the BLE stack by the triggering of the SD_EVT_IRQn interrupt. - * The application is free to choose whether to call this function from thread mode (main context) or directly from the - * Interrupt Service Routine that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher - * priority than the application, this function should be called in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) - * every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the BLE stack. Failure to do so - * could potentially leave events in the internal queue without the application being aware of this fact. - * - * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to - * be copied into application memory. If the buffer provided is not large enough to fit the entire contents of the event, - * @ref NRF_ERROR_DATA_SIZE will be returned and the application can then call again with a larger buffer size. - * The maximum possible event length is defined by @ref BLE_EVT_LEN_MAX. The application may also "peek" the event length - * by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return: - * - * \code - * uint16_t len; - * errcode = sd_ble_evt_get(NULL, &len); - * \endcode - * - * @mscs - * @mmsc{@ref BLE_COMMON_IRQ_EVT_MSC} - * @mmsc{@ref BLE_COMMON_THREAD_EVT_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Event pulled and stored into the supplied buffer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_NOT_FOUND No events ready to be pulled. - * @retval ::NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. - */ -SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t *p_dest, uint16_t *p_len)); - - -/**@brief Add a Vendor Specific base UUID. - * - * @details This call enables the application to add a vendor specific base UUID to the BLE stack's table, for later - * use with all other modules and APIs. This then allows the application to use the shorter, 24-bit @ref ble_uuid_t - * format when dealing with both 16-bit and 128-bit UUIDs without having to check for lengths and having split code - * paths. This is accomplished by extending the grouping mechanism that the Bluetooth SIG standard base UUID uses - * for all other 128-bit UUIDs. The type field in the @ref ble_uuid_t structure is an index (relative to - * @ref BLE_UUID_TYPE_VENDOR_BEGIN) to the table populated by multiple calls to this function, and the UUID field - * in the same structure contains the 2 bytes at indexes 12 and 13. The number of possible 128-bit UUIDs available to - * the application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, - * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. - * - * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by - * the 16-bit uuid field in @ref ble_uuid_t. - * - * @note If a UUID is already present in the BLE stack's internal table, the corresponding index will be returned in - * p_uuid_type along with an @ref NRF_SUCCESS error code. - * - * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding - * bytes 12 and 13. - * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. - * - * @retval ::NRF_SUCCESS Successfully added the Vendor Specific UUID. - * @retval ::NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. - * @retval ::NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. - */ -SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const *p_vs_uuid, uint8_t *p_uuid_type)); - - -/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. - * - * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared - * to the corresponding ones in each entry of the table of vendor specific UUIDs populated with @ref sd_ble_uuid_vs_add - * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index - * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. - * - * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. - * - * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). - * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. - * @param[out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid UUID length. - * @retval ::NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. - */ -SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const *p_uuid_le, ble_uuid_t *p_uuid)); - - -/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). - * - * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validity and size of p_uuid is computed. - * - * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. - * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). - * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. - * - * @retval ::NRF_SUCCESS Successfully encoded into the buffer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid UUID type. - */ -SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const *p_uuid, uint8_t *p_uuid_le_len, uint8_t *p_uuid_le)); - - -/**@brief Get Version Information. - * - * @details This call allows the application to get the BLE stack version information. - * - * @param[out] p_version Pointer to a ble_version_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Version information stored successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy (typically doing a locally-initiated disconnection procedure). - */ -SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t *p_version)); - - -/**@brief Provide a user memory block. - * - * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_block Pointer to a user memory block structure or NULL if memory is managed by the application. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully queued a response to the peer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid user memory block length supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection state or no user memory request pending. - */ -SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t const *p_block)); - -/**@brief Set a BLE option. - * - * @details This call allows the application to set the value of an option. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} - * @endmscs - * - * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. - * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value. - * - * @retval ::NRF_SUCCESS Option set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. - */ -SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt)); - - -/**@brief Get a BLE option. - * - * @details This call allows the application to retrieve the value of an option. - * - * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. - * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Option retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. - * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported. - * - */ -SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt)); - -/** @} */ -#ifdef __cplusplus -} -#endif -#endif /* BLE_H__ */ - -/** - @} - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error.h deleted file mode 100644 index 6badee98e5..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2014 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - /** - @defgroup nrf_error SoftDevice Global Error Codes - @{ - - @brief Global Error definitions -*/ - -/* Header guard */ -#ifndef NRF_ERROR_H__ -#define NRF_ERROR_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions - * @{ */ -#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base -#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base -#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base -#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base -/** @} */ - -#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command -#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing -#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled -#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error -#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation -#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found -#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported -#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter -#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state -#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length -#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags -#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data -#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Invalid Data size -#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out -#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer -#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation -#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address -#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy -#define NRF_ERROR_CONN_COUNT (NRF_ERROR_BASE_NUM + 18) ///< Maximum connection count exceeded. -#define NRF_ERROR_RESOURCES (NRF_ERROR_BASE_NUM + 19) ///< Not enough resources for operation - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_H__ - -/** - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_sdm.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_sdm.h deleted file mode 100644 index 530959b9d6..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_sdm.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - /** - @addtogroup nrf_sdm_api - @{ - @defgroup nrf_sdm_error SoftDevice Manager Error Codes - @{ - - @brief Error definitions for the SDM API -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SDM_H__ -#define NRF_ERROR_SDM_H__ - -#include "nrf_error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown LFCLK source. -#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts). -#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erroneous SoftDevice flashing). - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_SDM_H__ - -/** - @} - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_soc.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_soc.h deleted file mode 100644 index 1e784b8db3..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_error_soc.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @addtogroup nrf_soc_api - @{ - @defgroup nrf_soc_error SoC Library Error Codes - @{ - - @brief Error definitions for the SoC library - -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SOC_H__ -#define NRF_ERROR_SOC_H__ - -#include "nrf_error.h" -#ifdef __cplusplus -extern "C" { -#endif - -/* Mutex Errors */ -#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken - -/* NVIC errors */ -#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available -#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed -#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return - -/* Power errors */ -#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown -#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown -#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return - -/* Rand errors */ -#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values - -/* PPI errors */ -#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel -#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_SOC_H__ -/** - @} - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_nvic.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_nvic.h deleted file mode 100644 index f5c7e8e028..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_nvic.h +++ /dev/null @@ -1,486 +0,0 @@ -/* - * Copyright (c) 2016 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @defgroup nrf_nvic_api SoftDevice NVIC API - * @{ - * - * @note In order to use this module, the following code has to be added to a .c file: - * \code - * nrf_nvic_state_t nrf_nvic_state = {0}; - * \endcode - * - * @note Definitions and declarations starting with __ (double underscore) in this header file are - * not intended for direct use by the application. - * - * @brief APIs for the accessing NVIC when using a SoftDevice. - * - */ - -#ifndef NRF_NVIC_H__ -#define NRF_NVIC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup NRF_NVIC_DEFINES Defines - * @{ */ - -/**@defgroup NRF_NVIC_ISER_DEFINES SoftDevice NVIC internal definitions - * @{ */ - -#define __NRF_NVIC_NVMC_IRQn (30) /**< The peripheral ID of the NVMC. IRQ numbers are used to identify peripherals, but the NVMC doesn't have an IRQ number in the MDK. */ - -#define __NRF_NVIC_ISER_COUNT (2) /**< The number of ISER/ICER registers in the NVIC that are used. */ - -/**@brief Interrupts used by the SoftDevice, with IRQn in the range 0-31. */ -#define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ - (1U << POWER_CLOCK_IRQn) \ - | (1U << RADIO_IRQn) \ - | (1U << RTC0_IRQn) \ - | (1U << TIMER0_IRQn) \ - | (1U << RNG_IRQn) \ - | (1U << ECB_IRQn) \ - | (1U << CCM_AAR_IRQn) \ - | (1U << TEMP_IRQn) \ - | (1U << __NRF_NVIC_NVMC_IRQn) \ - | (1U << (uint32_t)SWI5_IRQn) \ - )) - -/**@brief Interrupts used by the SoftDevice, with IRQn in the range 32-63. */ -#define __NRF_NVIC_SD_IRQS_1 ((uint32_t)0) - -/**@brief Interrupts available for to application, with IRQn in the range 0-31. */ -#define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) - -/**@brief Interrupts available for to application, with IRQn in the range 32-63. */ -#define __NRF_NVIC_APP_IRQS_1 (~__NRF_NVIC_SD_IRQS_1) - -/**@} */ - -/**@} */ - -/**@addtogroup NRF_NVIC_VARIABLES Variables - * @{ */ - -/**@brief Type representing the state struct for the SoftDevice NVIC module. */ -typedef struct -{ - uint32_t volatile __irq_masks[__NRF_NVIC_ISER_COUNT]; /**< IRQs enabled by the application in the NVIC. */ - uint32_t volatile __cr_flag; /**< Non-zero if already in a critical region */ -} nrf_nvic_state_t; - -/**@brief Variable keeping the state for the SoftDevice NVIC module. This must be declared in an - * application source file. */ -extern nrf_nvic_state_t nrf_nvic_state; - -/**@} */ - -/**@addtogroup NRF_NVIC_INTERNAL_FUNCTIONS SoftDevice NVIC internal functions - * @{ */ - -/**@brief Disables IRQ interrupts globally, including the SoftDevice's interrupts. - * - * @retval The value of PRIMASK prior to disabling the interrupts. - */ -__STATIC_INLINE int __sd_nvic_irq_disable(void); - -/**@brief Enables IRQ interrupts globally, including the SoftDevice's interrupts. - */ -__STATIC_INLINE void __sd_nvic_irq_enable(void); - -/**@brief Checks if IRQn is available to application - * @param[in] IRQn IRQ to check - * - * @retval 1 (true) if the IRQ to check is available to the application - */ -__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn); - -/**@brief Checks if priority is available to application - * @param[in] priority priority to check - * - * @retval 1 (true) if the priority to check is available to the application - */ -__STATIC_INLINE uint32_t __sd_nvic_is_app_accessible_priority(uint32_t priority); - -/**@} */ - -/**@addtogroup NRF_NVIC_FUNCTIONS SoftDevice NVIC public functions - * @{ */ - -/**@brief Enable External Interrupt. - * @note Corresponds to NVIC_EnableIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was enabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn); - -/**@brief Disable External Interrupt. - * @note Corresponds to NVIC_DisableIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was disabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn); - -/**@brief Get Pending Interrupt. - * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. - * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. - * - * @retval ::NRF_SUCCESS The interrupt is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq); - -/**@brief Set Pending Interrupt. - * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt is set pending. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn); - -/**@brief Clear Pending Interrupt. - * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn); - -/**@brief Set Interrupt Priority. - * @note Corresponds to NVIC_SetPriority in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * @pre Priority is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. - * @param[in] priority A valid IRQ priority for use by the application. - * - * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority); - -/**@brief Get Interrupt Priority. - * @note Corresponds to NVIC_GetPriority in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. - * @param[out] p_priority Return value from NVIC_GetPriority. - * - * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority); - -/**@brief System Reset. - * @note Corresponds to NVIC_SystemReset in CMSIS. - * - * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN - */ -__STATIC_INLINE uint32_t sd_nvic_SystemReset(void); - -/**@brief Enter critical region. - * - * @post Application interrupts will be disabled. - * @note sd_nvic_critical_region_enter() and ::sd_nvic_critical_region_exit() must be called in matching pairs inside each - * execution context - * @sa sd_nvic_critical_region_exit - * - * @param[out] p_is_nested_critical_region If 1, the application is now in a nested critical region. - * - * @retval ::NRF_SUCCESS - */ -__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region); - -/**@brief Exit critical region. - * - * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. - * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. - * - * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. - * - * @retval ::NRF_SUCCESS - */ -__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region); - -/**@} */ - -#ifndef SUPPRESS_INLINE_IMPLEMENTATION - -__STATIC_INLINE int __sd_nvic_irq_disable(void) -{ - int pm = __get_PRIMASK(); - __disable_irq(); - return pm; -} - -__STATIC_INLINE void __sd_nvic_irq_enable(void) -{ - __enable_irq(); -} - -__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn) -{ - if (IRQn < 32) - { - return ((1UL<= (1 << __NVIC_PRIO_BITS)) - { - return 0; - } - if( priority == 0 - || priority == 1 - || priority == 4 - ) - { - return 0; - } - return 1; -} - - -__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - if (!__sd_nvic_is_app_accessible_priority(NVIC_GetPriority(IRQn))) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; - } - - if (nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] |= (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); - } - else - { - NVIC_EnableIRQ(IRQn); - } - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - - if (nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] &= ~(1UL << ((uint32_t)(IRQn) & 0x1F)); - } - else - { - NVIC_DisableIRQ(IRQn); - } - - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - *p_pending_irq = NVIC_GetPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - NVIC_SetPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - NVIC_ClearPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - - if (!__sd_nvic_is_app_accessible_priority(priority)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; - } - - NVIC_SetPriority(IRQn, (uint32_t)priority); - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - *p_priority = (NVIC_GetPriority(IRQn) & 0xFF); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SystemReset(void) -{ - NVIC_SystemReset(); - return NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN; -} - -__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region) -{ - int was_masked = __sd_nvic_irq_disable(); - if (!nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__cr_flag = 1; - nrf_nvic_state.__irq_masks[0] = ( NVIC->ICER[0] & __NRF_NVIC_APP_IRQS_0 ); - NVIC->ICER[0] = __NRF_NVIC_APP_IRQS_0; - nrf_nvic_state.__irq_masks[1] = ( NVIC->ICER[1] & __NRF_NVIC_APP_IRQS_1 ); - NVIC->ICER[1] = __NRF_NVIC_APP_IRQS_1; - *p_is_nested_critical_region = 0; - } - else - { - *p_is_nested_critical_region = 1; - } - if (!was_masked) - { - __sd_nvic_irq_enable(); - } - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region) -{ - if (nrf_nvic_state.__cr_flag && (is_nested_critical_region == 0)) - { - int was_masked = __sd_nvic_irq_disable(); - NVIC->ISER[0] = nrf_nvic_state.__irq_masks[0]; - NVIC->ISER[1] = nrf_nvic_state.__irq_masks[1]; - nrf_nvic_state.__cr_flag = 0; - if (!was_masked) - { - __sd_nvic_irq_enable(); - } - } - - return NRF_SUCCESS; -} - -#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ - -#ifdef __cplusplus -} -#endif - -#endif // NRF_NVIC_H__ - -/**@} */ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sd_def.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sd_def.h deleted file mode 100644 index c9ab241872..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sd_def.h +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ -#ifndef NRF_SD_DEF_H__ -#define NRF_SD_DEF_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SD_PPI_CHANNELS_USED 0xFFFE0000uL /**< PPI channels utilized by SotfDevice (not available to the application). */ -#define SD_PPI_GROUPS_USED 0x0000000CuL /**< PPI groups utilized by SoftDevice (not available to the application). */ -#define SD_TIMERS_USED 0x00000001uL /**< Timers used by SoftDevice. */ -#define SD_SWI_USED 0x0000003CuL /**< Software interrupts used by SoftDevice */ - - -#ifdef __cplusplus -} -#endif - -#endif /* NRF_SD_DEF_H__ */ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sdm.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sdm.h deleted file mode 100644 index 8c48d93678..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_sdm.h +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (c) 2015 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - @defgroup nrf_sdm_api SoftDevice Manager API - @{ - - @brief APIs for SoftDevice management. - -*/ - -#ifndef NRF_SDM_H__ -#define NRF_SDM_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_sdm.h" -#include "nrf_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ -#ifdef NRFSOC_DOXYGEN -/// Declared in nrf_mbr.h -#define MBR_SIZE 0 -#warning test -#endif - -/** @brief The major version for the SoftDevice binary distributed with this header file. */ -#define SD_MAJOR_VERSION (6) - -/** @brief The minor version for the SoftDevice binary distributed with this header file. */ -#define SD_MINOR_VERSION (0) - -/** @brief The bugfix version for the SoftDevice binary distributed with this header file. */ -#define SD_BUGFIX_VERSION (0) - -/** @brief The full version number for the SoftDevice binary this header file was distributed - * with, as a decimal number in the form Mmmmbbb, where: - * - M is major version (one or more digits) - * - mmm is minor version (three digits) - * - bbb is bugfix version (three digits). */ -#define SD_VERSION (SD_MAJOR_VERSION * 1000000 + SD_MINOR_VERSION * 1000 + SD_BUGFIX_VERSION) - -/** @brief SoftDevice Manager SVC Base number. */ -#define SDM_SVC_BASE 0x10 - -/** @brief SoftDevice unique string size in bytes. */ -#define SD_UNIQUE_STR_SIZE 20 - -/** @brief Invalid info field. Returned when an info field does not exist. */ -#define SDM_INFO_FIELD_INVALID (0) - -/** @brief Defines the SoftDevice Information Structure location (address) as an offset from -the start of the SoftDevice (without MBR)*/ -#define SOFTDEVICE_INFO_STRUCT_OFFSET (0x2000) - -/** @brief Defines the absolute SoftDevice Information Structure location (address) when the - * SoftDevice is installed just above the MBR (the usual case). */ -#define SOFTDEVICE_INFO_STRUCT_ADDRESS (SOFTDEVICE_INFO_STRUCT_OFFSET + MBR_SIZE) - -/** @brief Defines the offset for the SoftDevice Information Structure size value relative to the - * SoftDevice base address. The size value is of type uint8_t. */ -#define SD_INFO_STRUCT_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET) - -/** @brief Defines the offset for the SoftDevice size value relative to the SoftDevice base address. - * The size value is of type uint32_t. */ -#define SD_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x08) - -/** @brief Defines the offset for FWID value relative to the SoftDevice base address. The FWID value - * is of type uint16_t. */ -#define SD_FWID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x0C) - -/** @brief Defines the offset for the SoftDevice ID relative to the SoftDevice base address. The ID - * is of type uint32_t. */ -#define SD_ID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x10) - -/** @brief Defines the offset for the SoftDevice version relative to the SoftDevice base address in - * the same format as @ref SD_VERSION, stored as an uint32_t. */ -#define SD_VERSION_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x14) - -/** @brief Defines the offset for the SoftDevice unique string relative to the SoftDevice base address. - * The SD_UNIQUE_STR is stored as an array of uint8_t. The size of array is @ref SD_UNIQUE_STR_SIZE. - */ -#define SD_UNIQUE_STR_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x18) - -/** @brief Defines a macro for retrieving the actual SoftDevice Information Structure size value - * from a given base address. Use @ref MBR_SIZE as the argument when the SoftDevice is - * installed just above the MBR (the usual case). */ -#define SD_INFO_STRUCT_SIZE_GET(baseaddr) (*((uint8_t *) ((baseaddr) + SD_INFO_STRUCT_SIZE_OFFSET))) - -/** @brief Defines a macro for retrieving the actual SoftDevice size value from a given base - * address. Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above - * the MBR (the usual case). */ -#define SD_SIZE_GET(baseaddr) (*((uint32_t *) ((baseaddr) + SD_SIZE_OFFSET))) - -/** @brief Defines a macro for retrieving the actual FWID value from a given base address. Use - * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual - * case). */ -#define SD_FWID_GET(baseaddr) (*((uint16_t *) ((baseaddr) + SD_FWID_OFFSET))) - -/** @brief Defines a macro for retrieving the actual SoftDevice ID from a given base address. Use - * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the - * usual case). */ -#define SD_ID_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_ID_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (*((uint32_t *) ((baseaddr) + SD_ID_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/** @brief Defines a macro for retrieving the actual SoftDevice version from a given base address. - * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR - * (the usual case). */ -#define SD_VERSION_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_VERSION_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (*((uint32_t *) ((baseaddr) + SD_VERSION_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/** @brief Defines a macro for retrieving the address of SoftDevice unique str based on a given base address. - * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR - * (the usual case). */ -#define SD_UNIQUE_STR_ADDR_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_UNIQUE_STR_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (((uint8_t *) ((baseaddr) + SD_UNIQUE_STR_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/**@defgroup NRF_FAULT_ID_RANGES Fault ID ranges - * @{ */ -#define NRF_FAULT_ID_SD_RANGE_START 0x00000000 /**< SoftDevice ID range start. */ -#define NRF_FAULT_ID_APP_RANGE_START 0x00001000 /**< Application ID range start. */ -/**@} */ - -/**@defgroup NRF_FAULT_IDS Fault ID types - * @{ */ -#define NRF_FAULT_ID_SD_ASSERT (NRF_FAULT_ID_SD_RANGE_START + 1) /**< SoftDevice assertion. The info parameter is reserved for future used. */ -#define NRF_FAULT_ID_APP_MEMACC (NRF_FAULT_ID_APP_RANGE_START + 1) /**< Application invalid memory access. The info parameter will contain 0x00000000, - in case of SoftDevice RAM access violation. In case of SoftDevice peripheral - register violation the info parameter will contain the sub-region number of - PREGION[0], on whose address range the disallowed write access caused the - memory access fault. */ -/**@} */ - -/** @} */ - -/** @addtogroup NRF_SDM_ENUMS Enumerations - * @{ */ - -/**@brief nRF SoftDevice Manager API SVC numbers. */ -enum NRF_SD_SVCS -{ - SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ - SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ - SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ - SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */ - SVC_SDM_LAST /**< Placeholder for last SDM SVC */ -}; - -/** @} */ - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ - -/**@defgroup NRF_CLOCK_LF_ACCURACY Clock accuracy - * @{ */ - -#define NRF_CLOCK_LF_ACCURACY_250_PPM (0) /**< Default: 250 ppm */ -#define NRF_CLOCK_LF_ACCURACY_500_PPM (1) /**< 500 ppm */ -#define NRF_CLOCK_LF_ACCURACY_150_PPM (2) /**< 150 ppm */ -#define NRF_CLOCK_LF_ACCURACY_100_PPM (3) /**< 100 ppm */ -#define NRF_CLOCK_LF_ACCURACY_75_PPM (4) /**< 75 ppm */ -#define NRF_CLOCK_LF_ACCURACY_50_PPM (5) /**< 50 ppm */ -#define NRF_CLOCK_LF_ACCURACY_30_PPM (6) /**< 30 ppm */ -#define NRF_CLOCK_LF_ACCURACY_20_PPM (7) /**< 20 ppm */ -#define NRF_CLOCK_LF_ACCURACY_10_PPM (8) /**< 10 ppm */ -#define NRF_CLOCK_LF_ACCURACY_5_PPM (9) /**< 5 ppm */ -#define NRF_CLOCK_LF_ACCURACY_2_PPM (10) /**< 2 ppm */ -#define NRF_CLOCK_LF_ACCURACY_1_PPM (11) /**< 1 ppm */ - -/** @} */ - -/**@defgroup NRF_CLOCK_LF_SRC Possible LFCLK oscillator sources - * @{ */ - -#define NRF_CLOCK_LF_SRC_RC (0) /**< LFCLK RC oscillator. */ -#define NRF_CLOCK_LF_SRC_XTAL (1) /**< LFCLK crystal oscillator. */ -#define NRF_CLOCK_LF_SRC_SYNTH (2) /**< LFCLK Synthesized from HFCLK. */ - -/** @} */ - -/** @} */ - -/** @addtogroup NRF_SDM_TYPES Types - * @{ */ - -/**@brief Type representing LFCLK oscillator source. */ -typedef struct -{ - uint8_t source; /**< LF oscillator clock source, see @ref NRF_CLOCK_LF_SRC. */ - uint8_t rc_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: Calibration timer interval in 1/4 second - units (nRF52: 1-32). - @note To avoid excessive clock drift, 0.5 degrees Celsius is the - maximum temperature change allowed in one calibration timer - interval. The interval should be selected to ensure this. - - @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. */ - uint8_t rc_temp_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: How often (in number of calibration - intervals) the RC oscillator shall be calibrated if the temperature - hasn't changed. - 0: Always calibrate even if the temperature hasn't changed. - 1: Only calibrate if the temperature has changed (legacy - nRF51 only). - 2-33: Check the temperature and only calibrate if it has changed, - however calibration will take place every rc_temp_ctiv - intervals in any case. - - @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. - - @note For nRF52, the application must ensure calibration at least once - every 8 seconds to ensure +/-500 ppm clock stability. The - recommended configuration for ::NRF_CLOCK_LF_SRC_RC on nRF52 is - rc_ctiv=16 and rc_temp_ctiv=2. This will ensure calibration at - least once every 8 seconds and for temperature changes of 0.5 - degrees Celsius every 4 seconds. See the Product Specification - for the nRF52 device being used for more information.*/ - uint8_t accuracy; /**< External clock accuracy used in the LL to compute timing - windows, see @ref NRF_CLOCK_LF_ACCURACY.*/ -} nrf_clock_lf_cfg_t; - -/**@brief Fault Handler type. - * - * When certain unrecoverable errors occur within the application or SoftDevice the fault handler will be called back. - * The protocol stack will be in an undefined state when this happens and the only way to recover will be to - * perform a reset, using e.g. CMSIS NVIC_SystemReset(). - * If the application returns from the fault handler the SoftDevice will call NVIC_SystemReset(). - * - * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the fault callback. - * - * @param[in] id Fault identifier. See @ref NRF_FAULT_IDS. - * @param[in] pc The program counter of the instruction that triggered the fault. - * @param[in] info Optional additional information regarding the fault. Refer to each Fault identifier for details. - * - * @note When id is set to @ref NRF_FAULT_ID_APP_MEMACC, pc will contain the address of the instruction being executed at the time when - * the fault is detected by the CPU. The CPU program counter may have advanced up to 2 instructions (no branching) after the one that triggered the fault. - */ -typedef void (*nrf_fault_handler_t)(uint32_t id, uint32_t pc, uint32_t info); - -/** @} */ - -/** @addtogroup NRF_SDM_FUNCTIONS Functions - * @{ */ - -/**@brief Enables the SoftDevice and by extension the protocol stack. - * - * @note Some care must be taken if a low frequency clock source is already running when calling this function: - * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new - * clock source will be started. - * - * @note This function has no effect when returning with an error. - * - * @post If return code is ::NRF_SUCCESS - * - SoC library and protocol stack APIs are made available. - * - A portion of RAM will be unavailable (see relevant SDS documentation). - * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation). - * - Interrupts will not arrive from protected peripherals or interrupts. - * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the SoftDevice. - * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation). - * - Chosen low frequency clock source will be running. - * - * @param p_clock_lf_cfg Low frequency clock source and accuracy. - If NULL the clock will be configured as an RC source with rc_ctiv = 16 and .rc_temp_ctiv = 2 - In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock. - * @param fault_handler Callback to be invoked in case of fault, cannot be NULL. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE SoftDevice is already enabled, and the clock source and fault handler cannot be updated. - * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDevice interrupt is already enabled, or an enabled interrupt has an illegal priority level. - * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid clock source configuration supplied in p_clock_lf_cfg. - */ -SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lf_cfg_t const * p_clock_lf_cfg, nrf_fault_handler_t fault_handler)); - - -/**@brief Disables the SoftDevice and by extension the protocol stack. - * - * Idempotent function to disable the SoftDevice. - * - * @post SoC library and protocol stack APIs are made unavailable. - * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). - * @post All peripherals used by the SoftDevice will be reset to default values. - * @post All of RAM become available. - * @post All interrupts are forwarded to the application. - * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); - -/**@brief Check if the SoftDevice is enabled. - * - * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); - -/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice - * - * This function is only intended to be called when a bootloader is enabled. - * - * @param[in] address The base address of the interrupt vector table for forwarded interrupts. - - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_SDM_H__ - -/** - @} -*/ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_soc.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_soc.h deleted file mode 100644 index 2c4d958750..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_soc.h +++ /dev/null @@ -1,964 +0,0 @@ -/* - * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @defgroup nrf_soc_api SoC Library API - * @{ - * - * @brief APIs for the SoC library. - * - */ - -#ifndef NRF_SOC_H__ -#define NRF_SOC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup NRF_SOC_DEFINES Defines - * @{ */ - -/**@brief The number of the lowest SVC number reserved for the SoC library. */ -#define SOC_SVC_BASE (0x20) /**< Base value for SVCs that are available when the SoftDevice is disabled. */ -#define SOC_SVC_BASE_NOT_AVAILABLE (0x2C) /**< Base value for SVCs that are not available when the SoftDevice is disabled. */ - -/**@brief Guaranteed time for application to process radio inactive notification. */ -#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) - -/**@brief The minimum allowed timeslot extension time. */ -#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200) - -/**@brief The maximum processing time to handle a timeslot extension. */ -#define NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US (17) - -/**@brief The latest time before the end of a timeslot the timeslot can be extended. */ -#define NRF_RADIO_MIN_EXTENSION_MARGIN_US (79) - -#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ -#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ -#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ - -#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ -#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. - The default interrupt priority for this handler is set to 4 */ -#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ -#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. - The default interrupt priority for this handler is set to 4 */ -#define NRF_RADIO_LENGTH_MIN_US (100) /**< The shortest allowed radio timeslot, in microseconds. */ -#define NRF_RADIO_LENGTH_MAX_US (100000) /**< The longest allowed radio timeslot, in microseconds. */ - -#define NRF_RADIO_DISTANCE_MAX_US (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */ - -#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */ - -#define NRF_RADIO_START_JITTER_US (2) /**< The maximum jitter in @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */ - -/**@} */ - -/**@addtogroup NRF_SOC_ENUMS Enumerations - * @{ */ - -/**@brief The SVC numbers used by the SVC functions in the SoC library. */ -enum NRF_SOC_SVCS -{ - SD_PPI_CHANNEL_ENABLE_GET = SOC_SVC_BASE, - SD_PPI_CHANNEL_ENABLE_SET = SOC_SVC_BASE + 1, - SD_PPI_CHANNEL_ENABLE_CLR = SOC_SVC_BASE + 2, - SD_PPI_CHANNEL_ASSIGN = SOC_SVC_BASE + 3, - SD_PPI_GROUP_TASK_ENABLE = SOC_SVC_BASE + 4, - SD_PPI_GROUP_TASK_DISABLE = SOC_SVC_BASE + 5, - SD_PPI_GROUP_ASSIGN = SOC_SVC_BASE + 6, - SD_PPI_GROUP_GET = SOC_SVC_BASE + 7, - SD_FLASH_PAGE_ERASE = SOC_SVC_BASE + 8, - SD_FLASH_WRITE = SOC_SVC_BASE + 9, - SD_FLASH_PROTECT = SOC_SVC_BASE + 10, - SD_PROTECTED_REGISTER_WRITE = SOC_SVC_BASE + 11, - SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE, - SD_MUTEX_ACQUIRE = SOC_SVC_BASE_NOT_AVAILABLE + 1, - SD_MUTEX_RELEASE = SOC_SVC_BASE_NOT_AVAILABLE + 2, - SD_RAND_APPLICATION_POOL_CAPACITY_GET = SOC_SVC_BASE_NOT_AVAILABLE + 3, - SD_RAND_APPLICATION_BYTES_AVAILABLE_GET = SOC_SVC_BASE_NOT_AVAILABLE + 4, - SD_RAND_APPLICATION_VECTOR_GET = SOC_SVC_BASE_NOT_AVAILABLE + 5, - SD_POWER_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 6, - SD_POWER_SYSTEM_OFF = SOC_SVC_BASE_NOT_AVAILABLE + 7, - SD_POWER_RESET_REASON_GET = SOC_SVC_BASE_NOT_AVAILABLE + 8, - SD_POWER_RESET_REASON_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 9, - SD_POWER_POF_ENABLE = SOC_SVC_BASE_NOT_AVAILABLE + 10, - SD_POWER_POF_THRESHOLD_SET = SOC_SVC_BASE_NOT_AVAILABLE + 11, - SD_POWER_RAM_POWER_SET = SOC_SVC_BASE_NOT_AVAILABLE + 13, - SD_POWER_RAM_POWER_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 14, - SD_POWER_RAM_POWER_GET = SOC_SVC_BASE_NOT_AVAILABLE + 15, - SD_POWER_GPREGRET_SET = SOC_SVC_BASE_NOT_AVAILABLE + 16, - SD_POWER_GPREGRET_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 17, - SD_POWER_GPREGRET_GET = SOC_SVC_BASE_NOT_AVAILABLE + 18, - SD_POWER_DCDC_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 19, - SD_APP_EVT_WAIT = SOC_SVC_BASE_NOT_AVAILABLE + 21, - SD_CLOCK_HFCLK_REQUEST = SOC_SVC_BASE_NOT_AVAILABLE + 22, - SD_CLOCK_HFCLK_RELEASE = SOC_SVC_BASE_NOT_AVAILABLE + 23, - SD_CLOCK_HFCLK_IS_RUNNING = SOC_SVC_BASE_NOT_AVAILABLE + 24, - SD_RADIO_NOTIFICATION_CFG_SET = SOC_SVC_BASE_NOT_AVAILABLE + 25, - SD_ECB_BLOCK_ENCRYPT = SOC_SVC_BASE_NOT_AVAILABLE + 26, - SD_ECB_BLOCKS_ENCRYPT = SOC_SVC_BASE_NOT_AVAILABLE + 27, - SD_RADIO_SESSION_OPEN = SOC_SVC_BASE_NOT_AVAILABLE + 28, - SD_RADIO_SESSION_CLOSE = SOC_SVC_BASE_NOT_AVAILABLE + 29, - SD_RADIO_REQUEST = SOC_SVC_BASE_NOT_AVAILABLE + 30, - SD_EVT_GET = SOC_SVC_BASE_NOT_AVAILABLE + 31, - SD_TEMP_GET = SOC_SVC_BASE_NOT_AVAILABLE + 32, - SVC_SOC_LAST = SOC_SVC_BASE_NOT_AVAILABLE + 37 -}; - -/**@brief Possible values of a ::nrf_mutex_t. */ -enum NRF_MUTEX_VALUES -{ - NRF_MUTEX_FREE, - NRF_MUTEX_TAKEN -}; - -/**@brief Power modes. */ -enum NRF_POWER_MODES -{ - NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ - NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ -}; - - -/**@brief Power failure thresholds */ -enum NRF_POWER_THRESHOLDS -{ - NRF_POWER_THRESHOLD_V17 = 4UL, /**< 1.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V18, /**< 1.8 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V19, /**< 1.9 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V20, /**< 2.0 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V22, /**< 2.2 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V24, /**< 2.4 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V26, /**< 2.6 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V27, /**< 2.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V28 /**< 2.8 Volts power failure threshold. */ -}; - - - -/**@brief DC/DC converter modes. */ -enum NRF_POWER_DCDC_MODES -{ - NRF_POWER_DCDC_DISABLE, /**< The DCDC is disabled. */ - NRF_POWER_DCDC_ENABLE /**< The DCDC is enabled. */ -}; - -/**@brief Radio notification distances. */ -enum NRF_RADIO_NOTIFICATION_DISTANCES -{ - NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ - NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ -}; - - -/**@brief Radio notification types. */ -enum NRF_RADIO_NOTIFICATION_TYPES -{ - NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ -}; - -/**@brief The Radio signal callback types. */ -enum NRF_RADIO_CALLBACK_SIGNAL_TYPE -{ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_START, /**< This signal indicates the start of the radio timeslot. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0, /**< This signal indicates the NRF_TIMER0 interrupt. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO, /**< This signal indicates the NRF_RADIO interrupt. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED, /**< This signal indicates extend action failed. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED /**< This signal indicates extend action succeeded. */ -}; - -/**@brief The actions requested by the signal callback. - * - * This code gives the SOC instructions about what action to take when the signal callback has - * returned. - */ -enum NRF_RADIO_SIGNAL_CALLBACK_ACTION -{ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE, /**< Return without action. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND, /**< Request an extension of the current - timeslot. Maximum execution time for this action: - @ref NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US. - This action must be started at least - @ref NRF_RADIO_MIN_EXTENSION_MARGIN_US before - the end of the timeslot. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_END, /**< End the current radio timeslot. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END /**< Request a new radio timeslot and end the current timeslot. */ -}; - -/**@brief Radio timeslot high frequency clock source configuration. */ -enum NRF_RADIO_HFCLK_CFG -{ - NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED, /**< The SoftDevice will guarantee that the high frequency clock source is the - external crystal for the whole duration of the timeslot. This should be the - preferred option for events that use the radio or require high timing accuracy. - @note The SoftDevice will automatically turn on and off the external crystal, - at the beginning and end of the timeslot, respectively. The crystal may also - intentionally be left running after the timeslot, in cases where it is needed - by the SoftDevice shortly after the end of the timeslot. */ - NRF_RADIO_HFCLK_CFG_NO_GUARANTEE /**< This configuration allows for earlier and tighter scheduling of timeslots. - The RC oscillator may be the clock source in part or for the whole duration of the timeslot. - The RC oscillator's accuracy must therefore be taken into consideration. - @note If the application will use the radio peripheral in timeslots with this configuration, - it must make sure that the crystal is running and stable before starting the radio. */ -}; - -/**@brief Radio timeslot priorities. */ -enum NRF_RADIO_PRIORITY -{ - NRF_RADIO_PRIORITY_HIGH, /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */ - NRF_RADIO_PRIORITY_NORMAL, /**< Normal (equal priority as the priority of secondary activities of the SoftDevice stack(s)). */ -}; - -/**@brief Radio timeslot request type. */ -enum NRF_RADIO_REQUEST_TYPE -{ - NRF_RADIO_REQ_TYPE_EARLIEST, /**< Request radio timeslot as early as possible. This should always be used for the first request in a session. */ - NRF_RADIO_REQ_TYPE_NORMAL /**< Normal radio timeslot request. */ -}; - -/**@brief SoC Events. */ -enum NRF_SOC_EVTS -{ - NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ - NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ - NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ - NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ - NRF_EVT_RADIO_BLOCKED, /**< Event indicating that a radio timeslot was blocked. */ - NRF_EVT_RADIO_CANCELED, /**< Event indicating that a radio timeslot was canceled by SoftDevice. */ - NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio timeslot signal callback handler return was invalid. */ - NRF_EVT_RADIO_SESSION_IDLE, /**< Event indicating that a radio timeslot session is idle. */ - NRF_EVT_RADIO_SESSION_CLOSED, /**< Event indicating that a radio timeslot session is closed. */ - NRF_EVT_NUMBER_OF_EVTS -}; - -/**@} */ - - -/**@addtogroup NRF_SOC_STRUCTURES Structures - * @{ */ - -/**@brief Represents a mutex for use with the nrf_mutex functions. - * @note Accessing the value directly is not safe, use the mutex functions! - */ -typedef volatile uint8_t nrf_mutex_t; - -/**@brief Parameters for a request for a timeslot as early as possible. */ -typedef struct -{ - uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ - uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ - uint32_t length_us; /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */ - uint32_t timeout_us; /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */ -} nrf_radio_request_earliest_t; - -/**@brief Parameters for a normal radio timeslot request. */ -typedef struct -{ - uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ - uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ - uint32_t distance_us; /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */ - uint32_t length_us; /**< The radio timeslot length (in the range [100..100,000] microseconds). */ -} nrf_radio_request_normal_t; - -/**@brief Radio timeslot request parameters. */ -typedef struct -{ - uint8_t request_type; /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */ - union - { - nrf_radio_request_earliest_t earliest; /**< Parameters for requesting a radio timeslot as early as possible. */ - nrf_radio_request_normal_t normal; /**< Parameters for requesting a normal radio timeslot. */ - } params; /**< Parameter union. */ -} nrf_radio_request_t; - -/**@brief Return parameters of the radio timeslot signal callback. */ -typedef struct -{ - uint8_t callback_action; /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */ - union - { - struct - { - nrf_radio_request_t * p_next; /**< The request parameters for the next radio timeslot. */ - } request; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */ - struct - { - uint32_t length_us; /**< Requested extension of the radio timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */ - } extend; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */ - } params; /**< Parameter union. */ -} nrf_radio_signal_callback_return_param_t; - -/**@brief The radio timeslot signal callback type. - * - * @note In case of invalid return parameters, the radio timeslot will automatically end - * immediately after returning from the signal callback and the - * @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent. - * @note The returned struct pointer must remain valid after the signal callback - * function returns. For instance, this means that it must not point to a stack variable. - * - * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE. - * - * @return Pointer to structure containing action requested by the application. - */ -typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type); - -/**@brief AES ECB parameter typedefs */ -typedef uint8_t soc_ecb_key_t[SOC_ECB_KEY_LENGTH]; /**< Encryption key type. */ -typedef uint8_t soc_ecb_cleartext_t[SOC_ECB_CLEARTEXT_LENGTH]; /**< Cleartext data type. */ -typedef uint8_t soc_ecb_ciphertext_t[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Ciphertext data type. */ - -/**@brief AES ECB data structure */ -typedef struct -{ - soc_ecb_key_t key; /**< Encryption key. */ - soc_ecb_cleartext_t cleartext; /**< Cleartext data. */ - soc_ecb_ciphertext_t ciphertext; /**< Ciphertext data. */ -} nrf_ecb_hal_data_t; - -/**@brief AES ECB block. Used to provide multiple blocks in a single call - to @ref sd_ecb_blocks_encrypt.*/ -typedef struct -{ - soc_ecb_key_t const * p_key; /**< Pointer to the Encryption key. */ - soc_ecb_cleartext_t const * p_cleartext; /**< Pointer to the Cleartext data. */ - soc_ecb_ciphertext_t * p_ciphertext; /**< Pointer to the Ciphertext data. */ -} nrf_ecb_hal_data_block_t; - -/**@} */ - -/**@addtogroup NRF_SOC_FUNCTIONS Functions - * @{ */ - -/**@brief Initialize a mutex. - * - * @param[in] p_mutex Pointer to the mutex to initialize. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); - -/**@brief Attempt to acquire a mutex. - * - * @param[in] p_mutex Pointer to the mutex to acquire. - * - * @retval ::NRF_SUCCESS The mutex was successfully acquired. - * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. - */ -SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); - -/**@brief Release a mutex. - * - * @param[in] p_mutex Pointer to the mutex to release. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); - -/**@brief Query the capacity of the application random pool. - * - * @param[out] p_pool_capacity The capacity of the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY_GET, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); - -/**@brief Get number of random bytes available to the application. - * - * @param[out] p_bytes_available The number of bytes currently available in the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); - -/**@brief Get random bytes from the application pool. - * - * @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. - * @param[in] length Number of bytes to take from pool and place in p_buff. - * - * @retval ::NRF_SUCCESS The requested bytes were written to p_buff. - * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. -*/ -SVCALL(SD_RAND_APPLICATION_VECTOR_GET, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); - -/**@brief Gets the reset reason register. - * - * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); - -/**@brief Clears the bits of the reset reason register. - * - * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); - -/**@brief Sets the power mode when in CPU sleep. - * - * @param[in] power_mode The power mode to use when in CPU sleep, see @ref NRF_POWER_MODES. @sa sd_app_evt_wait - * - * @retval ::NRF_SUCCESS The power mode was set. - * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. - */ -SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(uint8_t power_mode)); - -/**@brief Puts the chip in System OFF mode. - * - * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN - */ -SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); - -/**@brief Enables or disables the power-fail comparator. - * - * Enabling this will give a SoftDevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); - - -/**@brief Sets the power failure comparator threshold value. - * - * - * @param[in] threshold The power-fail threshold value to use, see @ref NRF_POWER_THRESHOLDS. - * - * @retval ::NRF_SUCCESS The power failure threshold was set. - * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. - */ -SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(uint8_t threshold)); - - -/**@brief Writes the NRF_POWER->RAM[index].POWERSET register. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERSET register to write to. - * @param[in] ram_powerset Contains the word to write to the NRF_POWER->RAM[index].POWERSET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_SET, uint32_t, sd_power_ram_power_set(uint8_t index, uint32_t ram_powerset)); - -/**@brief Writes the NRF_POWER->RAM[index].POWERCLR register. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERCLR register to write to. - * @param[in] ram_powerclr Contains the word to write to the NRF_POWER->RAM[index].POWERCLR register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_CLR, uint32_t, sd_power_ram_power_clr(uint8_t index, uint32_t ram_powerclr)); - -/**@brief Get contents of NRF_POWER->RAM[index].POWER register, indicates power status of RAM[index] blocks. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWER register to read from. - * @param[out] p_ram_power Content of NRF_POWER->RAM[index].POWER register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_GET, uint32_t, sd_power_ram_power_get(uint8_t index, uint32_t * p_ram_power)); - -/**@brief Set bits in the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[in] gpregret_msk Bits to be set in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_id, uint32_t gpregret_msk)); - -/**@brief Clear bits in the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_id, uint32_t gpregret_msk)); - -/**@brief Get contents of the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[out] p_gpregret Contents of the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t gpregret_id, uint32_t *p_gpregret)); - -/**@brief Enable or disable the DC/DC regulator. - * - * @param[in] dcdc_mode The mode of the DCDC, see @ref NRF_POWER_DCDC_MODES. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. - */ -SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(uint8_t dcdc_mode)); - - -/**@brief Request the high frequency crystal oscillator. - * - * Will start the high frequency crystal oscillator, the startup time of the crystal varies - * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_release - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); - -/**@brief Releases the high frequency crystal oscillator. - * - * Will stop the high frequency crystal oscillator, this happens immediately. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_request - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); - -/**@brief Checks if the high frequency crystal oscillator is running. - * - * @see sd_clock_hfclk_request - * @see sd_clock_hfclk_release - * - * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); - -/**@brief Waits for an application event. - * - * An application event is either an application interrupt or a pended interrupt when the interrupt - * is disabled. - * - * When the application waits for an application event by calling this function, an interrupt that - * is enabled will be taken immediately on pending since this function will wait in thread mode, - * then the execution will return in the application's main thread. - * - * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M - * MCU's System Control Register (SCR), CMSIS_SCB. In that case, when a disabled interrupt gets - * pended, this function will return to the application's main thread. - * - * @note The application must ensure that the pended flag is cleared using ::sd_nvic_ClearPendingIRQ - * in order to sleep using this function. This is only necessary for disabled interrupts, as - * the interrupt handler will clear the pending flag automatically for enabled interrupts. - * - * @note If an application interrupt has happened since the last time sd_app_evt_wait was - * called this function will return immediately and not go to sleep. This is to avoid race - * conditions that can occur when a flag is updated in the interrupt handler and processed - * in the main loop. - * - * @post An application interrupt has happened or a interrupt pending flag is set. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); - -/**@brief Get PPI channel enable register contents. - * - * @param[out] p_channel_enable The contents of the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); - -/**@brief Set PPI channel enable register. - * - * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); - -/**@brief Clear PPI channel enable register. - * - * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); - -/**@brief Assign endpoints to a PPI channel. - * - * @param[in] channel_num Number of the PPI channel to assign. - * @param[in] evt_endpoint Event endpoint of the PPI channel. - * @param[in] task_endpoint Task endpoint of the PPI channel. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); - -/**@brief Task to enable a channel group. - * - * @param[in] group_num Number of the channel group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); - -/**@brief Task to disable a channel group. - * - * @param[in] group_num Number of the PPI group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); - -/**@brief Assign PPI channels to a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[in] channel_msk Mask of the channels to assign to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); - -/**@brief Gets the PPI channels of a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[out] p_channel_msk Mask of the channels assigned to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); - -/**@brief Configures the Radio Notification signal. - * - * @note - * - The notification signal latency depends on the interrupt priority settings of SWI used - * for notification signal. - * - To ensure that the radio notification signal behaves in a consistent way, the radio - * notifications must be configured when there is no protocol stack or other SoftDevice - * activity in progress. It is recommended that the radio notification signal is - * configured directly after the SoftDevice has been enabled. - * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice - * will interrupt the application to do Radio Event preparation. - * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have - * to shorten the connection events to have time for the Radio Notification signals. - * - * @param[in] type Type of notification signal, see @ref NRF_RADIO_NOTIFICATION_TYPES. - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio - * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is - * recommended (but not required) to be used with - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. - * - * @param[in] distance Distance between the notification signal and start of radio activity, see @ref NRF_RADIO_NOTIFICATION_DISTANCES. - * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or - * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. - * - * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. - * @retval ::NRF_ERROR_INVALID_STATE A protocol stack or other SoftDevice is running. Stop all - * running activities and retry. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(uint8_t type, uint8_t distance)); - -/**@brief Encrypts a block according to the specified parameters. - * - * 128-bit AES encryption. - * - * @note: - * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while - * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application - * main or low interrupt level. - * - * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input - * parameters and one output parameter). - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); - -/**@brief Encrypts multiple data blocks provided as an array of data block structures. - * - * @details: Performs 128-bit AES encryption on multiple data blocks - * - * @note: - * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while - * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application - * main or low interrupt level. - * - * @param[in] block_count Count of blocks in the p_data_blocks array. - * @param[in,out] p_data_blocks Pointer to the first entry in a contiguous array of - * @ref nrf_ecb_hal_data_block_t structures. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCKS_ENCRYPT, uint32_t, sd_ecb_blocks_encrypt(uint8_t block_count, nrf_ecb_hal_data_block_t * p_data_blocks)); - -/**@brief Gets any pending events generated by the SoC API. - * - * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. - * - * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. - * - * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. - * @retval ::NRF_ERROR_NOT_FOUND No pending events. - */ -SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); - -/**@brief Get the temperature measured on the chip - * - * This function will block until the temperature measurement is done. - * It takes around 50 us from call to return. - * - * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees Celsius. - * - * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp - */ -SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); - -/**@brief Flash Write -* -* Commands to write a buffer to flash -* -* If the SoftDevice is enabled: -* This call initiates the flash access command, and its completion will be communicated to the -* application with exactly one of the following events: -* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. -* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. -* -* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the - * write has been completed -* -* @note -* - This call takes control over the radio and the CPU during flash erase and write to make sure that -* they will not interfere with the flash access. This means that all interrupts will be blocked -* for a predictable time (depending on the NVMC specification in the device's Product Specification -* and the command parameters). -* - The data in the p_src buffer should not be modified before the @ref NRF_EVT_FLASH_OPERATION_SUCCESS -* or the @ref NRF_EVT_FLASH_OPERATION_ERROR have been received if the SoftDevice is enabled. -* - This call will make the SoftDevice trigger a hardfault when the page is written, if it is -* protected. -* -* -* @param[in] p_dst Pointer to start of flash location to be written. -* @param[in] p_src Pointer to buffer with data to be written. -* @param[in] size Number of 32-bit words to write. Maximum size is the number of words in one -* flash page. See the device's Product Specification for details. -* -* @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. -* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. -* @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or higher than the maximum allowed size. -* @retval ::NRF_ERROR_FORBIDDEN Tried to write to an address outside the application flash area. -* @retval ::NRF_SUCCESS The command was accepted. -*/ -SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * p_dst, uint32_t const * p_src, uint32_t size)); - - -/**@brief Flash Erase page -* -* Commands to erase a flash page -* If the SoftDevice is enabled: -* This call initiates the flash access command, and its completion will be communicated to the -* application with exactly one of the following events: -* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. -* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. -* -* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the -* erase has been completed -* -* @note -* - This call takes control over the radio and the CPU during flash erase and write to make sure that -* they will not interfere with the flash access. This means that all interrupts will be blocked -* for a predictable time (depending on the NVMC specification in the device's Product Specification -* and the command parameters). -* - This call will make the SoftDevice trigger a hardfault when the page is erased, if it is -* protected. -* -* -* @param[in] page_number Page number of the page to erase -* -* @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. -* @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. -* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. -* @retval ::NRF_ERROR_FORBIDDEN Tried to erase a page outside the application flash area. -* @retval ::NRF_SUCCESS The command was accepted. -*/ -SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number)); - - -/**@brief Flash Protection set - * - * Commands to set the flash protection configuration registers. - This sets the CONFIGx registers of the BPROT peripheral. - * - * @note Not all parameters are valid for all products. Some bits in each parameter may not be - * valid for your product. Please refer your Product Specification for more details. - * - * @note To read the values read them directly. They are only write-protected. - * - * @note It is possible to use @ref sd_protected_register_write instead of this function. - * - * @param[in] block_cfg0 Value to be written to the configuration register. - * @param[in] block_cfg1 Value to be written to the configuration register. - * @param[in] block_cfg2 Value to be written to the configuration register. - * @param[in] block_cfg3 Value to be written to the configuration register. - * - * @retval ::NRF_ERROR_NOT_SUPPORTED Non-zero value supplied to one or more of the unsupported parameters. - * @retval ::NRF_SUCCESS Values successfully written to configuration registers. - */ -SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t block_cfg0, uint32_t block_cfg1, uint32_t block_cfg2, uint32_t block_cfg3)); - -/**@brief Opens a session for radio timeslot requests. - * - * @note Only one session can be open at a time. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot - * starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed - * by the application. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0 - * interrupt occurs. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO - * interrupt occurs. - * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This - * implies that none of the sd_* API calls can be used from p_radio_signal_callback(). - * - * @param[in] p_radio_signal_callback The signal callback. - * - * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer. - * @retval ::NRF_ERROR_BUSY If session cannot be opened. - * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback)); - -/**@brief Closes a session for radio timeslot requests. - * - * @note Any current radio timeslot will be finished before the session is closed. - * @note If a radio timeslot is scheduled when the session is closed, it will be canceled. - * @note The application cannot consider the session closed until the @ref NRF_EVT_RADIO_SESSION_CLOSED - * event is received. - * - * @retval ::NRF_ERROR_FORBIDDEN If session not opened. - * @retval ::NRF_ERROR_BUSY If session is currently being closed. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void)); - -/**@brief Requests a radio timeslot. - * - * @note The request type is determined by p_request->request_type, and can be one of @ref NRF_RADIO_REQ_TYPE_EARLIEST - * and @ref NRF_RADIO_REQ_TYPE_NORMAL. The first request in a session must always be of type @ref NRF_RADIO_REQ_TYPE_EARLIEST. - * @note For a normal request (@ref NRF_RADIO_REQ_TYPE_NORMAL), the start time of a radio timeslot is specified by - * p_request->distance_us and is given relative to the start of the previous timeslot. - * @note A too small p_request->distance_us will lead to a @ref NRF_EVT_RADIO_BLOCKED event. - * @note Timeslots scheduled too close will lead to a @ref NRF_EVT_RADIO_BLOCKED event. - * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths. - * @note If an opportunity for the first radio timeslot is not found before 100 ms after the call to this - * function, it is not scheduled, and instead a @ref NRF_EVT_RADIO_BLOCKED event is sent. - * The application may then try to schedule the first radio timeslot again. - * @note Successful requests will result in nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START). - * Unsuccessful requests will result in a @ref NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS. - * @note The jitter in the start time of the radio timeslots is +/- @ref NRF_RADIO_START_JITTER_US us. - * @note The nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the - * specified radio timeslot start, but this does not affect the actual start time of the timeslot. - * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency - * (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is - * guaranteed to be clocked from the external crystal. - * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral - * during the radio timeslot. - * - * @param[in] p_request Pointer to the request parameters. - * - * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE. - * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid. - * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t const * p_request)); - -/**@brief Write register protected by the SoftDevice - * - * This function writes to a register that is write-protected by the SoftDevice. Please refer to your - * SoftDevice Specification for more details about which registers that are protected by SoftDevice. - * This function can write to the following protected peripheral: - * - BPROT - * - * @note Protected registers may be read directly. - * @note Register that are write-once will return @ref NRF_SUCCESS on second set, even the value in - * the register has not changed. See the Product Specification for more details about register - * properties. - * - * @param[in] p_register Pointer to register to be written. - * @param[in] value Value to be written to the register. - * - * @retval ::NRF_ERROR_INVALID_ADDR This function can not write to the reguested register. - * @retval ::NRF_SUCCESS Value successfully written to register. - * - */ -SVCALL(SD_PROTECTED_REGISTER_WRITE, uint32_t, sd_protected_register_write(volatile uint32_t * p_register, uint32_t value)); - -/**@} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_SOC_H__ - -/**@} */ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_svc.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_svc.h deleted file mode 100644 index 292c692982..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/headers/nrf_svc.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef NRF_SVC__ -#define NRF_SVC__ - -#include "stdint.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SVCALL_AS_NORMAL_FUNCTION -#define SVCALL(number, return_type, signature) return_type signature -#else - -#ifndef SVCALL -#if defined (__CC_ARM) -#define SVCALL(number, return_type, signature) return_type __svc(number) signature -#elif defined (__GNUC__) -#ifdef __cplusplus -#define GCC_CAST_CPP (uint16_t) -#else -#define GCC_CAST_CPP -#endif -#define SVCALL(number, return_type, signature) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ - __attribute__((naked)) \ - __attribute__((unused)) \ - static return_type signature \ - { \ - __asm( \ - "svc %0\n" \ - "bx r14" : : "I" (GCC_CAST_CPP number) : "r0" \ - ); \ - } \ - _Pragma("GCC diagnostic pop") - -#elif defined (__ICCARM__) -#define PRAGMA(x) _Pragma(#x) -#define SVCALL(number, return_type, signature) \ -PRAGMA(swi_number = (number)) \ - __swi return_type signature; -#else -#define SVCALL(number, return_type, signature) return_type signature -#endif -#endif // SVCALL - -#endif // SVCALL_AS_NORMAL_FUNCTION - -#ifdef __cplusplus -} -#endif -#endif // NRF_SVC__ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_licence-agreement.txt b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_licence-agreement.txt deleted file mode 100644 index a71adee7b9..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_licence-agreement.txt +++ /dev/null @@ -1,35 +0,0 @@ -Copyright (c) 2007 - 2018, Nordic Semiconductor ASA -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form, except as embedded into a Nordic - Semiconductor ASA integrated circuit in a product or a software update for - such product, must reproduce the above copyright notice, this list of - conditions and the following disclaimer in the documentation and/or other - materials provided with the distribution. - -3. Neither the name of Nordic Semiconductor ASA nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -4. This software, with or without modification, must only be used with a - Nordic Semiconductor ASA integrated circuit. - -5. Any software provided in binary form under this license must not be reverse - engineered, decompiled, modified and/or disassembled. - -THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_softdevice.hex b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_softdevice.hex deleted file mode 100644 index 07d4432d80..0000000000 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_S112/hex/s112_nrf52_6.0.0_softdevice.hex +++ /dev/null @@ -1,6143 +0,0 @@ -:020000040000FA -:1000000000040020E90800007D050000C908000088 -:1000100087050000910500009B050000000000001E -:100020000000000000000000000000000D090000BA -:10003000A505000000000000AF050000B9050000A4 -:10004000C3050000CD050000D7050000E105000054 -:10005000EB050000F5050000FF05000009060000A3 -:10006000130600001D0600002706000031060000F0 -:100070003B060000450600004F0600005906000040 -:10008000630600006D060000770600008106000090 -:100090008B060000950600009F060000A9060000E0 -:1000A000B3060000BD060000C7060000D106000030 -:1000B000DB060000E5060000EF060000F906000080 -:1000C000030700000D0700001707000021070000CC -:1000D0002B070000350700003F070000490700001C -:1000E000530700005D07000067070000710700006C -:1000F0007B070000850700008F07000099070000BC -:10010000A30700001FB500F003F88DE80F001FBD26 -:1001100000F0E0BB1FB56FF00100009040100390AD -:10012000029001904FF010208069000B420900F00E -:100130001F045DF822300120A04083434DF8223097 -:10014000684600F045F91FBDF0B54FF6FF734FF458 -:10015000B4751A466E1E11E0A94201D3344600E080 -:100160000C46091B30F8027B641E3B441A44F9D14B -:100170009CB204EB134394B204EB12420029EBD17E -:1001800098B200EB134002EB124140EA0140F0BD8F -:10019000DE4992B00446D1E90001CDE91001FF2209 -:1001A0004021684600F03CFB94E80F008DE80F000A -:1001B000684610A902E004C841F8042D8842FAD12B -:1001C00010216846FFF7C0FF1090AA208DF8440068 -:1001D000FFF7A0FF00F0F3F84FF01024A069102201 -:1001E0006946803000F002F9A069082210A900F0E9 -:1001F000FDF800F0D8F84FF080510A6949690068AD -:100200004A43824201D8102070470020704710B541 -:10021000D0E900214FF0805002EB8103026944696C -:100220006243934209D84FF01022536903EB8103D4 -:100230000169406941438B4201D9092010BD5069D1 -:10024000401C01D0002010BD0F2010BD70B501680A -:100250000446AF4D4FF01020072952D2DFE801F0DD -:10026000330419293C1E2500D4E902656468294637 -:10027000304600F0CDF82A462146304600F0B6F868 -:10028000AA002146304600F09FFA002800D0032043 -:1002900070BD00F051FB4FF4805007E0201DFFF7C8 -:1002A000AAFF0028F4D100F047FB60682860002016 -:1002B00070BD241D94E80700920000F085FA002824 -:1002C000F6D00E2070BD8069401C12D0201DFFF7B3 -:1002D0009EFF0028F6D109E08069401C09D0201D4E -:1002E000FFF789FF0028EDD1606820B12046FFF7B5 -:1002F0004FFF042070BDFFF70DFF00F060F800F025 -:1003000052F8072070BD10B50C46182802D0012005 -:10031000086010BD2068FFF799FF206010BD4FF006 -:100320001024A069401C05D0A569A66980353079E4 -:10033000AA2808D06069401C2DD060690068401C64 -:1003400029D060692CE010212846FFF7FDFE3168B6 -:1003500081421CD1A16901F18002C03105E030B1B8 -:1003600008CA51F8040D984201D1012000E0002094 -:100370008A42F4D158B1286810B1042803D0FEE7AE -:10038000284600F057F862496868086008E000F005 -:1003900016F800F008F84FF480500168491C01D0AD -:1003A00000F0A4FAFEE7BFF34F8F5A4801685A4A9B -:1003B00001F4E06111430160BFF34F8FFEE74FF09E -:1003C00010208169491C02D0806900F0AEB87047E6 -:1003D000524A01681160121D416811604F4A8168DC -:1003E00010321160111DC068086070472DE9F0419E -:1003F00017460D460646002406E03046296800F000 -:10040000A7F8641C2D1D361DBC42F6D3BDE8F08153 -:1004100070B50C4605464FF4806608E0284600F0AB -:1004200084F8B44205D3A4F5806405F58055002C0A -:10043000F4D170BD4168044609B1012500E00025F2 -:100440004FF010267069A268920000F0BDF9C8B1A3 -:10045000204600F01AF89DB17669A56864684FF4EB -:10046000002084420AD2854208D229463046FFF74E -:10047000CFFF2A4621463046FFF7B8FFFFF79FFF20 -:10048000FFF791FFFFF746FEF8E72DE9FF414FF038 -:100490001024616980680D0B01EB800000F6FF708D -:1004A000010B0020009001900290024603906846E4 -:1004B00001230BE0560902F01F0C50F8267003FAD6 -:1004C0000CFC47EA0C0740F82670521CAA42F1D3F4 -:1004D0000AE04A0901F01F0650F8225003FA06F616 -:1004E000354340F82250491C8029F2D3A169090BF9 -:1004F0004A0901F01F0150F822408B409C4340F80C -:100500002240FFF765FFBDE8FF8100005C090000A5 -:10051000000000200CED00E00400FA050006004099 -:10052000144801680029FCD07047134A0221116069 -:1005300010490B68002BFCD00F4B1B1D186008687E -:100540000028FCD00020106008680028FCD070470C -:10055000094B10B501221A60064A1468002CFCD021 -:10056000016010680028FCD0002018601068002886 -:10057000FCD010BD00E4014004E5014008208F4993 -:1005800009680958084710208C4909680958084724 -:1005900014208A49096809580847182087490968BA -:1005A0000958084730208549096809580847382004 -:1005B00082490968095808473C2080490968095858 -:1005C000084740207D4909680958084744207B496D -:1005D00009680958084748207849096809580847B0 -:1005E0004C20764909680958084750207349096822 -:1005F0000958084754207149096809580847582084 -:100600006E490968095808475C206C49096809580F -:100610000847602069490968095808476420674904 -:100620000968095808476820644909680958084753 -:100630006C20624909680958084770205F490968B9 -:100640000958084774205D49096809580847782007 -:100650005A490968095808477C20584909680958C7 -:10066000084780205549096809580847842053499C -:1006700009680958084788205049096809580847F7 -:100680008C204E4909680958084790204B49096851 -:10069000095808479420494909680958084798208B -:1006A00046490968095808479C204449096809587F -:1006B0000847A0204149096809580847A4203F4934 -:1006C000096809580847A8203C490968095808479B -:1006D000AC203A49096809580847B02037490968E9 -:1006E00009580847B4203549096809580847B8200F -:1006F0003249096809580847BC2030490968095837 -:100700000847C0202D49096809580847C4202B49CB -:10071000096809580847C82028490968095808473E -:10072000CC202649096809580847D0202349096880 -:1007300009580847D4202149096809580847D82092 -:100740001E49096809580847DC201C4909680958EE -:100750000847E0201949096809580847E420174963 -:10076000096809580847E8201449096809580847E2 -:10077000EC201249096809580847F0200F49096818 -:1007800009580847F4200D49096809580847F82016 -:100790000A49096809580847FC20084909680958A6 -:1007A00008475FF480700549096809580847000048 -:1007B00003480449024A034B704700000000002030 -:1007C000680900006809000040EA010310B59B07B2 -:1007D0000FD1042A0DD310C808C9121F9C42F8D0AB -:1007E00020BA19BA884201D9012010BD4FF0FF305C -:1007F00010BD1AB1D30703D0521C07E0002010BD72 -:1008000010F8013B11F8014B1B1B07D110F8013BFD -:1008100011F8014B1B1B01D1921EF1D1184610BDDE -:1008200002F0FF0343EA032242EA024200F005B865 -:100830007047704770474FF000020429C0F01280E3 -:1008400010F0030C00F01B80CCF1040CBCF1020F83 -:1008500018BF00F8012BA8BF20F8022BA1EB0C0158 -:1008600000F00DB85FEAC17C24BF00F8012B00F84E -:10087000012B48BF00F8012B70474FF0000200B574 -:10088000134694469646203922BFA0E80C50A0E8B3 -:100890000C50B1F12001BFF4F7AF090728BFA0E861 -:1008A0000C5048BF0CC05DF804EB890028BF40F82D -:1008B000042B08BF704748BF20F8022B11F0804F6F -:1008C00018BF00F8012B7047014B1B68DB68184705 -:1008D0000000002009480A497047FFF7FBFFFFF7B7 -:1008E00011FC00BD20BFFDE7064B1847064A10600B -:1008F000016881F30888406800470000680900002B -:10090000680900001F030000000000201EF0040F13 -:100910000CBFEFF30881EFF3098188690238007892 -:10092000182803D100E00000074A1047074A126860 -:100930002C3212681047000000B5054B1B68054AB1 -:100940009B58984700BD00000703000000000020EE -:100950005809000004000000001000000000000022 -:0809600000FFFFFF0090D0032F -:10100000900D0020A9800100AD2E00001B80010082 -:10101000AD2E0000AD2E0000AD2E0000000000003F -:10102000000000000000000000000000018101003D -:10103000AD2E000000000000AD2E0000AD2E00001F -:10104000698101006F810100AD2E0000AD2E00000E -:10105000AD2E0000AD2E0000AD2E0000AD2E000024 -:1010600075810100AD2E0000AD2E00007B810100D6 -:10107000AD2E000081810100878101008D8101007A -:10108000AD2E0000AD2E0000AD2E0000AD2E0000F4 -:10109000AD2E0000AD2E0000AD2E0000AD2E0000E4 -:1010A000AD2E000093810100AD2E0000AD2E00009A -:1010B000AD2E0000AD2E0000AD2E0000AD2E0000C4 -:1010C00099810100AD2E0000AD2E0000AD2E000074 -:1010D000AD2E0000AD2E0000AD2E0000AD2E0000A4 -:1010E000AD2E0000AD2E0000AD2E0000AD2E000094 -:1010F000AD2E0000AD2E0000AD2E0000AD2E000084 -:10110000AD2E0000AD2E000000F002F816F0B9FF81 -:101110000AA090E8000C82448344AAF10107DA4552 -:1011200001D116F0AEFFAFF2090EBAE80F0013F0CE -:10113000010F18BFFB1A43F001031847B8740100F0 -:10114000D87401000A4410F8014B14F00F0508BFD1 -:1011500010F8015B240908BF10F8014B6D1E05D083 -:1011600010F8013B6D1E01F8013BF9D1641E03D05C -:10117000641E01F8015BFBD19142E4D3704700008B -:101180000023002400250026103A28BF78C1FBD890 -:10119000520728BF30C148BF0B6070471FB500F031 -:1011A00031F88DE80F001FBD8269034981614FF05E -:1011B0000100104470470000BD11000001B41EB4CE -:1011C00000B501F0FBFE01B40198864601BC01B0F8 -:1011D0001EBD0000F0B44046494652465B460FB47F -:1011E00002A0013001B50648004700BF01BC864699 -:1011F0000FBC8046894692469B46F0BC7047000073 -:101200000911000016F03ABF70B51B4C05460920C5 -:101210002070A01C00F061F85920A08029462046CB -:10122000BDE8704006F058BD06F061BD70B50C46D3 -:101230001249097829B1A0F160015E2908D3012083 -:1012400013E0602804D0692802D043F201000CE0CA -:1012500020CC0B4E94E80E0006EB8000A0F58050E9 -:10126000241FD0F8806E2846B047206070BD012052 -:101270007047062070470000080000201C00002076 -:10128000C881010010B504460021012000F032F8A9 -:1012900000210B2000F02EF80421192000F02AF87C -:1012A00004210D2000F026F804210E2000F022F881 -:1012B00004210F2000F01EF80421C84300F01AF8A2 -:1012C0000621162000F016F80621152000F012F86D -:1012D0002046FFF799FF002010BDA721018070472D -:1012E000FFF7A2BF002070470A487047FFF79EBF74 -:1012F000704770474907090E002806DA00F00F0012 -:1013000000F1E02080F8141D704700F1E02080F823 -:101310000014704703F9004230B5FF4D0446062C17 -:10132000A9780ED2DFE804F0030E0E0E0509FFDFE8 -:1013300008E0022906D0FFDF04E0032902D0FFDF26 -:1013400000E0FFDFAC7030BDF34810B5407E4108CF -:10135000F14800F11A0005D00AF07BFBBDE810400F -:1013600006F058BB0AF05CFBF8E730B50446A1F183 -:1013700020000D460A2847D2DFE800F005070C19C7 -:10138000202532373C41FFDF3FE0207820283CD148 -:10139000FFDF3AE0E0488078052836D0207824281E -:1013A00033D0252831D023282FD0FFDF2DE020781F -:1013B00022282AD0232828D8FFDF26E020782228D8 -:1013C00023D0FFDF21E0207822281ED024281CD043 -:1013D00026281AD0272818D0292816D0FFDF14E095 -:1013E0002078252811D0FFDF0FE0207825280CD0A9 -:1013F000FFDF0AE02078252807D0FFDF05E020780E -:10140000282802D0FFDF00E0FFDF257030BD1FB5C8 -:101410000022ADF800200C88ADF802404B88ADF8F2 -:101420000430CA88ADF808208988ADF8061000217C -:10143000ADF80A10ADF80C1080B14FF6FF70062120 -:10144000844201D1ADF80210834201D1ADF80410FD -:10145000824203D14FF44860ADF8080068460AF0B4 -:101460002DFC06F0D7FA04B010BD70B514460D4639 -:1014700006460FF00FFA60B90DB1A54201D90C2054 -:1014800070BD002409E000BF56F824000FF002FAF6 -:1014900008B1102070BD641CE4B2AC42F4D300204B -:1014A00070BD2DE9F04105461F4690460E460024CA -:1014B00000680FF03CFA10B11020BDE8F0812868F8 -:1014C0000028A88802D0B84202D84FE00028F4D003 -:1014D0000920F2E72868025DB2B1611C475C152F54 -:1014E0002DD03BDC3AD2DFE807F03912222228283F -:1014F0002A2A3131393939393939393939392200DA -:10150000025D32BB641CA4B2A142F9D833E0022AC6 -:10151000DED1A21C805C88F80000072801D24007B9 -:1015200001D40A20C9E7307840F0010015E0D0432B -:10153000C00707E0012A07D010E00620BDE710072A -:10154000A0F180500028F5D01846B6E73078820721 -:1015500001D50B20B1E740F0020030702868005D33 -:10156000084484B2A888A04202D2B1E74FF448539D -:1015700081B2A142AED800209FE710B5027854088E -:1015800009D0012243F20223012C07D0022C0DD0F6 -:10159000032C13D10FE00020087005E080790324AC -:1015A000B4EB901F0AD10A70002010BD8079B2EB15 -:1015B000901F03D1F7E780798009F4D0184610BD59 -:1015C00038B50C460546694601F089F800280DD16A -:1015D0009DF80010207861F34700207055F8010F46 -:1015E000C4F80100A888A4F80500002038BD38B56B -:1015F0001378C0B1022816D048A46D462468009420 -:101600004C7905EB9414247864F347031370032892 -:101610000ED003F0FE0010700868C2F80100888840 -:10162000A2F8050038BD23F0FE0313700228EED1A6 -:10163000D8B240F00100EEE702210BF07DBC38B5D6 -:101640000C460978222901D2082038BDADF80000E7 -:101650008DF8022068460AF038FA06F0DBF905003A -:1016600003D121212046FFF780FE284638BD1CB556 -:1016700000208DF80000CDF80100ADF805002648E7 -:1016800090F82200022801D0012000E000208DF80F -:10169000070068460AF086FA002800D0FFDF1CBD6C -:1016A0002DE9FF478CB00026BDF8347082461C46F9 -:1016B00090468DF81C60780703D560680FF0EAF853 -:1016C00068B9154D4FF0010995F8220058B195F809 -:1016D0002300022807D160680FF029F918B1102003 -:1016E00010B0BDE8F087380702D5A08980281AD845 -:1016F000780704D4B8F1000F01D0287E98B1E07DBE -:10170000C0F300108DF81B00617D072069B101292D -:101710000BD00229E4D003E0900100200302FF0176 -:101720000429DDD118E00720DAE78DF817908DF84D -:1017300019908DF8158060684F4678B107A9FFF7BA -:101740001CFF0028CCD1606850F8011FCDF80F10A5 -:101750008088ADF8130005E00620C1E7CDF80F60E2 -:10176000ADF81360E07B0028F6D1207C0028F3D18F -:10177000607C0028F0D1A07C0028EDD1E07CC00680 -:10178000EAD18DF800A0BDF83400ADF80200A068E1 -:101790000190A0680290FEA0D0E90010CDE90A10E7 -:1017A000E07C0AA901EB50101B3900788DF80C0081 -:1017B00095F8220030B195F82300022818D00328AC -:1017C00004D119E0F44800F08AFF00B1FFDF9DF872 -:1017D0001C008DF80E008DF818608DF816608DF8DD -:1017E0001A6009A968460AF0A5FA06F013F977E726 -:1017F00003208DF80D00EAE78DF80D70E7E7F0B5EE -:101800009DB000228DF868208DF858208DF860205A -:1018100005468DF86C20129213921492159219B10C -:101820000FC912AC84E80F00DB4C193CA0780528E6 -:1018300001D004280CD112986168884200D120B9E7 -:101840001498E168884203D110B108201DB0F0BDA2 -:101850001F26334618AA1AA912A8FFF722FE00284D -:10186000F4D133461BAA16A914A8FFF71AFE0028C4 -:10187000ECD19DF85800C00701D00A20E6E7A08A05 -:10188000410708D4A17D31B19DF86010890702D0CD -:1018900043F20120DAE79DF86010C90709D040073C -:1018A00007D4208818B144F25061884201D907203A -:1018B000CCE78DF8005003268DF8016001278DF8E4 -:1018C0000270BDF84C208DF8032001A8129916F083 -:1018D000D6FA68460AF08DFA06F09CF80028B5D1D1 -:1018E0008DF824508DF825608DF82670BDF85420B1 -:1018F0008DF827200AA8149916F0C1FA09A80AF051 -:101900009CFA06F087F80028A0D112AD241D95E8B6 -:101910000F0084E80F00002098E72DE9FE43040043 -:1019200000D1FFDF20789C4E20F00F00801C20F0BB -:10193000F000703020706068193E0178C91F1229CC -:1019400029D2DFE801F04BFD2809FDFD38FB2828EE -:1019500064FBFA2828FBFBF986883046FFF76CFE0B -:101960000546304609F0B1FCB8B16068807985F869 -:101970003E0021212846FFF7F8FC304603F07FFAAD -:10198000304604F0E9FB314601200EF037FFA87F16 -:1019900020F01000A877BDE8FE83207820F0F0004A -:1019A0002030207006202072668060688079607226 -:1019B00006F013FADDE785882846FFF73DFE00B9FB -:1019C000FFDF60688078012800D0FFDF60688179E0 -:1019D00003B02846BDE8F04309F0A6BD868830462E -:1019E000FFF72AFE050000D1FFDF06F0F6F9606878 -:1019F0003146C088288160680089688160684089B4 -:101A0000A88101200EF0FAFE0020A875C3E78078B7 -:101A1000022808D000B1FFDF06F0DFF96568A87979 -:101A2000AD1C10B102E0FFDFB5E7FFDFF778B5F8D6 -:101A30000290B046384605F08DFF060000D1FFDF6A -:101A40000022022148460BF06EFA040000D1FFDFAD -:101A500022212046FFF789FCA17F012060F30101CC -:101A6000A177298B2181698B6181A98BA18184F860 -:101A700022708DF8080002AA032148460BF053FAA1 -:101A800000B9FFDFB088ADF80400B0788DF806002B -:101A900001AA052148460BF046FA00B9FFDFB088DD -:101AA000ADF80000F0788DF802006A46042148463F -:101AB0000BF039FA00B9FFDF062105F1120000F042 -:101AC0002BFE08B36879800700D5FFDF6979E07DD8 -:101AD00061F34700E075D5F80600A0616889A0832E -:101AE000062105F10C0000F017FEB8B198F81910A6 -:101AF0004A08617862F347016170D8F81A10C4F897 -:101B00000210B8F81E0012E0E07D20F0FE00801CFC -:101B1000E075D5F81200A061E88AE0E7607820F06F -:101B2000FE00801C6070E868C4F80200288AE0802B -:101B30000320FFF7F1FB2EE707E012E00DE0FFE7DF -:101B40002046BDE8FE4301F020BD06F046F916F838 -:101B5000240F40F0040030701DE7BDE8FE4306F09E -:101B60003CB9B178052908D00429E4D106F035F94B -:101B70000220BDE8FE43FFF7CFBB80780028DAD013 -:101B8000F07800F093FD06F028F90320F1E700005B -:101B90000706050403020100A90100202DE9F04712 -:101BA000054600780027000991460C463E4601286C -:101BB00073D0022872D0072809D00A2824D0FFDF6A -:101BC000A9F800600CB127806680002089E5D5F86F -:101BD00004C0DFF8AC874FF0010A9CF800004FF614 -:101BE000FF7113287AD008DC07280ED00E281FD0EA -:101BF000112826D0122806D186E016280BD01728E7 -:101C000059D018286CD02146FBE012271026BCF8CA -:101C100004002146B8E01C270A26ECB3BCF80200F9 -:101C2000A080686800792072686840796072C7E7B0 -:101C30001B27092684B30320207268684088A0808F -:101C4000BEE79CF802003C28BAD010272C260CF1E5 -:101C5000020C0CB3BCF80200A080BCF81800608233 -:101C6000BCF818002082BCF81A00A082BCF81C0046 -:101C7000E0829CF8050004F108020CF10601FFF770 -:101C8000B6FC9CF8040001289AD184F80FA000202B -:101C9000207608F1040002E00AE06DE077E090E8C9 -:101CA0000E00D8F81000C4E90930C4E9071287E72C -:101CB000A9F8006089E720271126002CF8D0A18020 -:101CC000686804F10A02807820726868807A60721D -:101CD0006968C878091DFFF78AFC71E729E0FFE70A -:101CE00021270A26002CE3D0BCF80200A0806868F7 -:101CF0000079207268684079607298F8241021F0A9 -:101D0000040188F824105BE722270B26002CCFD093 -:101D1000BCF80400A08068688078207268688079C8 -:101D200000F009FD60726868C07900F004FDA072DF -:101D300046E726271C26002CBAD0A1806868C07808 -:101D4000607268688079A07208F1040090E80E0063 -:101D5000D8F81000C4E90530C4E903126868807837 -:101D60003C2803D0432804D0FFDF29E784F808A0EB -:101D700026E70220207223E7287A022801D0FFDF1D -:101D80001EE712271026688800F0B3FC18E7287AAF -:101D9000032836D0042834D0052832D0062801D0B4 -:101DA000FFDF0DE711270926002C81D0B5F802804E -:101DB0004046FFF741FC90F822A0A4F80480687A1E -:101DC0002072042140460BF0C9F8052140460BF073 -:101DD000C5F8002140460BF0C1F8012140460BF048 -:101DE000BDF8032140460BF0B9F8022140460BF044 -:101DF000B5F8062140460BF0B1F8504600F056FC0D -:101E0000DEE62846BDE8F04701F0F6BC70B50128D3 -:101E100001D0FFDF70BD8DB22846FFF70DFC040036 -:101E200000D1FFDF20782128F4D005F0D3FF80B166 -:101E3000017821F00F01891C21F0F00110310170AF -:101E40000221017245800020A075BDE8704005F0B8 -:101E5000C4BF21462846BDE870401322FFF7EFBB00 -:101E60002DE9F04116460C00804600D1FFDF3078A6 -:101E700020F00F00801C20F0F0001030307020782F -:101E8000022802D0FFDFBDE8F0814046FFF7D4FB17 -:101E9000050000D1FFDF61884FF6FF700027814207 -:101EA00002D1A288824203D0814201D1A08848B1E8 -:101EB00005F093FF2068B0606068F0602089308290 -:101EC000AF75E0E7A87D0128DDD1782300224146E7 -:101ED0000EF0EAFB0220A875D5E738B505460C469A -:101EE00008460EF0D7FC68B9203D062D30D2DFE859 -:101EF00005F00305222F271B062038BD60680EF071 -:101F00000DFD08B1102038BD618820886A460AF0AE -:101F1000D5F805F07FFD0028F5D161680029F2D0E1 -:101F2000BDF800200A8038BDA07800F001012088AB -:101F30000AF0F5F808E02068BDE8384001F092BEEC -:101F4000618820880AF053F8BDE8384005F062BD8A -:101F5000072038BD70B505460C4608460EF0C0FC9B -:101F600008B1102070BD202D07D0212D0DD0222DBD -:101F70000BD0252D09D0072070BD2088A11C09F0A9 -:101F8000F7FDBDE8704005F045BD062070BDFC487A -:101F90001930704708B52821F94816F011F80120CA -:101FA000FFF7BAF9F64968461A3105F0A9FEF44878 -:101FB0009DF80020417E62F3470121F00101417646 -:101FC000002180F822104FF461710184022180F811 -:101FD0002310FFF7B9F900B1FFDF00F0DDFB01F0DE -:101FE000A7FA08BD10B50C464021204615F0C6FFE3 -:101FF000A07F20F00300A077202020700020A07593 -:1020000084F8230010BD70472DE9FC4107460EF00F -:1020100041FC10B11020BDE8FC81D94E06F1190138 -:10202000D6F819000090B6F81D50ADF80450F47FB2 -:102030008DF806403846FFF7C3FA0028EBD1FFF7CA -:1020400083F90028E7D0009946F8191FB580B471CC -:10205000E1E710B504460EF043FC08B1102010BDB6 -:10206000C748C7492246407E1A314008FFF7BFFAE9 -:10207000002010BDFEB50D4604004FF0000712D041 -:102080000822FFF7F2F9002812D1002609E000BF6C -:1020900054F826006946FFF770FA002808D1761C2C -:1020A000F6B2AE42F4D309F012FC10B143F20320B1 -:1020B000FEBDB34E3776FCB100271AE054F8270076 -:1020C00002A9FFF75AFA00B1FFDF9DF808008DF86A -:1020D000000054F8270050F8011FCDF80110808847 -:1020E000ADF80500684609F017FC00B1FFDF7F1C62 -:1020F000FFB2AF42E2D335760020FEBD2DE9F047B6 -:102100008AB01546894604001DD00F46082229468C -:10211000FFF7ABF9002810D1002612E054F8260092 -:102120006946103000F0DBFA002806D13FB157F8BD -:1021300026000EF0AFFB10B110200AB046E5761C69 -:10214000F6B2AE42EAD30026A5F101081CE000BFBA -:1021500006F1010A0AF0FF0712E000BF54F826005A -:10216000017C4A0854F827100B7CB2EB530F05D1C1 -:1021700006221130113115F056FE58B17F1CFFB206 -:10218000AF42EBD30AF0FF064645E1DB4E4624B1F1 -:10219000012003E043F20520CFE7002009F0DCFB3B -:1021A00010B909F0E5FB10B143F20420C5E75CB3B8 -:1021B00000270DF1170825E054F827006946103074 -:1021C00000F08DFA00B1FFDF54F82700102250F81C -:1021D000111FCDF801108088ADF8050054F82710C4 -:1021E0000DF1070015F04BFE96B156F8271010229E -:1021F000404615F044FE684609F073FB00B1FFDF6E -:102200007F1CFFB2AF42D7D3FFF731FA002094E72B -:10221000404601F01BFDEEE730B585B004460EF0F8 -:1022200039FB18B960680EF082FB10B1102005B0C0 -:1022300030BD60884AF2B811884206D82078504DE7 -:1022400028B1012806D0022804D00720EFE7FFF7C5 -:102250007BF818E06078022804D0032802D043F20B -:102260000220E4E785F82300C1B200200090ADF819 -:10227000040002292CD0032927D0FFDF684609F08B -:10228000E8FB05F0C7FB0028D1D1606801F0D1FC64 -:10229000207858B101208DF800000DF1010001F007 -:1022A000D5FC684609F08EFF00B1FFDF207885F885 -:1022B0002200FFF7DCF9608860B1288480B209F061 -:1022C00043FB00B1FFDF0020B1E78DF80500D5E743 -:1022D0004020FAE74FF46170EFE710B504460EF0C6 -:1022E000FFFA20B9606838B10EF018FB08B1102071 -:1022F00010BD606801F0AAFC214830F8201F618001 -:10230000C178617080782070002010BD2DE9F843FD -:102310001446894606460EF0E3FAA0B948460EF088 -:1023200006FB80B920460EF002FB60B9144DA87878 -:10233000012800D13CB13178FF2906D049B143F2E0 -:102340000400BDE8F8831020FBE7012801D0042039 -:10235000F7E74FF00008B4B3052813D0042811D0D4 -:102360006946204600F0F2F90028EAD1207D58B1F4 -:1023700001280BD002280BD003280BD00720E0E760 -:10238000900100200820DCE7424604E0012202E040 -:10239000022200E003222346174600200099FFF79F -:1023A0007FF90028CDD1A0892880A07BE875BDF8F1 -:1023B0000000A882AF75BDF80000000701D5A08914 -:1023C00088B1A089288049460020FFF718FA002824 -:1023D000B7D1A87805280BD0042809D0287DC007DC -:1023E00003D0032002E08020ECE70220FEF794FFF8 -:1023F00086F800800020A4E72DE9FC41E54C064664 -:102400000D46A078022803D0032801D0082002E658 -:1024100016B143F20400FEE506200AF041FD10B9B2 -:10242000A078032845D00CF093FC07460DF027FE5A -:10243000381A00F0FF0806200AF02AFD0746062099 -:102440000AF02EFD391AA078042809D00022114480 -:10245000A8EB010111F0FF0F04D0032804D00DE018 -:102460000122F4E71320D6E5284605F073FAF0B10F -:102470004078F0B1284605F054FDE57001208DF854 -:1024800000008DF801008DF802602088ADF804008E -:10249000E07D8DF80600684609F06CFD05F0BAFA9B -:1024A0000028B4D1A078032805D0042010E005202E -:1024B000B1E51220AFE5E07805F04CFA040000D158 -:1024C000FFDF607800B9FFDF6078401E6070052094 -:1024D000FEF722FF00209EE51CB510B143F2040078 -:1024E0001CBDAC4CA078042803D0052801D00820DE -:1024F0001CBD00208DF8000001218DF801108DF821 -:102500000200684609F036FD05F084FA0028EFD194 -:10251000A078052804D00220FEF7FEFE00201CBD96 -:10252000E07800F0C3F80320F6E72DE9FC4180468F -:102530000D46032608460EF0FAF908B110206AE5A8 -:102540004046FFF779F8040004D02078222804D20E -:10255000082060E543F202005DE5A07F00F003077C -:102560003DB1012F0AD000202946FEF750FF06009A -:10257000E5D1012F04D0FFDF30464CE50120F3E721 -:10258000A07D2946022801D011B107E0112042E5C3 -:10259000684600F00EFA0028D1D16946404608F09E -:1025A000A3FF0600E8D10120A075E5E770B50C4651 -:1025B0000546FFF741F8010005D022462846BDE850 -:1025C0007040FFF73CB843F2020070BD10B501281F -:1025D00007D1704B9B78012B00D011B143F204005E -:1025E00010BD09F0E3F9BDE8104005F013BA01236E -:1025F00000F066B800231A46194600F061B870B5BD -:10260000064615460C4608460EF06AF918B92846E3 -:102610000EF066F908B1102070BD2A4621463046FA -:1026200009F034FD05F0F6F90028F5D121787F296D -:10263000F2D1052070BD7CB505460C4608460EF06B -:1026400029F908B110207CBD2846FEF7F5FF20B11E -:102650000078222804D208207CBD43F202007CBD11 -:102660004C4890F82400400701D511207CBD21780A -:10267000C80802D16078C20801D007207CBD890853 -:1026800001D1800801D006207CBDADF80050207833 -:102690008DF8020060788DF803000220ADF8040088 -:1026A000684609F0DCFA05F0B5F97CBD10B505F017 -:1026B00051F9040000D1FFDF6078401C607010BD4C -:1026C0001CB5ADF800008DF802308DF803108DF8C0 -:1026D0000420684609F0A9FC05F09CF91CBD0278AD -:1026E000520804D0012A02D043F202207047FEF7BC -:1026F00044BF70B50C0006460DD0FEF79DFF0500E7 -:1027000000D1FFDFA680288920812889608168891F -:10271000A081A889E08170BD10B500231A4603E0AE -:10272000845C2343521CD2B28A42F9D30BB10020FD -:1027300010BD012010BD00B530B1012803D0022822 -:1027400001D0FFDF002000BDFF2000BD00220A8075 -:1027500092B222F060020A800078062817D2DFE8E1 -:1027600000F0160306090C1142F0110007E042F0D8 -:102770001D0009E042F0150006E042F0100040F0B4 -:10278000020001E042F0100008800020704707209E -:102790007047000090010020FE4800210160416068 -:1027A000018170472DE9F743044692B09146406895 -:1027B0000EF0B4F840B160680EF0B9F820B9607856 -:1027C00000F00300022801D0012000E00020F14EBB -:1027D000307248460EF05EF818B1102015B0BDE812 -:1027E000F08349460120FEF712FE0028F6D10125AC -:1027F0008DF842504FF4C050ADF84000002210A9AF -:10280000284603F06FFF0028E8D18DF842504FF4BE -:1028100028504FF00008ADF8400047461C2168469C -:10282000CDF81C8015F0CCFB9DF81C0008AA20F008 -:102830000F00401C20F0F00010308DF81C002078B4 -:102840008DF81D0061789DF81E0061F3420040F094 -:1028500001008DF81E009DF800000AA940F002005A -:102860008DF800002089ADF83000ADF83270608935 -:1028700007AFADF834000B97606810AC0E900A9467 -:10288000684603F024FD0028A8D1BDF82000308060 -:102890008DF8425042F60120ADF840009DF81E0030 -:1028A00008AA20F00600801C20F001008DF81E0010 -:1028B0000220ADF83000ADF8340013A80E900AA93C -:1028C000684603F004FD002888D1BDF82000708020 -:1028D000311D484600F033F9002887D18DF8425069 -:1028E00042F6A620ADF840001C216846CDF81C80B9 -:1028F00015F066FB9DF81C00ADF8345020F00F0079 -:10290000401C20F0F00010308DF81C009DF81D00D8 -:1029100008AA20F0FF008DF81D009DF81E000AA9EE -:1029200020F0060040F00100801C8DF81E009DF88C -:1029300000008DF8445040F002008DF80000CDE911 -:102940000A4711A80E90ADF83050684603F0BFFC5E -:10295000002899D1BDF82000F08000203EE73EB568 -:1029600004460820ADF8000020460DF093FF08B1A2 -:1029700010203EBD21460120FEF749FD0028F8D178 -:102980002088ADF804006088ADF80600A088ADF896 -:102990000800E088ADF80A007E4801AB6A468088EE -:1029A000002104F099F8BDF800100829E1D00320B7 -:1029B0003EBD1FB50446002002900820ADF8080077 -:1029C000CDF80CD020460DF065FF10B1102004B0FA -:1029D00010BD704802AA81884FF6FF7004F0BEFA5D -:1029E0000028F4D1BDF80810082901D00320EEE733 -:1029F000BDF800102180BDF802106180BDF8041000 -:102A0000A180BDF80610E180E1E701B582B00220A7 -:102A1000ADF800005F4802AB6A464088002104F030 -:102A20005BF8BDF80010022900D003200EBD1CB5D4 -:102A3000002100910221ADF8001001900DF050FF2F -:102A400008B110201CBD53486A4641884FF6FF70FC -:102A500004F084FABDF800100229F3D003201CBD55 -:102A6000FEB54C4C06461546207A0F46C00705D0E9 -:102A700008460DF00FFF18B11020FEBD0F20FEBD5F -:102A8000F82D01D90C20FEBD30460DF003FF18BB18 -:102A9000208801A903F064F90028F4D130788DF87A -:102AA0000500208801A903F0F6FF0028EBD1009073 -:102AB0009DF800009DF8051040F002008DF8000020 -:102AC000090703D040F008008DF80000208869460F -:102AD00003F07EFF0028D6D1ADF8085020883B4691 -:102AE00002AA002103F0F8FFBDF80810A942CAD0DD -:102AF0000320FEBD7CB505460020009001900888AB -:102B0000ADF800000C46284601950DF007FF18B9F6 -:102B100020460DF0E5FE08B110207CBD15B1BDF8D2 -:102B2000000050B11B486A4601884FF6FF7004F060 -:102B300015FABDF8001021807CBD0C207CBD30B59D -:102B400093B0044600200D460090142101A815F012 -:102B500037FA1C2108A815F033FA9DF80000CDF8CB -:102B600008D020F00F00401C20F0F00010308DF84D -:102B700000009DF8010020F0FF008DF801009DF895 -:102B8000200040F002008DF8200001208DF8460062 -:102B900002E00000B801002042F60420ADF8440035 -:102BA00011A801902088ADF83C006088ADF83E0087 -:102BB000A088ADF84000E088ADF842009DF8020022 -:102BC00006AA20F00600801C20F001008DF802000B -:102BD0000820ADF80C00ADF810000FA8059001A971 -:102BE00008A803F074FB002803D1BDF81800288062 -:102BF000002013B030BD00004FF0E0224FF4004140 -:102C00000020C2F880111D4908701D49900208601B -:102C1000704770B5194D04462878A04202D00CB117 -:102C200000B1FFDF2878A0420DD01649144A2C705D -:102C30000020CCB1134E144B1436151F012C03D0B9 -:102C4000022C08D0FFDF70BD0860022008603360EE -:102C50004FF0407005E008600320086033604FF4D7 -:102C600000001060286070BD086008604FF0607060 -:102C7000106070BD00B5FFDF00BD0000180000202F -:102C800008F5014000F50040380200200CF04DBF6F -:102C90000449002008604FF0E0210220C1F88002C2 -:102CA00070470000FC1F004010B50D2000F067F8D1 -:102CB000C4B26FF0040000F062F8C0B2844200D0E9 -:102CC000FFDF36490120086010BD70B50D2000F00F -:102CD00040F8334C0020C4F800010125C4F8045327 -:102CE0000D2000F041F825604FF0E0216014C1F89C -:102CF000000170BD10B50D2000F02BF8284801210F -:102D000041600021C0F80011BDE810400D2000F026 -:102D10002BB8234910B5D1F80001012801D0FFDFFD -:102D200010BD1E48001D00680022C0B2C1F800217D -:102D3000BDE810400DF0D6BA10B51948D0F8001112 -:102D40000029FBD0FFF7E5FFBDE810400D2000F0A3 -:102D50000BB800F01F02012191404009800000F1F2 -:102D6000E020C0F88011704700F01F02012191405F -:102D70004009800000F1E020C0F880127047002870 -:102D800006DA00F00F0000F1E02090F8140D03E0E7 -:102D900000F1E02090F800044009704704D500409D -:102DA00000D00040704770477047704770477047C9 -:102DB000704700004FF0E0214FF00070C1F8800133 -:102DC000C1F88002334B802283F80024C1F800014F -:102DD000704700B5024604202F4903E001EBC00311 -:102DE0001B792BB1401EC0B2F8D2FFDFFF2000BD1F -:102DF00041F8302001EBC00100224A718A710122A2 -:102E00000A7100BD244A002102EBC0000171704725 -:102E100010B50446042800D3FFDF1F4800EBC404AC -:102E20002079012800D0FFDF6079A179401CC0B271 -:102E3000814200D060714FF0E0214FF00070C1F886 -:102E4000000210BD70B51348042590F80004124E1E -:102E50004009124C042818D0FFDF16E0217806EB59 -:102E6000C1000279012A08D1427983799A4204D0BB -:102E70004279827156F8310080472078401CC0B2F8 -:102E80002070042801D3002020706D1EEDB2E5D221 -:102E900070BD000019E000E0880400204800002018 -:102EA0000F4A12680D498A420CD118470C4A126821 -:102EB0000A4B9A4206D101B500F074F8FFF774FF8F -:102EC000BDE801400749096809580847064807490D -:102ED000054A064B7047000000000000BEBAFECA5B -:102EE000A400002004000020900D0020900D002080 -:102EF00070B50C46054606F021FB21462846BDE884 -:102F0000704007F006BC10B50DF07DFEFFF774FEB3 -:102F10000DF038FDBDE810400DF0CABD70B5034698 -:102F2000002002466FF02F050EE09C5CA4F13006F5 -:102F30000A2E02D34FF0FF3070BD00EB800005EB8E -:102F40004000521C2044D2B28A42EED370BD30B54C -:102F50000A240AE0B0FBF4F304FB13008D183030B0 -:102F600005F8010C521E1846D2B2002AF2D130BD2B -:102F700030B500234FF6FF7510E0040A44EA002044 -:102F800084B2C85C6040C0F30314604005EA0034BA -:102F90004440E0B25B1C84EA40109BB29342ECD305 -:102FA00030BD000070B5154D2878401CC4B268785B -:102FB000844202D0FFF7FBFE2C7070BD2DE9F0417A -:102FC0000E4C4FF0E02600BFFFF7EFFE20BF40BFE2 -:102FD00020BF677820786070D6F80052FEF784F939 -:102FE000854305D1D6F8040210B92078B842EBD059 -:102FF000FFF7DAFE0020BDE8F0810000A00000200D -:103000002CFFFFFFDBE5B15100900100A700FFFF9F -:1030100070000000808D5B0016425791AD5F58BC78 -:103020008E702F5A0FAA100DBCD52BFD10B504467B -:103030000DF030FC08B1102010BD2078C0F3021054 -:10304000042807D86078072804D3A178102901D86C -:10305000814201D2072010BDE078410706D42179D2 -:103060004A0703D4000701D4080701D5062010BD84 -:10307000002010BD70B514460D46064604F0AAFEA9 -:1030800080B10178182221F00F01891C21F0F00194 -:10309000A03100F8081B214614F036FFBDE870404F -:1030A00004F09BBE29463046BDE870401322FEF76F -:1030B000C6BA2DE9F047064608A8894690E83004CC -:1030C0001F4690461421284614F07AFF0021CAF8C2 -:1030D0000010B8F1000F03D0B9F1000F03D114E0D4 -:1030E0003878C00711D020680DF0FAFBC0BBB8F1EA -:1030F000000F07D120681230286020681430686003 -:103100002068A8602168CAF800103878800724D5A4 -:1031100060680DF003FC18BBB9F1000F21D0FEF779 -:1031200036FF0168C6F868118188A6F86C118079AD -:1031300086F86E0101F03BFAF84FEF60626862B109 -:1031400096F8680106F2691140081032FEF74FFA4E -:1031500010223946606814F092FE0020BDE8F08726 -:1031600006E0606820B1E8606068C6F86401F4E7D2 -:103170001020F3E730B5054608780C4620F00F0024 -:10318000401C20F0F001103121700020607095F893 -:10319000230030B104280FD0052811D0062814D000 -:1031A000FFDF20780121B1EB101F04D295F8200039 -:1031B00000F01F00607030BD21F0F000203002E010 -:1031C00021F0F00030302070EBE721F0F0004030CB -:1031D000F9E7F0B591B0022715460C4606463A4687 -:1031E000ADF80870082103AB07F074FF04900028C5 -:1031F00010D004208DF804008DF80170E034099699 -:1032000005948DF818500AA968460BF087FB00B1A9 -:10321000FFDF012011B0F0BD2DE9F84F0646808A8E -:103220000C4680B28246FEF707FA0546BB4F30785F -:10323000203F4FF005094FF000080F287CD2DFE84F -:1032400000F07BA39D082C5B6A7CBADAFD97489757 -:1032500097000121504609F06FFE040000D1FFDF06 -:1032600097F85C00C00701D0386E0BE0032104F131 -:103270001D000DF018F8D4F81D00A949B0FBF1F2BB -:1032800001FB1200C4F81D0070686067B068A06799 -:103290002878252872D0FFDF70E00121504609F020 -:1032A0004BFE060000D1FFDF3078810702D5297878 -:1032B000252904D040F001003070BDE8F88F0220CD -:1032C0002070307F207106F11D002D36C4E9020602 -:1032D000F3E70121504609F02FFE050000D1FFDF82 -:1032E0002878C10604D5072020703D356560E4E7E5 -:1032F00040F008002870E0E7E87F000700D5FFDF16 -:10330000307CB28800F0010301B05046BDE8F04FB8 -:10331000082108F014B805B9FFDF716821B1102247 -:1033200005F1240014F0ABFD28212846FEF71DF816 -:10333000307A85F82000C0E7F8E00121504609F016 -:10334000FBFD050000D1FFDF022105F185000CF037 -:10335000AAFF0420207005F5B4706060B5F8850000 -:1033600020826E4810387C356561C4E90270A4E79C -:103370000121504609F0E0FD00B9FFDF3246294641 -:103380005046BDE8F84F75E605B9FFDF28782128DB -:1033900093D93079012803D1E87F40F00800E8771D -:1033A000324629465046FFF765FE2846BDE8F84FED -:1033B0002321FDF7DABF3279A28004F10803082146 -:1033C000504607F087FEE06010B184F8009074E783 -:1033D00045460121504609F0AFFD040000D1FFDF52 -:1033E00004F1620102231022081F09F04AFC057053 -:1033F0003179417061E70121504609F09DFD0400DB -:1034000000D1FFDF94F8840000F00300012859D1B7 -:10341000E87F10F0010003D194F8A010C9072AD06A -:10342000D4F8602132B394F88330117C63F38701C0 -:103430001174AA7FD30963F3410100E072E0D4F86C -:1034400060211174D4F8602160F30001117490B10F -:10345000D4F86001102205F12401883414F00FFD26 -:10346000207E40F001002076207820F0010004F852 -:10347000880919E0C0B994F88810C90714D0D4F8A5 -:103480005C218AB194F88330117C63F38701117455 -:10349000AA7FD309D4F85C2163F341011174D4F8F5 -:1034A0005C2160F30001117494F88800800709D54D -:1034B00094F87C00D4F86421400804F17D011032B6 -:1034C000FEF795F88DF8009094F884006A4600F0B5 -:1034D00003008DF8010094F888108DF8021094F81C -:1034E000A0008DF803002946504601F049F82878DD -:1034F000252805D0212807D0FFDF2878222803D9E6 -:1035000022212846FDF731FF0121504609F026FD12 -:1035100000283FF4DDAEFFDFCFE60000E40100202D -:1035200040420F00716881F80180C6E6FFDFC4E603 -:1035300070B5FE4C002584F85C5025660BF0BBF995 -:1035400004F11001204604F001FC84F8305070BDF5 -:1035500070B50D46FEF770F8040000D1FFDF4FF4A0 -:10356000B871284614F02CFD2434012105F1E00047 -:103570002C610BF0A1F9002800D0FFDF70BD0A46D6 -:10358000014602F1E0000BF0B7B970B5054640689E -:1035900086B00178082906D00B2933D00C292FD00A -:1035A000FFDF06B070BD46883046FEF745F80400E0 -:1035B00000D1FFDF20782128F3D028281BD16868AC -:1035C00002210C3000F0A6FFA8B168680821001D98 -:1035D00000F0A0FF78B104F12401304608F0CCFCE3 -:1035E00004F018FA00B1FFDF06B02046BDE87040D5 -:1035F0002921FDF7BABE06B0BDE8704004F0EDBB6E -:1036000001218171686886883046FEF715F804004C -:1036100000D1FFDF20782128C3D06868817909B103 -:10362000807808B1FFDFBCE704F0D7FBA07F00067D -:1036300023D5E07FC00705D094F8200000F01F00DC -:10364000102818D05FF0050084F82300207829287E -:1036500015D02428A5D1314604200DF0CFF8222121 -:103660002046FDF782FE0121304609F077FC002854 -:1036700097D0FFDF95E70620E6E70420E4E7012185 -:10368000304609F059FC050000D1FFDF2521204616 -:10369000FDF76BFE03208DF80000694605F1E000A0 -:1036A0000BF021F90228BED00028BCD0FFDF78E75C -:1036B0002DE9F04788B09A46164688468146FDF7C0 -:1036C000BBFF05003AD02878222837D3232835D0ED -:1036D000E87F000732D400270121484609F02CFC7E -:1036E000040005D101210022484609F01CFC0446D3 -:1036F000694600F06CFF009800B9FFDF00983CB10C -:10370000E03404612878222804D0242802D005E07F -:10371000076103E025212846FDF727FE00980121D7 -:103720004170C0F824908680C0E9028A01A90BF09C -:10373000F5F8022802D0002800D0FFDF08B00DE520 -:1037400070B586B00546FDF777FF0078222814D9BA -:103750000121284609F0F0FB04002CD1FFDF2AE00C -:10376000B4F85E0004F1620630440178427829B171 -:1037700021462846FFF72DFDB0B912E7ADF8042029 -:103780000821284602AB07F0A5FC03900028F4D0DE -:1037900005208DF80000694604F1E0000BF0A3F865 -:1037A000022801D000B1FFDF02231022314604F1CC -:1037B0005E0009F09CFAB4F860000028D0D1F0E671 -:1037C00010B586B00446FDF737FF0078222811D9DE -:1037D0000121204609F0B0FB040000D1FFDF0620E4 -:1037E0008DF80000694604F1E0000BF07CF8002839 -:1037F00000D0FFDF06B010BD2DE9F84F0546007878 -:103800000C460027010904F1080090463E46BA46DE -:10381000009002297ED0072902D00A2909D142E06E -:1038200068680178082905D00B292CD00C292AD0EA -:10383000FFDF73E114271C26002C6CD04088A08089 -:10384000FDF7FAFE5FEA000900D1FFDF99F81700E3 -:1038500009F118014008009AFDF7C9FE68688089DF -:10386000208268684168C4F812108068C4F81600A5 -:10387000A07E20F0060040F00100A07699F81E001E -:1038800040F020014FE01A270A26002CD5D080886E -:10389000A080FDF7D1FE050000D1FFDF284600998A -:1038A000FFF768FC3AE10CB1A88BA080287A4FF0B2 -:1038B000010B0B287ED006DC01287CD0022808D022 -:1038C000032804D137E00D2876D00E2875D0FFDF0D -:1038D00024E11E270926002CAFD0A088FDF7ACFEFE -:1038E0005FEA000900D1FFDF287B00F00300012818 -:1038F000207A1DD020F001002072297B890861F315 -:1039000041002072297BC90861F382002072297B63 -:10391000090901E0F7E0AEE061F3C300207299F815 -:103920001E0040F0400189F81E10F7E0C40100209D -:1039300040F00100E0E713270D26002CA6D0A08858 -:10394000FDF77AFE81460121A08809F0F5FA05000D -:1039500000D1FFDF686F817801F003010129217A2E -:1039600050D021F00101217283789B0863F341015B -:1039700021728378DB0863F38201217283781B094B -:1039800063F3C3012172037863F306112172437854 -:1039900063F3C711217284F809A0C178A17202797A -:1039A000E17A62F30001E1720279520862F34101A7 -:1039B000E17203E029E067E04EE05FE002799208FF -:1039C00062F38201E1720279D20862F3C301E1720B -:1039D0004279217B62F3000121734279520862F33C -:1039E000410121734279920862F382012173407987 -:1039F000C00860F3C301217399F8000023282AD975 -:103A0000262139E041F00101ADE71827102694B3D3 -:103A1000A088FDF711FE00900121A08809F08CFA22 -:103A20005FEA000900D1FFDFE868A06099F80000B4 -:103A300040F0040189F8001099F80100800708D5CA -:103A400084F80CB000980078232867D927210098C3 -:103A500052E084F80CA061E015270F265CB1A08825 -:103A6000FDF7EAFD81460622E8680099FFF76FFA44 -:103A700084F80EB086E042E048463DE0162709266D -:103A8000ECB3287B207249E0287B19270E26B4B3BB -:103A9000C4F808A0A4F80CA0012807D0022808D078 -:103AA00003280CD004280AD0FFDF15E084F808B002 -:103AB00001E002202072607A20F003000BE0697BB5 -:103AC000042801F00F0141F080012172F3D1607AE6 -:103AD00020F00300401C6072A088FDF7ADFD054694 -:103AE000007821281AD0232800D0FFDF0121A088E8 -:103AF00009F034FA22212846FDF737FC0EE0FFE7F3 -:103B0000A8F800600FE00CB16888A080287A03282C -:103B100022D0042809D005283AD0FFDFA8F8006099 -:103B20000CB127806680002005E415270F26002CA5 -:103B3000E6D0A088FDF780FD0121A08809F0FCF9FE -:103B4000050000D1FFDFD5F81D0006220099FFF720 -:103B5000FEF984F80EA0E1E717270926002CCFD044 -:103B6000A088FDF769FD81460121A08809F0E4F9EC -:103B7000050000D1FFDF6878800701D5022000E052 -:103B80000120207299F800002328C7D9272173E764 -:103B900019270E26002CB3D0A088FDF74DFD5FEA53 -:103BA000000900D1FFDFC4F808A0A4F80CA084F835 -:103BB00008A0A07A40F00300A07299F81E10C9096D -:103BC00061F38200A07299F81F2099F81E1012EA82 -:103BD000D11F05D099F8201001F01F01102925D020 -:103BE00020F00800A07299F81F10607A61F3C300FA -:103BF0006072697A01F0030101298FD140F004005D -:103C00006072E87A217B60F300012173AA7A607BFD -:103C100062F300006073EA7A520862F34101217393 -:103C2000A97A490861F34100607377E740F0080022 -:103C3000D8E710B5FA4C30B10146102204F120004B -:103C400014F01DF9012084F8300010BD10B50446B1 -:103C500000F0ADFCF24920461022BDE810402031B2 -:103C600014F00DB970B5EE4D06004FF0000413D0FE -:103C70000CF010FE08B110240CE006213046FFF7CE -:103C80004DF9411C05D028665FF0010085F85C0005 -:103C900000E00724204670BD0020F7E7007810F010 -:103CA0000F0204D0012A05D0022A0CD110E000092D -:103CB00009D10AE00009012807D0022805D003280D -:103CC00003D0042801D007207047087000207047F7 -:103CD0000620704705282AD2DFE800F003070F17F7 -:103CE0001F00087820F0FF001EE0087820F00F0089 -:103CF000401C20F0F000103016E0087820F00F0093 -:103D0000401C20F0F00020300EE0087820F00F007A -:103D1000401C20F0F000303006E0087820F00F0062 -:103D2000401C20F0F0004030087000207047072051 -:103D300070472DE9F043804687B00D464FF00009EB -:103D400008460CF0F4FDA8B94046FDF775FC0600E6 -:103D500003D0307822280BD104E043F2020007B0F0 -:103D6000BDE8F08335B1B07FC10601D4000703D5AB -:103D70000820F4E71020F2E7F07F000701D50D20BE -:103D8000EDE700270121404609F0D6F8040006D1EE -:103D900001210022404609F0C6F8040005D069461A -:103DA00000F015FC009818B901E00420D7E7FFDF08 -:103DB00000980221E0344170C0F8248044610781FA -:103DC00001210171297801F00102017E62F30101F4 -:103DD00001762A78520862F3820101762A789208E5 -:103DE00062F3C30101762A78D20862F304110176E6 -:103DF00024213046FDF7B9FA01A900980AF08EFD9A -:103E0000022801D000B1FFDF4846A8E72DE9FF4FA7 -:103E10009046844A0E4697B09A4607CA14AB4FF0B4 -:103E2000000983E807001798FDF706FC050006D097 -:103E30002878262806D008201BB0BDE8F08F43F272 -:103E40000200F9E726B94046FFF7F0F80028F3D161 -:103E50000121179809F070F8040000D1FFDF852ECA -:103E600027D007DCEEB1812E1DD0822E1DD0832EEF -:103E700008D11CE0862E1ED0882E1ED0892E1ED082 -:103E80008A2E1ED00F2020710F281CD003F0A2FF15 -:103E9000D8B101208DF82C00201D0C902079B0B1F4 -:103EA00032E10020EFE70120EDE70220EBE70320FD -:103EB000E9E70520E7E70620E5E70820E3E7092032 -:103EC000E1E70A20DFE70720B6E71120B4E798F81A -:103ED0000000D4E91D764208A87F002162F3C710D4 -:103EE000A87798F800008208E87F62F30000E8777E -:103EF00098F80000C209607862F34100607098F899 -:103F000000000209207862F34710207098F8000042 -:103F1000C208607862F30000607098F80100607178 -:103F200098F8000000F00102B07862F30100B07070 -:103F3000AA7FD20962F38200B070EA7F62F3C30005 -:103F4000B070627862F30410B0702278C0F3C000E1 -:103F5000520932706278C2F34002727098F80220FF -:103F6000F27071713171B978C1F3C00108405FEA34 -:103F7000000B2ED050460CF08DFC98BBDAF80C00EC -:103F80000CF088FC70BBDAF81C000CF083FC48BB1A -:103F9000DAF80C00A060DAF81C00E060797860784C -:103FA00001F0010140EA41006070B978C0B2C1F38C -:103FB0000011891E084060700020207705F117006D -:103FC0006061681CA061B07800F0030001280AD08D -:103FD0004AE07978607801F00101FD2242EA41016E -:103FE0000840E1E719E0B87800F0030001283BD170 -:103FF000321D711D404600F099FA30793979084038 -:104000008DF8480071797A7911408DF828100843AD -:104010002AD050460CF03EFC30B110200CE70000D6 -:10402000C40100203C8301000AF1100004F5AE73C6 -:1040300004F18C028DE80D00002112AB5A46204697 -:10404000FFF737F80028E9D104F5B07204F1A403B2 -:10405000CDF800A0CDE9013201210AAB5A46204635 -:10406000FFF727F80028D9D16078800722D4B078EC -:10407000B978C0F38000C1F3800108431AD03078CA -:1040800014AA397832F810204B00DA4002F0030904 -:10409000B9F1030F01D14FF00209BBF1000F09D0B4 -:1040A000012801D0042805D1012901D0042901D11A -:1040B0004FF00409A87F40F08000A877E87F6BF3F9 -:1040C0000000E877607881074FF003000CD5A071FD -:1040D000BBF1000F18D100BF8DF84C0013AA294680 -:1040E000179800F04DFA0FE00221B9F1020F1AD033 -:1040F000B9F1010F19D0B9F1040F22D00020A0713D -:10410000A87F20F08000A87725212846FDF72DF90B -:104110000BA904F1E0000AF0E6FB10B1022800D080 -:10412000FFDF002088E6A171D6E7A1710D2104F11F -:10413000200013F045FF207840F00200207004209A -:10414000CAE70120A071DFE72DE9F04387B0904670 -:10415000894604460025FDF76FFA070004D0387839 -:10416000272804D00820FAE543F20200F7E50121F0 -:10417000204608F0E1FE040000D1FFDFA6795FEAE7 -:10418000090005D0012821D0B9F1020F26D110E095 -:10419000B8F1000F22D1012E05D0022E05D0032E3A -:1041A00005D0FFDF2DE00C252BE0012529E00225BD -:1041B00027E040460CF06EFBB0B9032E0ED1102262 -:1041C000414604F11D0013F05AFE1AE0012E02D000 -:1041D000022E03D104E0B8F1000F12D00720BEE593 -:1041E00040460CF057FB08B11020B8E5102104F14F -:1041F0001D0013F0C3FE06214046FEF78FFEC4F8F3 -:104200001D002078252140F0020020703846FDF77F -:10421000ACF82078C10713D020F0010020700220F4 -:104220008DF8000004F11D0002908DF804506946DD -:10423000C3300AF058FB022803D010B1FFDF00E0C2 -:10424000257700208BE530B587B00D460446FDF795 -:10425000F3F960B10121204608F06EFE04000CD095 -:1042600028460CF017FB28B1102007B030BD43F2F0 -:104270000200FAE72078400701D40820F5E7294634 -:1042800004F13D002022054613F0F9FD207840F0AE -:104290001000207001070FD520F0080020700720C3 -:1042A0008DF80000694604F1E00001950AF01BFB5F -:1042B000022801D000B1FFDF0020D6E770B50D461F -:1042C0000646FDF7B9F918B10078272817D102E0A2 -:1042D00043F2020070BD0121304608F02DFE0400BB -:1042E00000D1FFDFA079022809D16078C00706D08D -:1042F0002A4621463046FEF76CFF10B10FE0082039 -:1043000070BDB4F860000E280BD204F162010223E4 -:104310001022081F08F0B5FC012101704570002033 -:1043200070BD112070BD70B5064614460D46084696 -:104330000CF0B0FA18B920460CF0D2FA08B11020EF -:1043400070BDA6F57F40FF380ED03046FDF774F9FA -:1043500038B1417822464B08811C1846FDF747F9D1 -:1043600007E043F2020070BD2046FDF772FE002810 -:10437000F9D11021E01D0BF096FFE21D294604F152 -:10438000170000F034F9002070BD2DE9F04104461B -:104390008AB015460E46002708460CF0C8FA18B930 -:1043A00028460CF0C4FA18B110200AB0BDE8F0811C -:1043B0002046FDF741F95FEA000804D098F80000B4 -:1043C000272810D102E043F20200EEE70121204647 -:1043D00008F0B2FD040000D1FFDF2078400702D5CD -:1043E0006078800701D40820DFE7D4E91D0149780F -:1043F00001B18DB1407800B176B1ADB1EA1D06A82A -:10440000E16800F0F4F8102206A905F1170013F096 -:104410000AFD18B1042707E00720C6E71022E91DAE -:1044200004F12D0013F02BFD2EB11022F11D04F12B -:104430001D0013F024FD2078252140F0020020709B -:104440004046FCF792FF2078C10715D020F001000C -:10445000207002208DF8000004F11D000290103041 -:1044600003908DF804706946B3300AF03CFA0228D4 -:1044700003D010B1FFDF00E02777002095E770B58B -:104480000D4606460BB1072070BDFDF7D5F80400B8 -:1044900007D02078222802D3A07F800604D40820E9 -:1044A00070BD43F2020070BDADB12946304607F041 -:1044B00063FD03F0AFFA297C4A08A17F62F3C711BC -:1044C000A177297CE27F61F30002E277297C8908E9 -:1044D00084F8201004E0304607F071FD03F09AFAEA -:1044E000A17F21F02001A17770BD70B50D46FDF7C9 -:1044F000A3F8040005D028460CF0F2F920B11020F2 -:1045000070BD43F2020070BD29462046FEF732FE20 -:10451000002070BD05E000BF10F8012B0AB100209B -:104520007047491E89B2F7D20120704710B5C47890 -:104530000B7864F300030B70C478640864F34103E0 -:104540000B70C478A40864F382030B70C478E40889 -:1045500064F3C3030B700379117863F300011170E6 -:1045600003795B0863F34101117003799B0863F3DE -:10457000820111700079C00860F3C301117010BD91 -:1045800070B51546064603F025FC040000D1FFDF98 -:10459000207820F00F00801C20F0F00020302070E8 -:1045A00066802868A060BDE8704003F016BC10B5B6 -:1045B000134C94F83000002808D104F12001A1F137 -:1045C00010000AF0D2F9012084F8300010BD10B1BB -:1045D00090F8B9202AB10A4890F8350018B10020A7 -:1045E00003E0B83001E0064834300860704708B591 -:1045F0000023009313460A4608F099FE08BD000008 -:10460000C4010020F0B5007B059F1E4614460D46F0 -:10461000012800D0FFDF0C2030803A203880002CA9 -:1046200008D0287A032806D0287B012800D0FFDF95 -:1046300017206081F0BDA889FBE72DE9F04786B01F -:10464000144691F80C900E9A0D46B9F1010F0BD05B -:104650001021007B2E8A8846052807D0062833D0F3 -:10466000FFDF06B0BDE8F0870221F2E7E8890C2100 -:1046700000EB400001EB4000188033201080002C3C -:10468000EFD0E889608100271AE00096688808F179 -:10469000020301AA696900F084FF06EB0800801C90 -:1046A00007EB470186B204EB4102BDF8040090819C -:1046B0000DF1060140460E320AF0C0F97F1CBFB270 -:1046C0006089B842E1D8CCE734201080E889B9F19C -:1046D000010F11D0122148430E301880002CC0D099 -:1046E000E88960814846B9F1010F00D002202073AB -:1046F00000270DF1040A1FE00621ECE70096688808 -:1047000008F1020301AA696900F04BFF06EB0800FB -:10471000801C86B2B9F1010F12D007EBC70004EB81 -:104720004000BDF80410C18110220AF102011030CE -:1047300013F0A5FB7F1CBFB26089B842DED890E7BA -:1047400007EB470104EB4102BDF80400D0810AF1F8 -:104750000201404610320AF071F9EBE72DE9F0470B -:104760000E4688B090F80CC096F80C80378AF58910 -:104770000C20109902F10C044FF0000ABCF1030F59 -:1047800008D0BCF1040F3ED0BCF1070F7DD0FFDF95 -:1047900008B067E705EB850C00EB4C001880312072 -:1047A0000880002AF4D0A8F1060000F0FF09558126 -:1047B00025E0182101A813F003FC009770884346F8 -:1047C00001AA716900F0EDFEBDF804002080BDF87B -:1047D0000600E080BDF808002081A21C0DF10A014E -:1047E00048460AF02BF9B9F1000F00D018B184F84F -:1047F00004A0A4F802A007EB080087B20A346D1EDB -:10480000ADB2D6D2C4E705EB850C00EB4C001880A6 -:1048100032200880002ABBD0A8F1050000F0FF0973 -:10482000558137E000977088434601AA716900F00E -:10483000B8FE9DF80600BDF80410E1802179420819 -:1048400060F3000162F34101820862F38201C20851 -:1048500062F3C301020962F30411420962F34511D4 -:10486000820962F386112171C0096071BDF80700E9 -:10487000208122460DF1090148460AF0DFF818B1FF -:1048800084F802A0A4F800A000E007E007EB08000D -:1048900087B20A346D1EADB2C4D279E7A8F1020026 -:1048A00084B205FB08F000F10E0CA3F800C035231C -:1048B0000B80002AA6D055819481009783B270881E -:1048C0000E32716900F06DFE62E72DE9F84F1E4669 -:1048D0000A9D0C4681462AB1607A00F58070D0802E -:1048E000E089108199F80C000C274FF000084FF078 -:1048F0000E0A0D2873D2DFE800F09E070E1C283048 -:104900003846556A73737300214648460095FFF791 -:1049100079FEBDE8F88F207B9146082802D0032855 -:1049200000D0FFDF378030200AE000BFA9F80A80FE -:10493000EFE7207B9146042800D0FFDF378031204D -:104940002880B9F1000FF1D1E3E7207B91460428DC -:1049500000D0FFDF37803220F2E7207B914602282B -:1049600000D0FFDF37803320EAE7207B174602289C -:1049700000D0FFDF3420A6F800A02880002FC8D088 -:10498000A7F80A80C5E7207B1746042800D0FFDF80 -:104990003520A6F800A02880002FBAD04046A7F8FE -:1049A0000A8012E0207B1746052802D0062800D096 -:1049B000FFDF1020308036202880002FA9D0E0892A -:1049C0007881A7F80E80B9F80E00B881A1E7207BA6 -:1049D0009146072800D0FFDF37803720B0E72AE074 -:1049E0004FF0120018804FF038001700288090D048 -:1049F000E0897881A7F80E80A7F8108099F80C005C -:104A00000A2805D00B2809D00C280DD0FFDF80E73D -:104A1000207B0A2800D0FFDF01200AE0207B0B2842 -:104A200000D0FFDF042004E0207B0C2800D0FFDF53 -:104A3000052038736DE7FFDF6BE770B50C46054660 -:104A4000FCF7FAFD20B10078222804D2082070BDBE -:104A500043F2020070BD0521284608F06DFA20607F -:104A600008B1002070BD032070BD30B448800878C4 -:104A700020F00F00C01C20F0F000903001F8080B6F -:104A80001DCA81E81D0030BC03F0A7B92DE9FF471E -:104A900084B00027824602970798904689461230D4 -:104AA00004F03CFA401D20F00306079828B907A936 -:104AB0005046FFF7C2FF002854D1B9F1000F05D0CE -:104AC0000798017B19BB052504681BE098F80000D6 -:104AD000092803D00D2812D0FFDF46E007990325EF -:104AE0004868B0B3497B42887143914239D98AB250 -:104AF000B3B2011D08F0B1F80446078002E0079C3C -:104B0000042508340CB1208810B1032D29D02CE0E5 -:104B100007980121123004F033FAADF80C00024678 -:104B200002AB2946504606F0D5FA070001D1A01C79 -:104B3000029007983A461230C8F80400A8F802A07C -:104B400003A94046029B04F028FAD8B10A2817D2DC -:104B500000E006E0DFE800F007091414100B0D1464 -:104B60001412132014E6002012E6112010E608208B -:104B70000EE643F203000BE6072009E60D2007E6E8 -:104B8000032005E6BDF80C002346CDE900702A4657 -:104B90005046079900F015FD57B9032D08D1079825 -:104BA000B3B2417B406871438AB2011D08F069F8D5 -:104BB000B9F1000FD7D0079981F80C90D3E72DE910 -:104BC000FE4F91461A881C468A468046FAB102ABCF -:104BD000494606F07FFA050019D04046A61C2788F2 -:104BE00008F0EEFA3246072629463B46009607F0C3 -:104BF0001AFF20882346CDE900504A4651464046D8 -:104C000000F0DFFC002020800120BDE8FE8F0020A6 -:104C1000FBE710B586B01C46AAB104238DF800301E -:104C20001388ADF808305288ADF80A208A788DF8DC -:104C30000E200988ADF80C1000236A462146FFF7C4 -:104C400025FF06B010BD1020FBE770B50D4605210D -:104C500008F072F9040000D1FFDF294604F11200C8 -:104C6000BDE8704004F075B92DE9F8430D46804663 -:104C7000002603F0AFF804462878102878D2DFE841 -:104C800000F0773B34533131123131310831313159 -:104C900031312879001FC0B2022801D0102810D16C -:104CA00014BBFFDF35E004B9FFDF0521404608F003 -:104CB00043F9007B032806D004280BD0072828D00E -:104CC000FFDF072655E02879801FC0B2022820D0D8 -:104CD00050B1F6E72879401FC0B2022819D0102839 -:104CE00017D0EEE704B9FFDF13E004B9FFDF28793E -:104CF00001280ED1172137E00521404608F01CF9A4 -:104D0000070000D1FFDF07F11201404604F0FEF872 -:104D10002CB12A4621464046FFF7A7FE29E0132181 -:104D20004046FDF743FC24E004B9FFDF052140467F -:104D300008F002F9060000D1FFDF694606F1120013 -:104D400004F0EEF8060000D0FFDFA988172901D291 -:104D5000172200E00A46BDF80000824202D901464F -:104D600002E005E01729C5D3404600F03AFCD0E741 -:104D7000FFDF3046BDE8F883401D20F0030219B183 -:104D800002FB01F0001D00E000201044704713B545 -:104D9000009848B10024684607F009FF002C02D1B2 -:104DA000F74A009911601CBD01240020F4E72DE9A9 -:104DB000F0470C4615462421204613F001F905B9A9 -:104DC000FFDFA87860732888DFF8B4A3401D20F0C7 -:104DD0000301AF788946DAF8000007F006FF060005 -:104DE00000D1FFDF4FF000082660A6F8008077B101 -:104DF00009FB07F1091D0AD0DAF8000007F0F5FEFB -:104E0000060000D1FFDF6660C6F8008001E0C4F84C -:104E10000480298804F11200BDE8F04704F068B866 -:104E20002DE9F047804601F112000D46814604F05D -:104E300075F8401DD24F20F003026E7B144629689E -:104E4000386807F0FDFE3EB104FB06F2121D03D0E8 -:104E50006968386807F0F4FE052008F019F8044680 -:104E6000052008F01DF8201A012802D1386807F043 -:104E7000B1FE49464046BDE8F04704F04EB870B573 -:104E80000546052108F058F8040000D1FFDF04F1C1 -:104E900012012846BDE8704004F038B82DE9F04F03 -:104EA00091B04FF0000BADF834B0ADF804B04788C6 -:104EB0000C46054692460521384608F03DF80600A6 -:104EC00000D1FFDF24B1A780A4F806B0A4F808B091 -:104ED000297809220B20B2EB111F7DD12A7A04F127 -:104EE000100138274FF00C084FF001090391102AE8 -:104EF00073D2DFE802F072F2F1F07F08D2888D9F62 -:104F00003DDBF3EEB6B6307B022800D0FFDFA88988 -:104F100008EBC001ADF804103021ADF83410002CBE -:104F200025D06081B5F80E9000271DE004EBC7087E -:104F3000317C88F80E10F189A8F80C10CDF800909B -:104F40006888042304AA296900F02BFBBDF810101F -:104F5000A8F8101009F10400BDF812107F1C1FFA08 -:104F600080F9A8F81210BFB26089B842DED80DE10E -:104F7000307B022800D0FFDFE98908EBC100ADF8E3 -:104F800004003020ADF83400287B0A90001FC0B226 -:104F90000F90002CEBD06181B5F81090002725E030 -:104FA000CDF800906888696903AA0A9B00F0F9FAB5 -:104FB0000A9804EBC70848441FFA80F908F10C026C -:104FC00004A90F9809F03AFD18B188F80EB0A8F8B6 -:104FD0000CB0BDF80C1001E0D4E0CFE0A8F8101040 -:104FE000BDF80E107F1CA8F81210BFB26089B8423D -:104FF000D6D8CBE00DA8009001AB2246294630461A -:10500000FFF71BFBC2E0307B082805D0FFDF03E081 -:10501000307B082800D0FFDFE8891030ADF80400AD -:105020003620ADF83400002C3FD0A9896181F18988 -:10503000A18127E0307B092800D0FFDFA88900F19B -:105040000C01ADF804103721ADF83410002C2CD031 -:105050006081E8890090AB89688804F10C022969B5 -:1050600056E0E8893921103080B2ADF80400ADF87F -:105070003410002C74D0A9896181287A0E280AD0B6 -:1050800002212173E989E181288A0090EB896888EF -:105090006969039A3CE00121F3E70DA8009001AB98 -:1050A000224629463046FFF759FB6FE0307B0A283D -:1050B00000D0FFDF1220ADF80400ADF834704CB31F -:1050C000A9896181A4F810B0A4F80EB084F80C90FE -:1050D0005CE020E002E031E039E042E0307B0B2888 -:1050E00000D0FFDF288AADF834701230ADF804002C -:1050F00084B104212173A9896181E989E181298A27 -:105100002182688A00902B8A688804F112026969FA -:1051100000F047FA3AE0307B0C2800D0FFDF122085 -:10512000ADF80400ADF834703CB305212173A4F848 -:105130000AB0A4F80EB0A4F810B027E00DA80090B3 -:1051400001AB224629463046FFF75CFA1EE00DA867 -:10515000009001AB224629463046FFF7B6FB15E02A -:1051600034E03B21ADF80400ADF8341074B3A4F87A -:105170000690A4F808B084F80AB007E0FFDF05E065 -:1051800010000020297A012917D0FFDFBDF80400A4 -:10519000AAF800006CB1BDF834002080BDF804000E -:1051A0006080BDF83400392803D03C2801D086F84F -:1051B0000CB011B00020BDE8F08F3C21ADF8040028 -:1051C000ADF8341014B1697AA172DFE7AAF80000D3 -:1051D000EFE72DE9F84356880F468046154605212E -:1051E000304607F0A9FE040000D1FFDF123400941E -:1051F0003B46414630466A6804F003F8BAE570B5AC -:105200000D46052107F098FE040000D1FFDF294676 -:1052100004F11200BDE8704003F08DBE70B50D467C -:10522000052107F089FE040000D1FFDF294604F1C3 -:105230001200BDE8704003F0ABBE70B50546052115 -:1052400007F07AFE040000D1FFDF04F108032146D5 -:105250002846BDE870400422B1E470B5054605213A -:1052600007F06AFE040000D1FFDF214628462368CC -:10527000BDE870400522A2E470B50646052107F09E -:105280005BFE040000D1FFDF04F1120003F046FED4 -:10529000401D20F0030511E0011D00880322431882 -:1052A00021463046FFF78BFC00280BD0607BABB269 -:1052B000684382B26068011D07F019FD606841888B -:1052C0000029E9D170BD70B50E46054602F082FD99 -:1052D000040000D1FFDF0120207266726580207813 -:1052E00020F00F00C01C20F0F00030302070BDE82E -:1052F000704002F072BD2DE9F0438BB00D461446AC -:10530000814606A9FFF799FB002814D14FF6FF76D6 -:1053100001274FF420588CB103208DF80000102095 -:10532000ADF8100007A8059007AA204604A909F0C7 -:10533000A4FB78B107200BB0BDE8F0830820ADF8DE -:1053400008508DF80E708DF80000ADF80A60ADF8C9 -:105350000C800CE00698A17801742188C1818DF839 -:105360000E70ADF80850ADF80C80ADF80A606A46D2 -:1053700002214846069BFFF789FBDCE708B50122BE -:105380008DF8022042F60202ADF800200A460323FF -:105390006946FFF73EFC08BD08B501228DF80220E2 -:1053A00042F60302ADF800200A4604236946FFF7DF -:1053B00030FC08BD00B587B079B102228DF800201D -:1053C0000A88ADF808204988ADF80A1000236A461B -:1053D0000521FFF75BFB07B000BD1020FBE709B11B -:1053E000072316E40720704770B588B00D461446B1 -:1053F000064606A9FFF721FB00280ED17CB1062046 -:10540000ADF808508DF80000ADF80A40069B6A46DA -:105410000821DC813046FFF739FB08B070BD05205C -:105420008DF80000ADF80850F0E700B587B059B12D -:1054300007238DF80030ADF80820039100236A4659 -:105440000921FFF723FBC6E71020C4E770B588B039 -:105450000C460646002506A9FFF7EFFA0028DCD126 -:1054600006980121123003F08BFD9CB121780629AA -:1054700021D2DFE801F0200505160318801E80B256 -:10548000C01EE28880B20AB1A3681BB1824203D970 -:105490000C20C2E71020C0E7042904D0A08850B92E -:1054A00001E00620B9E7012913D0022905D004291B -:1054B0001CD005292AD00720AFE709208DF800006D -:1054C0006088ADF80800E088ADF80A00A068039095 -:1054D00023E00A208DF800006088ADF80800E0881D -:1054E000ADF80A00A0680A25039016E00B208DF89D -:1054F00000006088ADF80800A088ADF80A00E088D8 -:10550000ADF80C00A0680B25049006E00C208DF887 -:10551000000060788DF808000C256A462946304660 -:10552000069BFFF7B3FA78E700B587B00D228DF838 -:105530000020ADF8081000236A461946FFF7A6FAC6 -:1055400049E700B587B071B102228DF800200A88C2 -:10555000ADF808204988ADF80A1000236A460621F4 -:10556000FFF794FA37E7102035E770B586B00646A6 -:1055700001200D46ADF808108DF80000014600230B -:105580006A463046FFF782FA040008D129463046C1 -:1055900001F0BCFA0021304601F0D6FA204606B0F0 -:1055A00070BDF8B51C4615460E46069F07F0F6FD81 -:1055B0002346FF1DBCB231462A46009407F0FFF98E -:1055C000F8BD30B41146DDE902423CB1032903D0F5 -:1055D000002330BC05F0B3BE0123FAE71A8030BCCB -:1055E000704770B50C460546FFF72FFB214628464D -:1055F00001F09BFA2846BDE87040012101F0A4BAF1 -:1056000018B18178012938D101E010207047018854 -:1056100042F60112881A914231D018DC42F601029A -:10562000A1EB020091422AD00CDC41B3B1F5C05F7E -:1056300025D06FF4C050081821D0A0F57060FF3855 -:105640001BD11CE001281AD002280AD117E0B0F5BE -:10565000807F14D008DC012811D002280FD0032845 -:105660000DD0FF2809D10AE0B0F5817F07D0A0F561 -:105670008070033803D0012801D0002070470F202C -:1056800070470A281ED007DC18D2DFE800F0191B8B -:105690001F1F171F231D1F21102815D008DC0B28E2 -:1056A00012D00C2810D00D2816D00F2806D10DE0EE -:1056B00011280BD084280BD087280FD003207047E7 -:1056C0000020704705207047072070470F20704763 -:1056D00004207047062070470C20704743F20200F8 -:1056E000704738B50C46050041D06946FEF7D6FA3A -:1056F000002819D19DF80010607861F302006070F5 -:105700006946681CFEF7CAFA00280DD19DF8001002 -:10571000607861F3C5006070A978C1F34101012987 -:1057200003D0022905D0072038BD217821F02001BF -:1057300002E0217841F020012170410704D0A978CE -:10574000C90861F386106070607810F0380F07D0D8 -:10575000A978090961F3C710607010F0380F02D101 -:105760006078400603D5207840F04000207000208B -:1057700038BD70B504460020088015466068FFF704 -:10578000B0FF002816D12089A189884211D860680D -:105790008078C0070AD0B1F5007F0AD840F2012016 -:1057A000B1FBF0F200FB1210288007E0B1F5FF7F9B -:1057B00001D90C2070BD01F201212980002070BDAB -:1057C00010B50478137864F3000313700478640848 -:1057D00064F3410313700478A40864F38203137024 -:1057E0000478E40864F3C30313700478240964F3B1 -:1057F000041313700478640964F34513137000787C -:10580000800960F38613137031B10878C10701D1A4 -:10581000800701D5012000E0002060F3C71313705A -:1058200010BD4278530702D002F0070306E012F0E1 -:10583000380F02D0C2F3C20300E001234A7863F3B9 -:1058400002024A70407810F0380F02D0C0F3C20054 -:1058500005E0430702D000F0070000E0012060F3FC -:10586000C5024A7070472DE9F04F95B00D00824691 -:1058700012D01221284612F081FB4FF6FF7B05AAB9 -:105880000121584605F021FA0024264637464FF4F8 -:1058900020586FF4205972E0102015B0BDE8F08F49 -:1058A0009DF81E0001280AD1BDF81C1041450BD0FF -:1058B00011EB09000AD001280CD002280CD0042CCE -:1058C0000ED0052C0FD10DE0012400E00224BDF81C -:1058D0001A6008E0032406E00424BDF81A7002E010 -:1058E000052400E00624BDF81A10514547D12C7458 -:1058F000BEB34FF0000810AA4FF0070ACDE90282AC -:10590000CDE900A80DF13C091023CDF810904246D6 -:105910003146584605F08CFA08BBBDF83C002A46D3 -:10592000C0B210A909F08AF8C8B9AE81CFB1CDE9EB -:1059300000A80DF1080C0AAE40468CE84102132382 -:1059400000223946584605F073FA40B9BDF83C00CC -:10595000F11CC01EC0B22A1D09F070F810B103205E -:105960009BE70AE0BDF82900E881062C05D19DF8E7 -:105970001E00A872BDF81C00288100208DE705A834 -:1059800005F0AFF900288BD0FFF77BFE85E72DE906 -:10599000F0471C46DDE90978DDF8209015460E0039 -:1059A000824600D1FFDF0CB1208818B1D5B111209B -:1059B000BDE8F087022D01D0012100E0002106F1B1 -:1059C000140004F071F8A8F8000002463B4629468E -:1059D000504605F07FFBC9F8000008B9A41C3C60E4 -:1059E0000020E5E71320E3E7F0B41446DDE90452B4 -:1059F0008DB1002314B1022C09D101E0012306E08E -:105A00000D7CEE0703D025F0010501230D7421461E -:105A1000F0BC05F094BC1A80F0BC70472DE9FE4F35 -:105A200091461A881C468A468046FAB102AB49461E -:105A300005F050FB050019D04046A61C278807F04A -:105A4000BFFB3246072629463B46009606F0EBFF91 -:105A500020882346CDE900504A4651464046FFF78C -:105A6000C3FF002020800120BDE8FE8F0020FBE75F -:105A70002DE9F04786B09146DDE90E460F46824695 -:105A800003AA05A904A8109D8DE807009846324690 -:105A900021465046FFF77BFF049909B1012200E03F -:105AA00000222A70002818D1F94A03AB1060059A29 -:105AB000009104F11400CDE901204A4639465046D0 -:105AC00004F0A9FBA8B1092811D2DFE800F005080D -:105AD0000510100A0C0C0E00002006B068E711201B -:105AE000FBE70720F9E70820F7E70D20F5E703209B -:105AF000F3E7BDF80C100498CDE9000143463246A7 -:105B000021465046FFF770FFE6E72DE9F04389B0E4 -:105B10000D46DDE9108781461C461646142103A870 -:105B200012F04EFA012002218DF810108DF80C00B1 -:105B30008DF81170ADF8146064B1A278D20709D065 -:105B40008DF81600E088ADF81A00A088ADF81800AE -:105B5000A068079008A80095CDE90110424603A966 -:105B600048466B68FFF784FF09B0BDE8F083F0B5E5 -:105B70008BB000240646069407940727089405A8CE -:105B80000994019400970294CDE903400D46102337 -:105B90002246304605F04CF978B90AA806A90194C6 -:105BA00000970294CDE90310BDF814300022294675 -:105BB000304604F013FF002801D0FFF762FD0BB060 -:105BC000F0BD04F0B3BD2DE9FC410C468046002633 -:105BD00002F000F9054620780D287DD2DFE800F0BC -:105BE000BC0713B325BD49496383AF959B00A84803 -:105BF000006820B1417841F010014170ADE04046AD -:105C000002F018F9A9E00421404607F095F90700D1 -:105C100000D1FFDF07F11401404603F0D9FEA5BB18 -:105C200013214046FCF7C2FC97E00421404607F0F0 -:105C300083F9070000D1FFDFE088ADF80000002005 -:105C4000B8819DF80000010704D5C00602D5A088E0 -:105C5000B88105E09DF8010040067ED5A088F88156 -:105C600005B9FFDF22462946404601F063FC0226C3 -:105C700073E0E188ADF800109DF8011009060FD51A -:105C8000072803D006280AD00AE024E00421404671 -:105C900007F052F9060000D1FFDFA088F08102264C -:105CA000CDB9FFDF17E00421404607F045F90700B2 -:105CB00000D1FFDF07F1140004F06FFD90F0010F39 -:105CC00002D1E079000648D5387C022640F0020077 -:105CD000387405B9FFDF00E03EE022462946404621 -:105CE00001F028FC39E00421404607F025F9017C49 -:105CF000002D01F00206C1F340016171017C21F029 -:105D000002010174E7D1FFDFE5E7022601214046E9 -:105D100002F0C2F821E00421404607F00DF90546E3 -:105D2000606800902089ADF8040001226946404671 -:105D300002F0D3F8287C20F0020028740DE0002D3A -:105D4000C9D1FFDFC7E7022600214046FFF766FA08 -:105D5000002DC0D1FFDFBEE7FFDF3046BDE8FC818C -:105D60003EB50C0009D001466B4601AA002005F0A3 -:105D7000E1F820B1FFF785FC3EBD10203EBD0020BC -:105D80002080A0709DF8050002A900F00700FDF733 -:105D9000A1FF50B99DF8080020709DF8050002A9E8 -:105DA000C0F3C200FDF796FF08B103203EBD9DF889 -:105DB000080060709DF80500C109A07861F3041027 -:105DC000A0709DF80510890961F3C300A0709DF8CB -:105DD0000410890601D5022100E0012161F342008F -:105DE0009DF8001061F30000A07000203EBD70B56A -:105DF000144606460D4651EA040005D075B1084622 -:105E00000AF08CFD78B901E0072070BD29463046C4 -:105E100005F0F1F810B1BDE8704032E454B120460D -:105E20000AF07CFD08B1102070BD21463046BDE867 -:105E3000704095E7002070BD2DE9FC5F0C46904650 -:105E40000546002701780822007A3E46B2EB111F72 -:105E50007ED104F10A0100910A31821E4FF0020A3C -:105E600004F1080B0191092A73D2DFE802F0ECDF9C -:105E700005F427277AA9CD006888042107F05CF88B -:105E8000060000D1FFDFB08920B152270726C2E00B -:105E90002802002051271026002C7DD06888A08081 -:105EA0000120A071A88900220099FFF7A0FF002817 -:105EB00073D1A8892081288AE081D1E0B5F81290B9 -:105EC000072824D1E87B000621D5512709F11400C9 -:105ED00086B2002CE1D0A88900220099FFF787FF45 -:105EE00000285AD16888A08084F806A0A88920815B -:105EF0000120A073288A2082A4F81290A88A00901A -:105F000068884B46A969019A01F0F1FAA8E0502788 -:105F100009F1120086B2002C3ED0A8890022594611 -:105F2000FFF765FF002838D16888A080A889E08045 -:105F3000287A072813D002202073288AE081E87B82 -:105F4000C0096073A4F81090A88A0090688801E0E6 -:105F500083E080E04B4604F11202A969D4E70120F6 -:105F6000EAE7B5F81290512709F1140086B2002C27 -:105F700066D06888042106F0DFFF83466888A08029 -:105F8000A88900220099FFF732FF00286ED184F81B -:105F900006A0A889208101E052E067E00420A073F8 -:105FA000288A2082A4F81290A88A009068884B461C -:105FB000A969019A01F09BFAA989ABF80E104FE08C -:105FC0006888FBF739FB07466888042106F0B4FFB0 -:105FD000064607B9FFDF06B9FFDF687BC00702D0BE -:105FE0005127142601E0502712264CB36888A08060 -:105FF000502F06D084F806A0287B594601F087FA76 -:106000002EE0287BA11DF9E7FE49A8894989814234 -:1060100005D1542706269CB16888A08020E053272C -:106020000BE06888A080A889E08019E068880421D6 -:1060300006F082FF00B9FFDF55270826002CF0D1BB -:10604000A8F8006011E056270726002CF8D06888D1 -:10605000A080002013E0FFDF02E0012808D0FFDF6E -:10606000A8F800600CB1278066800020BDE8FC9F86 -:1060700057270726002CE3D06888A080687AA07193 -:10608000EEE7401D20F0030009B14143091D01EB7B -:106090004000704713B5DB4A00201071009848B1EA -:1060A0000024684606F083FD002C02D1D64A0099F0 -:1060B00011601CBD01240020F4E770B50D460646B2 -:1060C00086B014465C21284611F07AFF04B9FFDF40 -:1060D000A0786874A2782188284601F042FA00204E -:1060E000A881E881228805F11401304603F055FCAF -:1060F0006A460121304604F0E8FD19E09DF80300EE -:10610000000715D5BDF806103046FFF730FD9DF8A5 -:106110000300BDF8061040F010008DF80300BDF834 -:106120000300ADF81400FF233046059A04F02EFF5B -:10613000684604F0D6FD0028E0D006B070BD10B56A -:106140000C4601F1140003F05FFC0146627C20461E -:10615000BDE8104001F03ABA70B50546042106F0DA -:10616000EBFE040000D1FFDF04F114010C462846C9 -:1061700003F02EFC21462846BDE8704003F02FBCFA -:1061800070B58AB00C460646FBF756FA050014D0E7 -:106190002878222827D30CB1A08890B101208DF84F -:1061A0000C0003208DF8100000208DF8110054B170 -:1061B000A088ADF81800206807E043F202000AB09A -:1061C00070BD0920FBE7ADF81800059004213046AA -:1061D00006F0B2FE040000D1FFDF04F1140003F06A -:1061E0002AFC000701D40820E9E701F0F3FD60B1C3 -:1061F00008A802210094CDE9011095F8232003A9F5 -:1062000030466368FFF734FCD9E71120D7E72DE962 -:10621000F04FB2F802A0834689B015468946504631 -:10622000FBF70AFA07460421504606F085FE0026D1 -:10623000044605964FF002080696ADF81C6007B9B3 -:10624000FFDF04B9FFDF4146504605F0F7F950B9CA -:1062500007AA06A905A88DE8070042462146504630 -:106260006368FFF794FB674807AB0660DDE905123A -:1062700004F11400CDF80090CDE90320CDE90131FF -:1062800097F82320594650466B6803F01DFC060022 -:106290000AD0022E04D0032E14D0042E00D0FFDF2B -:1062A00009B03046BDE8F08FBDF81C000028F7D0DB -:1062B0000599CDE900104246214650466368FFF734 -:1062C00093FBEDE7687840F008006870E8E72DE997 -:1062D000F04F9BB004464FF000084A48ADF8548098 -:1062E000ADF83080ADF85080A0F80880ADF814808B -:1062F000ADF81880ADF82080ADF81C800079164606 -:106300000D464746012808D0022806D0032804D0AD -:10631000042802D008201BB0C4E720460AF0BAFACD -:10632000D0BB28460AF0B6FAB0BB60680AF0FFFAA4 -:1063300090BB606848B160892189884202D8B1F574 -:10634000007F01D90C20E6E780460BAA06A9284663 -:10635000FFF70FFA0028DED168688078C0F34100AB -:10636000022808D19DF8190010F0380F03D02869D1 -:106370000AF0D4FA80B905A92069FFF7B2F900281C -:10638000C9D1206950B1607880079DF8150000F0F0 -:10639000380002D5D0B301E011E0B8BB9DF814007D -:1063A00080060ED59DF8150010F0380F03D06068F8 -:1063B0000AF0B4FA18B960680AF0B9FA08B1102006 -:1063C000A9E707A96069FFF78CF90028A3D16069E4 -:1063D00040B19DF81D0000F0070101293FD110F0E8 -:1063E000380F3CD008A9A069FFF77BF9002892D1AB -:1063F0009DF81C00800632D49DF8200080062ED423 -:10640000A06904E0280200201400002027E040B129 -:106410009DF8210000F00701012920D110F0380F6C -:106420001DD0E06818B10078C8B11C2817D20EAA98 -:10643000611C2046FFF7C4F90120B94660F30F271D -:10644000BA4607468DF84E0042F60300ADF84C0000 -:106450000DF13B0217A9286808F00FFB08B10720CF -:1064600059E79DF85C0016A9CDF80090C01CCDE955 -:10647000019100F0FF0B00230BF20122514613A8FB -:1064800004F066FBF0BBBDF858000990FE482A896D -:1064900029690092CDE901106B89BDF82C2028688C -:1064A000069904F055FB01007ED120784FF0020AD6 -:1064B000C10601D480062BD5ADF80C90606950B9A7 -:1064C00007A906A8FFF7ADF99DF81D0020F0070009 -:1064D000401C8DF81D009DF81C008DF84E7040F09A -:1064E000C8008DF81C0042F60210ADF84C000CA953 -:1064F00003AACDF800A0CDE90121002340F2032238 -:1065000013A800E01EE0079904F022FB01004BD124 -:10651000DD484D4608385B460089ADF839000EA8C5 -:10652000CDE90290CDF80490CDF810904FF0070916 -:106530000022CDF80090BDF858104FF6FF7004F01F -:106540004DFA10B1FFF79DF8E5E69DF8380000061A -:1065500025D52946012060F30F218DF84E704FF4A8 -:106560002450ADF84C00ADF8105062789DF8100042 -:10657000002362F300008DF810006278CDF800A0CF -:10658000520862F341008DF8100004AACDE90125FC -:1065900040F2032213A804F0DBFA010004D1606882 -:1065A00088B32069A8B900E086E005A906A8FFF72E -:1065B00038F96078800706D49DF8150020F038007F -:1065C0008DF8150005E09DF8140040F040008DF8AE -:1065D00014008DF84E7042F60110ADF84C00208981 -:1065E00040F20121B0FBF1F201FB1202606814AB32 -:1065F000CDF80080CDE90103002313A8059904F02C -:10660000A7FA010058D12078C00729D0ADF80C5066 -:10661000A06950B908A906A8FFF703F99DF8210061 -:1066200020F00700401C8DF821009DF820008DF817 -:106630004E7040F040008DF8200042F60310ADF897 -:106640004C0015A903AACDF800A0CDE90121002333 -:1066500040F2032213A8089904F07AFA01002BD122 -:10666000E06868B32946012060F30F218DF84E7071 -:1066700042F60410ADF84C00E068002302788DF873 -:10668000602040788DF86100E06818AA4088ADF875 -:106690006200E06800798DF86400E068C088ADF8B9 -:1066A0006500CDF80090CDE901254FF4027213A8E2 -:1066B00004F04EFA010003D0099800F0B3FF2AE677 -:1066C000714803210838017156B100893080BDF846 -:1066D00050007080BDF83000B080BDF85400F080EC -:1066E000002018E670B501258AB016460B46012831 -:1066F00002D0022816D104E08DF80E504FF420503D -:1067000003E08DF80E5042F60100ADF80C005BB1CD -:106710000024601C60F30F2404AA08A9184608F09E -:10672000ACF918B107204AE5102048E504A99DF806 -:1067300020205548CDE90021801E029000232146EB -:1067400003A802F2012204F003FA10B1FEF799FF48 -:1067500035E54D4808380EB1C188318005710020FB -:106760002DE5F0B593B0074601268DF83E6041F661 -:106770000100ADF83C0012AA0FA93046FFF7B2FFA6 -:10678000002848D1404C0025083CE7B31C2102A852 -:1067900011F016FC9DF808008DF83E6040F02000D6 -:1067A0008DF8080042F60520ADF83C000E959DF8E6 -:1067B0003A00119520F00600801C8DF83A009DF8F3 -:1067C00038006A4620F0FF008DF838009DF8390047 -:1067D00009A920F0FF008DF839000420ADF82C0045 -:1067E000ADF830000EA80A9011A80D900FA80990DE -:1067F000ADF82E5002A8FFF76AFD00280BD1BDF8B6 -:106800000000608100E008E0BDF80400A081401CA9 -:10681000E0812571002013B0F0BD6581A581BDF830 -:106820004800F4E72DE9F74F1749A0B000240839D4 -:1068300017940A79A146012A04D0022A02D008201E -:1068400023B02FE5CA88824201D00620F8E72198BC -:106850008A46824201D10720F2E701202146ADF8A5 -:1068600048004FF6FF7860F30F21ADF84A808DF8AD -:106870006E0042F6020B06918DF87240ADF86CB0D6 -:10688000ADF870401CA901E0300200201391ADF872 -:10689000508012A804F049FA00252E462F460DAB71 -:1068A000072212A9404604F043FA78B10A285DD1C4 -:1068B00095B38EB3ADF86450ADF866609DF85E0098 -:1068C0008DF8144019AC012864D06BE09DF83A00B3 -:1068D0001FB3012859D1BDF8381059451FD118A848 -:1068E00009A901940294CDE9031007200090BDF896 -:1068F000361010230022404604F09AFAB0BBBDF8CF -:106900006000042801D006284AD1BDF8241021983F -:1069100081423AD10F2093E73AE0012835D1BDF802 -:106920003800B0F5205F03D042F6010188422CD137 -:10693000BAF80600BDF83610884201D1012700E000 -:10694000002705B19EB1219881421ED118A809AA3D -:1069500001940294CDE90320072000900D461023F6 -:106960000022404604F064FA00B902E02DE04E46F1 -:106970000BE0BDF86000022801D0102810D1C0B291 -:1069800017AA09A908F05AF850B9BDF8369086E759 -:10699000052055E705A917A8221D08F06EF808B1D3 -:1069A00003204DE79DF814000023001DC2B28DF8AE -:1069B000142022980092CDE901401BA8069904F00A -:1069C000C7F810B902228AF80420FEF75AFE37E70A -:1069D00010B50B46401E88B084B205AA00211846A7 -:1069E000FEF7EEFE00200DF1080C06AA05A90190A5 -:1069F0008CE80700072000900123002221464FF673 -:106A0000FF7003F0EBFF0446BDF81800012800D02A -:106A1000FFDF2046FEF735FE08B010BDF0B5FF4F92 -:106A2000044687B038790E46032804D0042802D0E3 -:106A3000082007B0F0BD04AA03A92046FEF799FE7E -:106A40000500F6D160688078C0F3410002280AD1C1 -:106A50009DF80D0010F0380F05D0206909F05EFF99 -:106A600008B11020E5E7208905AA21698DE8070013 -:106A70006389BDF810202068039904F069F810B10B -:106A8000FEF7FFFDD5E716B1BDF8140030800420F5 -:106A900038712846CDE7F8B50C0006460BD0014604 -:106AA0004FF6FF7500236A46284604F043FA20B1EA -:106AB000FEF7E7FDF8BD1020F8BD69462046FEF759 -:106AC00010FE0028F8D1A078314600F001032846D6 -:106AD000009A04F05BFAEBE730B587B01446002269 -:106AE0000DF1080C05AD01928CE82C0007220092F4 -:106AF0000A46014623884FF6FF7003F06FFFBDF88A -:106B000014102180FEF7BDFD07B030BD70B50D46F5 -:106B1000042106F011FA040000D1FFDF294604F138 -:106B20001400BDE8704002F07FBF70B50D4604212F -:106B300006F002FA040000D1FFDF294604F1140038 -:106B4000BDE8704002F093BF70B50D46042106F019 -:106B5000F3F9040000D1FFDF294604F11400BDE879 -:106B6000704002F0ABBF70B50546042106F0E4F9B1 -:106B7000040000D1FFDF214628462368BDE87040AD -:106B80000122FEF74BBF70B50646042106F0D4F98A -:106B9000040000D1FFDF04F1140002F035FF401DB6 -:106BA00020F0030511E0011D008800224318214652 -:106BB0003046FEF733FF00280BD0607CABB2684351 -:106BC00082B2A068011D06F092F8A06841880029F1 -:106BD000E9D170BD70B50546042106F0ADF9040099 -:106BE00000D1FFDF214628466368BDE870400222DD -:106BF000FEF714BF70B50E46054601F0EBF8040031 -:106C000000D1FFDF0120207266726580207820F0BD -:106C10000F00001D20F0F00040302070BDE87040F3 -:106C200001F0DBB810B50446012900D0FFDF204693 -:106C3000BDE810400121FEF7F1BA2DE9F04F97B001 -:106C40004FF0000A0C008346ADF814A0D04619D0CE -:106C5000E06830B1A068A8B10188ADF81410A0F8C0 -:106C600000A05846FAF7E8FC070043F2020961D099 -:106C7000387822285CD30421584606F05DF90500D7 -:106C800005D103E0102017B0BDE8F08FFFDF05F15C -:106C9000140002F0B9FE401D20F00306A078012880 -:106CA00003D0022801D00720EDE7218807AA584623 -:106CB00004F00BF830BB07A804F013F810BB07A8CA -:106CC00004F00FF848B99DF82600012805D1BDF859 -:106CD0002400A0F52451023902D04FF45050D2E7DD -:106CE000E068B0B1CDE902A00720009005AACDF878 -:106CF00004A00492A2882188BDF81430584603F0FD -:106D00006DFE10B1FEF7BDFCBDE7A168BDF8140033 -:106D100008809DF81F00C00602D543F20140B2E78B -:106D20000B9838B1A1780078012905D080071AD4D2 -:106D30000820A8E74846A6E7C007F9D002208DF84A -:106D40003C00A8684FF00009A0B1697C42887143FB -:106D500091420FD98AB2B3B2011D05F07EFF804681 -:106D6000A0F800A006E003208DF83C00D5F80080D4 -:106D70004FF001099DF8200010F0380F00D1FFDF1F -:106D80009DF820002649C0F3C200084497F823105C -:106D900010F8010C884201D90F2074E72088ADF863 -:106DA000400014A90095CDE90191434607220FA99F -:106DB0005846FEF75DFE002891D19DF8500050B96D -:106DC000A078012807D1687CB3B2704382B2A8686A -:106DD000011D05F056FF002055E770B50646154623 -:106DE0000C460846FEF70CFC002805D12A46214631 -:106DF0003046BDE8704075E470BD13E570B51E46C1 -:106E000014460D000ED06CB1616859B160B10349F0 -:106E1000C988814208D0072070BD000028020020E8 -:106E2000468301001020F7E72068FEF7E9FB002801 -:106E3000F2D1324621462846BDE87040FFF747BAF6 -:106E400070B515460C0006D038B1FE49098981425B -:106E500003D00720E0E71020DEE72068FEF7D0FB34 -:106E60000028D9D129462046BDE87040D6E570B546 -:106E7000064686B00D461446104609F031FDD0BBDB -:106E8000606809F054FDB0BBA6F57F40FF3803D021 -:106E90003046FAF7D1FB80B128466946FEF7E3FC9D -:106EA00000280CD19DF810100F2008293CD2DFE8F3 -:106EB00001F008060606060A0A0843F2020006B0B8 -:106EC000AAE70320FBE79DF80210012908D1BDF8CD -:106ED0000010B1F5C05FF2D06FF4C052D142EED0D5 -:106EE0009DF8061001290DD1BDF80410A1F5285117 -:106EF000062907D200E028E0DFE801F003030403DD -:106F00000303DCE79DF80A1001290ED1BDF8081033 -:106F1000B1F5245FD3D0A1F524510239CFD0012996 -:106F2000CDD0022901D1CAE7FFDF606878B900231C -:106F300005AA2946304603F0FDFF10B1FEF7A1FB7C -:106F4000BDE79DF81400800601D41020B7E76188E2 -:106F5000224628466368FFF7BFFDB0E72DE9F043FE -:106F6000814687B088461446104609F0B9FC18B12E -:106F7000102007B0BDE8F083002306AA414648462A -:106F800003F0D8FF18B100BFFEF77BFBF1E79DF8D7 -:106F90001800C00602D543F20140EAE700250727A2 -:106FA00005A8019500970295CDE9035062884FF638 -:106FB000FF734146484603F03BFF060013D160686B -:106FC00009F08EFC60B960680195CDE90250009728 -:106FD0000495238862884146484603F029FF064607 -:106FE000BDF8140020803046CEE739B1954B0A88B1 -:106FF0009B899A4202D843F2030070471DE610B500 -:1070000086B0904C0423ADF81430638943B1A48951 -:107010008C4201D2914205D943F2030006B010BD63 -:107020000620FBE7ADF81010002100910191ADF8AA -:10703000003002218DF8021005A9029104A90391E4 -:10704000ADF812206946FFF7F8FDE7E72DE9FC47A8 -:1070500081460E46084609F01DFC88BB4846FAF7F3 -:10706000EBFA5FEA00080AD098F80000222829D33A -:107070000421484605F060FF070005D103E043F214 -:107080000200BDE8FC87FFDF07F1140002F0D3FC2B -:1070900005463078012803D0022804D00720F0E705 -:1070A000A8070FD502E015F01C0F0BD0B079341DE6 -:1070B000C00709D0E08838B1A06809F0EBFB18B12F -:1070C0001020DEE70820DCE732782088002628B38D -:1070D000A0F201130721112B18D20CD2DFE803F024 -:1070E0000B090D0B1D0B121D100B0B1D1D1D1D0B78 -:1070F0001D00022A11D10846C3E7012AFBD00CE08B -:107100002A0700E0EA06002AF5DA06E0A0F5C072D8 -:107110001F2A02D97D3A022AEDD8C6B200F05AFEE3 -:1071200050B198F82300CDE90006FA892346394684 -:107130004846FEF7EAFCA4E71120A2E72DE9F04F4C -:107140008BB01F4615460C4683460026FAF774FAA4 -:1071500028B10078222805D208200BB094E543F22C -:107160000200FAE7B80801D00720F6E7032F00D1A4 -:1071700000274FF6FF79CCB1022D73D3204609F0DA -:10718000D6FB30B904EB0508A8F1010009F0CFFBEC -:1071900008B11020E1E7AD1EAAB221464846FBF730 -:1071A000E7FE38F8021C88425CD1ADB22549B80729 -:1071B00002D58889401C00E001201FFA80F8F807FA -:1071C00001D08F8900E04F4605AA4146584603F09A -:1071D0007CFD4FF0070A4FF00009ACB3204608E0F1 -:1071E000408810283ED8361D304486B2AE4239D28F -:1071F000A01902884245F3D354E000BF9DF8170060 -:1072000002074FD584B304EB0608361DB8F80230E8 -:10721000B6B2102B26D89A19AA4223D8B8F8002063 -:1072200091421FD1C00620D5CDE900A90DF1080C6F -:107230000AAAA11948468CE80700B8F800100022F5 -:10724000584603E0280200202CE00BE003F0C6FBC8 -:1072500010B1FEF716FA80E7B8F80200BDF8281062 -:10726000884202D00B2078E704E0B8F802003044EE -:1072700086B206E0C00604D55846FEF778FC002822 -:1072800088D19DF81700BDF81A1020F010008DF875 -:107290001700BDF81700ADF80000FF235846009A0C -:1072A00003F074FE05A803F01CFD18B9BDF81A1010 -:1072B000B942A3D90421584605F03EFE040000D18E -:1072C000FFDFA2895AB1CDE900A94D46002321462E -:1072D0005846FEF71AFC0028BDD1A5813DE70020E5 -:1072E0003BE72DE9FF4F8BB01E4617000D464FF0D0 -:1072F000000412D0B00802D007200FB0C4E4032E5F -:1073000000D100265DB1084609F008FB28B938888D -:10731000691E084409F002FB08B11020EDE7C74AD6 -:10732000B00701D5D18900E00121F0074FF6FF78C1 -:1073300002D0D089401E00E0404686B206AA0B98D3 -:1073400003F0C3FC4FF000094FF0070B0DF1140AD6 -:1073500039E000BF9DF81B00000734D5CDF804903C -:10736000CDF800B0CDF80890CDE9039A434600224D -:107370000B9803F05DFD60BB05B3BDF814103A88AF -:1073800021442819091D8A4230D3BDF81E2020F857 -:10739000022BBDF8142020F8022BCDE900B9CDE96D -:1073A0000290CDF810A0BDF81E10BDF814300022D8 -:1073B0000B9803F03DFD08B103209EE7BDF81400D3 -:1073C0002044001D84B206A803F08BFC20B10A28DB -:1073D00006D0FEF756F990E7BDF81E10B142B9D9B4 -:1073E00034B17DB13888A11C884203D20C2084E7D7 -:1073F000052082E7224629464046FBF7B9FD0146B3 -:1074000028190180A41C3C80002076E710B50446B2 -:1074100009F066FA08B1102010BD8848C0892080A4 -:10742000002010BDF0B58BB00D460646142103A810 -:1074300010F0C6FD01208DF80C008DF81000002022 -:107440008DF81100ADF814503046FAF7F5F848B150 -:107450000078222812D30421304605F06DFD040087 -:1074600005D103E043F202000BB0F0BDFFDF04F1F1 -:107470001400074602F0DFFA800601D40820F3E783 -:10748000207C022140F00100207409A80094CDE97D -:107490000110072203A930466368FEF7E9FA20B11C -:1074A000217C21F001012174DEE729463046FDF7F9 -:1074B000A6FE08A9384602F0ADFA00B1FFDFBDF81C -:1074C0002040172C01D2172000E02046A84201D905 -:1074D0002C4602E0172C00D2172421463046FFF735 -:1074E00024FB21463046FDF7B0FB0020BCE7F8B591 -:1074F0001C4615460E46069F05F050FE2346FF1D0E -:10750000BCB231462A46009405F059FAF8BD70B570 -:107510000C4605460E21204610F030FD002020804C -:107520002DB1012D01D0FFDF76E4062000E005201B -:10753000A07171E410B548800878134620F00F0060 -:10754000001D20F0F00080300C460870142219460F -:1075500004F1080010F0D8FC00F03FFC374804604C -:1075600010BD2DE9F047DFF8D890491D064621F0FF -:10757000030117460C46D9F8000005F036FB05005C -:1075800000D1FFDF4FF000083560A5F800802146EC -:10759000D9F8000005F029FB050000D1FFDF756078 -:1075A000A5F800807FB104FB07F1091D0BD0D9F8C5 -:1075B000000005F01AFB040000D1FFDFB460C4F83E -:1075C0000080BDE8F087C6F80880FAE72DE9F041B1 -:1075D0001746491D21F00302194D0646016814465D -:1075E000286805F02DFB22467168286805F028FB05 -:1075F0003FB104FB07F2121D03D0B168286805F003 -:107600001FFB042005F044FC0446042005F048FC60 -:10761000201A012804D12868BDE8F04105F0DABA43 -:10762000BDE8F08110B50C4603F01BFB00B1FFDF95 -:107630002046BDE81040FEF724B8000028020020D4 -:107640001400002038B582880A800C46C188121DBB -:1076500090B26A4604F091FDBDF80000032800D303 -:107660000320C1B2208800F077FF38BD38B582888A -:107670000A800C46C188121D90B26A4604F07DFD56 -:10768000BDF80000022800D30220C1B2208800F01B -:1076900063FF401CC0B238BD2DE9FE4F0C46F849CF -:1076A00081464022D1E90201CDE9010109F103003F -:1076B00020F00301C91C21F0030100916846114626 -:1076C00005F075FAEF4E002C02D1EF4A0099916057 -:1076D000009901440091357E05F1010504D1E8B21D -:1076E00007F052F900B1FFDF009800EB0510C01C55 -:1076F00020F00301009144B9727A00200870B08B29 -:1077000080B203F036F900B1FFDF0098F169084458 -:1077100000902146684600F0E6FE0098C01C20F06C -:1077200003000090717A04B1002005F02AFB009953 -:10773000084400902146684600F019FF00273D46A6 -:10774000B24696F801800CE0284600F0AFFE0646EF -:1077500081788088FDF710FB71786D1C00FB017744 -:10776000EDB24545F0D10098C01C20F00300009018 -:1077700004B100203946FDF70AFB009900270844B0 -:1077800000903D469AF801800CE0284600F08EFEFD -:107790000646C1788088FEF774FC71786D1C00FB8A -:1077A0000177EDB24545F0D10098C01C20F00300F0 -:1077B000009004B100203946FEF76CFC00990844A3 -:1077C00000210090084603F064FD2146684600F061 -:1077D00050FE0098C01D20F0070200922CBBAB4960 -:1077E0000020FBF7E3FAFAF7D5FBA64801AA00212F -:1077F0000C30FAF7D7FF00B1FFDF9AF81900FEF757 -:10780000B0FF00B1FFDF9F484FF4F671383010F041 -:10781000D7FB9C480421383080F8E91180F8EA1140 -:10782000062180F8EB11032101710099A1EB0900F9 -:10783000BDE8FE8F70B5934C06463834207804EBD3 -:107840004015E078083590B9A01990F8E8010028B3 -:107850000ED0A0780F2800D3FFDF2021284610F09B -:10786000AFFB687866F3020068700120E07028467C -:1078700070BD2DE9F04105460C4600270078052132 -:1078800090463E46B1EB101F00D0FFDF287A58B17A -:1078900001280FD0FFDF00BFA8F800600CB12780DF -:1078A00066800020BDE8F0810127092674B1688850 -:1078B000A08008E00227142644B16888A0802869C7 -:1078C000E060A88A2082287B2072E5E7A8F80060A3 -:1078D000E7E710B56C4C6068C11D21F007018142DB -:1078E00000D0FFDF67480121002201704270017261 -:1078F00041720273052282821F22C282417364A2F6 -:1079000002610A22027641764FF4B061C16161687A -:10791000416010BD30B55C4C1568636808339D420A -:1079200002D20420136030BD564B5D785A6802EBDA -:10793000C502107051700320D08017209080012064 -:10794000D07090705878401C587060680830606043 -:10795000002030BD70B506464A480024457807E04F -:10796000204600F0A3FD0178B14204D0641CE4B2CB -:10797000AC42F5D1002070BDF7B5064608780C463C -:10798000F8B1FFF7E7FF0546202E06D0212E1AD0CA -:10799000222E18D0232E14D110E000F092FD0DB14C -:1079A000697800E00021401A81B2A0780144FF29E3 -:1079B00007D830B1A088022805D202E060881728D5 -:1079C00001D20720FEBD65B9207802AA0121FFF788 -:1079D000A1FF0028F6D12078FFF7BCFF050000D1F9 -:1079E000FFDF202E08D0212E0ED0222E0FD0232EE6 -:1079F00007D0FFDF0020FEBDA0786870A088E88077 -:107A0000F8E76088A880F5E7A078A870F2E7A0788A -:107A1000E870EFE71A2841D00DDC13283ED2DFE8EA -:107A200000F01B3D203D3D272723252D3D3D293DD1 -:107A30003D3D3D3B0F00302802D003DC1E282DD1F8 -:107A4000072070473A38092828D2DFE800F01527C8 -:107A50000F272727272707000020704743F204003D -:107A6000704743F202007047042070470D207047B2 -:107A70000F2070470820704711207047132070476F -:107A80004C830100640200201C0000200000002044 -:107A90006E524635780000000620F0E70320EEE73E -:107AA00010B5007800F0010004F062FBBDE8104062 -:107AB000B0E70EB5017801F001018DF800104178B2 -:107AC00001F001018DF801100178C1F340018DF83A -:107AD00002104178C1F340018DF803100178890844 -:107AE0008DF80410417889088DF8051081788DF89B -:107AF0000610C1788DF8071000798DF808006846E7 -:107B000003F0B4FFFFF786FF0EBD2DE9F84FDFF855 -:107B1000F883FE4C00261FE0012000F06BFD0120E1 -:107B2000FFF788FE054640214746D8F8080005F0D3 -:107B30005CF8686000B9FFDF686803F084FEA8B1F4 -:107B40002846F9F7EAFE284600F05AFD20B94022FF -:107B50006968B86805F074F894F9E9010428DBDA7B -:107B6000022005F095F907460025A6E04022696845 -:107B7000D8F8080005F064F8F2E7B8F802104046BB -:107B8000491C89B2A8F80210B94201D300214180F2 -:107B90000221B8F8020005F0CFF9002865D0B8F846 -:107BA0000200694604F063FAFFF734FF00B1FFDF1B -:107BB0009DF8000078B1B8F8020005F001FB5FEA1B -:107BC000000900D1FFDF484604F08DFD18B1B8F878 -:107BD000020003F022FDB8F8020005F0DFFA5FEAC8 -:107BE000000900D1FFDF484604F075FDE8BB032122 -:107BF000B8F8020005F0A0F95FEA000B48D1FFDFFA -:107C000046E000BFDBF80C0010B10078FF2849D037 -:107C1000022000F0EFFC0220FFF70CFE82464846EF -:107C200004F065FECAF8040000B9FFDFDAF80400CA -:107C300004F02DFF002100900170B8F802105046AA -:107C4000AAF8021003F0C2FB484604F022FF00B974 -:107C5000FFDF504600F0D4FC18B99AF80100000785 -:107C600004D50099CBF80C1012E024E0DBF80C00EE -:107C700038B10178491C11F0FF01017008D1FFDF14 -:107C800006E000221146484600F0F1FB00B9FFDF94 -:107C900094F9EA01022805DBB8F8020003F071FB51 -:107CA0000028AFD194F9E901042804DB484604F028 -:107CB00054FF00B101266D1CEDB2BD4204D294F90F -:107CC000EA010228BFF659AF002E7FF423AFBDE8CA -:107CD000F84F032000F08EBC10B58B4CE0600868B4 -:107CE0002061AFF2D910FBF774F8607010BD8748BF -:107CF0000021383801708448017085494160BEE632 -:107D000070B505464FF080500C46D0F8A410491CC1 -:107D100005D1D0F8A810C9430904090C0BD050F8BC -:107D2000A01F01F001012970416821608068A080D6 -:107D3000287830B970BD0621204608F0B4FA012039 -:107D40002870607940F0C000607170BD70B54FF070 -:107D500080540D46D4F88010491C0BD1D4F88410FF -:107D6000491C07D1D4F88810491C03D1D4F88C10D1 -:107D7000491C0CD0D4F880100160D4F88410416004 -:107D8000D4F888108160D4F88C10C16002E0102112 -:107D900008F089FAD4F89000401C0BD1D4F8940074 -:107DA000401C07D1D4F89800401C03D1D4F89C00A3 -:107DB000401C09D054F8900F286060686860A06883 -:107DC000A860E068E86070BD2846BDE870401021FA -:107DD00008F069BA4D4800792CE570B54B4CE07855 -:107DE00030B3207804EB4010407A00F007002044C4 -:107DF00090F9E801002800DCFFDF2078002504EB83 -:107E00004010407A00F00700011991F8E801401E87 -:107E100081F8E8012078401CC0B220700F2800D102 -:107E20002570A078401CA07008F070F9E57070BD56 -:107E3000FFDF70BD3EB50546032105F07DF8044621 -:107E4000284605F0ABF9054604B9FFDFE06818B134 -:107E50000078FF2800D1FFDF01AA6946284600F01C -:107E600006FB60B9FFDF0AE0002202A9284600F005 -:107E7000FEFA00B9FFDF9DF8080000B1FFDF9DF8B2 -:107E80000000411E8DF80010EED2E0680199884292 -:107E900001D10020E0603EBD70B50546A0F57F40F1 -:107EA0000C46FF3800D1FFDF012C01D0FFDF70BD91 -:107EB000FFF790FF040000D1FFDF207820F00F00D3 -:107EC000401D20F0F00050302070658000202072AE -:107ED00001202073BDE870407FE72DE9F041164690 -:107EE0000D460746FFF776FF040000D1FFDF20783C -:107EF00020F00F00401D20F0F0005030207067800F -:107F000001202072286805E01C0000209C0200204F -:107F1000100E00202061A888A0822673BDE8F041E1 -:107F20005BE77FB5FFF716FD040000D1FFDF02A974 -:107F30002046FFF787FB054603A92046FFF796FB7F -:107F40008DF800508DF80100BDF80800001DADF857 -:107F50000200BDF80C00001DADF80400E088ADF88B -:107F60000600684604F0EDF8002800D0FFDF7FBD72 -:107F70002DE9F05FFA4E04464FF00008307810B15A -:107F80000820BDE8F09F204608F0AAFC08B11020A8 -:107F9000F7E7F44D287808B9FFF79BFC6D7A00F0FD -:107FA00090FAA84208D2281AC1B222460020FFF750 -:107FB000B1FC5FEA0008E4D1E9484168C91C21F03E -:107FC000030100274160E7483E46BA46BB463D46AE -:107FD00090F8019007E0284600F068FA40786D1CA0 -:107FE0000644EDB27F1C4D45F5D1DE4D0BEB87000D -:107FF000C6EBC60100EB8100697ADFF8649300EB01 -:108000008A0000EBC100D9F8041047180121384656 -:10801000FFF742FB064621683844884202D8B6F58D -:10802000803F15D320600020FFF794FC04000DD0A2 -:1080300004F10B00D9F8041020F003004E468842EA -:1080400000D0FFDF6878401E68707460042098E7F5 -:1080500000213846FFF720FB0546AE4200D0FFDF87 -:10806000E919C9F8041021604FF6FF71A9F8021050 -:10807000012189F80010404683E72DE9F0410446CC -:10808000B74817460D46007808B108200AE40846AC -:1080900008F000FC08B1102004E4B24E307808B9B2 -:1080A000FFF717FC601E1E2807D8012C3DD1287849 -:1080B000FE283AD830760020E8E7A4F120001F28F7 -:1080C00005D8E0B23A462946BDE8F04154E4A4F1AF -:1080D00040004FF000081F281FD8402C02D0412C30 -:1080E00023D115E028786C78012801D91320CDE739 -:1080F000FF2C08D806F02CFE074607F0C0FF381A00 -:10810000401EA04201DA1220C0E72888308124E016 -:108110002846BDE8F04100F09BBAA4F1A0001F285A -:1081200003D8A02C03D0A12C06D00720AEE72878D6 -:1081300000F00100707610E029680920F829A5D325 -:108140008A07A3D1727B02F00302012A04D1F28ACA -:10815000D73293B28B4299D8F161404696E72DE928 -:10816000F04781460E46084608F0BAFB48B9484633 -:1081700008F0D4FB28B909F1030020F003014945B8 -:1081800002D01020BDE8F08776484FF0000A383062 -:10819000817869B14178804600EB41140834378812 -:1081A00032460021204600F039FA050004D027E0CD -:1081B000A6F800A00520E5E7B9F1000F24D030882B -:1081C000B84201D90C251FE0607800F00705284669 -:1081D00000F010FA08EB0507324697F8E801494627 -:1081E000401C87F8E801204607F5F47700F016FAFE -:1081F00005463878401E3870032000F0FBF92DB199 -:108200000C2D01D0A6F800A02846BBE76078544E9C -:1082100000F00701012923D002290CD0032933D013 -:10822000FFDF98F801104046491CC9B288F80110D8 -:108230000F2934D035E0616821B1000702D460888D -:10824000FFF7F8FD98F8EA014746012802D1707857 -:10825000FAF7DEFD97F9EA010428E2DBFFDFE0E749 -:10826000616819B14022B06804F0EAFC98F8E901AD -:108270004746032802D17078FAF7CAFD97F9E90159 -:108280000428CEDBFFDFCCE7C00602D56088FFF70D -:10829000D1FD98F9EB010628C3DBFFDFC1E780F8C9 -:1082A00001A08178491E8170617801F0070101EB1E -:1082B000080090F8E811491C80F8E811A4E770B5AF -:1082C0000D46044608F0E6FA18B9284608F008FBFF -:1082D00008B1102070BD29462046BDE8704006F068 -:1082E0008ABB70B5044615460E46084608F0D2FA19 -:1082F00018B9284608F0F4FA08B1102070BD022C15 -:1083000003D0102C01D0092070BD2A4631462046EA -:1083100006F094FB0028F7D0052070BD70B5144618 -:108320000D46064608F0B6FA38B9284608F0D8FADD -:1083300018B9204608F0F2FA08B1102070BD2246A4 -:108340002946304606F099FB0028F7D0072070BD7B -:108350003EB5044608F0C4FA30B110203EBD00001E -:108360001C00002064020020684603F00EFBFFF7AB -:1083700051FB0028F2D19DF806002070BDF80800DE -:108380006080BDF80A00A0800020E7E770B50546D0 -:108390000C46084608F0C2FA20B93CB1206808F043 -:1083A0009FFA08B1102070BDA08828B12146284648 -:1083B000BDE87040FDF7E4BE092070BD70B504460D -:1083C0000D46084608F066FA30B9601E1E2814D81B -:1083D000284608F05FFA08B1102070BD022C01D9C0 -:1083E000072070BD04B9FFDFBF4800EB840050F8E0 -:1083F000041C2846BDE870400847A4F120001F284F -:1084000005D829462046BDE87040F9F766BDF02C36 -:10841000E6D1A86808F03EFA0028DDD1284603F02E -:10842000E2FEBDE87040FFF7F5BA70B504460D46B0 -:10843000084608F055FA30B9601E1E280DD82846A7 -:1084400008F028FA08B1102070BD012C01D0022CD0 -:1084500001D1062070BD072070BDA4F120001F28A7 -:10846000F9D829462046BDE87040F9F773BD04F0FD -:1084700001B908B5002918D1FAF745FD9B4800223B -:108480004178C06803F0B5F998481030C0788DF88D -:10849000000010B1012802D004E0012000E000201B -:1084A0008DF80000684603F0C8FA08BD30B5904D5D -:1084B00004466878A04200D8FFDF686800EBC4007B -:1084C00030BD70B58A4800252C46467807E0204626 -:1084D000FFF7ECFF4078641C2844C5B2E4B2B44214 -:1084E000F5D1284670BD2DE9F041054680480C467F -:1084F000427A9600761CFF2E00D9FFDF2868F6B27C -:10850000C01C20F003022A600CBB794833460621C8 -:10851000203008F099F8002408E0062C0FD2DFE89C -:1085200004F0050307070903724804E0724802E0FB -:10853000724800E0724808F0A7F8074600E0FFDF45 -:10854000A74200D0FFDF641CE4B2062CE5D3286804 -:1085500000EB0610286099E5021D5143452900D221 -:1085600045210844C01CB0FBF2F0C0B270472DE9B1 -:10857000FC5F06465E484FF000088B46474644467F -:1085800090F8019022E02046FFF790FF050000D10F -:10859000FFDF687869463844C7B22846FFF752F8CB -:1085A000824601A92846FFF761F80346BDF804009A -:1085B0005246001D81B2BDF80000001D80B204F0DB -:1085C00039FD6A78641C00FB0288E4B24C45DAD1BC -:1085D0003068C01C20F003003060BBF1000F00D0F9 -:1085E00000204246394604F033FD316808443060CB -:1085F000BDE8FC9F3E49383108710020C8707047C3 -:108600003B493831CA782AB10A7801EB4211083166 -:10861000814201D001207047002070472DE9F041D0 -:1086200006460078154600F00F0400201080601EFA -:108630000F46052800D3FFDF2B482A46103000EBF9 -:108640008400394650F8043C3046BDE8F0411847F4 -:1086500038B50446407800F00300012803D0022812 -:108660000BD0072038BD606858B108F060F9D0B968 -:10867000606808F053F920B915E0606808F00AF95D -:1086800088B969462046FBF709FB0028EAD16078E3 -:1086900000F00300022808D19DF8000028B16068AE -:1086A00008F03CF908B1102038BD6189F8290DD8CF -:1086B000208988420AD8607800F003020C48012A19 -:1086C00006D1D731C26989B28A4201D2092038BDA8 -:1086D00094E80E0000F10C0585E80E000AB90021AF -:1086E0008182002038BD00004C8301001C00002066 -:1086F000640200200D1E0000DDB20000F12E00001B -:108700007BE7000070B50B2000F0AFF9082000F007 -:10871000ACF900210B2000F0BEF90021082000F088 -:10872000BAF9E54C01256560A5600020C4F8400158 -:10873000C4F84401C4F848010B2000F0A1F9082056 -:1087400000F09EF90B2000F085F9256070BD10B592 -:108750000B2000F08AF9082000F087F9D6480121A3 -:1087600041608160D5490A68002AFCD10021C0F827 -:108770004011C0F84411C0F848110B2000F080F9F6 -:10878000BDE81040082000F07BB910B50B2000F0C8 -:1087900077F9BDE81040082000F072B900B530B19B -:1087A000012806D0022806D0FFDF002000BDC44803 -:1087B00000BDC44800BDC348001D00BD70B5C2491E -:1087C0004FF000400860C14DC00BC5F80803C04819 -:1087D00000240460C5F840410820C43500F045F984 -:1087E000C5F83C41BB48047070BD08B5B24A0021D1 -:1087F00028B1012811D002281CD0FFDF08BD4FF49A -:108800008030C2F80803C2F84803AC483C3001602D -:10881000C2F84011BDE80840D0E74FF40030C2F87C -:108820000803C2F84803A54840300160C2F844116B -:10883000A4480CE04FF48020C2F80803C2F84803B3 -:108840009E4844300160C2F848119E48001D0068EF -:10885000009008BD70B516460D460446022800D9A2 -:10886000FFDF00229448012304F110018B4000EB4C -:108870008401C1F8405526B1C1F84021C0F8043345 -:1088800003E0C0F80833C1F84021C0F8443370BD9C -:108890002DE9F0411C46154630B1012834D002289C -:1088A00039D0FFDFBDE8F081891E002221F07F4131 -:1088B0001046FFF7CFFF012C24D00020854E834FB8 -:1088C000012470703C61824900203C39086002201C -:1088D000091D08607E490420303908607C483D3518 -:1088E0000560C7F80042082000F0CAF82004C7F865 -:1088F0000403082000F0AEF87349E007091F086080 -:108900003470CFE70120D9E7012B02D000220120EB -:1089100005E00122FBE7012B04D000220220BDE884 -:10892000F04197E70122F9E764480068704770B5A5 -:10893000614CD4F840010025012809D1D4F808037E -:10894000C00305D54FF48030C4F80803C4F8405183 -:10895000D4F8440101280CD1D4F80803800308D5C9 -:108960004FF40030C4F80803C4F84451012007F064 -:1089700048F8D4F8480101280ED1D4F80803400380 -:108980000AD54FF48020C4F80803C4F84851BDE864 -:108990007040022007F035B870BD10B54D4C2078FE -:1089A00050B1FFF70BFF6078002807D000206070FF -:1089B000BDE8104007F025B80320F9E710BD4FF0DF -:1089C000E0214FF40010C1F800027047152000F0BC -:1089D00057B83E4901200861082000F051B83B49D2 -:1089E0004FF47C10C1F808030020024601EB80031D -:1089F000C3F84025C3F84021401CC0B20628F5D377 -:108A00007047410A43F609525143C0F3080010FB76 -:108A100002F000F5807001EB5020704710B5430B59 -:108A200048F2376463431B0C5C020C602A4C03FB66 -:108A300004002A4B4CF2F72443435B0D13FB04F470 -:108A400004EB402000F58070401210700868184454 -:108A5000086010BD00F01F02012191404009800014 -:108A600000F1E020C0F80011704700F01F02012162 -:108A700091404009800000F1E020C0F8801170476B -:108A800000F01F02012191404009800000F1E02028 -:108A9000C0F8801270474907090E002806DA00F076 -:108AA0000F0000F1E02080F8141D704700F1E02075 -:108AB00080F800147047000000B0004004B500408A -:108AC0004081004044B1004008F501400080004072 -:108AD0004085004030000020F7C2FFFF6F0C01000E -:108AE00010B5EFF3108000F0010472B6F048417841 -:108AF000491C41704078012801D107F02FFB002C60 -:108B000000D162B610BD70B5E94CE07848B90125D6 -:108B1000E570FFF7E5FF07F029FB20B1002007F023 -:108B2000FCFA002070BD4FF080406571C0F804531E -:108B3000F7E770B5EFF3108000F0010572B6DC4C7A -:108B4000607800B9FFDF6078401E6070607808B917 -:108B500007F008FB002D00D162B670BDD44810B5F7 -:108B6000C17821B100214171C170FFF7E2FF0020FF -:108B700010BD10B5044607F0F9FACD49C978084090 -:108B800000D001202060002010BD2DE9F05FDFF84B -:108B900020934278817889F80620002589F807100B -:108BA000064689F8085000782F4620B101280FD0DA -:108BB00002280FD0FFDF07F0E6FA98B107F0EAFAD3 -:108BC000A8420FD1284607F0E9FA0028FAD047E07A -:108BD0000125F0E7FFF784FF07F0C8FA0028FBD073 -:108BE0000225E8E701208407E060C4F80471B14978 -:108BF0000D600107D1F84412AE4AC1F3423124326C -:108C00001160AC49343108604FF0020BC4F804B372 -:108C1000A060DFF8A4A2DAF80010C94341F3001104 -:108C200001F10108DAF8001041F01001CAF8001053 -:108C300000E020BFD4F804010028FAD0284607F04D -:108C4000ADFA0028FAD0B8F1000F05D1DAF800101B -:108C500021F01001CAF80010C4F808B3C4F8047178 -:108C600099F807004C4670B1307860B907F07EFA89 -:108C7000064607F0B1FB6FF0004116B1C4E90310DE -:108C800001E0C4E9030115B12771BDE8F09F01209F -:108C90002071BDE8F05F00F0AFB870B5050000D1FD -:108CA000FFDF4FF080424FF0FF30C2F80803002191 -:108CB000C2F80011C2F80411C2F80C11C2F8101168 -:108CC0007B4C617007F058FA10B10120E0706070C1 -:108CD0002846BDE8704058E72DE9F05F4FF080442A -:108CE000D4F8080110B14FF0010801E04FF000087E -:108CF000D4F8000100B101208146D4F8040108B184 -:108D0000012700E00027D4F80C0100B101208246C1 -:108D1000D4F8100108B1012600E0002648EA090154 -:108D200027EA010020EA0A00B04300D0FFDF002557 -:108D3000B8F1000F04D0C4F80851012007F0EDF994 -:108D40005FEA0900DFF87491DFF864814FF0010BEE -:108D500015D0C4F8005198F8050020B188F80550E6 -:108D6000002007F0DAF998F80010404639B1057094 -:108D700088F802B00222C9F80020C4F810B00FB180 -:108D8000C4F80451BAF1000F0DD0C4F80C5198F892 -:108D90000200474600B9FFDFC9F80050BD70C4F8B3 -:108DA00014B0FFF7C6FE002E09D0C4F8105198F891 -:108DB0000400002803D0BDE8F05F00F041B864E78C -:108DC00070B53B4DE87808B907F0CCF9012084076D -:108DD000A061A87858B100BFD4F80C0120B90020D8 -:108DE00007F0DCF90028F7D10020C4F80C014FF09F -:108DF000FF30C4F8080370BD2DE9F0411926B4070F -:108E0000C4F808630125A5610020C4F80001C4F876 -:108E10000C01C4F8100107F0A9F9254F28B1274922 -:108E2000BD7002200860256100E03D70FFF758FE2C -:108E30002049B87920310860C4F80463BDE8F081A6 -:108E40002DE9F0411A4C4FF080470125E079F0B14F -:108E5000012803D0217A401E814218DA07F086F9F2 -:108E6000064607F0B9FAE179012902D9217A491CAD -:108E700021720EB1216900E0E168411A022902DA8B -:108E800011F1020F0EDC0EB1206100E0E060FFF78F -:108E900027FE07F06BF938B10849022008603D61F0 -:108EA000A57002E07D61C9E7257000202072C5E74A -:108EB000340000201805004010ED00E0340C0040A4 -:108EC000F8B51D46DDE906470E000AD004F078F932 -:108ED0002346FF1DBCB231462A46009403F0A3FD91 -:108EE000F8BDD019224619460EF0C9FF2046F8BD3C -:108EF00070B50D46044610210FF040F8258117206B -:108F00006081A07B40F00A00A07370BD4FF6FF7235 -:108F10000A800146022007F071BC70470089704743 -:108F2000827BD30701D1920703D480890880002077 -:108F3000704705207047827B920700D5818170477A -:108F400001460020098841F6FE52114200D001205E -:108F5000704700B50346807BC00701D0052000BDE7 -:108F600059811846FFF7ECFFC00703D0987B40F00B -:108F700004009873987B40F001009873002000BDB6 -:108F8000827B520700D509B140897047172070478E -:108F9000827B61F3C302827370472DE9FC5F0E464A -:108FA000044601789646012000FA01F14DF6FF5281 -:108FB00001EA020962684FF6FF7B1188594502D128 -:108FC0000920BDE8FC9FB9F1000F05D041F6FE5520 -:108FD000294201D00120F4E741EA090111801D0076 -:108FE00014D04FF0000C85F800C02378052103222F -:108FF00067464FF0020A0E2B74D2DFE803F0F8093F -:10900000252F47626974479092B3D0D70420D8E7E0 -:10901000616820898B7B9B077DD5172848D30B89F6 -:10902000834245D38989172901D3814240D185F8EC -:1090300000A0A5F801003280616888816068817BAA -:1090400021F002018173C5E0042028702089A5F871 -:1090500001006089A5F803003180BBE0208A3188D7 -:10906000C01D1FFA80F8414522D3062028702089B0 -:10907000A5F801006089A5F80300A089A5F80500FE -:109080000721208ACDE9000163693EE0082B10D05A -:10909000082028702089A5F801006089A5F8030040 -:1090A00031806A1D694604F10C0005F0E6FC10B140 -:1090B0005FE01020EDE730889DF800100844308014 -:1090C00088E00A2028702089A5F80100328045E058 -:1090D0000C2028702089A5F801006089A5F80300FC -:1090E00031803BE083E02189338800EB41021FFAA5 -:1090F00082F843453DD3B8F1050F3AD30E222A70CA -:109100000BEA4101CDE90010E36860882A46714608 -:10911000FFF7D6FE00E04DE0A6F800805AE04020C0 -:10912000287060893188C01C1FFA80F8414520D31F -:109130002878714620F03F00123028702089A5F869 -:1091400001006089CDE9000260882A46E368FFF7E4 -:10915000B7FEA6F80080287840063BD461682089D5 -:10916000888037E0A0893288401D1FFA80F8424588 -:1091700001D204273EE0162028702089A5F80100BE -:109180006089A5F80300A089CDE9000160882A461E -:1091900071462369FFF794FEA6F80080DEE71820E9 -:1091A0002870207A6870A6F800A013E061680A8829 -:1091B000920401D405271DE0C9882289914201D07B -:1091C000062717E01E21297030806068018821F48D -:1091D00000510180B9F1000F0CD061887823002282 -:1091E000022007F061FA61682078887007E0A6F82D -:1091F00000C003276068018821EA09010180384620 -:10920000DFE62DE9FF4F85B01746129C0D001E4684 -:109210001CD03078C10703D000F03F00192801D9D5 -:10922000012100E000212046FFF7AAFEA8420DD34D -:109230002088A0F57F41FF3908D03078410601D45D -:10924000000605D5082009B0BDE8F08F0720FAE731 -:1092500000208DF800008DF8010030786B1E00F0C2 -:109260003F0C0121A81E4FF0050A4FF002094FF0F4 -:10927000030B9AB2BCF1200F75D2DFE80CF08B1013 -:10928000745E7468748C749C74B674BB74C974D541 -:1092900074E2747474F274F074EF74EE748B052DD0 -:1092A00078D18DF80090A0788DF804007088ADF822 -:1092B000060030798DF80100707800F03F000C282E -:1092C00029D00ADCA0F10200092863D2DFE800F00F -:1092D000126215621A621D622000122824D004DC7A -:1092E0000E281BD01028DBD11BE016281FD0182811 -:1092F000D6D11FE02078800701E0207840070028C1 -:1093000048DAEFE020780007F9E72078C006F6E7B2 -:1093100020788006F3E720784006F0E72078000602 -:10932000EDE72088C005EAE720884005E7E72088C8 -:109330000005E4E72088C004E1E72078800729D50C -:10934000032D27D18DF800B0B6F8010082E0217816 -:1093500049071FD5062D1DD381B27078012803D08F -:10936000022817D102E0CAE0022000E01020042207 -:109370008DF8002072788DF80420801CB1FBF0F28B -:10938000ADF8062092B242438A4203D10397ADF86A -:109390000890A7E07AE02078000777D598B2820895 -:1093A0008DF800A0ADF80420B0EB820F6ED10297CB -:1093B000ADF8061096E02178C90667D5022D65D371 -:1093C00081B206208DF80000707802285ED300BFBD -:1093D000B1FBF0F28DF80400ADF8062092B24243E2 -:1093E0008A4253D1ADF808907BE0207880064DD5B5 -:1093F000072003E0207840067FD508208DF8000084 -:10940000A088ADF80400ADF80620ADF8081068E0BB -:109410002078000671D50920ADF804208DF80000F1 -:10942000ADF8061002975DE02188C90565D5022DCB -:1094300063D381B20A208DF80000707804285CD3D1 -:10944000C6E72088400558D5012D56D10B208DF850 -:109450000000A088ADF8040044E021E026E016E01A -:10946000FFE72088000548D5052D46D30C208DF850 -:109470000000A088ADF80400B6F803006D1FADF839 -:109480000850ADF80600ADF80AA02AE035E02088C3 -:10949000C00432D5012D30D10D208DF8000021E01F -:1094A0002088800429D4B6F80100E080A07B000762 -:1094B00023D5032D21D3307800F03F001B2818D08E -:1094C0000F208DF80000208840F40050A4F8000020 -:1094D000B6F80100ADF80400ED1EADF80650ADF889 -:1094E00008B0039769460598FBF7BEFB050008D056 -:1094F00016E00E208DF80000EAE7072510E00825A9 -:109500000EE0307800F03F001B2809D01D2807D05E -:109510000220059907F072F9208800F4005020809D -:10952000A07B400708D52046FFF70AFDC00703D1FE -:10953000A07B20F00400A073284684E61FB5022813 -:1095400006D101208DF8000088B26946FBF78CFB3C -:109550001FBD0000F8B51D46DDE906470E000AD024 -:1095600003F02EFE2346FF1DBCB231462A4600946E -:1095700003F059FAF8BDD019224619460EF07FFCC7 -:109580002046F8BD2DE9FF4F8DB09B46DDE91B5706 -:10959000DDF87CA00C46082B05D0E06901F002F94B -:1095A00050B11020D2E02888092140F01000288016 -:1095B0008AF80010022617E0E16901208871E2694B -:1095C0004FF420519180E1698872E06942F601010F -:1095D0000181E069002181732888112140F0200079 -:1095E00028808AF80010042638780A900A203870FB -:1095F0004FF0020904F118004D460C9001F095FB64 -:10960000B04681E0BBF1100F0ED1022D0CD0A9EBBA -:109610000800801C80B20221CDE9001005AB524643 -:109620001E990D98FFF796FFBDF816101A98814203 -:1096300003D9F74800790F9004E003D10A9808B1E4 -:1096400038702FE04FF00201CDE900190DF116033B -:1096500052461E990D98FFF77DFF1D980088401B0C -:10966000801B83B2C6F1FF00984200D203461E99C8 -:109670000BA8D9B15FF00002DDF878C0CDE9032076 -:1096800009EB060189B2CDE901C10F980090BDF840 -:10969000161000220D9801F0CBFB387070B1C0B2EB -:1096A000832807D0BDF8160020833AE00AEB0901B1 -:1096B0008A19E1E7022011B0BDE8F08FBDF82C0057 -:1096C000811901F0FF08022D0DD09AF801204245C2 -:1096D00006D1BDF82010814207D0B8F1FF0F04D0A9 -:1096E0009AF801801FE08AF80180C9480068017873 -:1096F000052902D1BDF81610818009EB08001FFA78 -:1097000080F905EB080085B2DDE90C1005AB0F9A76 -:1097100001F00EFB28B91D980088411B4145BFF69A -:1097200071AF022D13D0BBF1100F0CD1A9EB0800C3 -:10973000801C81B20220CDE9000105AB52461E9982 -:109740000D98FFF707FF1D98058000203870002056 -:10975000B1E72DE9F8439C46089E13460027B26BFB -:109760009AB3491F8CB2F18FA1F57F45FF3D05D01B -:109770005518AD882944891D8DB200E000252919AE -:10978000B6F83C800831414520D82A44BCF8011085 -:1097900022F8021BBCF8031022F8021B984622F89C -:1097A000024B914603F0FAFC4FF00C0C41464A463E -:1097B0002346CDF800C003F002F9F587B16B002015 -:1097C0002944A41D2144088003E001E0092700E0AA -:1097D00083273846BDE8F88310B50B88848F9C42F8 -:1097E0000CD9846BE018048844B1848824F40044C4 -:1097F000A41D23440B801060002010BD0A2010BD62 -:109800002DE9F0478AB00025904689468246ADF89A -:10981000185007274BE0059806888088000446D436 -:10982000A8F8006007A8019500970295CDE90350BC -:109830004FF4007300223146504601F0F9FA04005B -:109840003CD1BDF81800ADF8200005980488818847 -:10985000B44216D10A0414D401950295039521F45B -:1098600000410097049541F48043428821465046C8 -:1098700001F0B4F804000BD10598818841F400414F -:10988000818005AA08A94846FFF7A6FF0400DCD09E -:109890000097059802950195039504950188BDF8F8 -:1098A0001C300022504601F099F80A2C06D105AA76 -:1098B00006A94846FFF790FF0400ACD0ADF8185059 -:1098C00004E00598818821F40041818005AA06A959 -:1098D0004846FFF781FF0028F3D00A2C03D020462A -:1098E0000AB0BDE8F0870020FAE710B50C46896B96 -:1098F00086B051B10C218DF80010A18FADF8081081 -:10990000A16B01916946FCF75EF900204FF6FF71EB -:10991000A063E187A08706B010BD2DE9F0410D4698 -:109920000746896B0020069E1446002911D0012BA2 -:109930000FD1324629463846FFF762FF002808D18A -:10994000002C06D0324629463846BDE8F04100F0EA -:1099500038BFBDE8F0812DE9FC411446DDE9087C03 -:109960000E46DDE90A15521DBCF800E092B296459C -:1099700002D20720BDE8FC81ACF8002017222A7033 -:10998000A5F80160A5F803300522CDE900423B4669 -:109990002A46FFF7DFFD0020ECE770B50C461546C0 -:1099A000482120460EF00CFB04F1080044F81C0F7F -:1099B00000204FF6FF71E06161842084A5841720A8 -:1099C000E08494F82A0040F00A0084F82A0070BD70 -:1099D0004FF6FF720A800146032006F00FBF30B534 -:1099E00085B00C460546FFF780FFA18E284629B1B9 -:1099F00001218DF800106946FCF7E5F80020E062CF -:109A00002063606305B030BDB0F8400070470000CF -:109A10004C00002090F84620920703D4408808802C -:109A20000020F3E70620F1E790F846209207EDD5F5 -:109A3000A0F84410EAE70146002009880A0700D58B -:109A4000012011F0F00F01D040F00200CA0501D54D -:109A500040F004008A0501D540F008004A0501D510 -:109A600040F010000905D1D540F02000CEE700B548 -:109A7000034690F84600C00701D0062000BDA3F8B9 -:109A800042101846FFF7D7FF10F03E0F05D093F8AD -:109A9000460040F0040083F8460013F8460F40F0FB -:109AA00001001870002000BD90F84620520700D534 -:109AB00011B1B0F84200A9E71720A7E710F8462F28 -:109AC00061F3C3020270A1E72DE9FF4F9BB00E00C6 -:109AD000DDE92B34DDE92978289D24D02878C107D9 -:109AE00003D000F03F00192801D9012100E0002136 -:109AF0002046FFF7D9FFB04215D32878410600F081 -:109B00003F010CD41E290CD0218811F47F6F0AD19B -:109B10003A8842B1A1F57F42FF3A04D001E0122910 -:109B200001D1000602D504201FB0C5E5F9491D98F2 -:109B30004FF0000A08718DF818A08DF83CA00FAA0C -:109B40000A60ADF81CA0ADF850A02978994601F044 -:109B50003F02701F5B1C04F1180C4FF0060E4FF013 -:109B6000040BCDF858C01F2A7ED2DFE802F07D7DBD -:109B7000107D267DAC7DF47DF37DF27DF17DF47D5D -:109B8000F07D7D7DEF7DEE7D7D7D7D7DED0094F82A -:109B90004610B5F80100890701D5032E02D08DF8D3 -:109BA00018B022E34FF40061ADF85010608003213B -:109BB0008DF83C10ADF84000D8E2052EEFD1B5F895 -:109BC00001002083ADF81C00B5F80310618308B1D3 -:109BD000884201D901207FE10020A07220814FF648 -:109BE000FF702084169801F0A0F8052089F8000085 -:109BF0000220029083460AAB1D9A16991B9801F029 -:109C000097F890BB9DF82E00012804D0022089F817 -:109C10000100102003E0012089F8010002200590D6 -:109C2000002203A90BA804F028FFE8BB9DF80C0054 -:109C3000059981423DD13A88801CA2EB0B018142FB -:109C400037DB02990220CDE900010DF12A034A46D3 -:109C500041461B98FFF77EFC02980BF1020B801C1B -:109C600080B217AA03A901E0A0E228E002900BA8A5 -:109C700004F003FF02999DF80C00CDE9000117AB39 -:109C80004A4641461B98FFF765FC9DF80C100AAB4D -:109C90000BEB01001FFA80FB02981D9A084480B26A -:109CA000029016991B9800E003E001F041F80028AB -:109CB000B6D0BBF1020F02D0A7F800B053E20A20E1 -:109CC0008DF818004FE200210391072EFFF467AFD3 -:109CD000B5F801002083ADF81C00B5F803206283BD -:109CE00000283FF477AF90423FF674AF0120A07296 -:109CF000B5F8050020810020A073E06900F052FD56 -:109D000078B9E16901208871E2694FF420519180AE -:109D1000E1698872E06942F601010181E069002190 -:109D20008173F01F20841E9860620720608416985B -:109D300000F0FBFF072089F800000120049002904A -:109D40000020ADF82A0028E01DE2A3E13AE1EAE0B4 -:109D500016E2AEE086E049E00298012814D0E069FE -:109D60008079012803D1BDF82800ADF80E000498D1 -:109D700003ABCDE900B04A4641461B98FFF7EAFB2A -:109D80000498001D80B20490BDF82A00ADF80C00C4 -:109D9000ADF80E00059880B202900AAB1D9A169994 -:109DA0001B9800F0C5FF28B902983988001D05905E -:109DB0008142D1D20298012881D0E06980790128BE -:109DC00005D0BDF82810A1F57F40FF3803D1BDF8BC -:109DD0002800ADF80E00049803ABCDE900B04A4668 -:109DE00041461B98FFF7B6FB0298BBE1072E02D055 -:109DF000152E7FF4D4AEB5F801102183ADF81C10F8 -:109E0000B5F80320628300293FF4E4AE91423FF6A7 -:109E1000E1AE0121A1724FF0000BA4F808B084F864 -:109E20000EB0052E07D0C0B2691DE26904F006FE2F -:109E300000287FF444AF4FF6FF70208401A906AAE2 -:109E400014A8CDF800B081E885032878214600F0F9 -:109E50003F031D9A1B98FFF795FB8246208BADF8B8 -:109E60001C0080E10120032EC3D14021ADF8501029 -:109E7000B5F801102183ADF81C100AAAB8F1000F43 -:109E800000D00023CDE9020304921D98CDF8048090 -:109E9000009038880022401E83B21B9800F0C8FF53 -:109EA0008DF8180090BB0B2089F80000BDF8280041 -:109EB00037E04FF0010C052E9BD18020ADF850000B -:109EC000B5F801102183B5F803002084ADF81C100B -:109ED000B0F5007F03D907208DF8180085E140F424 -:109EE0007C4222840CA8B8F1000F00D00023CDE9F9 -:109EF0000330CDE9018C1D9800903888401E83B254 -:109F00001B9800F095FF8DF8180028B18328A8D180 -:109F10000220BDE04C0000200D2189F80010BDF8A2 -:109F20003000401C1EE1032E04D248067FF537AEF8 -:109F3000002017E1B5F80110ADF81C102878400694 -:109F400002D58DF83CE002E007208DF83C004FF090 -:109F500000080320CDE902081E9BCDF810801D9853 -:109F60000193A6F1030B00901FFA8BF342461B9856 -:109F700000F034FD8DF818008DF83C8029784906F2 -:109F80000DD52088C00506D5208BBDF81C10884251 -:109F900001D1C4F8248040468DF81880E2E083287F -:109FA00001D14FF0020A4FF48070ADF85000BDF8B7 -:109FB0001C002083A4F820B01E98606203206084F7 -:109FC0001321CCE0052EFFF4EAADB5F80110ADF891 -:109FD0001C10A28F62B3A2F57F43FE3B28D008225B -:109FE0008DF83C204FF0000B0523CDE9023BDDF856 -:109FF00078C0CDF810B01D9A80B2CDF804C040F4FE -:10A0000000430092B5F803201B9800F0E7FC8DF8A0 -:10A010003CB04FF400718DF81800ADF85010832853 -:10A0200010D0F8B1A18FA1F57F40FE3807D0DCE059 -:10A030000B228DF83C204FF6FE72A287D2E7A4F8DF -:10A040003CB0D2E000942B4631461E9A1B98FFF795 -:10A0500080FB8DF8180008B183284BD1BDF81C0097 -:10A06000208355E700942B4631461E9A1B98FFF734 -:10A0700070FB8DF81800E8BBE18FA06B0844811DD0 -:10A080008DE882034388828801881B98FFF763FC70 -:10A09000824668E095F80180022E70D15FEA0800E0 -:10A0A00002D0B8F1010F6AD109208DF83C0007A851 -:10A0B00000908DF840804346002221461B98FFF710 -:10A0C0002CFC8DF842004FF0000B8DF843B050B9D6 -:10A0D000B8F1010F12D0B8F1000F04D1A18FA1F592 -:10A0E0007F40FF380AD0A08F40B18DF83CB04FF4CC -:10A0F000806000E037E0ADF850000DE00FA91B983C -:10A10000FBF761FD82468DF83CB04FF48060ADF8FE -:10A110005000BAF1020F06D0FC480068C07928B19F -:10A120008DF8180027E0A4F8188044E0BAF1000F79 -:10A1300003D081208DF818003DE007A80090434629 -:10A14000012221461B98FFF7E8FB8DF818002146F5 -:10A150001B98FFF7CAFB9DF8180020B9192189F850 -:10A160000010012038809DF83C0020B10FA91B98F9 -:10A17000FBF729FD8246BAF1000F33D01BE018E04F -:10A180008DF818E031E02078000712D5012E10D1AB -:10A190000A208DF83C00E088ADF8400003201B99B0 -:10A1A00006F02CFB0820ADF85000C1E648067FF50C -:10A1B000F6AC4FF0040A2088BDF850100843208008 -:10A1C000BDF8500080050BD5A18FA1F57F40FE386A -:10A1D00006D11E98E06228982063A6864FF0030AF5 -:10A1E0005046A1E49DF8180078B1012089F80000DC -:10A1F000297889F80110BDF81C10A9F802109DF803 -:10A20000181089F80410052038802088BDF85010F7 -:10A2100088432080E4E72DE9FF4F8846087895B011 -:10A22000012181404FF20900249C0140ADF820102B -:10A230002088DDF88890A0F57F424FF0000AFF3AB1 -:10A2400006D039B1000705D5012019B0BDE8F08F5F -:10A250000820FAE7239E4FF0000B0EA886F800B006 -:10A2600018995D460988ADF83410A8498DF81CB0DE -:10A27000179A0A718DF838B0086098F80000012824 -:10A280003BD0022809D003286FD1307820F03F005E -:10A290001D303070B8F80400E08098F800100320FA -:10A2A000022904D1317821F03F011B31317094F83B -:10A2B0004610090759D505ABB9F1000F13D000219D -:10A2C00002AA82E80B000720CDE90009BDF834009E -:10A2D000B8F80410C01E83B20022159800F0A8FD43 -:10A2E0000028D1D101E0F11CEAE7B8F80400A6F893 -:10A2F0000100BDF81400C01C04E198F805108DF8A9 -:10A300001C1098F80400012806D04FF4007A0228A7 -:10A310002CD00328B8D16CE12188B8F8080011F4DA -:10A320000061ADF8201020D017281CD3B4F84010DD -:10A33000814218D3B4F84410172901D3814212D1B5 -:10A34000317821F03F01C91C3170A6F801000321CA -:10A35000ADF83410A4F8440094F8460020F0020050 -:10A3600084F8460065E105257EE177E1208808F163 -:10A37000080700F4FE60ADF8200010F0F00F1BD0CD -:10A3800010F0C00F03D03888228B9042EBD199B9DE -:10A39000B878C00710D0B9680720CDE902B1CDF870 -:10A3A00004B00090CDF810B0FB88BA8839881598B1 -:10A3B00000F014FB0028D6D12398BDF82010401CD3 -:10A3C00080294ED006DC10290DD020290BD0402941 -:10A3D00087D124E0B1F5807F6ED051457ED0B1F5B4 -:10A3E000806F97D1DEE0C80601D5082000E010207C -:10A3F00082460DA907AA0520CDE902218DF8380073 -:10A40000ADF83CB0CDE9049608A93888CDE9000143 -:10A410005346072221461598FFF7B4F8A8E09DF8A7 -:10A420001C2001214FF00A0A002A9BD105ABB9F18B -:10A43000000F00D00020CDE902100720CDE900096F -:10A44000BDF834000493401E83B2218B002215987E -:10A4500000F0EEFC8DF81C000B203070BDF81400ED -:10A4600020E09DF81C2001214FF00C0A002A22D187 -:10A4700013ABB9F1000F00D00020CDE90210072086 -:10A48000CDE900090493BDF83400228C401E83B24C -:10A49000218B159800F0CCFC8DF81C000D2030703D -:10A4A000BDF84C00401CADF8340005208DF8380094 -:10A4B000208BADF83C00BCE03888218B88427FF4CB -:10A4C00052AF9DF81C004FF0120A00281CD1606AA0 -:10A4D000A8B1B878C0073FF446AF00E018E0BA680A -:10A4E0000720CDE902B2CDF804B00090CDF810B04D -:10A4F000FB88BA88159800F071FA8DF81C001320BB -:10A5000030700120ADF8340093E000004C000020D2 -:10A510003988208B8142D2D19DF81C004FF0160A59 -:10A520000028A06B08D0E0B34FF6FF7000215F4613 -:10A53000ADF808B0019027E068B1B978C907BED17D -:10A54000E18F0DAB0844821D03968DE80C02438811 -:10A550008288018809E0B878C007BCD0BA680DAB22 -:10A5600003968DE80C02BB88FA881598FFF7F3F97B -:10A5700005005ED0072D72D076E0019005AA02A9F1 -:10A580002046FFF729F90146E28FBDF80800824214 -:10A5900001D00029F1D0E08FA16B08440780019819 -:10A5A000E08746E09DF81C004FF0180A40B1208B70 -:10A5B000C8B13888208321461598FFF796F938E00E -:10A5C00004F118000090237E012221461598FFF720 -:10A5D000A4F98DF81C000028EDD11920307001205D -:10A5E000ADF83400E7E7052521461598FFF77DF91A -:10A5F0003AE0208800F40070ADF8200050452DD1DD -:10A60000A08FA0F57F41FE3901D006252CE0D8F8B7 -:10A6100008004FF0160A48B1A063B8F80C10A187E3 -:10A620004FF6FF71E187A0F800B002E04FF6FF702F -:10A63000A087BDF8200030F47F611AD07823002273 -:10A640000320159906F030F898F800002071208852 -:10A65000BDF82010084320800EE000E00725208888 -:10A66000BDF8201088432080208810F47F6F1CD014 -:10A670003AE02188814321809DF8380020B10EA95D -:10A680001598FBF7A0FA05469DF81C000028EBD0B2 -:10A6900086F801A001203070208B70809DF81C008E -:10A6A00030710520ADF83400DEE7A18EE1B11898D5 -:10A6B0000DAB0088ADF834002398CDE90304CDE953 -:10A6C0000139206B0090E36A179A1598FFF7FCF99F -:10A6D000054601208DF838000EA91598FBF773FA8E -:10A6E00000B10546A4F834B094F8460040070AD5F6 -:10A6F0002046FFF7A0F910F03E0F04D114F8460FE2 -:10A7000020F0040020701898BDF83410018028460D -:10A710009BE500B585B0032806D102208DF8000026 -:10A7200088B26946FBF74FFA05B000BD10B5384C4A -:10A730000B782268012B02D0022B2AD111E013786A -:10A740000BB1052B01D10423137023688A889A80EA -:10A750002268CB88D38022680B8913814989518173 -:10A760000DE08B8893802268CB88D38022680B8988 -:10A7700013814B8953818B89938109691161216808 -:10A78000FBF721FA226800210228117003D000286B -:10A7900000D0812010BD832010BD806B002800D028 -:10A7A000012070478178012909D10088B0F5205F28 -:10A7B00003D042F60101884201D1002070470720F2 -:10A7C0007047F0B587B0002415460E460746ADF831 -:10A7D000144010E0069801882980811DCDE90241CE -:10A7E00007210194049400918388428801883846A7 -:10A7F00000F0F4F830B906AA05A93046FEF7ECFFE0 -:10A800000028E7D00A2800D1002007B0F0BD0000E2 -:10A810004C00002010B58B7883B102789A4205D1A4 -:10A820000B885BB102E08B79091D4BB18B789A42A2 -:10A83000F9D1B0F801300C88A342F4D1002010BD4A -:10A84000812010BD072826D012B1012A27D103E0AC -:10A85000497801F0070102E04978C1F3C2010529F6 -:10A860001DD2DFE801F00318080C12000AB1032022 -:10A8700070470220704704280DD250B10DE0052822 -:10A8800009D2801E022808D303E0062803D003283B -:10A8900003D005207047002070470F2070478120AB -:10A8A0007047C0B282060BD4000607D5FE48807AF6 -:10A8B0004143C01D01EBD00080B27047084670478D -:10A8C0000020704770B513880B800B781C0625D5C7 -:10A8D000F54CA47A844204D843F01000087000209C -:10A8E00070BD956800F0070605EBD0052D78F540A2 -:10A8F00065F304130B701378D17803F0030341EA76 -:10A90000032140F20123B1FBF3F503FB151192681B -:10A91000E41D00FB012000EBD40070BD906870BD09 -:10A9200037B51446BDF8041011809DF804100A06CE -:10A930001ED5C1F30013DC49A568897A814208D885 -:10A94000FE2811D1C91DC9085A4228460DF00EFB38 -:10A950000AE005EBD00100F00702012508789540D8 -:10A96000A843934018430870207820F0100020700E -:10A970003EBD2DE9F0410746C81C0E4620F00300FD -:10A98000B04202D08620BDE8F081C74D0020344699 -:10A990002E60AF802881AA72E8801AE0E988491CFD -:10A9A000E980810614D4E17800F0030041EA002038 -:10A9B00040F20121B0FBF1F201FB12012068FFF728 -:10A9C00070FF2989084480B22881381A3044A06079 -:10A9D0000C3420784107E1D40020D4E72DE9FF4F63 -:10A9E00089B01646DDE9168A0F46994623F440459C -:10A9F000084600F00DFB04000FD0099802F066FA3B -:10AA00000290207800060AD5A748817A02988142F0 -:10AA100005D887200DB0BDE8F08F0120FAE7224667 -:10AA200001A90298FFF74EFF834600208DF80C0025 -:10AA30004046B8F1070F1AD001222146FFF702FF66 -:10AA40000028E7D12078400611D502208DF80C00AF -:10AA5000ADF81070BDF80400ADF81200ADF8146048 -:10AA60001898ADF81650CDF81CA0ADF818005FEAA4 -:10AA7000094004D500252E46A84601270CE0217880 -:10AA8000E07801F0030140EA012040F20121B0FB2F -:10AA9000F1F2804601FB12875FEA494009D5B845CB -:10AAA00007D1A178207901F0030140EA0120B042EA -:10AAB00001D3BE4201D90720ACE7A8191FFA80F9DB -:10AAC000B94501D90D20A5E79DF80C0028B103A9CF -:10AAD0000998FBF776F800289CD1B84507D1A078F3 -:10AAE0004FEA192161F30100A07084F804901A98CC -:10AAF00000B10580199850EA0A0027D0199830B1A2 -:10AB00000BEB06002A4619990DF0B9F90EE00BEB94 -:10AB100006085746189E099802F040FB2B46F61D82 -:10AB2000B5B239464246009501F049FF224601A9D7 -:10AB30000298FFF7C7FE9DF80400224620F010009F -:10AB40008DF80400DDE90110FFF7EAFE002061E75F -:10AB50002DE9FF4FDFF8509182461746B9F80610ED -:10AB6000D9F8000001EB410100EB810440F2012023 -:10AB7000B2FBF0F185B000FB11764D46DDF84C805C -:10AB800031460698FFF78DFE29682A898B46611A9F -:10AB90000C3101441144AB8889B28B4202D8842025 -:10ABA00009B038E70699CDB2290603D5A90601D523 -:10ABB0000620F5E7B9F806C00CF1010C1FFA8CFC71 -:10ABC000A9F806C0149909B1A1F800C0A90602D5D8 -:10ABD000C4F8088007E0104480B2A9F80800191AE8 -:10ABE00001EB0B00A0602246FE200699FFF798FEBD -:10ABF000E77026712078390A61F30100320AA178E2 -:10AC000040F0040062F30101A17020709AF8020084 -:10AC10006071BAF80000E08000262673280602D58D -:10AC200099F80A7000E00127A80601D54FF0000846 -:10AC30004D4600244FF007090FE0CDE90268019668 -:10AC4000CDF800900496E9882046129B089AFFF7F9 -:10AC5000C5FE0028A4D1641CE4B2BC42EDD30020A0 -:10AC60009EE72DE9F047804600F0D2F9070005D0B5 -:10AC7000002644460C4D40F2012919E00120BDE8B0 -:10AC8000F087204600F0C4F90278C17802F0030290 -:10AC900041EA0222B2FBF9F309FB13210068FFF736 -:10ACA00000FE304486B201E0A8040020641CA4B277 -:10ACB000E988601E8142E4DCA8F10100E88028896F -:10ACC000801B288100203870D9E710B5144631B1B7 -:10ACD000491E218002F0FAF8A070002010BD01206A -:10ACE00010BD10B5D24904460088CA88904201D3ED -:10ACF0000A2010BD096800EB400001EB800250798A -:10AD0000A072D08820819178107901F0030140EA87 -:10AD10000120A081A078E11CFFF7D4FD20612088EC -:10AD2000401C2080E080002010BD0121018270477E -:10AD30002DE9FF4F85B04FF6FF788246A3F80080DB -:10AD400048681F460D4680788DF8060048680088E0 -:10AD5000ADF8040000208DF80A00088A0C88A04293 -:10AD600000D304462C8241E0288A401C2882701DB2 -:10AD70006968FFF74FFDB8BB3988414501D1601EB6 -:10AD800038806888A04236D3B178307901F0030169 -:10AD900040EA012901A9701DFFF73CFD20BB29896C -:10ADA00041452CD0002231460798FFF74BFDD8B91A -:10ADB0002989494518D1E9680391B5F80AC0D6F840 -:10ADC00008B05046CDF800C002F0E8F9DDF800C048 -:10ADD0005A460CF1070C1FFA8CFC4B460399CDF830 -:10ADE00000C001F0B6FD50B1641CA4B2204600F0D2 -:10ADF0000FF90600B8D1641E2C820A20D0E67C80B0 -:10AE00007079B871F088B8803178F07801F003017A -:10AE100040EA01207881A7F80C90504602F056F8DD -:10AE2000324607F10801FFF74DFD38610020B7E613 -:10AE30002DE9FF4F87B081461C469246DDF860B091 -:10AE4000DDF85480089800F0E3F805000CD048467F -:10AE500002F03CF82978090608D57549897A8142BB -:10AE600004D887200BB0D6E50120FBE7CAF309061A -:10AE70002A4601A9FFF726FD0746149807281CD08B -:10AE800000222946FFF7DEFC0028EBD12878400697 -:10AE900013D501208DF808000898ADF80C00BDF816 -:10AEA0000400ADF80E00ADF81060ADF8124002A934 -:10AEB0004846FAF786FE0028D4D12978E87801F0D0 -:10AEC000030140EA0121AA78287902F0030240EA4E -:10AED0000220564507D0B1F5007F04D9611E81429A -:10AEE00001DD0B20BEE7864201D90720BAE7801BAF -:10AEF00085B2A54200D92546BBF1000F01D0ABF8C1 -:10AF00000050179818B1B9192A460CF0B8FFB8F1DB -:10AF1000000F0DD03E4448464446169F02F050F9BB -:10AF20002146FF1DBCB232462B46009401F07BFD4A -:10AF3000002097E72DE9F04107461D4616460846D2 -:10AF400000F066F804000BD0384601F0BFFF21780E -:10AF5000090607D53649897A814203D8872012E548 -:10AF6000012010E522463146FFF7ACFC65B121789F -:10AF7000E07801F0030140EA0120B0F5007F01D83C -:10AF8000012000E0002028700020FCE42DE9F041C1 -:10AF900007461D461646084600F03AF804000BD056 -:10AFA000384601F093FF2178090607D52049897AB0 -:10AFB000814203D88720E6E40120E4E422463146BA -:10AFC000FFF7AEFCFF2D14D02178E07801F00302EA -:10AFD00040EA022040F20122B0FBF2F302FB130030 -:10AFE00015B900F2012080B2E070000A60F301019F -:10AFF00021700020C7E410B50C4600F009F828B114 -:10B00000C18821804079A070002010BD012010BDB2 -:10B010000749CA88824209D340B1096800EB400061 -:10B020006FF00B0202EB800008447047002070476D -:10B03000A804002070B514460B880122A2401342D8 -:10B0400007D113430B8001230922011D01F019FED2 -:10B05000047070BD2DE9FF4F81B00878DDE90E7BEB -:10B060009A4691460E4640072CD4019802F0A8F863 -:10B07000040000D1FFDF07F1040820461FFA88F121 -:10B0800001F005FA050000D1FFDF204629466A4697 -:10B0900001F04FFC0098A0F80370A0F805A0284626 -:10B0A00001F0F5FC017869F306016BF3C71101703B -:10B0B00020461FFA88F101F02DFA00B9FFDF019850 -:10B0C00000F048FB06EB0900017E491C017605B043 -:10B0D000BDE8F08F2DE9F84F0E469A469146074697 -:10B0E000032101F029FF0446808CDFF888850025C4 -:10B0F00018B198F80000B0421ED1384602F060F84E -:10B10000070000D1FFDF09F10401384689B201F0E0 -:10B11000BEF9050010D0384629466A4601F009FC00 -:10B12000009800210A460180817000F07DFB0098A4 -:10B13000C01DCAF8000021E098F80000B04216D106 -:10B1400004F1220734F8301F012000FA06F911EA51 -:10B15000090F00D0FFDF2088012340EA090020808A -:10B160000922391D384601F0A7FD067006E0324677 -:10B1700004F1300104F12200FFF75CFF092188F897 -:10B1800000102846BDE8F88FFEB514460D46064669 -:10B1900002AB0C220621FFF79DFF002826D0029962 -:10B1A000687812220A70801C487008224A80A870B1 -:10B1B000208888806088C880A0880881E0884881CD -:10B1C00000240C20CDE90004052306222946304640 -:10B1D000FFF740FF2146002266F31F41F02310468F -:10B1E00005F062FA6878801C68700120FEBD10B519 -:10B1F0000446032101F0A0FE014600F110022046A2 -:10B20000BDE81040C0E72DE9FE4381465078164660 -:10B21000884640B1FFDF3168C8F804107168C8F88B -:10B220000810BDE8FE83B778022417B1022F13D0AF -:10B23000FFDF251D2A4602AB07214846FFF74AFFDC -:10B240000028E8D002980121022F01703178417066 -:10B250004480878002D005E00624EAE7B188C180F7 -:10B26000F18801810024CDE90054052307224146DD -:10B270004846FFF7EFFE88F80440D2E710B50446D1 -:10B28000032101F059FE0146021D2046BDE8104091 -:10B29000B9E7F84A002009211170704770B50C46D3 -:10B2A0001546342120460CF08BFE012060700921E8 -:10B2B00004F118000CF084FE05B9FFDF297820782E -:10B2C00061F30100207070BD7047002110B560F37C -:10B2D0001F41002005F092FA002010BDFEB5064681 -:10B2E0000F0CFCF777FD050007D06F80032138466F -:10B2F00001F022FE040008D106E003B03846BDE8A4 -:10B30000F0401321F7F752B9FFDF0EB1FFDFFEBDAA -:10B3100020782A4620F00800207002208DF80000D6 -:10B320004FF6FF70ADF80200ADF8040069463846EC -:10B33000F6F796FDFEBD00B5FFDF002000BD2DE94C -:10B34000FC410C461E4617468046032101F0F4FDE1 -:10B350000546092C0AD2DFE804F0050505050505B8 -:10B3600009090700042303E0062301E0FFDF0023AF -:10B37000CDE90076224629464046FFF76BFEBDE840 -:10B38000FC8138B50546A0F57F40FF381CD0284623 -:10B3900001F004FF040000D1FFDF204601F0A7FA0E -:10B3A000002810D001466A46204601F0C2FA0098F3 -:10B3B0000321B0F80540284601F0BEFD052C03D15D -:10B3C000007908B1002038BD012038BD2DE9F041D9 -:10B3D000044686B0408801F0E1FE050000D1FFDFA1 -:10B3E00003AA2846616800F034F9039D001F80B26B -:10B3F00035F8032F698882420AD104290BD0052928 -:10B4000018D0062904D16088291D6368F8F750F91F -:10B4100006B0BDE8F08116462D1D2246294630466D -:10B42000F9F7D7FE0828F3D1224629463046FAF725 -:10B43000EEFEEDE716466088032101F07DFD002158 -:10B440008DF80010042EE3D36A79002AE0D02B791E -:10B4500002274FF6FF78012B28D0122B01D0132B97 -:10B460000BD00491059169798DF81010638801461D -:10B4700004AA1846FFF7C7FECAE783789342C7D1EC -:10B4800002781307C4D5062EC2D122F0080202703A -:10B49000608860F31F41002005F0B0F98DF800705E -:10B4A000ADF802802889ADF8040017E0062EAFD36E -:10B4B00083789342ACD102781307A9D522F0080211 -:10B4C0000270608860F31F41002005F097F98DF845 -:10B4D00000702889ADF80200ADF80480608822462B -:10B4E0006946F6F7BDFC93E770B50D4606460321A5 -:10B4F00001F022FD040004D02078000704D51120BB -:10B5000070BD43F2020070BD2A4621463046FFF767 -:10B510003BFE18B92868206168686061207840F0B7 -:10B5200008002070002070BD2DE9F04F0E4691B04C -:10B530008046032101F000FD0446404601F040FE34 -:10B5400007460020079008900990ADF830000A9057 -:10B5500002900390049004B9FFDF0DF10809FFB9D0 -:10B56000FFDF1DE038460BA9002201F083F89DF8AB -:10B570002C0000F07F05092D00D3FFDF6019017E4C -:10B58000491E01769DF82C00000609D52A460CA913 -:10B5900007A8FFF74FFD19F80510491C09F8051019 -:10B5A000761EF6B2DED204F13000324D04F1220BE9 -:10B5B000DFF8C4A004F12607069010E0584606996B -:10B5C00000F049F806462870092800D3FFDF5AF832 -:10B5D000261040468847608CC05DB04202D0A08CE7 -:10B5E0000028EBD109202870234D4E4624350EE06B -:10B5F0000CA907A800F02FF80446375D55F8240081 -:10B6000000B9FFDF55F82420394640469047BDF881 -:10B610001E000028ECD111B05AE510B5032101F04D -:10B620008BFC040000D1FFDF092104F118000CF0AD -:10B63000C7FC207840F00400207010BD10B50C4607 -:10B64000032101F079FC2044007E002800D0012075 -:10B6500010BD01F06EB910B50C4601230922011D81 -:10B6600001F045FB0078218801228240914321802E -:10B6700010BD000054000020748301002DE9FC4738 -:10B680000C460646694600F006FE002860D106F02A -:10B6900009FAB0425CD02146304609F0C4F828BB14 -:10B6A000019D95F8EC00383518B9E87E08B1012005 -:10B6B00000E00020814695F837004FF000084FF079 -:10B6C000010AA0B195F83800800710D584F80180F0 -:10B6D00084F800A084F80280A68095F83910A17142 -:10B6E000698F2181A98F618185F837802DE03046EF -:10B6F00001F066FD070000D1FFDF384600F094FF3F -:10B7000040B184F801800D212170A680E08084F88A -:10B7100002A01AE0304601F041FD070000D1FFDF32 -:10B72000B9F1000F14D0384600F0D5FF80B1304693 -:10B7300006F05DF884F801800A21217084F8028007 -:10B74000A680297FA17185F81B800120BDE8FC87B8 -:10B750000020FBE71CB5694600F09DFD00B1FFDF4E -:10B76000684600F0A5FDFC4900208968A1F8B200F8 -:10B770001CBD2DE9FC4104460E46062001F088FB65 -:10B7800000250746A846064417E02088401C80B2E2 -:10B790002080B04202D34046A4F8008080B2B84274 -:10B7A00004D3B04202D20020BDE8FC81694600F01B -:10B7B00072FD0028F8D06D1CEDB2AE42E5D84FF610 -:10B7C000FF7020801220EFE710B506F081F80AF034 -:10B7D000A0FBE2484FF6FF710422418181810021E4 -:10B7E000017003218170C2701B228280C28001819E -:10B7F00010BD70B5D84C0D466060217005F0F5FFA6 -:10B8000000F066FDFFF7E0FF207809F057FE2846BC -:10B8100007F092FC06F082F92178606809F0C5F81B -:10B82000BDE870400AF075BB10B501240AB10020D4 -:10B8300010BD21B1012903D00024204610BD0221F2 -:10B840000BF0D7F8F9E72DE9F041040000D1FFDF54 -:10B85000C24802210C308046FFF78BFF00B1FFDFAA -:10B86000BE4D0620AF8901F013FB0646A889B04201 -:10B870001CD1204606F0BBF8F8B106F051FBC8B168 -:10B880002078132816D1A078A0B1A088062101F055 -:10B8900053FB050000D1FFDF288805F0A8FFA08832 -:10B8A000062101F05BFB28B1FFDF03E02146FFF733 -:10B8B000E5FE10B10120BDE8F08102214046FFF70E -:10B8C00058FF10B9A889B842D0D10020F3E710B5CD -:10B8D00000F0C2FC08B10C2010BD0AF053FB0020A0 -:10B8E00010BD10B50446007818B1012801D012200F -:10B8F00010BD00F0BCFC20B10AF0A1FB08B10C2087 -:10B9000010BD207800F092FCE21D04F11703611CC9 -:10B91000BDE810400AF04ABB10B50446007818B1E3 -:10B92000012801D0122010BD00F096FC08B10C20B7 -:10B9300010BD207800F07AFC611C0AF0FDFA08B115 -:10B94000002010BD072010BD10B50AF07CFB08B127 -:10B95000002010BD302010BD10B5044600F087FC5B -:10B9600008B10C2010BD20460AF065FB002010BD78 -:10B9700010B500F07CFC20B10AF061FB08B10C208E -:10B9800010BD0AF04AFB002010BDFF2181704FF668 -:10B99000FF718180704949680A7882718A880281C2 -:10B9A0004988418101214170002070471CB5002465 -:10B9B00012F1080F15D00CDC12F1280F11D012F182 -:10B9C000140F0ED012F1100F0BD012F10C0F0CD17E -:10B9D00007E012F1040F04D01AB1032A01D0042A9F -:10B9E00003D1012804D0032806D0122420461CBD10 -:10B9F000104606F090FAF9E708461446694600F04A -:10BA00004AFC08B10224F1E7019880F8374000248D -:10BA1000ECE710B5134601220AF047FD002010BDE7 -:10BA200010B5044600F023FC08B10C2010BD2146DF -:10BA3000002005F04EFF002010BD10B5044607F0B1 -:10BA4000B3FD20B1207807F09DFB002010BD0C2035 -:10BA500010BD10B5044600F00AFC08B10C2010BD62 -:10BA60002146012005F035FF002010BD38B5044601 -:10BA70004FF6FF70ADF80000A079E179884213D04D -:10BA800021791F2910D861791F290DD8002211466C -:10BA90000BF0DCFB40B90022E07911460BF0D6FB3D -:10BAA00010B9207A072801D9122038BD07F088FD87 -:10BAB00048B900216846FFF75CFE20B1204605F03A -:10BAC000E1F8002038BD0C2038BD2DE9FC4181781B -:10BAD00004461A2925D00EDC16292DD2DFE801F004 -:10BAE0002C2C2C2C2C212C2C2C2C2C2C2C2C2C2CA1 -:10BAF0002C2C2C2121212A291ED00BDCA1F11E0186 -:10BB00000C2919D2DFE801F018181818181818189D -:10BB10001818180D3A3904290ED2DFE801F00D0289 -:10BB20000D022088B0F5706F06D20127694600F03B -:10BB3000B2FB18B1022037E6122035E6019D6846B7 -:10BB40002E4605F5A87506F2511600F097FB08B1D0 -:10BB5000287828B10C2027E658000020B4040020E3 -:10BB60002F70A0783070684600F0A2FB00201BE622 -:10BB70001CB50C46694600F08EFB002118B121600F -:10BB8000217102201CBD01980246383080F8401017 -:10BB900093682360137B237190F84030002BF5D11C -:10BBA00000201CBD10B5044600F061FB20B10AF076 -:10BBB00046FA08B10C2010BD207800F037FBE2797E -:10BBC000611C0AF018FB08B1002010BD022010BD56 -:10BBD000887800B90320C97801B903211070197061 -:10BBE000002070471FB50446008801A900F053FBF0 -:10BBF000002806D1A08830B1012804D0022802D044 -:10BC0000122004B010BD6B4603AA214601A8FFF71D -:10BC1000DFFF0028F5D1029A012182F87B11029AF8 -:10BC200092F8AE213AB9029A92F87A211AB9029A98 -:10BC300092F85D200AB13A200CE0029A82F87A115B -:10BC4000029A9DF80C1082F87C11029A9DF800105F -:10BC500082F87D11029A002182F87B11D1E7817868 -:10BC6000CA0802D1C278D30801D012207047490710 -:10BC700001D4510701D511207047B3E7F0B5871FF4 -:10BC8000DDE9056540F67B44A74213D28F1FA7422A -:10BC900010D288420ED8B2F5FA7F0BD2A3F10A0077 -:10BCA000241FA04206D2521C4A43B2EB830F01DA92 -:10BCB000AE4201D90020F0BD0120F0BD1CB5828943 -:10BCC0004189CDE900120389C28881884088FFF745 -:10BCD000D5FF08B100201CBD30201CBDF8B51546AD -:10BCE0000E46044607F06CFC08B10C20F8BD204657 -:10BCF00000F002FB0028F9D161884FF01100CA065C -:10BD0000F4D5E27D032AF1D04906EFD4002030704B -:10BD1000A07555B9FF208DF800006946002006F097 -:10BD2000E6F86946002006F0CCF82046BDE8F84069 -:10BD300006F00FB80022D1E770B514460D4606464E -:10BD4000FB2919D813B11F2916D81BE006F001F9F9 -:10BD500020B11F2D10D8032C0ED104E0032C02D0EB -:10BD6000042C00D045B107F02BFC38B1032C05D0D2 -:10BD7000042C03D00C2070BD122070BD304605F09D -:10BD8000DBFE08B1002070BD422070BD70B50446D6 -:10BD9000C0780E46122510B106F03FF818B1607851 -:10BDA000042802D010E0284670BD07F009FC0028E6 -:10BDB000F9D006F07DF80028F5D106F0CAF8002881 -:10BDC000F1D1E0780028EED16278E178207833462E -:10BDD000FFF7B2FF0028E7D16178E07800F0D7FAEA -:10BDE00028B1E078211D06F082F8002070BD1120F6 -:10BDF00070BD0021CAE770B50446C0780D46122612 -:10BE000010B106F094F8A0B16278042A11D0E1785C -:10BE100020782B46FFF790FF002809D16178E07861 -:10BE200000F0B5FA38B1E078211D06F04AF800209C -:10BE300070BD304670BD112070BD0021DBE77CB5C0 -:10BE4000044640784225012808D8A07805F074FE01 -:10BE500020B120781225012802D090B128467CBD5F -:10BE600006F06EF820B1A0880028F7D08028F5D819 -:10BE700006F06DF860B160780028EFD020780128D6 -:10BE800008D006F047FD044607F01FF9002865D0EA -:10BE90000C207CBD05F091FE10B906F04FF868B398 -:10BEA00007F08EFB0028F3D105F0FCFDA0F57F41E3 -:10BEB000FF39EDD105F002FFA68842F2107046432B -:10BEC000A079314605F0B3FF06F02AF8C0B1002290 -:10BED000062101A801F002F8040018D0FA48032155 -:10BEE000846020460AF035FA204606F0D3F906F0C1 -:10BEF00030F8F64D68B1288901210EE012207CBD92 -:10BF00003146002007F041F938B3FFDF30E0092067 -:10BF10007CBD06F020F80146288907F0FAF90146B1 -:10BF2000A0620022204606F01CFD06F012F808B9B7 -:10BF300006F011F8E8780090AB78EA88A9882088A4 -:10BF400001F0B5F800B1FFDF208805F04FFC314665 -:10BF5000204607F01AF900B1FFDF09E044B120885C -:10BF600005F045FC2088062100F0F8FF00B1FFDF56 -:10BF700000207CBD002162E770B50D46062100F06F -:10BF8000DBFF040003D094F8530110B10AE0022053 -:10BF900070BD94F84500142801D0152802D194F8FA -:10BFA000940108B10C2070BD1022294604F5AA7036 -:10BFB0000BF065FF012084F85301002070BD10B51F -:10BFC000062100F0B9FF18B190F8531111B107E044 -:10BFD000022010BD90F84510142903D0152901D076 -:10BFE0000C2010BD022180F85311002010BD2DE956 -:10BFF000FC410D464BF680321221954213D895B183 -:10C00000694600F048F900280CD1019EB41C38366E -:10C0100027882A46394630460AF091F92088B842E6 -:10C02000F6D1002087E5084685E51CB50446008862 -:10C03000694600F030F9002808D10199A378084634 -:10C0400091F82C2038319A4201D10C201CBD7F225E -:10C050000A728A720022CA72E17880F82D10217962 -:10C0600080F82E10A17880F82C1010461CBD1CB54D -:10C070000C46694600F00FF9002806D1019890F8A7 -:10C08000530000B10120207000201CBD7CB50D467E -:10C090001446694600F0FFF8002805D1019890F891 -:10C0A0002C00012801D00C207CBD019890F8401094 -:10C0B000297090F84100207000207CBD70B50D46BD -:10C0C0001646062100F038FF18B381880124C38882 -:10C0D000428804EB4104AC4217D842F21074634327 -:10C0E000A4106243B3FBF2F2521E94B24FF4FA7200 -:10C0F000944200D91446A54200D22C46491C641C27 -:10C10000B4FBF1F24A43521E91B290F880211AB961 -:10C1100001E0022070BD01843180002070BD10B5A7 -:10C120000C46062100F008FF48B180F8BF4024B15A -:10C1300090F8BD1009B107F011F9002010BD0220E0 -:10C1400010BD017891B1417881B141881B290DD38F -:10C1500081881B290AD3C188022907D35B49026859 -:10C1600041F8022F40684860002070471220704755 -:10C1700010B507F09CF8002010BD70B514460A46B3 -:10C18000064600250121104607F0C3F8002800D814 -:10C19000284605460121304600F04FF806460121A9 -:10C1A000002000F04AF83118012296318D4206D95C -:10C1B00001F19600691AB1FBF0F0401C82B22280B6 -:10C1C000002070BD10B5044600F051F808B10C20F5 -:10C1D00010BD601C09F0FCFF207800F0010005F0A4 -:10C1E00006FD002010BD10B50446062000F042FEFA -:10C1F00008B10C2010BD2078C00711D00022607853 -:10C2000011460BF023F808B1122010BDA06808F009 -:10C2100020FF6078D4F8041008F024FF002010BD3F -:10C22000002008F016FF00210846F5E718B10228A3 -:10C2300001D0012070470020704710B5012904D0BB -:10C24000022905D0FFDF204610BDC000503001E0BC -:10C2500080002C3084B2F6E710B507F0B1F920B1B8 -:10C2600005F0A3FC08B1012010BD002010BD10B5E1 -:10C2700007F0A6F9002800D0012010BD416891F810 -:10C28000EC0091F8531021B918B1042801D0012015 -:10C2900070470020704710B50C46062100F04CFE98 -:10C2A000606018B101202070002010BD022010BD78 -:10C2B000416891F8BD20002A05D0002281F8BD20F8 -:10C2C000406807F04BB8704758000020B4040020C5 -:10C2D00008B54FF6FF70ADF8000006E00621BDF886 -:10C2E000000000F03BFE00B1FFDF00216846FFF7D1 -:10C2F00040FA0028F2D008BD38B504460078EF288F -:10C3000041D86088ADF80000009800F048F888B384 -:10C310006188080708D4D4E90120824233D8202A52 -:10C3200031D3B0F1807F2ED2207B18B307282AD8D2 -:10C33000607B28B1012803D0022801D0032822D134 -:10C340004A0703D4022801D0032805D1A07B08B1F5 -:10C35000012818D1480707D4607D28B1012803D0EF -:10C36000022801D003280ED1C806E07D03D501289C -:10C3700009D104E007E0012801D0032803D1E07EC1 -:10C3800018B1012801D0122038BD002038BD1F2867 -:10C3900001D8032901D0002095E7012093E780B25E -:10C3A000C1060CD401071AD481064FEAC07103D527 -:10C3B000A9B9800713D410E079B180070BE0C10759 -:10C3C0004FEA807104D0002902DB400705D406E063 -:10C3D000010704D44007002801DB012073E7002097 -:10C3E00071E7000030B5058825F4004421448CB283 -:10C3F0004FF4004194420AD2121B92B21B339A426C -:10C4000001D2A94307E005F40041214303E0A21A49 -:10C4100092B2A9431143018030BD08440830504313 -:10C420004A31084480B2704770B51D4616460B4627 -:10C43000044629463046049AFFF7EFFF0646B3420A -:10C4400000D2FFDF282120460BF0BAFD4FF6FF7027 -:10C45000A082283EB0B265776080B0F5004F00D969 -:10C46000FFDF618805F13C00814200D2FFDF608878 -:10C470000835401B343880B220801B2800D21B2096 -:10C4800020800020A07770BD8161886170472DE910 -:10C49000F05F0D46C188044600F12809008921F4A7 -:10C4A000004620F4004800F062FB10B10020BDE817 -:10C4B000F09F4FF0000A4FF0010BB0450CD9617F9F -:10C4C000A8EB0600401A0838854219DC09EB060083 -:10C4D0000021058041801AE06088617F801B471A37 -:10C4E000083F0DD41B2F00DAFFDFBD4201DC2946D7 -:10C4F00000E0B9B2681A0204120C04D0424502DD11 -:10C5000084F817A0D2E709EB06000180428084F886 -:10C5100017B0CCE770B5044600F12802C088E37D6F -:10C5200020F400402BB110440288438813448B420E -:10C5300001D2002070BD00258A4202D301804580CF -:10C5400008E0891A0904090C418003D0A01D00F0FD -:10C550001EFB08E0637F00880833184481B26288BC -:10C56000A01DFFF73FFFE575012070BD70B50346C4 -:10C5700000F12804C588808820F400462644A8429B -:10C5800002D10020188270BD98893588A84206D350 -:10C59000401B75882D1A2044ADB2C01E05E02C1A30 -:10C5A000A5B25C7F20443044401D0C88AC4200D9C9 -:10C5B0000D809C8924B1002414700988198270BDF3 -:10C5C0000124F9E770B5044600F12801808820F4C1 -:10C5D00000404518208A002825D0A189084480B24F -:10C5E000A08129886A881144814200D2FFDF28880F -:10C5F000698800260844A189884212D1A069807FF9 -:10C600002871698819B1201D00F0C1FA08E0637F24 -:10C6100028880833184481B26288201DFFF7E2FEA3 -:10C62000A6812682012070BD2DE9F04141898788CD -:10C630000026044600F12805B94218D004F10A0882 -:10C6400021F400402844418819B1404600F09FFA87 -:10C6500008E0637F00880833184481B2628840464E -:10C66000FFF7C0FE761C6189B6B2B942E8D1304608 -:10C67000BDE8F0812DE9F04104460B4627892830BA -:10C68000A68827F40041B4F80A8001440D46B74259 -:10C6900001D10020ECE70AB1481D106023B1627F90 -:10C6A000691D18460BF0EBFB2E88698804F1080021 -:10C6B00021B18A1996B200F06AFA06E0637F6288B7 -:10C6C0000833991989B2FFF78DFE474501D12089BA -:10C6D00060813046CCE78188C088814201D1012049 -:10C6E00070470020704701898088814201D1012074 -:10C6F00070470020704770B58588C38800F1280412 -:10C7000025F4004223F4004114449D421AD0838949 -:10C71000058A5E1925886388EC18A64214D313B1E4 -:10C720008B4211D30EE0437F08325C1922444088CB -:10C7300092B2801A80B22333984201D211B103E041 -:10C740008A4201D1002070BD012070BD2DE9F04763 -:10C750008846C1880446008921F4004604F1280770 -:10C7600020F4004507EB060900F001FA002178BB30 -:10C77000B54204D9627FA81B801A002503E06088B7 -:10C78000627F801B801A083823D4E28962B1B9F82D -:10C790000020B9F802303BB1E81A2177404518DB98 -:10C7A000E0893844801A09E0801A217740450ADB85 -:10C7B000607FE1890830304439440844C01EA4F841 -:10C7C0001280BDE8F087454503DB01202077E7E7CD -:10C7D000FFE761820020F4E72DE9F74F044600F1FE -:10C7E0002805C088884620F4004A608A05EB0A06BE -:10C7F00008B1404502D20020BDE8FE8FE08978B143 -:10C800003788B6F8029007EB0901884200D0FFDFB5 -:10C81000207F4FF0000B50EA090106D088B33BE0BF -:10C820000027A07FB9463071F2E7E18959B1607FF6 -:10C830002944083050440844B4F81F1020F8031D60 -:10C8400094F821108170E28907EB080002EB0801DF -:10C85000E1813080A6F802B002985F4650B1637F54 -:10C8600030880833184481B26288A01DFFF7BAFDF2 -:10C87000E78121E0607FE189083050442944084481 -:10C880002DE0FFE7E089B4F81F102844C01B20F812 -:10C89000031D94F82110817009EB0800E28981B230 -:10C8A00002EB0800E081378071800298A0B1A01DE2 -:10C8B00000F06DF9A4F80EB0A07F401CA077A07D19 -:10C8C00008B1E088A08284F816B000BFA4F812B0C6 -:10C8D00084F817B001208FE7E0892844C01B30F8A6 -:10C8E000031DA4F81F10807884F82100EEE710B52E -:10C8F000818800F1280321F400442344848AC288FB -:10C90000A14212D0914210D0818971B9826972B16D -:10C910001046FFF7E8FE50B91089283220F4004095 -:10C92000104419790079884201D1002010BD1846C1 -:10C9300010BD00F12803407F08300844C01E10607D -:10C94000088808B9DB1E136008884988084480B24B -:10C9500070472DE9F04100F12806407F1C46083061 -:10C960009046431808884D88069ADB1EA0B1C01C6B -:10C9700080B2904214D9801AA04200DB204687B2D0 -:10C9800098183A4641460BF04EFA002816D1E01BA3 -:10C9900084B2B844002005E0ED1CADB2F61EE8E715 -:10C9A000101A80B20119A94206D8304422464146E5 -:10C9B000BDE8F0410BF037BA4FF0FF3058E62DE9F3 -:10C9C000F04100F12804407F1E460830904643188D -:10C9D000002508884F88069ADB1E90B1C01C80B2E3 -:10C9E000904212D9801AB04200DB304685B29918C5 -:10C9F0002A4640460BF043FA701B86B2A84400203A -:10CA000005E0FF1CBFB2E41EEAE7101A80B28119EC -:10CA1000B94206D82118324640460BF030FAA81920 -:10CA200085B2284624E62DE9F04100F12804407F34 -:10CA30001E46083090464318002508884F88069AFD -:10CA4000DB1E90B1C01C80B2904212D9801AB04255 -:10CA500000DB304685B298182A4641460BF00FFAA3 -:10CA6000701B86B2A844002005E0FF1CBFB2E41E84 -:10CA7000EAE7101A80B28119B94206D8204432463A -:10CA800041460BF0FCF9A81985B22846F0E5401D97 -:10CA9000704710B5044600F12801C288808820F450 -:10CAA00000431944904206D0A28922B9228A12B9C1 -:10CAB000A28A904201D1002010BD0888498831B176 -:10CAC000201D00F064F800202082012010BD637F4B -:10CAD00062880833184481B2201DFFF783FCF2E717 -:10CAE0000021C18101774182C1758175704703883A -:10CAF0001380C28942B1C28822F4004300F12802A7 -:10CB00001A440A60C08970470020704710B5044677 -:10CB1000808AA0F57F41FF3900D0FFDFE088A08246 -:10CB2000E08900B10120A07510BD4FF6FF71818230 -:10CB300000218175704710B50446808AA0F57F41B9 -:10CB4000FF3900D1FFDFA07D28B9A088A18A8842E3 -:10CB500001D1002010BD012010BD8188828A914240 -:10CB600001D1807D08B1002070470120704720F47A -:10CB7000004221F400439A4207D100F4004001F43E -:10CB80000041884201D0012070470020704730B535 -:10CB9000044600880D4620F40040A84200D2FFDF82 -:10CBA00021884FF4004088432843208030BD70B571 -:10CBB0000C00054609D0082C00D2FFDF1DB1A1B240 -:10CBC000286800F044F8201D70BD0DB100202860D9 -:10CBD000002070BD0021026803E0938812681944A8 -:10CBE00089B2002AF9D100F032B870B500260D469E -:10CBF0000446082900D2FFDF206808B91EE0044679 -:10CC000020688188A94202D001680029F7D1818873 -:10CC10000646A94201D100680DE005F1080293B271 -:10CC20000022994209D32844491B0260818021686F -:10CC3000096821600160206000E00026304670BD78 -:10CC400000230B608A8002680A600160704700233D -:10CC50004360021D018102607047F0B50F460188F4 -:10CC6000408815460C181E46AC4200D3641B304465 -:10CC7000A84200D9FFDFA019A84200D9FFDF381968 -:10CC8000F0BD2DE9F04188460646018840881546EA -:10CC90000C181F46AC4200D3641B3844A84200D98C -:10CCA000FFDFE019A84200D9FFDF708838447080A8 -:10CCB00008EB0400BDE8F0812DE9F041054600884D -:10CCC0001E461746841B8846BC4200D33C442C8039 -:10CCD00068883044B84200D9FFDFA019B84200D9B3 -:10CCE000FFDF68883044688008EB0400E2E72DE944 -:10CCF000F04106881D460446701980B217468846E2 -:10CD00002080B84201D3C01B20806088A84200D296 -:10CD1000FFDF7019B84200D9FFDF6088401B6080D8 -:10CD200008EB0600C6E700002DE9F041BF4D0446C0 -:10CD30009046A8780E46A04200D8FFDF05EB860794 -:10CD4000786A50F8240000B1FFDFB868002816D0D8 -:10CD5000304600F032F90146B868FFF746FF05009B -:10CD60000CD0786A072E40F8245000D3FFDFB0487B -:10CD70004246294650F82630204698472846BDE8C6 -:10CD8000F0812DE9F84305000C46009524D00026DB -:10CD9000E81C20F00300A84200D0FFDFDFF88C82FF -:10CDA0000027314688F8007088F8014088F8024072 -:10CDB00088F8034088F8044088F8054088F8064061 -:10CDC000684600F003F9002042460099C91C21F092 -:10CDD0000301009116B10FE00126D9E702EB8003B1 -:10CDE0005962002106E000BFD3F824C04CF821703E -:10CDF000491CC9B2A142F7D30099401C01EB840140 -:10CE0000C0B200910728E0D3481BBDE8F88310B5F5 -:10CE1000044603F065FD08B1102010BD2078834A58 -:10CE2000618802EB800092780EE0436A53F821306B -:10CE300043B14A1C6280A180406A50F82100A06082 -:10CE4000002010BD491C89B28A42EED861800520BD -:10CE500010BD70B505460C46084603F041FD08B10B -:10CE6000102070BD072D01D3072070BD2570002054 -:10CE7000608070BD0EB56946FFF7EBFF00B1FFDFC4 -:10CE80006846FFF7C4FF08B100200EBD01200EBDAB -:10CE900010B50446072800D3FFDF6448005D10BDCD -:10CEA0003EB5054600246946FFF7D3FF18B1FFDF02 -:10CEB00001E0641CE4B26846FFF7A9FF0028F8D03F -:10CEC0002846FFF7E5FF001BC0B23EBD57498978F1 -:10CED000814201D9C0B27047FF2070472DE9F0416F -:10CEE00006291BD1514C00273B464FF6FF7604EB39 -:10CEF000810514F801C00AE0DC19D5F824E0A4B2D9 -:10CF00005EF824E0BEF1000F04D05B1C9BB29C4590 -:10CF1000F2D8344604802046B44201D100202EE7E6 -:10CF2000BDE8F04100E7A0F57F43FF3B01D00729B2 -:10CF300001D300207047F7E6A0F57F42FF3A0BD0FF -:10CF4000072909D2394A9378834205D902EB810136 -:10CF5000496A51F820007047002070472DE9F041E0 -:10CF600004460D46A4F57F4143F20200FF3902D08A -:10CF7000072D01D3072002E72C494FF000088A78DB -:10CF8000A242F8D901EB8506726A52F82470002F8C -:10CF9000F1D0274839461C3050F8252020469047CC -:10CFA000716A284641F8248000F007F802463946A5 -:10CFB000B068FFF745FE0020E1E61D49383131F841 -:10CFC00010004FF6FC71C01C084070472DE9F84373 -:10CFD000164E8846054600242868C01C20F0030031 -:10CFE00028602046FFF7E9FF315D4843B8F1000FA4 -:10CFF00001D0002200E02A680146009232B10027E9 -:10D000004FEA0D00FFF7D3FD1FB106E00127002016 -:10D01000F8E706EB8401009A8A602968641C0844DA -:10D02000E4B22860072CD7D3EFE60000C404002048 -:10D03000BC83010070B50E461D46114600F0D4F8C1 -:10D0400004462946304600F0D8F82044001D70BD43 -:10D050002DE9F04190460D4604004FF0000610D037 -:10D060000027E01C20F00300A04200D0FFDFDDB16C -:10D0700041460020FFF79BFD0C3000EB850617B101 -:10D0800012E00127EDE7614F04F10C00A9003C60BC -:10D090002572606000EB8500206060680AF090FFF8 -:10D0A00041463868FFF783FD3046BDE8F0812DE941 -:10D0B000FF4F564C804681B020689A46934600B98F -:10D0C000FFDF2068027A424503D9416851F8280001 -:10D0D00020B143F2020005B0BDE8F08F514602983E -:10D0E00000F082F886B258460E9900F086F885B2B4 -:10D0F0007019001D87B22068A14639460068FFF705 -:10D1000074FD04001FD0678025802946201D0E9DD8 -:10D1100007465A4601230095FFF786F920883146D5 -:10D1200038440123029ACDF800A0FFF77DF920884A -:10D13000C1193846FFF7A8F9D9F800004168002066 -:10D1400041F82840C7E70420C5E770B52F4C0546D5 -:10D15000206800B9FFDF2068017AA9420ED9426831 -:10D1600052F8251051B1002342F825304A88006852 -:10D17000FFF766FD216800200A7A08E043F202000A -:10D1800070BD4B6853F8203033B9401CC0B28242A6 -:10D19000F7D80868FFF71EFD002070BD70B51B4E64 -:10D1A00005460024306800B9FFDF3068017AA942E3 -:10D1B00004D9406850F8250000B1041D204670BD18 -:10D1C00070B5124E05460024306800B9FFDF3068A4 -:10D1D000017AA94206D9406850F8251011B131F8FA -:10D1E000040B4418204670BD10B50A460121FFF714 -:10D1F00014F9C01C20F0030010BD10B50A4601212F -:10D20000FFF70BF9C01C20F0030010BD64000020E4 -:10D2100070B50446C2F1100528190AF030FE15F069 -:10D22000FF0108D0491EC9B2802060542046BDE8E5 -:10D2300070400AF0A3BE70BD30B505E05B1EDBB2E6 -:10D24000CC5CD55C6C40C454002BF7D130BD10B51C -:10D25000002409E00B78521E44EA430300F8013B26 -:10D2600011F8013BD2B2DC09002AF3D110BD2DE93F -:10D27000F04389B01E46DDE9107990460D00044662 -:10D2800022D002460846F949FEF7C3FB1022214688 -:10D290003846FFF7DCFFE07B000606D5F34A394647 -:10D2A000102310320846FFF7C7FF102239464846C0 -:10D2B000FFF7CDFFF87B000606D5EC4A4946102360 -:10D2C00010320846FFF7B8FF102120460AF056FE3C -:10D2D0000DE0103EB6B208EB060110232246684668 -:10D2E000FFF7AAFF224628466946FEF792FB102E5A -:10D2F000EFD818D0F2B241466846FFF789FF1023F5 -:10D300004A46694604A8FFF797FF1023224604A95E -:10D310006846FFF791FF224628466946FEF779FBEB -:10D3200009B0BDE8F08310233A464146EAE770B5FC -:10D330009CB01E460546134620980C468DF8080002 -:10D34000202219460DF109000AF099FD20222146FC -:10D350000DF129000AF093FD17A913A8CDE90001EA -:10D36000412302AA31462846FFF781FF1CB070BD59 -:10D370002DE9FF4F9FB014AEDDE92D5410AFBB492E -:10D38000CDE90076202320311AA8FFF770FF4FF077 -:10D3900000088DF808804FF001098DF8099054F8C5 -:10D3A000010FCDF80A00A088ADF80E0014F8010CAA -:10D3B0001022C0F340008DF8100055F8010FCDF891 -:10D3C0001100A888ADF8150015F8010C2C99C0F3D0 -:10D3D00040008DF8170006A882460AF050FD0AA802 -:10D3E0008346102222990AF04AFDA04835230838C6 -:10D3F00002AA40688DF83C80CDE900760E901AA90B -:10D400001F98FFF734FF8DF808808DF80990206889 -:10D41000CDF80A00A088ADF80E0014F8010C102217 -:10D42000C0F340008DF810002868CDF81100A888DE -:10D43000ADF8150015F8010C2C99C0F340008DF8DB -:10D44000170050460AF01BFD5846102222990AF098 -:10D4500016FD86483523083802AA40688DF83C90AE -:10D46000CDE900760E901AA92098FFF700FF23B0AF -:10D47000BDE8F08FF0B59BB00C460546DDE9221003 -:10D480001E461746DDE92032D0F801C0CDF808C0AD -:10D49000B0F805C0ADF80CC00078C0F340008DF8BE -:10D4A0000E00D1F80100CDF80F00B1F80500ADF87D -:10D4B000130008781946C0F340008DF81500108855 -:10D4C000ADF8160090788DF818000DF119001022B3 -:10D4D0000AF0D5FC0DF12900102231460AF0CFFCEC -:10D4E0000DF13900102239460AF0C9FC17A913A81A -:10D4F000CDE90001412302AA21462846FFF7B7FEE5 -:10D500001BB0F0BDF0B5A3B017460D4604461E464D -:10D51000102202A828990AF0B2FC06A82022394657 -:10D520000AF0ADFC0EA8202229460AF0A8FC1EA98C -:10D530001AA8CDE90001502302AA314616A8FFF728 -:10D5400096FE1698206023B0F0BDF0B589B0044671 -:10D55000DDE90E070D463978109EC1F340018DF8C4 -:10D56000001031789446C1F340018DF8011019681C -:10D57000CDF802109988ADF8061099798DF8081049 -:10D580000168CDF809108188ADF80D1080798DF80B -:10D590000F0010236A46614604A8FFF74DFE22469D -:10D5A000284604A9FEF735FAD6F801000090B6F82F -:10D5B0000500ADF80400D7F80100CDF80600B7F873 -:10D5C0000500ADF80A000020039010236A462146AA -:10D5D00004A8FFF731FE2246284604A9FEF719FAEF -:10D5E00009B0F0BD1FB51C6800945B680193136817 -:10D5F000029352680392024608466946FEF709FA0A -:10D600001FBD10B588B0044610680490506805909E -:10D6100000200690079008466A4604A9FEF7F9F92B -:10D62000BDF80000208008B010BD1FB51288ADF80D -:10D6300000201A88ADF80220002201920292039283 -:10D64000024608466946FEF7E4F91FBD7FB5074B61 -:10D6500014460546083B9A1C6846FFF7E6FF22463B -:10D6600069462846FFF7CDFF7FBD00000A84010010 -:10D6700070B5044600780E46012813D0052802D064 -:10D68000092813D10EE0A06861690578042003F031 -:10D69000B5F8052D0AD0782300220420616903F033 -:10D6A00003F803E00420616903F0A8F8314620463E -:10D6B000BDE8704001F086B810B500F12D02C379C5 -:10D6C0009478411D64F003042340C371DB070DD03F -:10D6D0004B79547923404B710B79127913400B71BC -:10D6E0008278C9788A4200D9817010BD00224A71BF -:10D6F0000A71F5E74178012900D00C2101707047CB -:10D700002DE9F04F93B04FF0000B0C690D468DF8EA -:10D7100020B0097801260C2017464FF00D084FF075 -:10D72000110A4FF008091B2975D2DFE811F01B0020 -:10D73000C30206031E035D037003A203B703F803CD -:10D74000190461049304A004EC042A05340552056D -:10D750005D05EE053106340663067F06F9061D07F2 -:10D76000E606EB0614B120781D282AD0D5F80880EB -:10D770005FEA08004FD001208DF82000686A02227D -:10D780000D908DF824200A208DF82500A8690A90B4 -:10D79000A8880028EED098F8001091B10F2910D277 -:10D7A0007ED2DFE801F07D1349DEFEFDFCFBFAF9D5 -:10D7B00038089CF8F70002282DD124B120780C28D5 -:10D7C00001D00026EFE38DF82020CBE10420696A28 -:10D7D00003F014F8A8880728EED1204600F0EDFFEA -:10D7E000022809D0204600F0E8FF032807D9204688 -:10D7F00000F0E3FF072802D20120207004E0002C93 -:10D80000B8D020780128D7D198F80400C11F0A2980 -:10D8100002D30A2061E0C4E1A070D8F80010E162F0 -:10D82000B8F80410218698F8060084F83200012028 -:10D8300028700320207044E00728BDD1002C99D027 -:10D8400020780D28B8D198F8031094F82F20C1F350 -:10D85000C000C2F3C002104201D0062000E0072041 -:10D86000890707D198F805100142D2D198F806101F -:10D870000142CED194F8312098F8051020EA020236 -:10D880001142C6D194F8322098F806109043014214 -:10D89000BFD198F80400C11F0A29BAD2617D00E007 -:10D8A00006E281427ED8D8F800106160B8F8041012 -:10D8B000218198F80600A072012028700E202070A7 -:10D8C00003208DF82000686A0D9004F12D00099066 -:10D8D000601D0A900F300B9022E12875FDE341286E -:10D8E00091D1204600F069FF042802D1E078C007FA -:10D8F00004D1204600F061FF0F2884D1A88CD5F810 -:10D900000C8080B24FF0400BE669FFF747FC3246CF -:10D9100041465B464E46CDF80090FFF750F80B208D -:10D920008DF82000686A0D90E0690990002108A830 -:10D93000FFF79EFE2078042806D0A07D58B101286C -:10D9400009D003280AD049E305202070032028705D -:10D950008DF82060CDE184F800A032E7122020701D -:10D96000E9E11128BCD1204600F027FF042802D1AC -:10D97000E078C00719D0204600F01FFF062805D127 -:10D98000E078C00711D1A07D02280ED0204600F01B -:10D9900014FF08E0CAE081E06FE14EE121E101E11E -:10D9A000E7E017E0ADE111289AD1102208F101015A -:10D9B00004F13C000AF063FA607801287ED012205E -:10D9C0002070E078C00760D0A07D0028C8D0012872 -:10D9D000C6D05AE0112890D1204600F0EEFE08286B -:10D9E00004D0204600F0E9FE132886D104F16C0033 -:10D9F000102208F1010106460AF041FA20780828B1 -:10DA00000DD014202070E178C8070DD0A07D022829 -:10DA10000AD06278022A04D00328A1D035E0092078 -:10DA2000F0E708B1012837D1C80713D0A07D02283C -:10DA30001DD000200090D4E9062133460EA8FFF740 -:10DA400076FC10220EA904F13C000AF0ECF9C8B1F2 -:10DA5000042042E7D4E90912201D8DE8070004F1F3 -:10DA60002C0332460EA8616BFFF76FFDE9E7606B90 -:10DA7000C1F34401491E0068C84000F0010040F0B5 -:10DA80008000D7E72078092806D185F800908DF826 -:10DA9000209033E32870ECE30920FBE711289AD1AA -:10DAA000204600F08AFE0A2802D1E078C00704D19F -:10DAB000204600F082FE15288DD100E08DE104F1B2 -:10DAC0003C00102208F1010106460AF0D8F920783E -:10DAD0000A2816D016202070D4E90932606B611D27 -:10DAE0008DE80F0004F15C0304F16C0247310EA8CD -:10DAF000FFF7C0FC10220EA930460AF094F918B1C5 -:10DB0000F5E20B20207071E22046FFF7D5FDA078EA -:10DB1000216A0A18C0F1100110460AF02FFA23E317 -:10DB2000394608A8FFF7A4FD06463BE20228B6D115 -:10DB3000204600F042FE042804D3204600F03DFEBB -:10DB4000082809D3204600F038FE0E2829D32046A5 -:10DB500000F033FE122824D2A07D02289FD10E208F -:10DB60008DF82000686A0D9098F801008DF8240067 -:10DB7000F0E3022893D1204600F01FFE002810D0C9 -:10DB8000204600F01AFE0128F9D0204600F015FECC -:10DB90000C28F4D004208DF8240098F801008DF8AA -:10DBA00025005EE21128FCD1002CFAD0207817283D -:10DBB000F7D16178606A022911D0002101EB41019F -:10DBC000182606EBC1011022405808F101010AF0A5 -:10DBD00056F90420696A00F0E3FD2670F1E50121A1 -:10DBE000ECE70B28DDD1002CDBD020781828D8D129 -:10DBF0006078616A02281CD05FF0000000EB4002F0 -:10DC0000102000EBC2000958B8F8010008806078C5 -:10DC1000616A02280FD0002000EB4002142000EBC4 -:10DC2000C2000958404650F8032F0A604068486017 -:10DC300039E00120E2E70120EEE71128B1D1002C04 -:10DC4000AFD020781928ACD16178606A022912D04F -:10DC50005FF0000101EB41011C2202EBC101102227 -:10DC6000405808F101010AF00AF90420696A00F03D -:10DC700097FD1A20B6E00121ECE7082891D1002C8D -:10DC80008FD020781A288CD1606A98F8012001780A -:10DC900062F347010170616AD8F8022041F8012F50 -:10DCA000B8F8060088800420696A00F079FD8EE2E9 -:10DCB000072012E63878012894D1182204F11400C4 -:10DCC00079680AF021F9E079C10894F82F0001EA97 -:10DCD000D001E07861F30000E070217D002974D16B -:10DCE0002178032909D0C00725D0032028708DF89A -:10DCF0002090686A0D90412004E3607DA1788842FD -:10DD000001D90620E9E502262671E179204621F0B5 -:10DD1000E001E171617A21F0F0016172A17A21F0F4 -:10DD2000F001A172FFF7C8FC2E708DF82090686A90 -:10DD30000D900720E6E20420ACE6387805289DD156 -:10DD40008DF82000686A0D90B8680A900720ADF839 -:10DD500024000A988DF830B06168016021898180C3 -:10DD6000A17A817104202070F4E23978052985D1E7 -:10DD70008DF82010696A0D91391D09AE0EC986E82B -:10DD80000E004121ADF824108DF830B01070A88C31 -:10DD9000D7F80C8080B24026A769FFF711FA4146F8 -:10DDA0003A463346C846CDF80090FEF73CFE0021C7 -:10DDB00008A8FFF75DFCE07820F03E00801CE070D2 -:10DDC0002078052802D00F200CE049E1A07D20B189 -:10DDD000012802D0032802D002E10720BFE584F821 -:10DDE0000080EEE42070ECE4102104F15C0002F00D -:10DDF0005AFA606BB0BBA07D18B1012801D0052094 -:10DE0000FDE006202870F7486063A063BEE2387822 -:10DE1000022894D1387908B12875B3E3A07D02288F -:10DE200002D0032805D022E0B8680028F5D060634E -:10DE30001CE06078012806D0A07994F82E10012803 -:10DE400005D0E84806E0A17994F82E00F7E7B86815 -:10DE50000028E2D06063E078C00701D0012902D039 -:10DE6000E04803E003E0F8680028D6D0A06306206D -:10DE700010E68DF82090696A0D91E1784846C9074F -:10DE800009D06178022903D1A17D29B1012903D0EC -:10DE9000A17D032900D00720287031E138780528BA -:10DEA000BBD1207807281ED084F800A005208DF86B -:10DEB0002000686A0D90B8680A90ADF824A08DF82B -:10DEC00030B003210170E178CA070FD0A27D022A89 -:10DED0001AD000210091D4E9061204F15C03401C21 -:10DEE000FFF725FA67E384F80090DFE7D4E9092318 -:10DEF000211D8DE80E0004F12C0304F15C02401C8E -:10DF0000616BFFF722FB56E3626BC1F34401491ECC -:10DF10001268CA4002F0010141F08001DAE7387866 -:10DF20000528BDD18DF82000686A0D90B8680A9068 -:10DF3000ADF824A08DF830B0042100F8011B1022A8 -:10DF400004F15C0109F09BFF002108A8FFF790FB9A -:10DF50002078092801D0132044E70A2020709BE58F -:10DF6000E078C10742D0A17D012902D0022927D043 -:10DF700038E0617808A8012916D004F16C010091FD -:10DF8000D4E9061204F15C03001DFFF7BBFA0A2076 -:10DF9000287003268DF82080686A0D90002108A85B -:10DFA000FFF766FBDDE2C3E204F15C010091D4E916 -:10DFB000062104F16C03001DFFF7A4FA0026E9E72F -:10DFC000C0F3440114290DD24FF0006101EBB010F1 -:10DFD0004FEAB060E0706078012801D01020BEE404 -:10DFE0000620FFE6607801283FF4B7AC0A2051E52F -:10DFF000E178C90708D0A17D012903D10B20287041 -:10E0000004202FE028702DE00E2028706078616BCE -:10E01000012817D004F15C0304F16C020EA8FFF78D -:10E02000E1FA2046FFF748FBA0780EAEC0F11001E0 -:10E03000304409F0A3FF06208DF82000686A099695 -:10E040000D909AE004F16C0304F15C020EA8FFF756 -:10E05000C9FAE9E73978022903D139790029D1D001 -:10E0600029758FE28DF82000686A0D9058E53878A0 -:10E070000728F6D1D4E909216078012808D004F1F5 -:10E080006C00CDE90002029105D104F16C0304E0BB -:10E0900004F15C00F5E704F15C0304F14C007A68DC -:10E0A0000646216AFFF764F96078012821D1A0783B -:10E0B000216A0A18C0F11001104609F05FFFD4E987 -:10E0C0000923606B04F12D018DE80F0004F15C035E -:10E0D00004F16C0231460EA800E055E2FFF7CAF9E0 -:10E0E00010220EA904F13C0009F09DFE08B10B209E -:10E0F000AFE485F8008000BF8DF82090686A0D902D -:10E100008DF824A00CE538780528AAD18DF82000D8 -:10E11000686A0D90B8680A90ADF824A08DF830B008 -:10E1200080F80080617801291AD0D4E9093204F11D -:10E130002D01A66B03920096CDE9011304F16C0347 -:10E1400004F15C0204F14C01401CFFF793F900213B -:10E1500008A8FFF78DFA6078012805D0152041E660 -:10E16000D4E90923611DE4E70E20287006208DF80C -:10E170002000686ACDF824B00D90A0788DF82800B2 -:10E18000CEE438780328C0D1E079C00770D00F20E2 -:10E190002870072066E7387804286BD11422391DCF -:10E1A00004F1140009F0B0FE616A208CA1F80900A6 -:10E1B000616AA078C871E179626A01F003011172A5 -:10E1C000616A627A0A73616AA07A81F82400162073 -:10E1D00060E485F800A08DF82090696A50460D91A2 -:10E1E00090E000000A8401003878052842D1B86820 -:10E1F000A8616178606A022901D0012100E0002154 -:10E2000001EB4101142606EBC1014058082102F040 -:10E210004AF86178606A022901D0012100E00021FA -:10E2200001EB410106EBC101425802A8E169FFF789 -:10E230000DFA6078626A022801D0012000E0002017 -:10E2400000EB4001102000EBC1000223105802A98E -:10E250000932FEF7F1FF626AFD4B0EA80932A1698F -:10E26000FFF7E3F96178606A022904D0012103E035 -:10E2700042E18BE0BDE0002101EB4101182606EBF5 -:10E28000C101A27840580EA909F0F9FD6178606AD1 -:10E29000022901D0012100E0002101EB410106EB40 -:10E2A000C1014058A1780844C1F1100109F066FE8F -:10E2B00005208DF82000686A0D90A8690A90ADF8D5 -:10E2C00024A08DF830B0062101706278616A022ABC -:10E2D00001D0012200E0002202EB420206EBC20262 -:10E2E000401C8958102209F0CAFD002108A8FFF738 -:10E2F000BFF91220C5F818B028708DF82090686A10 -:10E300000D900B208DF824000AE43878052870D190 -:10E310008DF82000686A0D90B8680A900B20ADF85F -:10E3200024000A98072101706178626A022901D0ED -:10E33000012100E0002101EB4103102101EBC301A9 -:10E3400051580988A0F801106178626A022902D048 -:10E35000012101E02FE1002101EB4103142101EB38 -:10E36000C30151580A6840F8032F4968416059E0D9 -:10E370001920287001208DF8300077E616202870CB -:10E380008DF830B0002108A8FFF772F9032617E1D5 -:10E3900014202870B0E6387805282AD18DF820009E -:10E3A000686A0D90B8680A90ADF824A08DF830B076 -:10E3B00080F800906278616A4E46022A01D00122FC -:10E3C00000E0002202EB42021C2303EBC202401CCD -:10E3D0008958102209F053FD002108A8FFF748F9D9 -:10E3E000152028708DF82060686A0D908DF82460E3 -:10E3F0003CE680E0387805287DD18DF82000686AF9 -:10E400000D90B8680A90ADF82490092101706169F7 -:10E41000097849084170616951F8012FC0F802205C -:10E420008988C18020781C28A8D1A1E7E078C0079E -:10E4300002D04FF0060C01E04FF0070C6078022884 -:10E440000AD04FF0000000BF00EB040101F1090108 -:10E4500005D04FF0010004E04FF00100F4E74FF069 -:10E4600000000B78204413EA0C030B7010F8092FFE -:10E4700002EA0C02027004D14FF01B0C84F800C0B9 -:10E48000D2B394F801C0BCF1010F00D09BB990F851 -:10E4900000C0E0465FEACC7C04D028F0010606709C -:10E4A000102606E05FEA887C05D528F00206067093 -:10E4B00013262E70032694F801C0BCF1020F00D081 -:10E4C00092B991F800C05FEACC7804D02CF0010634 -:10E4D0000E70172106E05FEA8C7805D52CF0020655 -:10E4E0000E701921217000260078D0BBCAB3C3BBBF -:10E4F0001C20207035E012E002E03878062841D177 -:10E500001A2019E4207801283CD00C283AD0204663 -:10E51000FFF7F0F809208DF82000686A0D9031E0CF -:10E520003878052805D00620387003261820287072 -:10E5300046E005218DF82010686A0D90B8680A90B1 -:10E540000220ADF8240001208DF830000A980170F7 -:10E55000297D4170394608A8FFF78AF80646182039 -:10E560002870012E0ED02BE001208DF82000686A63 -:10E570000D9003208DF82400287D8DF8250085F866 -:10E5800014B012E0287D80B11D2020701720287063 -:10E590008DF82090686A0D9002208DF8240039468D -:10E5A00008A8FFF765F806460AE00CB1FE202070C7 -:10E5B0009DF8200020B1002108A8FFF759F810E4C9 -:10E5C00013B03046BDE8F08F2DE9F04387B00C461C -:10E5D0004E6900218DF8041001202578034602279A -:10E5E0004FF007094FF0050C85B1012D53D0022DD6 -:10E5F00039D1FE2030708DF80030606A059003201C -:10E600008DF80400207E8DF8050063E02179012952 -:10E6100025D002292DD0032928D0042923D1B17D6A -:10E62000022920D131780D1F042D04D30A3D032D7A -:10E6300001D31D2917D12189022914D38DF8047023 -:10E64000237020899DF8041088421BD2082001E025 -:10E65000028401008DF80000606A059057E0707830 -:10E660000128EBD0052007B0BDE8F0831D203070F5 -:10E67000E4E771780229F5D131780C29F3D18DF8CE -:10E680000490DDE7083402F804CB94E80B0082E83C -:10E690000B000320E7E71578052DE4D18DF800C0C5 -:10E6A000656A0595956802958DF8101094F80480B8 -:10E6B000B8F1010F13D0B8F1020F2DD0B8F1030F4C -:10E6C0001CD0B8F1040FCED1ADF804700E20287024 -:10E6D000207E687000216846FEF7CAFF0CE0ADF8A6 -:10E6E00004700B202870207E002100F01F0068704D -:10E6F0006846FEF7BDFF37700020B4E7ADF8047040 -:10E700008DF8103085F800C0207E687027701146A3 -:10E710006846FEF7ADFFA6E7ADF804902B70207FAA -:10E720006870607F00F00100A870A07F00F01F00FB -:10E73000E870E27F2A71C0071CD094F8200000F036 -:10E740000700687194F8210000F00700A87100210B -:10E750006846FEF78DFF2868F062A8883086A879A1 -:10E7600086F83200A069407870752879B0700D2065 -:10E770003070C1E7A9716971E9E700B587B0042875 -:10E780000CD101208DF800008DF8040000200591C7 -:10E790008DF8050001466846FEF76AFF07B000BD28 -:10E7A00070B50C46054602F029F821462846BDE81A -:10E7B00070407823002201F077BF08B100787047DD -:10E7C0000C20704770B50C0005784FF000010CD09C -:10E7D00021702146F4F720FD69482178405D884288 -:10E7E00001D1032070BD022070BDF4F715FD00209B -:10E7F00070BD0279012A05D000220A704B78012BE6 -:10E8000002D003E0042070470A758A610279930000 -:10E81000521C0271C15003207047F0B587B00F46FB -:10E8200005460124287905EB800050F8046C7078C7 -:10E83000411E02290AD252493A46083901EB8000AA -:10E84000314650F8043C2846984704460CB1012C48 -:10E8500011D12879401E10F0FF00287101D0032447 -:10E86000E0E70A208DF80000706A0590002101960B -:10E870006846FFF7A7FF032CD4D007B02046F0BDB1 -:10E8800070B515460A46044629461046FFF7C5FFEF -:10E89000064674B12078FE280BD1207C30B10020D0 -:10E8A0002870294604F10C00FFF7B7FF2046FEF759 -:10E8B00021FF304670BD704770B50E4604467C217E -:10E8C00009F07EFB0225012E03D0022E04D0052084 -:10E8D00070BD0120607000E065702046FEF70AFF01 -:10E8E000A575002070BD28B1027C1AB10A4600F15E -:10E8F0000C01C5E70120704710B5044686B004201E -:10E9000001F07CFF2078FE2806D000208DF8000062 -:10E9100069462046FFF7E7FF06B010BD7CB50E46FE -:10E9200000218DF804104178012903D0022903D079 -:10E93000002405E0046900E044690CB1217C89B140 -:10E940006D4601462846FFF754FF032809D1324699 -:10E9500029462046FFF794FF9DF80410002900D0B7 -:10E9600004207CBD04F10C05EBE730B40C460146F5 -:10E97000034A204630BC034B0C3AFEF756BE00005B -:10E98000488401000284010070B50D46040011D0D6 -:10E9900085B12101284609F0F1FA10224E49284696 -:10E9A00009F06DFA4C480121083801804480456027 -:10E9B000002070BD012070BD70B5474E0024054693 -:10E9C000083E10E07068AA7B00EB0410817B914246 -:10E9D00008D1C17BEA7B914204D10C22294609F07F -:10E9E00022FA30B1641C30888442EBDB4FF0FF30F8 -:10E9F00070BD204670BD70B50D46060006D02DB125 -:10EA0000FFF7DAFF002803DB401C14E0102070BD84 -:10EA1000314C083C20886288411C914201D9042075 -:10EA200070BD6168102201EB0010314609F027FA31 -:10EA30002088401C20802870002070BD70B51446CE -:10EA40000D0018D0BCB10021A170022802D01028FE -:10EA500011D105E0288870B10121A170108008E073 -:10EA60002846FFF7A9FF002805DB401CA070A889F5 -:10EA70002080002070BD012070BD70B50546144691 -:10EA80000E000BD000203070A878012808D005D9DE -:10EA90001149A1F108010A8890420AD9012070BDEC -:10EAA00024B1287820702888000A5070022008704D -:10EAB0000FE064B14968102201EB001120461039C3 -:10EAC00009F0DDF9287820732888000A6073102087 -:10EAD0003070002070BD0000700000202DE9F04172 -:10EAE00090460C4607460025FE48072F00EB881687 -:10EAF00007D2DFE807F00707070704040400012531 -:10EB000000E0FFDF06F81470002D13D0F5488030C8 -:10EB100000EB880191F82700202803D006EB400085 -:10EB2000447001E081F8264006EB4402202050703A -:10EB300081F82740BDE8F081F0B51F4614460E4627 -:10EB40000546202A00D1FFDFE649E648803100EB88 -:10EB5000871C0CEB440001EB8702202E07D00CEB46 -:10EB6000460140784B784870184620210AE092F818 -:10EB70002530407882F82500F6E701460CEB41008D -:10EB800005704078A142F8D192F82740202C03D09C -:10EB90000CEB4404637001E082F826300CEB410476 -:10EBA0002023637082F82710F0BD30B50D46CE4BA0 -:10EBB00044190022181A72EB020100D2FFDFCB4881 -:10EBC000854200DDFFDFC9484042854200DAFFDFB1 -:10EBD000C548401C844207DA002C01DB204630BDCA -:10EBE000C148401C201830BDBF48C043FAE710B5EB -:10EBF00004460168407ABE4A52F82020114450B1C0 -:10EC00000220084420F07F40F9F7FBFE94F9081039 -:10EC1000BDE81040C9E70420F3E72DE9F047B14E05 -:10EC2000803696F82D50DFF8BC9206EB850090F800 -:10EC3000264034E009EB85174FF0070817F8140059 -:10EC4000012806D004282ED005282ED0062800D072 -:10EC5000FFDF01F0E3F8014607EB4400427806EBE2 -:10EC6000850080F8262090F82720A24202D1202299 -:10EC700080F82720084601F0DCF82A4621460120CA -:10EC8000FFF72CFF9B48414600EB0410026820462A -:10EC9000904796F82D5006EB850090F82640202CE2 -:10ECA000C8D1BDE8F087022000E003208046D0E70D -:10ECB00010B58C4C2021803484F8251084F826105F -:10ECC00084F82710002084F8280084F82D0084F8A8 -:10ECD0002E10411EA16044F8100B20746074207344 -:10ECE0006073A0738449E077207508704870002134 -:10ECF0007C4A103C02F81100491CC9B22029F9D302 -:10ED00000120F9F772FD0020F9F76FFD012084F86A -:10ED10002200F4F74FF87948F4F75BF8764CA41E1C -:10ED200020707748F4F755F86070BDE81040F9F7A7 -:10ED3000E9BC10B5F9F70BFD6F4CA41E2078F4F771 -:10ED400061F86078F4F75EF8BDE8104001F09EB815 -:10ED5000202070472DE9F34F624E0025803606EBE8 -:10ED6000810A89B09AF82500202822D0691E0291D4 -:10ED70006049009501EB00108146D0E90112C0689E -:10ED80000391CDE90420B08BADF81C00B07F8DF865 -:10ED90001E009DF81500C8B10227554951F82040C2 -:10EDA0000399E219114421F07F41019184B10221BC -:10EDB0000FE00120F9F719FD0020F9F716FDF9F72A -:10EDC000E4FC01F063F886F82F50A0E00427E4E7A4 -:10EDD00000218DF81810022801D0012820D10398B5 -:10EDE000391901440998081A9DF81C1020F07F4039 -:10EDF00001B10221333181420BD203208DF815007D -:10EE00000398C4F13201401A20F07F40322403906D -:10EE10000CE096F8240018B901F0A8F900284CD0AD -:10EE2000322C03D214B101F025F801E001F02EF8E4 -:10EE3000314A107818B393465278039B121B002175 -:10EE40009DF81840984601281AD0032818D00020B1 -:10EE50008DF81E00002A04DD981A039001208DF819 -:10EE600018009DF81C0000B102210398254A20F0EB -:10EE70007F40039003AB099801F014F810B110E043 -:10EE80000120E5E79DF81D0018B99BF80000032854 -:10EE900012D08DF81C50CDF80C808DF818408DF8EC -:10EEA0001E509DF8180058B103980123C119002283 -:10EEB0001846F9F7EDFC06E000200BB0BDE8F08F36 -:10EEC0000120F9F792FC99F90C2001230020019907 -:10EED000F9F7DEFC012086F82F008AF8285020225E -:10EEE000694611E004070020FF7F841E0020A1076F -:10EEF000588401000405002082000020570501000D -:10EF00001BEC0000FFFF3F00F94808F0FDFF012067 -:10EF1000D3E72DE9F05FDFF8D883064608EB8600DB -:10EF200090F82550202D1FD0A8F180002C4600EB32 -:10EF30008617A0F50079DFF8BCB305E0A24607EB21 -:10EF40004A004478202C0AD0F9F7EEFC09EB0413B0 -:10EF50005A4601211B1D00F0A5FF0028EED0AC424F -:10EF600002D0334652461EE0E34808B1AFF30080BA -:10EF7000F9F7DAFC98F82F206AB1D8F80C20411C78 -:10EF8000891A0902CA1701EB12610912002902DD70 -:10EF90000020BDE8F09F3146FFF7DCFE08B10120FC -:10EFA000F7E733462A4620210420FFF7C5FDEFE7A7 -:10EFB0002DE9F041CE4C2569F9F7B6FC401B000263 -:10EFC000C11700EB1160001200D4FFDF94F822009B -:10EFD00000B1FFDF012784F8227094F82E0020286A -:10EFE00000D1FFDF94F82E60202084F82E00002549 -:10EFF00084F82F5084F8205084F82150BF482560B1 -:10F000000078022833D0032831D000202077A06870 -:10F01000401C05D04FF0FF30A0600120F9F7E5FB60 -:10F020000020F9F7E2FBF9F7DAFCF9F7D2FCF9F77F -:10F03000ACFB08F0A7F9B248056005604FF0E0218D -:10F040004FF40040B846C1F88002F3F721FE94F86F -:10F050002D703846FFF75DFF0028FAD0A4488038AD -:10F0600000EB871010F81600022802D006E00120FD -:10F07000CCE73A4631460620FFF730FD84F823807E -:10F0800004EB870090F82600202804D09B48801EBF -:10F090004078F3F7BDFE207F002803D0F9F78FFCFE -:10F0A0002577657746E50146914810B590F82D2003 -:10F0B0000024803800EB821010F814302BB1641C4F -:10F0C000E4B2202CF8D3202010BD8E4800EB0410B1 -:10F0D000016021460120FFF701FD204610BD10B55B -:10F0E000012801D0032800D171B3814A92F82D3054 -:10F0F0007F4C0022803C04EB831300BF13F81240C6 -:10F100000CB1082010BD521CD2B2202AF6D37B4A83 -:10F1100048B1022807D0072916D2DFE801F015060A -:10F12000080A0C0E100000210AE01B2108E03A2119 -:10F1300006E0582104E0772102E0962100E0B521A5 -:10F1400051701070002010BD072010BD6B4810B525 -:10F150004078F9F756FC80B210BD10B5202811D2C6 -:10F16000634991F82D30A1F1800202EB831414F869 -:10F1700010303BB191F82D3002EB831212F81020C1 -:10F18000012A01D0002010BD91F82D200146002059 -:10F19000FFF7A4FC012010BD10B5F9F7C5FBBDE8D1 -:10F1A0001040F9F72EBC2DE9F0410E46504F017882 -:10F1B0002025803F0C4607EB831303E0254603EB35 -:10F1C00045046478944202D0202CF7D108E0202C2A -:10F1D00006D0A14206D103EB41014978017007E056 -:10F1E0000020A7E403EB440003EB4501407848709E -:10F1F000454F7EB127B1002140F2DA30AFF30080F5 -:10F200003078A04206D127B1002140F2DD30AFF3C3 -:10F210000080357027B1002140F2E230AFF300806A -:10F22000012087E410B542680B689A1A1202D417BD -:10F2300002EB1462121216D4497A91B1427A82B961 -:10F24000324A006852F82110126819441044001D17 -:10F25000891C081A0002C11700EB11600012322845 -:10F2600001DB012010BD002010BD2DE9F0478146D3 -:10F270001F48244E00EB8100984690F8254020203E -:10F28000107006F50070154600EB81170BE000BF0B -:10F2900006EB04104946001DFFF7C4FF28B107EB39 -:10F2A00044002C704478202CF2D1297888F8001082 -:10F2B00013E000BF06EB0415291D4846FFF7B2FF17 -:10F2C00068B988F80040A97B99F80A00814201D802 -:10F2D0000020E6E407EB44004478202CEAD101202A -:10F2E000DFE42DE9FC410E4607460024054D18E0F9 -:10F2F00084070020FFFF3F00000000008200002084 -:10F3000000F50040040500200000000058840100C2 -:10F310009DF8000005EB00108168384600F0D6FD2E -:10F3200001246B4601AA31463846FFF79EFF0028AC -:10F33000EED02046BDE8FC8170B50446FF480125AB -:10F34000A54300EB841100EB8510402208F097FDE7 -:10F35000FB4E26B1002140F25C40AFF30080F7483D -:10F36000803000EB850100EB8400D0F82500C1F867 -:10F37000250026B100214FF48C60AFF300802846B1 -:10F3800070BD2DE9FC418446EC481546089C00EB15 -:10F3900085170E4617F81400012803D0022801D063 -:10F3A0000020C7E70B46E74A0121604600F07AFDDE -:10F3B000A8B101AB6A4629463046FFF756FF70B147 -:10F3C000DE489DF804209DF80010803000EB850693 -:10F3D0008A4208D02B460520FFF7AEFB0BE02A46F9 -:10F3E0002146042014E0202903D007EB4100407897 -:10F3F00001E096F8250007EB440148709DF80000F5 -:10F40000202809D007EB400044702A4621460320FB -:10F41000FFF764FB01208DE706F8254F0120F0700F -:10F42000F3E7C94901EB0010001DFFF7E0BB7CB515 -:10F430001D46134604460E4600F1080221461846B2 -:10F44000F9F7ECFA94F908000F2804DD1F38207250 -:10F450002068401C206096B10220BC4951F826105B -:10F46000461820686946801B20F07F40206094F990 -:10F4700008002844C01C1F2803DA012009E00420EA -:10F48000EBE701AAF9F7CAFA9DF8040010B1009859 -:10F49000401C00900099206831440844C01C20F0B2 -:10F4A0007F4060607CBD2DE9FE430C46064609782E -:10F4B00060799072207998461546507241B19F4804 -:10F4C000803090F82E1020290AD00069401D0BE0F2 -:10F4D000D4E90223217903B02846BDE8F043A6E72A -:10F4E0009B484178701D084420F07F472179002215 -:10F4F0002846A368FFF79BFF3946284600F0E6FC44 -:10F50000D4E9023221796846FFF791FF4146284647 -:10F51000019CFFF7E6FE2B4622460021304600F014 -:10F52000C1FC002803D13146284600F0CFFCBDE8DD -:10F53000FE832DE9FE4F814600F084FC30B10027A8 -:10F5400099F8000020B10020BDE8FE8F0127F7E701 -:10F550007A4D7B4C4FF0000A803524B1002140F2F7 -:10F56000D340AFF3008095F82D8085F823A00026C6 -:10F5700024B100214FF49B60AFF300801FB94046D7 -:10F58000FFF7DAFE804624B100214FF49C60AFF310 -:10F590000080F9F7C9F943466A464946FFF783FFF9 -:10F5A00024B1002140F2E640AFF3008095F82E0030 -:10F5B00020280CD029690098401A0002C21700EBDD -:10F5C0001260001203D5684600F080FC012624B1C9 -:10F5D00000214FF49E60AFF3008095F823000028CF -:10F5E000BBD124B1002140F2F640AFF30080F9F71F -:10F5F0009BF96B46534A002100F054FC0028A3D02D -:10F6000027B941466846FFF76CFE064326B16846B7 -:10F61000FFF7EDFAC9F8080024B1002140F20950C3 -:10F62000AFF3008001208FE72DE9FF5F8A46814616 -:10F6300000F008FC414C803410B39AF80000002719 -:10F6400010B1012800D0FFDF3D4D25B1002140F26F -:10F650007F50AFF300800120A84600905FEA0806C3 -:10F6600004D0002140F28750AFF30080009800F0F2 -:10F67000E0FB94F82D50002084F8230067B119E0D6 -:10F6800094F82E000127202800D1FFDF9AF800000F -:10F690000028D9D0FFDFD7E72846FFF74DFE054603 -:10F6A00026B1002140F29150AFF3008094F823007E -:10F6B0000028D3D126B1002140F29B50AFF3008047 -:10F6C000F9F732F983462B4601AA5146FFF7EBFEC4 -:10F6D0005FEA060804D0002140F2A250AFF3008098 -:10F6E0003B462A4601A95846CDF80090FFF749FE4F -:10F6F000064604EB850090F828B0B8F1000F04D05E -:10F70000002140F2A950AFF3008000F087FB009089 -:10F71000B8F1000F04D0002140F2AF50AFF30080E9 -:10F7200094F82300002899D1B8F1000F04D00021EB -:10F7300040F2B750AFF3008003490BE0040700200C -:10F7400000000000FFFF3F00040500205884010076 -:10F750008200002001EB09100DF1040C00F10400FF -:10F760009CE80E0080E80E004EB35FEA080604D065 -:10F77000002140F2C450AFF300803BEA070012D0F2 -:10F7800094F82E0020280ED126B1002140F2C95055 -:10F79000AFF300802846FFF7BCFB20B99AF80000C1 -:10F7A000D8B3012849D0B8F1000F04D0002140F2AD -:10F7B000E650AFF30080284600F029FB01265FEAFF -:10F7C000080504D0002140F2EF50AFF3008000980C -:10F7D00000F02FFB25B1002140F2F350AFF3008081 -:10F7E0008EB194F82D0004EB800090F826002028BC -:10F7F00009D025B1002140F2FA50AFF30080F9485A -:10F800004078F3F705FB25B1002140F2FF50AFF33C -:10F81000008004B03046BDE8F09FFFE7B8F1000F6C -:10F8200004D0002140F2D150AFF3008094F82D2095 -:10F8300049460420FFF752F9C0E7002E3FF40EAF0F -:10F84000002140F2DC50AFF3008007E72DE9F84FCC -:10F85000E54D814695F82D004FF00008E34C4FF040 -:10F86000010B474624B1002140F20D60AFF3008048 -:10F87000584600F0DEFA85F8237024B1002140F2EA -:10F880001260AFF3008095F82D00FFF755FD064696 -:10F8900095F8230028B1002CE4D000214FF4C36078 -:10F8A0004BE024B1002140F21C60AFF30080CE4851 -:10F8B000803800EB861111F81900032856D1334621 -:10F8C00005EB830A4A469AF82500904201D10120AF -:10F8D00000E0002000900AF125000021FFF763FC02 -:10F8E00001460098014203D001228AF82820AF7710 -:10F8F000E1B324B1002140F22160AFF30080324631 -:10F9000049460120FFF7EAF89AF828A024B100211F -:10F9100040F22C60AFF3008000F080FA834624B1FF -:10F92000002140F23160AFF3008095F8230038B138 -:10F93000002C97D0002140F23560AFF3008091E7B2 -:10F94000BAF1000F07D095F82E00202803D13046D9 -:10F95000FFF7DFFAE0B124B1002140F24960AFF3D4 -:10F960000080304600F053FA4FF0010824B1002126 -:10F9700040F25260AFF30080584600F05AFA24B1CA -:10F98000002140F25660AFF300804046BDE8F88F9A -:10F99000002CF1D0002140F24460AFF30080E6E794 -:10F9A0000020F8F7FBBE0120F8F7F8BE8D4800787C -:10F9B00070472DE9F0418C4C94F82E0020281FD17F -:10F9C00094F82D6004EB860797F82550202D00D180 -:10F9D000FFDF8549803901EB861000EB4500407858 -:10F9E00007F8250F0120F87084F82300294684F8D1 -:10F9F0002E50324602202234FFF770F8002020708B -:10FA00000FE42DE9F0417A4E774C012538B10128F9 -:10FA100021D0022879D003287DD0FFDFF0E700F065 -:10FA200029FAFFF7C6FF207E00B1FFDF84F82150DE -:10FA30000020F8F7DAFEA168481C04D00123002258 -:10FA40001846F8F725FF14F82E0F217806EB011160 -:10FA50000A68012154E0FFF7ACFF0120F8F7C5FE6A -:10FA600094F8210050B1A068401C07D014F82E0F64 -:10FA7000217806EB01110A68062141E0207EDFF8BB -:10FA80006481002708F10208012803D002281ED053 -:10FA9000FFDFB5E7A777F8F792FF98F80000032893 -:10FAA00001D165772577607D524951F8200094F89F -:10FAB000201051B948B161680123091A0022184683 -:10FAC000F8F7E6FE022020769AE7277698E784F892 -:10FAD000205000F0CFF9A07F50B198F80100616884 -:10FAE0000123091A00221846F8F7D2FE257600E015 -:10FAF000277614F82E0F217806EB01110A680021F1 -:10FB0000BDE8F041104700E005E036480078BDE868 -:10FB1000F041F3F77DB9FFF74CFF14F82E0F217871 -:10FB200006EB01110A680521EAE710B52E4C94F89E -:10FB30002E00202800D1FFDF14F82E0F21782C4A48 -:10FB400002EB01110A68BDE81040042110477CB5A2 -:10FB5000254C054694F82E00202800D1FFDFA06830 -:10FB6000401C00D0FFDF94F82E00214901AA01EBD0 -:10FB70000010694690F90C002844F8F74FFF9DF9F2 -:10FB800004000F2801DD012000E000200099084456 -:10FB90006168084420F07F41A16094F821000028AA -:10FBA00007D002B00123BDE8704000221846F8F7E4 -:10FBB0006FBE7CBD30B5104A0B1A541CB3EB940FCA -:10FBC0001ED3451AB5EB940F1AD3934203D9101ADA -:10FBD00043185B1C14E0954210D9511A0844401C8C -:10FBE00043420DE080000020840700200000000058 -:10FBF0000405002058840100FF7F841EFFDF0023DE -:10FC0000184630BD0123002201460220F8F740BE0D -:10FC10000220F8F7EABDF8F787BE2DE9FC47B14CA2 -:10FC2000054694F82E00202800D1FFDF642D58D31C -:10FC3000AD4A0021521B71EB010052D394F82E20E3 -:10FC4000A0462046DFF8A49290F82D7009EB02142C -:10FC5000D8F8000001AA28446946F8F7DFFE9DF9AC -:10FC60000400002802DD0098401C0090A068009964 -:10FC700062684618B21A22F07F42B2F5800F30D285 -:10FC800008EB8702444692F82520202A0AD009EB87 -:10FC900002125268101A0002C21700EB1260001222 -:10FCA00088421EDBA068401C10D0F8F73DFEA1681A -:10FCB000081A0002C11700EB11600012022810DDC3 -:10FCC0000120F8F792FD4FF0FF30A0602068284433 -:10FCD000206026F07F402061012084F82300BDE8E9 -:10FCE000FC870020FBE72DE9F0477E4C074694F89F -:10FCF0002D00A4F1800606EB801010F8170000B963 -:10FD0000FFDF94F82D50A046794C24B1002140F635 -:10FD10006500AFF3008040F6710940F67A0A06EB01 -:10FD2000851600BF16F81700012818D0042810D037 -:10FD300005280ED006280CD01CB100214846AFF390 -:10FD4000008020BF002CEDD000215046AFF3008092 -:10FD5000E8E72A4639460120FEF7C0FEF2E74FF0F9 -:10FD6000010A4FF00009454624B1002140F6810008 -:10FD7000AFF30080504600F05CF885F8239024B182 -:10FD8000002140F68600AFF3008095F82D00FFF7C4 -:10FD9000D3FA064695F8230028B1002CE4D00021C0 -:10FDA00040F68C001FE024B100214FF40960AFF34E -:10FDB000008005EB860000F1270133463A462630E5 -:10FDC000FFF7F1F924B1002140F69400AFF3008071 -:10FDD00000F024F8824695F8230038B1002CC3D0F7 -:10FDE000002140F69A00AFF30080BDE785F82D6052 -:10FDF000012085F82300504600F01BF8002C04D0A9 -:10FE0000002140F6A700AFF30080BDE8F087354938 -:10FE100081F82D00012081F82300704710B5354886 -:10FE200008B1AFF30080EFF3108000F0010072B66C -:10FE300010BD10B5002804D12F4808B1AFF30080E1 -:10FE400062B610BD2D480068C005C00D10D0103836 -:10FE500040B2002806DA00F00F0000F1E02090F830 -:10FE6000140D03E000F1E02090F800044009704711 -:10FE70000820704710B51B4C94F82400002804D1CA -:10FE8000F8F72EFE012084F8240010BD10B5154CA3 -:10FE900094F82400002804D0F8F74BFE002084F8E2 -:10FEA000240010BD10B51C685B68241A181A24F0D1 -:10FEB0007F4420F07F40A14206D8B4F5800F03D2E2 -:10FEC000904201D8012010BD002010BDD0E90032C1 -:10FED000D21A21F07F43114421F07F41C0E9003163 -:10FEE0007047000084070020FF1FA10704050020C1 -:10FEF00000000000000000000000000004ED00E031 -:10FF00002DE9F041044680074FF000054FF001064F -:10FF100004D55C480560066024F00204E0044FF05C -:10FF2000FF3705D558484660C0F8087324F480545C -:10FF3000600003D55548056024F08044E0050FD5E6 -:10FF40005348C0F80052C0F8087352490D60091DAB -:10FF50000D60504A04210C321160066124F4807453 -:10FF6000A00409D54C484660C0F80052C0F8087398 -:10FF70004A48056024F40054C4F38030C4F3C0310F -:10FF8000884200D0FFDF14F4404F14D0444846604C -:10FF9000C0F8087343488660C0F80052C0F8087380 -:10FFA00041490D600A1D16608660C0F808730D6037 -:10FFB000166024F4404420050AD53C48466086601B -:10FFC000C0F80873C0F848733948056024F4006429 -:10FFD00007F0B2F93748044200D0FFDFBDE8F081F6 -:10FFE00070B520250022134620FA02F1C90719D066 -:10FFF00051B201F01F060124B4404E09B60006F1CB -:020000040001F9 -:10000000E026C6F88041C6F88042002906DA01F0F1 -:100010000F0101F1E02181F8143D03E001F1E0213D -:1000200081F80034521CAA42DED370BD70B5224C58 -:100030000D462060FFF764FF2068FFF7D1FF2846D8 -:10004000F8F72BFE06F0EEFD00F0DDF807F074F98E -:1000500007F0BFF8F2F7AEFEBDE8704006F090BEC4 -:1000600010B5154C2068FFF74BFF2068FFF7B8FF6D -:1000700007F062F9F8F7A4FE0020206010BD0A2006 -:1000800070470000FC1F004000C0004004E5014034 -:10009000008000400485004000D0004004D50040AE -:1000A00000E0004000F0004000F5004000B00040DB -:1000B00008B50040FEFF0FFD8400002070B5264902 -:1000C0000A680AB30022154601244B685B1C4B608A -:1000D000092B00D34D600E7904FA06F30E681E4218 -:1000E0000FD0EFF3108212F0010272B600D001229D -:1000F0000C689C430C6002B962B64968016000203C -:1001000070BD521C092AE0D3052070BD4FF0E021DC -:100110004FF48000C1F800027047EFF3108111F036 -:10012000010F72B64FF0010202FA00F20A480368AA -:1001300042EA0302026000D162B6E7E70648002106 -:100140000160416070470121814003480068084018 -:1001500000D00120704700008800002001208107A6 -:1001600008607047012081074860704712480068A6 -:10017000C00700D0012070470F48001F0068C0076B -:1001800000D0012070470C4808300068C00700D03C -:1001900001207047084810300068704706490C314C -:1001A0000A68D20306D5096801F00301814201D132 -:1001B00001207047002070470C0400402DE9F041F9 -:1001C00015460E460446002700F0E7F8A84215D36E -:1001D000002341200FE000BF94F84220A25CF254BB -:1001E00094F84210491CB1FBF0F200FB12115B1CA9 -:1001F00084F84210DBB2AB42EED3012700F0D9F80D -:100200003846BDE8F081704910B5802081F80004BF -:100210006E49002081F8420081F84100433181F8A5 -:10022000420081F84100433181F8420081F84100E9 -:10023000674806F017FF6648401C06F013FFF2F708 -:1002400033FDBDE8104000F0B4B8402070475F486F -:1002500000F0A3B80A4601465C48AFE7402070476B -:100260005A48433000F099B80A460146574843308F -:10027000A4E7402101700020704710B504465348A0 -:10028000863000F08AF82070002010BD0A46014632 -:100290004E4810B58630FFF791FF08B1002010BD21 -:1002A00042F2070010BD70B50C460546412900D941 -:1002B000FFDF48480068103840B200F050F8C6B27E -:1002C0000D2000F04CF8C0B2864203D2FFDF01E0FF -:1002D000F2F732FD224629463C48FFF76FFF00281F -:1002E000F6D070BD2DE9F041394F002506463F1D7F -:1002F00057F82540204600F041F810B36D1CEDB2D0 -:10030000032DF5D33148433000F038F8002825D0CC -:100310002E4800F033F8002820D02C48863000F01A -:100320002DF800281AD0F2F7E5FC294806F0A2FEC5 -:10033000B0F5005F00D0FFDFBDE8F041244806F0D3 -:10034000AFBE94F841004121265414F8410F401CDF -:10035000B0FBF1F201FB12002070D3E751E7002857 -:1003600006DA00F00F0000F1E02090F8140D03E031 -:1003700000F1E02090F800044009704710F8411F98 -:100380004122491CB1FBF2F302FB13114078814278 -:1003900001D1012070470020704710F8411F4078BC -:1003A000814201D3081A02E0C0F141000844C0B202 -:1003B000704710B5064806F05DFE002803D1BDE881 -:1003C0001040F2F782BC10BD0DE000E0B407002041 -:1003D0009000002004ED00E02DE9F0410125280304 -:1003E0004FF0E0210026C1F880011E4CC4F80061E6 -:1003F0000C2000F02CF81C4801680268C94341F346 -:10040000001142F010020260C4F804532560491C38 -:1004100000E020BFD4F80021002AFAD019B9016801 -:1004200021F010010160114807686560C4F80853A5 -:10043000C4F800610C2000F00AF83846BDE8F081ED -:1004400010B50446FFF7C8FF2060002010BD00F083 -:100450001F02012191404009800000F1E020C0F816 -:100460008012704700C0004010ED00E008C5004059 -:100470002DE9F047FF4C0646FF21A06800EB06126D -:1004800011702178FF2910D04FF0080909EB0111F4 -:1004900009EB06174158C05900F0F4F9002807DDB0 -:1004A000A168207801EB061108702670BDE8F0877E -:1004B00094F8008045460DE0A06809EB051141580D -:1004C000C05900F0DFF9002806DCA068A84600EB60 -:1004D00008100578FF2DEFD1A06800EB061100EBA6 -:1004E00008100D700670E1E7F0B5E24B04460020FD -:1004F00001259A680C269B780CE000BF05EB0017DD -:10050000D75DA74204D106EB0017D7598F4204D01C -:10051000401CC0B28342F1D8FF20F0BD70B5FFF798 -:100520007AFBD44C08252278A16805EB0212895881 -:1005300000F0A8F9012808DD2178A06805EB011179 -:100540004058BDE87040FFF75DBBFFF72FFABDE8EC -:100550007040F2F75DBC2DE9F041C64C2578FFF7FD -:100560005AFBFF2D6ED04FF00808A26808EB051665 -:10057000915900F087F90228A06801DD80595DE0FB -:1005800000EB051109782170022101EB0511425C95 -:100590005AB1521E4254815901F5800121F07F4128 -:1005A00081512846FFF764FF34E00423012203EB66 -:1005B000051302EB051250F803C0875CBCF1000F75 -:1005C00010D0BCF5007F10D9CCF3080250F806C05B -:1005D0000CEB423C2CF07F4C40F806C0C3589A1AF2 -:1005E000520A09E0FF2181540AE0825902EB4C32A1 -:1005F00022F07F428251002242542846FFF738FF02 -:100600000C21A06801EB05114158E06850F8272043 -:10061000384690472078FF2814D0FFF7FCFA22785C -:10062000A16808EB02124546895800F02BF9012811 -:1006300093DD2178A06805EB01114058BDE8F04139 -:10064000FFF7E0BABDE8F081F0B51D4614460E464E -:100650000746FF2B00D3FFDFA00700D0FFDF854850 -:10066000FF210022C0E90247C57006710170427087 -:1006700082701046012204E002EB0013401CE1549A -:10068000C0B2A842F8D3F0BD70B57A4C0646657882 -:100690002079854200D3FFDFE06840F8256060786C -:1006A000401C6070284670BD2DE9FF5F1D468B46DB -:1006B0000746FF24FFF7AFFADFF8B891064699F82E -:1006C0000100B84200D8FFDF00214FF001084FF0D1 -:1006D0000C0A99F80220D9F808000EE008EB011383 -:1006E000C35CFF2B0ED0BB4205D10AEB011350F8BF -:1006F00003C0DC450CD0491CC9B28A42EED8FF2C9D -:1007000002D00DE00C46F6E799F803108A4203D1B7 -:10071000FF2004B0BDE8F09F1446521C89F8022067 -:1007200008EB04110AEB0412475440F802B004210C -:10073000029B0022012B01EB04110CD040F8012098 -:100740004FF4007808234FF0020C454513D9E90512 -:10075000C90D02D002E04550F2E7414606EB4132B6 -:1007600003EB041322F07F42C250691A0CEB04120F -:10077000490A81540BE005B9012506EB453103EB2D -:10078000041321F07F41C1500CEB0411425499F83D -:1007900000502046FFF76CFE99F80000A84201D0F7 -:1007A000FFF7BCFE3846B4E770B50C460546FFF7C8 -:1007B00032FA064621462846FFF796FE0446FF28F1 -:1007C0001AD02C4D082101EB0411A868415830467D -:1007D00000F058F800F58050C11700EBD1404013ED -:1007E0000221AA6801EB0411515C09B100EB412020 -:1007F000002800DC012070BD002070BD2DE9F0470D -:1008000088468146FFF770FE0746FF281BD0194D2A -:100810002E78A8683146344605E0BC4206D026460C -:1008200000EB06121478FF2CF7D10CE0FF2C0AD055 -:10083000A6420CD100EB011000782870FF2804D0EC -:10084000FFF76CFE03E0002030E6FFF7E1F94146D8 -:100850004846FFF7A9FF0123A968024603EB0413EA -:10086000FF20C854A878401EB84200D1A87001EB00 -:10087000041001E08008002001EB061100780870E8 -:10088000104613E6081A0002C11700EB11600012AF -:100890007047000070B50446A0F500002D4EB0F181 -:1008A000786F02D23444A4F500042B48844201D26C -:1008B000012500E0002500F043F848B125B9B44215 -:1008C00004D32648006808E0012070BD002070BDF8 -:1008D000002DF9D1B442F9D321488442F6D2F3E78E -:1008E00010B50446A0F50000B0F1786F03D21948A6 -:1008F0000444A4F5000400F023F84FF0804130B127 -:100900001648006804E08C4204D2012003E0144839 -:100910008442F8D2002080F0010010BD10B520B153 -:10092000FFF7DEFF08B1012010BD002010BD10B59B -:1009300020B1FFF7AFFF08B1012010BD002010BDAE -:10094000084809490068884201D101207047002009 -:1009500070470000000000200090010020000020EF -:1009600008000020A4000020BEBAFECA0348044AC2 -:100970000168914201D1002101607047A40000206C -:10098000BEBAFECA45480021017041701021817035 -:10099000704770B5054616460C460220F2F739F945 -:1009A0003E490120F61E08703D4806603C48083864 -:1009B0000560001F046070BD10B50220F2F729F930 -:1009C00036490120087000F051F836494FF4000014 -:1009D000086010BD10B5314C207888B131494FF412 -:1009E0000000091D086000F04AF8002120B1012034 -:1009F00060702D48006801E061701020A0702170C7 -:100A0000BDE810400020F2F704B9244810B5017881 -:100A100059B12648D0F8000128B100F030F800287C -:100A200000D0012010BD022010BD407810BD10B5CF -:100A3000C824641EE4B2FFF7E8FF022803D00128AF -:100A400000D0002010BD002CF3D1FFDFF9E71348E0 -:100A500010B5017841B100F012F818B112480068E1 -:100A6000C0B210BD102010BD807810BD0F4800210D -:100A7000C0F80011C0F80411C0F8081170470B4805 -:100A8000D0F8001129B1D0F8041111B1D0F8080143 -:100A900008B100207047012070470000A800002026 -:100AA00010F5004004F5014000F4004000F0004063 -:100AB0004548002101704170704770B506461446E4 -:100AC0000D460120F2F7A5F840480660001D0460BD -:100AD000001D056070BD70B53B4B012540EA024228 -:100AE0001D703A4B1B1F1A60384A10321160384C87 -:100AF0000026C4F80461374A4FF04071116058B1C4 -:100B0000012800D0FFDFC4F80062256031494FF0B2 -:100B10000070091F086070BDC4F80052256070BDE8 -:100B20002948017871B12B4A4FF040711160284972 -:100B3000D1F8042100211AB1274A1268427000E05E -:100B4000417001700020F2F764B81F48017841B18C -:100B50001F48D0F80401002802D01F480068C0B226 -:100B600070474078704770B5002827D01648007845 -:100B700000B9FFDF1648D0F8041100291ED1022366 -:100B8000C0F8043315490A680C68D24342F30012D6 -:100B900044F010040C609C034FF0E025521C02E06E -:100BA000C5F8804220BFD0F80461002EF8D01AB9F1 -:100BB0000A6822F010020A60C0F8083370BD0449C8 -:100BC0000120886070470000AB00002008F500405D -:100BD00000F0004008F5014000F4004010ED00E096 -:100BE000FA4808B50021C0F80011C0F80C11C0F88F -:100BF0001011C0F80411C0F81411C0F81811F4480D -:100C00000068009008BD70B5F24D00246C702C7027 -:100C100000F02FFD85F82140AC62092105F1140098 -:100C20006C6307F0CDF9EC49601E0860091D08608F -:100C3000091D0C60091D0860091D0C60091D086074 -:100C4000091D0860091D0860091D0860091D08606C -:100C5000091D0860091D0860091D0860091D08605C -:100C600070BDDE4800B5016801F00F01032905D011 -:100C7000006800F00F00042802D0FFDF012000BD53 -:100C8000022000BD70B5D3490268D54C4A61426864 -:100C90008A61007A08770C3C0A7DD14B251F012020 -:100CA00042B10E7E00FA06F21A608E7D0EB122600D -:100CB00000E02A604A7D002A05D04A7E90401860F4 -:100CC000C97D09B1206070BD286070BD00F0D8BC3E -:100CD00010B500F0D5FCBD48D0F80001002800D0C8 -:100CE000FFDF10BD10B5012000F0ADFCBD480024B1 -:100CF000046001210160B94A40F25B602832106053 -:100D0000121F40F203101060101F0160B34903204E -:100D10000860B249962034310860B449B24808608E -:100D2000B249B3489C310860A9480838091F0860D7 -:100D3000012000F093FCA5491020C1F80403A54848 -:100D400080F82D4010BDA34A0368C2F802308088A5 -:100D5000D080117270479F4890F8210070479D4ADB -:100D6000517010707047F0B50546840097488B8825 -:100D70002044C0F820360B78D1F8011043EA012155 -:100D8000C0F8001605F1080001279A4C07FA00F692 -:100D900052B1012A00D0FFDF206830432060206874 -:100DA000AF4038432060F0BD2068B043F6E706F05E -:100DB000FBBB884890F82E007047884AC1781432EF -:100DC00011600068854900020C31086070472528D1 -:100DD00007D0262807D0272807D00A2807D80422BA -:100DE00006E0022107E01A2105E0502103E0062277 -:100DF00002EB4001C9B2794A083A1160774944319F -:100E0000086070477348817A012915D0022912D1F0 -:100E1000417D00290FD0827E0121C37E01FA02F2BA -:100E200099400A4371490A60007F734A002102EB2E -:100E30008000C0F810157047017DEAE72DE9F04702 -:100E400082466448847A012C10D0022C7DD1437DE7 -:100E5000002B7AD0694BDFF8A8914FF47A77012CF8 -:100E600006D0467EC47D7CB3012535E0037DEFE7E7 -:100E7000067E847D0CB1012500E000254FF4C86496 -:100E800040F6980C40F6E44801290ED0022A1CD006 -:100E9000012A03D0042A1BD05A4B4446191901F5E4 -:100EA000FA7100BFB1FBF7F123E0022A08D0012A52 -:100EB00002D0042A06D0444649F6FC612144F1E7F9 -:100EC0003C46F9E76446F7E705E04F4B3C46E5E76B -:100ED0004B466446E2E70025012940D0022A40D073 -:100EE000012A02D0042A3FD0484B03F2E143B3FB6E -:100EF000F7F1474A491F514411603D4A0021403AE9 -:100F0000C2F84C11310285F0010241EA025141F070 -:100F10000313027F384901EB8204C4F81035847E44 -:100F20003C4D01EB820305EBC401C1F814353A4A8C -:100F3000C1F81025C27E05EBC200C0F81435244963 -:100F40000839C0F81015012000E006E000FA04F1AD -:100F5000904001432548001F0160BDE8F08729212A -:100F6000C7E7294B643BC0E74B46BEE72DE9F0419C -:100F70000F461649054603201646C1F800021B4CD1 -:100F80002648241F2060384606F046FB304606F00F -:100F900035FB104815B1012D09D011E001218172F6 -:100FA000416B41F4801141634FF4801007E002214E -:100FB0008172416B41F4001141634FF400102060D5 -:100FC00032463946BDE8F041002037E700100040C6 -:100FD0001811004090080020000E0040101500403D -:100FE00018050050FC1F004000000C0408F50140EB -:100FF000408000404016004000600040A2240200F3 -:10100000D0FB010030D3010068360200C0D40100DB -:101010004C85004000F001404C8100400000040479 -:1010200008B5FF208DF80000F8480021C0F8101125 -:101030000121016105E000BF9DF80010491E8DF8F7 -:1010400000109DF8001019B1D0F810110029F3D04C -:101050009DF80000002800D1FFDF08BD2DE9FF5FEB -:10106000EA4E0746002503209B468946C6F8000243 -:10107000DFF8A083E649C8F80010029806F0CCFA21 -:10108000584606F0BBFAE348E34CA8304FF0010A9B -:1010900017B1012F1DD02EE0066094F82D00012815 -:1010A00005D002280BD0FFDF84F80AA023E094F8D3 -:1010B0002C205B464846029906F02CFB06E094F88B -:1010C0002C305A464846029906F0B3FAA16A4518F0 -:1010D000EAE7CE49091D016094F82D0094F82C2010 -:1010E000012802995B4648463BD006F05CFBA16AAA -:1010F00045180220A072C9480560C649C848A431F5 -:101100000860606B40F400206063D6F80072102421 -:10111000C6F808430020C6F80002BE494FF48029F3 -:10112000091DC1F8009006F50076FFF779FFFFF77B -:1011300057FD3760C8F80090C6F80441E103C8F8CD -:101140000010B849C1F84CA0B448001D0068A8427E -:1011500000D3FFDF029904B05A462846BDE8F05F8D -:101160006CE606F0A3FAC2E72DE9F041A74CD4F8EB -:10117000000220F00B06D4F804031027C0F300157A -:10118000C4F808734FF00008C4F80082A149A648CB -:10119000091D086004F50074FFF734FEFFF740FFF7 -:1011A00044F8F08C00F065FA2660A4F50074002D78 -:1011B00001D0C4F80473BDE8F08100689B4920F0B9 -:1011C0007F400860704710B5012000F03CFABDE890 -:1011D0001040012000F042BA4FF0E0210220C1F897 -:1011E000000170479249087070479049383908608B -:1011F000704770B5884D0446A86AA04200D3FFDF4F -:1012000001202873874900202C61C1F844018348DC -:10121000001F0460BDE8704000F048BA70B57E4C15 -:10122000064602200D462073FFF71BFD024694F888 -:101230002D0094F82C1001280ED0304606F00BFB40 -:10124000784920610020C1F844012169A06A08445E -:101250007249091F086070BD2B46304606F0CBFA74 -:10126000EEE76C494FF48000091D08606A48416B45 -:1012700021F4800141630021017370476E4A10B56B -:1012800002EBC0026B4BC2F81035C2F814150121F5 -:101290008140604801606048426B0A43426310BD70 -:1012A000604801214160C1600021C0F844115B48E1 -:1012B000001F01605848816270475C492431086012 -:1012C0005248D0F8001241F04001C0F800127047B7 -:1012D0004E48D0F8001221F04001C0F800125349E6 -:1012E00000202431086070474848D0F8001221F0EF -:1012F0001001C0F8001201218161704743480021AC -:10130000C0F81C11D0F8001241F01001C0F8001212 -:1013100070473E4908B5D1F81C21012A01D00020B0 -:1013200008BD424A0C32126802F07F02524202703B -:101330000020C1F81C013F481830006800900120CF -:1013400008BD30B50C00054600D1FFDFE00702D034 -:10135000012C00D0FFDF55B102212F480129417235 -:10136000C4722A4805D0022908D0FFDF30BD012110 -:10137000F3E7D0F8001241F0040103E0D0F80012C6 -:1013800041F00801C0F8001230BD70B5224C1F4B6F -:101390002246E17A527A8D074FF0010603D5850780 -:1013A00001D5450713D4CD0605D594F82F5015B1B6 -:1013B00094F831505DB10D0702D594F8205035B93D -:1013C000490702D594F8211009B1C00703D082B1B2 -:1013D000BDE87040C8E662B10025012A2ED0022A7D -:1013E0003CD0FFDFA06A01222844BDE87040002104 -:1013F00024E508490648091D0860D3F8000220F0DA -:101400000300C3F80002E67270BD00000010004047 -:101410000000040404F501409008002048850040C5 -:10142000488100400080004000000C043C15004052 -:10143000AD0000200411004000F00140D3F800028C -:1014400020F00400C3F8000200F013F90123A67293 -:101450001A460021962006F0ECF80FE0D3F80002BF -:1014600020F00800C3F8000200F003F90220A07287 -:1014700001231A460021962006F018F90546B1E727 -:101480002DE9F047BF4F3878042800D3FFDFDFF89D -:10149000F8A2DAF84C0108B1FFF7B4FCBB4CBC4928 -:1014A000606B08600026666300F00BF9DFF8E482E9 -:1014B0000546D8F800006062A8F104000068A06248 -:1014C000FFF7CFFB84F82C00A07ADFF8CC9284F8E9 -:1014D0002D00022808D1607830B1D9F800100978C1 -:1014E0000140207888430ED084F82060A80706D5F4 -:1014F0003978AA4A4908606A52F821108847E807F3 -:1015000005D000210AE0012084F82000EEE7A807BA -:1015100001D5012102E0280707D502219F4A3B7827 -:101520004832A06A52F8232090473878C0071DD16E -:10153000D9F800104846097801F00F01072913D2A5 -:1015400001680622A01C093106F06DFC40B9217A21 -:10155000D9F800000078B1EBD01F01D1012000E0E4 -:10156000002084F8210001E084F821602846FFF77C -:101570000CFFE80702D08948083014E0A80709D515 -:1015800086483978183050F8211045F38000401C07 -:1015900088470EE0280702D58048283003E0E80697 -:1015A00006D57E483830397850F82100804700E071 -:1015B000FFDFA07A022819D1207B002816D0CAF8B4 -:1015C000446102280ED0012800D0FFDFA16A206903 -:1015D000884200D8FFDF2169C8F80010BDE8F04755 -:1015E00000F064B82169A06A0144F5E7B5E400B5EC -:1015F000012802D0022802D0FFDF282000BD1820D9 -:1016000000BD10B541F6A474012802D0022802D012 -:10161000FFDF204610BD41F2883010BD10B541F209 -:10162000D474012802D0022802D0FFDF204610BD6A -:1016300041F2040010BD00B5012802D0022800D0FC -:10164000FFDF002000BD00F01F0201219140400992 -:10165000800000F1E020C0F88011704700F01F0208 -:10166000012191404009800000F1E020C0F8801283 -:10167000704746480021417281720121C172704752 -:1016800030B500240546012902D002290BD0FFDF26 -:1016900043480443404810300460424805433E48F4 -:1016A0001430056030BD4FF08074F1E73748416B6E -:1016B00041F48001416336494FF48000091F0860FE -:1016C0007047F8B5314C304E0020217B19B1D6F867 -:1016D0004411012907D00023A27A3349012A04D0FA -:1016E000022A0AD019E00123F6E7D1F80C010128FB -:1016F00001D0002011E008200FE0D1F80C010128F2 -:1017000006D0002229480068012803D0042002E006 -:101710000222F7E7002010431843D1F81021012AD4 -:101720002ED0002505432248026812F0FF0F03D097 -:10173000D1F81421012A00D0002284F82E2000685C -:1017400010F0FF0F03D0D1F81801012800D00020BD -:1017500084F82F0015481030006884F83000FFF737 -:1017600054F9012800D0002084F83100FFF738FA3E -:101770000020C6F844010F48006800902846F8BDD4 -:101780001025CFE7AD000020008000409008002029 -:1017900008F50140448500400415004070840100B4 -:1017A0000801100000000302001000400014004077 -:1017B000401600404481004010B54348222106F005 -:1017C000DDFB41480024017821F010010170012166 -:1017D00005F00FF93C494FF6FF70263981F8224099 -:1017E00088843A490880488010BDE5E7704700F0DA -:1017F0005FB8354901607047344908807047324905 -:1018000026398A8CA2F57F43FF3B02D0002101607C -:1018100008E091F822202C492639012A02D00160E3 -:1018200001207047002070472748263810F8221FF3 -:10183000012908D001210170244823492639008854 -:1018400088840120704700207047204948807047F5 -:101850001D491E4B26398A8C5B889A4205D191F826 -:10186000222012B101600120704700207047164805 -:10187000164A2638818C5288914209D14FF6FF7161 -:10188000818410F8221F19B10021017001207047D6 -:10189000002070470C480D4A2638818C52889142AE -:1018A00004D190F8220008B1002070470120704751 -:1018B000054926398A8C824205D1002081F8220010 -:1018C0004FF6FF7088847047EE080020AE000020BD -:1018D00070473C4A012338B1012804D113700868CD -:1018E000906088889081704753700868C2F8020041 -:1018F0008888D0807047334A10B1012807D00EE0A5 -:10190000507860B1D2F802000860D08804E0107806 -:1019100028B1906808609089888001207047002075 -:101920007047284910B1012802D005E0487800E04E -:10193000087808B1012070470020704730B50C4688 -:1019400005468DB04FF0030104F1030012B1FEF71C -:101950008BFC01E0FEF7A7FC60790D2120F0C000B0 -:1019600040F04000607104A806F02AFBE0788DF892 -:101970001F0020798DF81E0060798DF81D0010225F -:101980002946684606F07BFA684605F0E5F99DF8B9 -:101990002F0020709DF82E0060709DF82D00A07023 -:1019A0000DB030BD10B5002904464FF0060102D03D -:1019B000FEF75AFC01E0FEF776FC607920F0C000EB -:1019C000607110BDB2000020FE4A137882F8EF303B -:1019D000A2F8F00082F8EE10012082F8EC0092F8F4 -:1019E000C00008B192F8BC0082F8F200704770B5F0 -:1019F000F54E0446316891F8FA00002501280DD013 -:101A000091F8F400012818D091F8CA0001281ED0DE -:101A100091F8EC00012838D0002070BD65701720C7 -:101A2000207051F8FB0FC4F802004868C4F80600A3 -:101A3000087AA07201F8015C32E065700520207020 -:101A4000D1F8F600C4F8020081F8F45028E065707F -:101A5000112020702022A01CCC3106F010FA0121A8 -:101A6000A171306880F8CA50D648B0F8CE20A0F8EE -:101A7000F6207268537B80F8F83080F8F4101088F4 -:101A8000FBF78CFBFBF751F80AE065701320207020 -:101A900051F8EE0FC4F802008888E08001F8025C7B -:101AA000012070BDC848006890F8CA1011B1B0F8A4 -:101AB000CE0070474FF6FF70704770B5C24C20687B -:101AC00000B9FFDF2068417811B10C25284670BDB0 -:101AD00000254FF4827106F073FA2168FF20087028 -:101AE0007F2081F8360013204884282081F8C80020 -:101AF000012081F8B800002081F8BB00FFF7E8FB67 -:101B0000FEF768FFB14804F0E1FEB048283004F069 -:101B1000DDFEAE48503004F0D9FED7E710B5AA4C30 -:101B2000206800B9FFDF216800204870FFF7C5FF7B -:101B3000002800D0FFDF10BDA34909680978814261 -:101B400001D101207047002070479F4800B501680F -:101B500091F82400498CC0F38002C0F340031A447A -:101B600000F001001044132915D004DC102909D01D -:101B7000122904D10FE0152908D01D2904D0FFDF58 -:101B8000002000BD924903E0924800BD9049083111 -:101B900031F8100000BD8E490839F9E78A4840F253 -:101BA00071210068806A484370478748006890F850 -:101BB0003500002800D00120704710B5814C207BF3 -:101BC00000F024FE40B1207D04F1150104F04BFA31 -:101BD000082801D0012010BD207B30B1022804D09C -:101BE0000120BDE81040FFF79CBE0020F9E77649D0 -:101BF000096881F83000704770B50546714890F863 -:101C00002D0004F045FA040018D0102104F031FC36 -:101C1000002813D16C4E01202A463168C876204630 -:101C20001C31FFF78BFE316868481C3104F07BFEE5 -:101C3000BDE870400121654804F084BE70BD2DE907 -:101C4000F041604C074694F82D0004F017FA064660 -:101C500094F82F0004F10E0528B126B1102130466A -:101C600004F007FCA0B194F83000002824D094F8C8 -:101C70002E00002820D0607B294600F0D8FDA8B1B6 -:101C800004F0ABFA3A462946BDE8F041FFF756BEEC -:101C9000012060733A4629463046FFF74FFE94F81C -:101CA0002D102846BDE8F04104F081BA3946284697 -:101CB000BDE8F041FFF776BEBDE8F08170B5424C5B -:101CC0002168087BB0B1022814D0012048730E317E -:101CD000FFF711FE2068007B00F098FD216881F875 -:101CE0002F00082081F82D00487B0E3100F096FD72 -:101CF00040B901E00020E9E72168487B0E3100F09F -:101D000096FD00B10120216881F82E0091F82F0086 -:101D100018B991F82200400706D5087D153104F066 -:101D2000A2F9216881F82D00206800254560FDF7A3 -:101D300033FA216888600020FFF781FF2068C576AC -:101D400090F82200400703D5BDE87040002053E71B -:101D500070BD78B51B4904461B4D407B08732A684B -:101D6000207810706088ADF8000080B200F00101AA -:101D7000C0F3400341EA4301C0F3800341EA830119 -:101D8000C0F3C00341EAC301C0F3001341EA0311E9 -:101D9000C0F3401341EA4311C0F3801041EA8010C0 -:101DA0005084E07D012830D0022830D0FFDF286841 -:101DB00080F8BA60217B80F82410418C1D2928D03E -:101DC000616809E010090020C0000020140A00200A -:101DD000D8840100F18913008162617D80F835109B -:101DE000A17BC1B1022916D00121017554F80F1F42 -:101DF000C0F81510A188A0F81910217B012900D086 -:101E0000002180F83410002078BD0126CFE702269B -:101E1000CDE70021D5E70021E7E7FE48006890F80C -:101E20002200400701D50020704701207047F94A81 -:101E300010B512680023C2F8BC30548C1D2C0BD096 -:101E400079B1936A40F2712463431944491EB1FB8E -:101E5000F3F1C2F8C41006E0C2F8C43082F8C03012 -:101E600010BDC2F8C43082F8C00010BD0346E94876 -:101E700010B50168D1F8C4204AB1D1F8BC4034B1E2 -:101E80009A4206D90124D01AC1F8C4000EE00124F8 -:101E90000CE091F822100024C90703D040684321C8 -:101EA000008801E043210020FFF78EFD204610BD91 -:101EB000D848006890F8B70008B1002070470120AA -:101EC000704770B51F2801D2044600E01F24D14D91 -:101ED0000022286880F8B9202246783005F0CFFF2C -:101EE0002868012180F8974080F8B91070BD10B5BE -:101EF0001F2800D31F20C74CC2B20023206880F8DF -:101F0000B83080F8B720983005F0B9FF216801207B -:101F100081F8B80010BDBF49096881F8BB0070475F -:101F2000BC48006890F8220000F001007047B948F2 -:101F3000006890F82200C0F340007047002070470E -:101F4000B448006890F82200C0F3C0007047012038 -:101F50007047012070470120704770B500F085FC84 -:101F6000AC4C206850F8BC1F491C016010F8890C6B -:101F7000002530B1FFF7ACF9FEF72CFD206880F8A2 -:101F800033502068457090F8C01089B1D0F8BC205B -:101F900091420DD8022001F09DFA206890F82200AD -:101FA000C00703D060684321008816E043211BE08E -:101FB000D0F8C41019B1D0F8BC20914202D990F8E1 -:101FC0003700A8B1022001F085FA206890F82200BD -:101FD000C00708D060683C210088FFF7F5FCBDE829 -:101FE000704000F038BC3C21BDE870400020EBE4BC -:101FF000BDE87040002001F06DBA10B501280DD089 -:1020000002280DD004280FD0FFDF8248006890F826 -:10201000BA10BDE810402520FEF758BE252000E08C -:102020002620FEF7D4FEF0E72720FAE7024600203C -:10203000D30701D0CB0705D0930705D58B0703D471 -:1020400002207047012070475207FCD54907FAD497 -:10205000042070472DE9F0416E4C206800B9FFDF85 -:1020600020684178B1BB0178FF2934D0002580F881 -:102070003150857080F837502846FFF7B3F8FEF7E7 -:1020800031FE206890F9BB00FEF791FE6248FEF732 -:1020900094FE6148C01EFFF790F82068002190F878 -:1020A0002400FFF7C3FFFFF7A8FF206880F82C503B -:1020B000FFF792F82068002190F8BA200846FEF752 -:1020C00055FF0F210520FEF74AFE206890F82E10DC -:1020D00051B902E0FFE70C20EEE590F82F1019B996 -:1020E00090F8220040072AD5FDF756F806462068EA -:1020F00031468068FDF75EFD484990FBF1F701FB32 -:10210000170041423046FCF750FD014620688160CF -:1021100041683944416003F0A2FF014620684268EB -:1021200091420CD8C0E901560120FFF788FD2068D4 -:1021300090F82200400702D50120FFF75DFD2068DE -:10214000417B0E30FEF7FFFD206890F8B81059B1C2 -:1021500090F8B72080F8772000F19801583005F00A -:10216000D3FE206880F8B850206890F8B91059B1B3 -:1021700090F8972080F8572000F17801383005F06A -:10218000C3FE206880F8B9502068254E0021C77E24 -:102190003580304600F056FB2068408C13284FD025 -:1021A00004DC102871D0122804D16BE0152850D01F -:1021B0001D284ED0FFDF1A491948F639884604F029 -:1021C000ACFB184F1648797B04F0B3FB2168488CB0 -:1021D0001D2807D0152805D091F8772030465831B2 -:1021E00004F0B7FB0E4E042150363046358004F023 -:1021F00070FB4146304604F090FB797B304604F09A -:1022000098FB2168304691F85720383104F0B1FB33 -:102210000AE00000C0000020CB84010040420F0013 -:10222000140A00201009002003F079FF032106F1B1 -:10223000280003F0AAFF216881F8330000203BE565 -:102240000021304604F045FB0121304600F0FAFA47 -:10225000B1E70121304604F03CFB0121304600F09B -:10226000F1FA2168304627B11C3104F05CFB0121F2 -:1022700004E0153104F057FB2068017D304604F07E -:1022800061FB98E7062101E0FFE70221304604F0F8 -:1022900020FB90E7FE494860704770B5FC4C06464D -:1022A000206890F8312032B1408C1D2800D1FFDF2A -:1022B000BDE8704051E6002938D1F648FEF795FF99 -:1022C000206890F82C1090F82400FFF7AFFE054628 -:1022D00046B1FFF792FE002201234FF4967110469B -:1022E000FEF7BCFE216891F82C00284381F82C00F1 -:1022F00091F8242082434FF0010004D14A8C1D2A1A -:102300000BD081F831004870488C13280FD008DCBE -:1023100010280BD0122808D109E0002281F82C20C7 -:10232000F1E7152803D01D2801D0FFDF70BDBDE8FF -:10233000704001210846FFF704B8D54810B5006881 -:10234000417841B90078FF2805D000210846FFF701 -:10235000A4FF002010BD00F088FA0C2010BDCC496D -:102360000120096881F837007047C949096881F878 -:102370003200704770B5002500F09CFF50B1C44C8E -:1023800020684178012908D0022901D0032938D0DA -:10239000FFDF70BDBDE87040DFE581780029F8D12E -:1023A000418C102917D090F8330020B1FEF704FBC0 -:1023B0004020FEF782FFB7487830FEF716FF20680E -:1023C00090F8221049070ED490F83500012804D067 -:1023D000032802D002E0002117E0102545F00E018D -:1023E0000020FEF7AEFF206890F8340008B1FEF739 -:1023F00085FF00219620FEF711FF2168022048701A -:1024000070BD81780029FBD18178BDE87040012042 -:1024100043E7A2E510B59E4C206890F8340008B15F -:1024200000F02EFA206890F8330018B1FEF750FF44 -:10243000FEF7D0FA00F03EFF88B12068407802280D -:1024400000D0FFDF00210120FFF727FF206841783F -:10245000002903D04078012800D0FFDF10BDBDE87F -:1024600010407AE510B503F0FEFD044603F0B7FE18 -:1024700038B1204603F00CFE18B1102103F0F9FF2B -:1024800008B1002010BD012010BD2DE9F041804CA5 -:1024900005460F46206890F8CA0000B1FFDF2168AA -:1024A000002681F8CC602888A1F8CE006888A1F8C1 -:1024B000E400A888A1F8E600E888A1F8E80095F80B -:1024C0004C0181F8EA0091F82F0020B1487B0E31D1 -:1024D00000F0ADF940B9216891F8300068B1487B4F -:1024E0000E3100F09BF940B12068D0F80E10C0F812 -:1024F000D810418AA0F8DC1003E0206840F8D86FBB -:102500008680644863497830091F0078FF2FC0F344 -:102510008010687651F87F0FC5F81A008988E98322 -:10252000216813D0C1F8DE00E88BA1F8E20001F1C8 -:10253000D2023846D13103F0B5FD00B9FFDF206883 -:1025400010F8D11F41F002010170C5E501F1D20080 -:1025500041F8DE6F8E806A7E01F80D2CD5F81A10D6 -:102560000160E98B8180B7E52DE9F047DFF820A114 -:102570000F460646032809D0FFF7D2FC0446DAF8D6 -:10258000000090F8320020B1012003E0FFF7CFFCFB -:10259000044600208046FEF70CFC0546032E2CD096 -:1025A0000120814634EA080451D0DAF80000394CA1 -:1025B000564690F83300783460B103F096FD3870D9 -:1025C0000146FF2806D0E01C03F083FD387803F0B5 -:1025D00096FD0543316820780A7DC0F38010904253 -:1025E00005D10622E01C153105F01DFC38B1002094 -:1025F0003978FF290BD0D0B903E00220D1E70120C0 -:10260000F6E7306890F82D00884210D007E030B12E -:102610002078E11CC0F38010FFF724FF38B10020C0 -:10262000316891F82210490703D598B90FE00120CD -:10263000F6E77DB9184890F8350008B1484506D14D -:102640002078E11CC0F38010FFF70CFF10B10020D0 -:10265000BDE8F0870120FBE7F8B5FF208DF800000A -:10266000012569460520FFF77FFF002859D0084C57 -:1026700022689078E8BB07496068783111F80F6BE1 -:10268000437BC6F3401633404373012306E000004A -:10269000C0000020140A00201009002051F8086929 -:1026A000C0F80E608E8946828E7B0675CE7B46759D -:1026B0000E8AC6824E8A46808E8A8680CE8AC680E0 -:1026C0008E6986600E7F06734E7F06F01F060676C3 -:1026D000497F490980F84C1180F8343080F8353052 -:1026E00092F8C81080F8361092F8BB1080F83710B6 -:1026F00000E017E09DF80010FFF7C7FE20680121F9 -:1027000000F8CA1F81788088FFF75EF900F0A3F80F -:1027100021680020487000F0A8F8012000F0DAFEDF -:1027200000E000252846F8BDF8B5784C074600259E -:1027300020684078022800D0FFDF206890F834003D -:1027400008B100F09DF8724804F0E3F806465FB364 -:102750006F4804F01EF938B3FEF7FDFA20B3062ED9 -:1027600022D2DFE806F021212103213BFF208DF852 -:10277000000069460320FFF7F7FE0028206811D00B -:1027800090F8341031B190F8FA0018B99DF80000B3 -:1027900000F085F85E482838FEF727FD2168032001 -:1027A000487002E0807800B90125206890F8330075 -:1027B00018B1FEF78DFDFEF70DF91DB100210120C6 -:1027C000FFF76BFD20684178002906D04178012988 -:1027D00003D04078032800D0FFDFF8BDFFF73CFFAF -:1027E000E1E770B5494E05460C4630688078002810 -:1027F0000BD1FEF736FA03463068214690F8BA202E -:102800002846BDE8704000F09CBE70BD022803D091 -:10281000032801D00020704701207047012802D111 -:102820004879800901D000207047012070470128B5 -:1028300006D148790121B1EB901F01D101207047E9 -:10284000002070470278202322F0200203EA411181 -:102850000A43027070472D4810B540680088FAF7A7 -:102860009DFCBDE81040FAF751B910B5FEF718FD10 -:10287000FEF7F7FCFEF778FCBDE81040FEF7A3BCBE -:1028800010B5224C20683630FEF743FD18B9216898 -:102890007F2081F83600BDE81040FEF725BD70B5F9 -:1028A0001A4C0122216881F8FA200A7881F8FB206D -:1028B000FF280DD001F1FD02FC3103F0F3FB00B95C -:1028C000FFDF206810F8FC1F41F0020101700DE0ED -:1028D0000F480078C0F3801081F8FC000C487C3869 -:1028E00050F87F2F41F8FD2F80888880256895F863 -:1028F000360005F203157F2800D1FFDF206810F8AD -:10290000361F29707F21017070BD0000C0000020BB -:102910008C0A0020FE484068704770B506460D4698 -:1029200014461046FEF76DFE022C14D0012C14D074 -:10293000042C14D0F74908444FF47A7100F2E140B6 -:10294000B0FBF1F000EB460005442046FEF74FFED9 -:102950002844603070BDF049EDE7F049EBE7F049FD -:10296000E9E72DE9F0410E460746014614460120ED -:1029700003F08AFE054697F83500FEF742FE014651 -:1029800097F8350002281CD001281CD004281CD040 -:10299000E04840F2712208444FF47A7100F2E140BD -:1029A000B0FBF1F178885043C1EB4000041BA4F563 -:1029B000597402F051FB00B11E3CAE4207D22846CA -:1029C00006E0D548E5E7D548E3E7D548E1E73046F6 -:1029D000A04204D2AE4201D22C4600E034467C62D2 -:1029E000BDE8F0812DE9FF4F89B0044690F83580AD -:1029F00016989A4640EA0A00079094F84500002588 -:102A0000164619460D2803D00020059011B131E07B -:102A10000120FAE794F8EC0003282BD1059848B37D -:102A2000B4F86E01B04225D1D4F8F400C4F8E00047 -:102A3000608840F2E2414843C4F8E400B4F83A0147 -:102A4000B4F8C6100844C4F8E800204602F00EFBB3 -:102A5000B4F87201E08294F870016075B4F8740102 -:102A60006080B4F87601A080B4F87801E08002209C -:102A700084F8EC00D4F844010490B4F8C600D4F80B -:102A800040B10090B4F83811D4F834010390BAF191 -:102A9000000F04D094F8000100287DD108E004F56F -:102AA0009A70029004F5907704F1C009001D07E0C8 -:102AB00004F58C70029004F5827704F58A79001D84 -:102AC0000690208F301A00B20190701A00B20028D0 -:102AD00005DAD4F83001039001200790019894F8AA -:102AE000EC1041B301297DD002297CD003297BD091 -:102AF000FFDF29460398FCF758F80299012540F2B8 -:102B00007122086006980680002038703D71029896 -:102B10000068B8606088D4F8F4105043C1EB4001FD -:102B20008048A1F54D718161406988427BD9084692 -:102B3000C9F8001079E1BBF1000F00D1FFDF0121DE -:102B4000002003F008FE8046E18A40F271204143F4 -:102B500008EB41000A9900F075FDC4F8F0006088A8 -:102B600040F2E24148430A9900F06CFDC4F8F400D9 -:102B700082B22046A16AFFF7F4FE14F8350FFEF783 -:102B80005AFD4FF47A7100F2E140B0FBF1F101EB34 -:102B90000B000090207800E07EE1FEF74CFD02463D -:102BA00014F8350902283FD001283FD004283FD02F -:102BB00058495518FEF725FD28444FF47A7100F264 -:102BC000DB50B0FBF1F2E08A40F27121484308EBA0 -:102BD0004000811AD4F8F0000A1A0099551894F8A8 -:102BE000352002E0A8E025E0C6E0617D40F2E24346 -:102BF00011FB03F1203DFFF790FE4A49801C48611C -:102C000094F83500FEF717FD4FF47A7100F2E140B9 -:102C1000B0FBF1F101EB0B00281AB0F53D7FBFF4DA -:102C200068AFFFDF65E7FEE03B49C2E73B49C0E72D -:102C30003B49BEE7E08A40F27122D4F8E4105043E9 -:102C400001EB40000A9900F0FDFCC4F8F000608838 -:102C500040F2E24148430A9900F0F4FCC4F8F40061 -:102C600082B22046A16AFFF77CFE009880BB1698CE -:102C700070B394F835804046FEF7C3FC0146B8F1C6 -:102C8000020F21D0B8F1010F20D0B8F1040F20D0ED -:102C9000204840F2712308444FF47A7100F2E14079 -:102CA000B0FBF1F0D4F8F010D4F8E4200144E08A4D -:102CB000584302EB4000451A4046FEF798FC049941 -:102CC000081A0544203D11E01348E2E71348E0E705 -:102CD00001E01348DDE7E08A40F27122D4F8E41005 -:102CE000504301EB4000D4F8F010451AD4F8E82026 -:102CF000D4F8E010D4F8F00040F2E24301FB020007 -:102D000094F83520617D11FB03F1D0340CE0000014 -:102D1000B40A0020C0D4010004360200A22402003C -:102D2000D0FB0100C8000020FFF7F7FDFC49486117 -:102D300001202077D03CDCE6628840F27123D4F891 -:102D4000F4105A43C1EB42054543DDE9000210444B -:102D5000D4F8E820D4F8E0C0801AD4F8F030401E4F -:102D60000CFB023200FB012094F83520617D40F21B -:102D7000E24311FB03F14BE0618840F27123D4F888 -:102D8000F4205943C2EB4105454394F844002128FF -:102D900003D094F84500212809D1B4F86E01301A07 -:102DA00000B2002803DB94F8710100B18046079857 -:102DB00030B3009820BB049810B1BBF1000F00D1D4 -:102DC000FFDF94F83500FEF71CFC0146B8F1020F56 -:102DD00023D0B8F1010F22D0B8F1040F21D0D1488F -:102DE00008444FF47A7100F2E140B0FBF1F02D1A83 -:102DF00094F83500FEF7FBFB0499081A0544203DC2 -:102E0000DDE900010844D4F8F410424648430021AB -:102E1000FFF783FDC24948616BE6C348E0E7C3485A -:102E2000DEE7C348DCE7C9F80000616A084400F542 -:102E3000D270F86002F010F910B1F8681E30F86036 -:102E40007D71B4F8B000801B00B2002801DD0320C2 -:102E5000787105980028169822D0B8B1B4F8D81027 -:102E6000B9B3B4F8DA0000BFA4F8DA0094F8DC20B3 -:102E7000401C42438A4209D27879401E002805DD71 -:102E80007D71B4F8DA00401CA4F8DA00BAF1000F42 -:102E900026D094F80001F8B102200DB0BDE8F08F03 -:102EA0000028DBD194F8EC000028EFD0608840F2D5 -:102EB0007122D4F8F4105043C1EB4001384603F0BE -:102EC00098FB0004000CE1D0179901B108800120A3 -:102ED000E3E7FFE70020C7E794F83C01FCF7B6FC06 -:102EE00094F83C01394600F093FB18B18AF00100D8 -:102EF00084F801010020D0E7FEB50446FCF74CF948 -:102F00000146D4F83001FCF755FE214600F0A4FB41 -:102F100094F845100D2909D0228FB4F8FE1013182B -:102F2000994206DB491CA4F8FE1006E0B4F8FE0046 -:102F30000CE0401C1044A4F8FE0094F8020140B9D3 -:102F4000B4F8FE00B4F8B410884202D1401CA4F8D2 -:102F5000FE00B4F83A01724D401CA4F83A01B4F8EE -:102F60006000B4F85E10401A218F401E084486B2FB -:102F700018E0287800F039FB074694F84C0100F07F -:102F800034FB384481B2002002AACDE90002034696 -:102F9000B4F8FE202046FFF725FD002821D00128A7 -:102FA00017D0FFDFB4F8FE00301A00B20028E0DAD4 -:102FB000082084F85400012084F85300204601F0D2 -:102FC000FEFC204600F026FB2879BDE8FE40EFF726 -:102FD0001FBFB4F8FE00BDF808100844A4F8FE00B6 -:102FE000E0E7FEBD2DE9F041524C0327012527758E -:102FF0000020207494F8280004F1100650B14FF41A -:103000007A71A069FBF7D1FDA0610021304603F081 -:10301000F0FA10E0002000F05EFB0546FEF7BEFD72 -:1030200005442946A069FBF7C0FDA061294630464A -:1030300003F0DFFA451C208C411C0A2901D22844E8 -:103040002084606830B1208C401C0A2802D3022002 -:10305000607500E067752846FEF708FF002809D074 -:10306000607A002806D1207B314600F0D1FA002892 -:1030700000D1FFDFB4E42DE9F04106462D480F46AC -:103080000178274D032909D1017BB14206D140685F -:1030900028613846BDE8F04100F032BB304600F010 -:1030A000ADFA0621F9F748FF040000D1FFDF3046F2 -:1030B00000F0A4FA2188884200D0FFDF214638467C -:1030C0002C61BDE8F04100F0D4BA10B5194C20785D -:1030D00048B101206072FFF748F92078032804D036 -:1030E000207A002800D00C2010BD207BFCF7AEFB1E -:1030F000207BFCF7F8FD207BFCF72FF800B9FFDF01 -:103100000020207010BD10B5FFF7DFFF00F025FB99 -:103110000848002180F82810C172084610BD000040 -:10312000C8000020C0D4010004360200A22402001E -:10313000D0FB0100B40A002070B50446012000F065 -:1031400045FAC5B20B2000F041FAC0B2854200D06A -:10315000FFDF6FF0040000F039FAC5B2192000F06B -:1031600035FAC0B2854200D0FFDFFE4900200122BF -:103170000C7188700A704870C870FB490870BDE80F -:103180007040C0E7F749087070472DE9F047F64CEA -:10319000064689462078D8BBF448FBF784FF2073A5 -:1031A000202840D0032766602770002565722572AD -:1031B0007EB1012106F1DC00FDF775F80620F9F774 -:1031C00067FE16F8DC1FB1FBF0F200FB1210401C8A -:1031D0003070FBF7BBFF40F2F651884200D2084640 -:1031E00000F23D1086B2FEF7B0FCE061FEF7D6FCBF -:1031F0004FF00108D0B184F80A80002000F06BFA8B -:103200000644FBF7C9FF3146FBF7CFFCA06100E0A5 -:1032100009E027756775D4492574207B103100F0CB -:10322000F7F988B90FE00C20BDE8F087FBF7B4FF91 -:103230003146FBF7BAFCA061A57284F82880A9F298 -:103240002650E062E3E7FFDF25840020FFF78DF8DA -:103250000020E9E77CB50025044680F8EC50A0F892 -:103260003851C048007800F0C0F9064694F84C0187 -:1032700000F0BBF9304481B2002300951A46204685 -:103280000195FFF7AFFB00B1FFDF44F8E85F0120D5 -:1032900044F8085C2071E582A582A57634F8B00C6C -:1032A000401E24F8B00CA4F8525000207CBDAD495B -:1032B00048707047AC4810B5417A012409B1002428 -:1032C00009E090F8281031B1416AC06A814202D900 -:1032D0000024FFF744F8204620E770B5A14C0646CD -:1032E000E088401CE080D4E902016278D6F84051C1 -:1032F00012B12A4603F0A7F9A060854205D896F8D6 -:10330000EC00012801D0E07808B1002070BD012058 -:1033100070BD70B505460C460846FEF772F9022CE2 -:1033200014D0012C14D0042C14D0914908444FF42B -:103330007A7100F2E140B0FBF1F040F2E2414D431E -:1033400000F54D70854207D9281A70BD8949EDE70F -:103350008949EBE78949E9E7002070BDFEB5002601 -:10336000044680F8006190F8BE00002849D194F826 -:10337000EC00032845D1FBF70FFF0146D4F83001DC -:10338000FCF718FC00283CDD214600F065F9411CE3 -:10339000208F0144A4F8FC10B4F8FC10B4F8B42059 -:1033A000511A09B200292CDD012184F80211B4F868 -:1033B0006010B4F85E20891A491E084485B21AE0EC -:1033C0006848007800F011F9074694F84C0100F0C5 -:1033D0000CF9384481B202A8CDE90060B4F8FC20B1 -:1033E00001232046FFF7FEFA00280AD0012809D061 -:1033F000022806D0FFDFB4F8FC00281A00B200282B -:10340000DEDAFEBDB4F8FC00BDF808100844A4F8EC -:10341000FC00F0E72DE9FC4100250446012902D11A -:103420005048C17869B1042084F8EC00FBF7C0FD76 -:10343000A4F83A51208FA4F8FE0084F80251BDE8A8 -:10344000FC81007800F0D1F886B294F8EC000127F6 -:10345000032813D00128E9D194F84C0100F0C5F8F5 -:10346000CDE900753044B4F8B42081B20023204681 -:10347000FFF7B8FA0028D9D0FFDFD7E7C4F8E85043 -:10348000C4F8E05094F84C01B43400F0AEF8CDE943 -:103490000075304481B234F8B429E7E710B5062945 -:1034A00016D2DFE801F00509030C0C0D002100E045 -:1034B0000121BDE81040ADE7032180F8EC102DE6B6 -:1034C000B0F8F4108AB2816ABDE81040FFF749BA3B -:1034D000FFDF23E610B530B12349012807D00228C9 -:1034E0000BD0FFDF1AE6BDE8104000F062B9486A71 -:1034F000BDE81040002100F082B9002081F82800CA -:10350000FBF756FD17480079BDE81040EFF780BC87 -:1035100070B5144CA178022912D1E18800290FD18D -:103520002569C5F8440195F83500C835FEF75FF800 -:10353000E96F081AA1680144A160E1680844E060ED -:1035400070BD70B5054607488478022C18D0064C2B -:10355000243439B34FF47A76012915D0022917D0D3 -:10356000FFDF70BDC8000020B40A002077300100E2 -:10357000C0D4010004360200A2240200D0FB0100E6 -:10358000046904F5A074E4E71846FEF754F802E075 -:103590001046FEF743F800F2E140B0FBF6F0281ABF -:1035A0002060DEE72560DCE7EF4810B5007808B161 -:1035B0000020B3E50620F9F75DFC80F00100ADE5E1 -:1035C000E9480078002800D001207047002806DA7A -:1035D00000F00F0000F1E02090F8140D03E000F17E -:1035E000E02090F800044009704710B504460C280C -:1035F00000D3FFDFDD4830F814008FE510B5044636 -:10360000202800D3FFDFD848303030F8140085E59B -:10361000FCF70AB870B50446002084F8EC0094F872 -:103620003C514FF6FF76202D00D3FFDFCE483030DF -:1036300020F8156094F83C01FBF78FFD202084F8FA -:103640003C018EE702460020002904D0C8485143BF -:10365000B1FBF0F0401C7047002809D0D1F8F420ED -:10366000498840F271235943C2EB4101B0FBF1F0AC -:10367000704770B50125BF4E0C46082829D2DFE8F7 -:1036800000F0040F17171228281B204600F02BF912 -:10369000204600F0E3F884F800510220B07060E7A3 -:1036A00001F0D5FC01E0FDF7EBFE84F8005158E78E -:1036B0002046BDE870401FE494F8EC00042800D0D8 -:1036C000FFDF2046FFF7A6FF3079BDE87040EFF737 -:1036D0009FBBFFDF45E708B500284FF001016846B2 -:1036E00002D0FCF7C1FD01E0FCF7B4FD9DF800003D -:1036F00042F210710002B0FBF1F201FB120008BDB2 -:1037000070B5994C05462078032800D0FFDF0026CD -:10371000082D20D2DFE805F0040D1717131F1F1A1C -:103720006662FEF797FC00B1FFDF924903208870C4 -:1037300017E7FEF702FE0028FAD0FFDF11E7BDE829 -:103740007040FDF79DBEBDE870404BE4207BFBF769 -:1037500004FD267005E7FFDF03E7FEB5854C012079 -:10376000E0704FF6FF750CE00621F9F7E5FB060067 -:1037700000D1FFDF96F83C01FCF7B5FA3046FFF7C1 -:1037800049FF69460620F9F764FB50B1FFDF08E006 -:10379000029830B190F8EC1019B10088A842E3D13A -:1037A00004E06846F9F733FB0028F1D00020E07010 -:1037B000FEBD70B56C4C0025A07A18B10120FFF752 -:1037C0008AFF0546FEF7EAF94119A069FBF7EDF912 -:1037D0000025A061257403206075607A30B96249C4 -:1037E000207B1031FFF714FF00B9FFDF2584FBF7C2 -:1037F000DFFB60480079BDE87040EFF709BB2DE9B9 -:10380000F041594C0746002084F82800A669E07270 -:103810002070012020720021606802F09AFD60682B -:10382000C0F83061257B80F83C51C0F84071C0F889 -:1038300034610688202D00D3FFDF4B48303020F85C -:1038400015606068FFF706FD00B1FFDFFBF7B0FB16 -:1038500048480079BDE8F041EFF7DABA70B505469F -:10386000FBF774FC95F8356004463046FDF7C9FE59 -:10387000022E2AD0012E2AD0042E2AD03E4940F210 -:10388000712208444FF47A7100F2E140B0FBF1F08C -:10389000D5F8F410014468885043C1EB4006303E2F -:1038A000B72C00D8B7242946012002F0EDFE2044B1 -:1038B000341A29460120A4F2193402F0E5FE696A9F -:1038C0009C30814207D9081A06E02C49D7E72C49D9 -:1038D000D5E72C49D3E700202649A042CC6000D38D -:1038E000204688603DE610B5044622490020C4F811 -:1038F0004001C880C4F8440194F8010138B9FBF7CD -:103900004BFCD4F80C11FCF755F9002811DCB4F885 -:10391000FE10208F814201D1B4F8B410081AA4F827 -:10392000B6002187D4F82801C4F80C01C4F830018E -:1039300014E034F8FC0F34F8C41C401A24F8460C88 -:10394000208824F8C40C2069E0626063A06944F810 -:103950003C0CE069A063208CA087FC3C2046BDE8BD -:10396000104001F061BA0000B40A0020E8840100B0 -:1039700040420F00C8000020C0D4010004360200FD -:10398000A2240200D0FB01002DE9F0410E460446BE -:1039900003F0F3F80546204603F0F1F8044602F080 -:1039A00091FEFA4F010015D0386990F834208A4210 -:1039B00010D090F87A311BB190F87C3123421FD09F -:1039C0002EB990F83130234201D18A4218D890F8AC -:1039D0007A01A8B1284602F075FE70B1396991F8F4 -:1039E0003520824209D091F87A0118B191F87D0111 -:1039F000284205D091F87A0110B10120BDE8F0818C -:103A00000020FBE730B5E14C85B0E06900285CD0D0 -:103A10001421684604F0D4FA206990F83500FDF7C7 -:103A2000F0FD4FF47A7100F5FA70B0FBF1F5206902 -:103A300090F83500FDF7DBFD2844ADF8060020695D -:103A40000188ADF80010018FADF804104188ADF881 -:103A5000021090F8660130B1A069C11C039102F018 -:103A6000C6FF8DF81000206990F865018DF80800F8 -:103A7000E169684688472069002180F8661180F86E -:103A800065110399002920D090F8641100291CD1F8 -:103A900090F84410242918D09DF81010039A00299A -:103AA00013D013780124FF2B11D0072B0DD102293D -:103AB0000BD15178FF2908D180F864410399C0F8EF -:103AC00068119DF8101080F8671105B030BD1B29F2 -:103AD000F2D9FAE770B5AD4C206990F845001B2883 -:103AE00000D0FFDF2069002580F86D5090F88C0130 -:103AF00000B1FFDF206990F86E1041B180F86E5080 -:103B00000188A0F8901180F88E510C2108E00188FE -:103B1000A0F8901180F88E51012180F892110B21AC -:103B200080F88C110088F9F739FBF8F7EFFF20795E -:103B3000EFF76EF9206980F8455070BD70B5934C71 -:103B4000A079800729D5A078002826D1626920466F -:103B5000D17805690C2905F1380069D00CDCA1F198 -:103B600002014FF001060A2916D2DFE801F017150D -:103B7000414D5E2415291537132967D006DC0D2920 -:103B800049D0112947D0122906D155E0162966D00F -:103B9000172973D0FF2979D0FFDF70BD012395F875 -:103BA0004720194602F0E1FC0028F6D121690820DF -:103BB00081F8470070BD1079BDE8704001F0F1BA9E -:103BC00095F84600C00700D1FFDF01F0A9FA20698F -:103BD00010F8461F21F00101017070BD95F84500F5 -:103BE000102800D0FFDF2069112180F86D6008E007 -:103BF00095F84500142800D0FFDF2069152180F8D2 -:103C00006D6080F8451070BD95F84500152800D00E -:103C1000FFDF172005E095F84500152800D0FFDFED -:103C20001920216981F8450070BDBDE8704051E759 -:103C3000BDE8704001F089BA95F8442001230021C5 -:103C400002F093FC00B9FFDF0E2011E015F8460FDB -:103C500020F004002870BDE8704001F061BA95F8CA -:103C600044200123002102F080FC00B9FFDF1C206A -:103C7000216981F8440070BD00E007E095F8450037 -:103C80001E2801D000B1FFDF1F20CAE7BDE8704049 -:103C900001F052BA3D48016991F84620130702D558 -:103CA00001218170704742F0080281F84620806946 -:103CB000C07881F8A90001F02ABA10B5334C216907 -:103CC0000A88A1F8B82181F8B60191F8340001F012 -:103CD00012FA216981F8BA0191F8350001F00BFA66 -:103CE000216981F8BB01012081F8B401002081F82D -:103CF0007A012079BDE81040EFF78AB810B5234C5F -:103D000001230921206990F84420383002F02DFC6D -:103D100038B12169002001F85C0F087301F8180C14 -:103D200010BD0120A07010BD70B5184C01232146B4 -:103D30002069896990F8442009790E2A01D1122955 -:103D400003D000251D2A03D004E0BDE87040D5E76C -:103D5000162906D0232A01D1162902D0172909D005 -:103D60000CE000F8445F80F8245040781E2882D090 -:103D70001A2019E090F845201F2A09D0E269002A8C -:103D800003D0FF2901D180F8663174E7E4000020F8 -:103D900080F8455001F0C4F9206980F85D5090F832 -:103DA0007A010028F1D00020BDE8704085E72DE9B8 -:103DB000F843FE4C206990F844101D2908D00027D4 -:103DC00090F845101F2905D077B300F1440503E0B2 -:103DD0000127F5E700F1450510F8761F41F00401D1 -:103DE0000170A06902F0CFFE4FF001080026F8B183 -:103DF0003946A069FFF7C8FDD0B16A46A1692069BC -:103E000002F06EFC80B3A06902F0BBFE2169A1F84C -:103E10006E01098F01F055F938B32069282180F827 -:103E2000541080F8538047E00220A070BDE8F8836A -:103E3000206990F87A0110B11E20FFF73EFFAFB164 -:103E4000A0692169C07881F8AA0008FA00F1C1F3DD -:103E5000006000B9FFDF20690A2180F8441090F863 -:103E6000680040B9FFDF06E009E01AE02E7001F0BB -:103E700057F9FFF70FFF206980F85D60D6E72069EA -:103E800090F87A0118B10020FFF717FF2E70206913 -:103E900000F1450180F85D608D420DD180F84560EC -:103EA0000AE020699DF8001080F870119DF801105B -:103EB00080F8711121202870206900F145018D42A0 -:103EC00003D1BDE8F84301F02BB980F86860ADE795 -:103ED00070B5B64C01230B21206990F8452038308D -:103EE00002F043FB202650BB20690123002190F8FB -:103EF0004520383002F039FB0125F0B1206990F8F7 -:103F0000440021281BD0A06902F02DFEC8B1206911 -:103F100090F8761041F0040180F87610A1694A7992 -:103F200002F0070280F83120097901F0070180F8DA -:103F3000301090F87B311BBB06E0A5709BE6A670A5 -:103F400099E6BDE87040A5E690F87A31C3B900F172 -:103F500034035E788E4205D11978914202D180F8FF -:103F60005D500DE000F5D7710D7002884A8090F821 -:103F700030200A7190F8310048712079EEF748FF3F -:103F800021691E2081F84500BDE8704001F0BFB8EE -:103F900070B5864C206990F84610890707D590F8CF -:103FA000442001230821383002F0DFFAE8B120690B -:103FB00090F87000800712D4A06902F0C8FD216952 -:103FC00081F87100A06930F8052FA1F872204088AF -:103FD000A1F8740011F8700F40F002000870206919 -:103FE00090F87010C90703D00FE00120A07042E6DE -:103FF00090F84600800700D5FFDF206910F8461FC3 -:1040000041F00201017001F082F82069002590F86A -:104010004410062906D180F8445080F86850207971 -:10402000EEF7F6FE206990F86C110429DFD180F8D4 -:104030006C512079EEF7ECFE206990F844100029CD -:10404000D5D180F8685016E670B5584C0123002190 -:10405000206990F84520383002F087FA012578B9B8 -:10406000206990F84520122A0AD001230521383012 -:1040700002F07BFA10B10820A070FCE5A570FAE50B -:10408000206990F86E0008B901F041F82169A06933 -:10409000C83102F04AFD2169A069A03102F04BFD50 -:1040A000206990F8940100B1FFDF21690888A1F828 -:1040B000960101F5CC71A06902F02FFD2169A0697C -:1040C00001F5D07102F02EFD206980F89451142181 -:1040D00080F845102079BDE87040EEF799BE70B5C4 -:1040E000324C01230021206990F84520383002F03D -:1040F0003CFA0125A0B1A06902F0E5FC90B1A069ED -:104100002169B0F80D00A1F86E01098F00F0D9FF08 -:1041100058B12069282180F8541080F85350AAE53E -:10412000A570A8E5BDE87040B4E5A06921690279F1 -:1041300081F87021B0F80520A1F8722102F0BAFCD4 -:104140002169A1F87401A06902F0B7FC2169A1F806 -:104150007601A06902F0B4FC2169A1F878010D2074 -:1041600081F8450087E57CB5104CA079C00736D0B2 -:10417000A06901230521C578206990F845203830D1 -:1041800002F0F3F968B1AD1E0A2D06D2DFE805F0A2 -:1041900009090505090905050909A07840F0080085 -:1041A000A070A07800281AD1A06901E0E4000020E6 -:1041B000C57802261DB1012D01D0162D18D1206918 -:1041C00090F8440002F0B9F990B1216991F84400E7 -:1041D0001C280DD01D2803D0162D15D0A6707CBD2F -:1041E000232081F84400162D02D02A20FFF765FD18 -:1041F0000B2D3AD00BDC76D2DFE805F0312E1B40D8 -:104200009F9F4396549F34002020A0707CBD0120C6 -:10421000132D6AD006DC0C2D41D0112D6FD0122D3C -:1042200061D165E0162D76D0182D77D0FF2D5AD1AB -:104230007DE020690123194690F84720383002F0CC -:1042400094F920BBA06902F066FC216981F8520153 -:10425000072081F8470072E001F007F86FE0FFF7F0 -:104260003EFF6CE000F0E1FF69E0206990F8451046 -:1042700011290BD1122180F8451060E0FFF7E4FE10 -:104280005DE0206990F84500172801D0A67056E03F -:1042900000F046FF21691B2081F845004FE0FFF741 -:1042A00077FE4CE0206990F84600C00703D0A07864 -:1042B00040F0010021E06946A06902F04AFC9DF847 -:1042C000000000F00501206900F8761F9DF801103C -:1042D00001F04101417000F01AFF206910F8461FFB -:1042E00041F0010115E028E0FFE7FFF707FD26E0B8 -:1042F000216991F84610490704D5A0701FE010E02D -:1043000009E00BE000F003FF206910F8461F41F0C0 -:104310000401017013E0FFF7DBFD10E0FFF747FD3C -:104320000DE000F061FF0AE0FFF7FEFC07E0E16945 -:1043300019B1216981F8660101E0FFF7ABFC206942 -:10434000F0E92212491C42F10002C0E900127CBDD2 -:1043500070B5F84CA07900074AD5A078002847D15D -:10436000206990F8AB00FE2800D1FFDF2069FE2114 -:10437000002580F8AB1090F84510192906D180F877 -:104380006D5000F0CDFE206980F84550206990F80E -:1043900044101C2902D0242921D119E090F84500AD -:1043A00002F0CBF878B120692321012380F8441072 -:1043B00090F845200B21383002F0D7F878B92A2040 -:1043C000FFF77BFC0BE021691D2081F8440006E02B -:1043D000012180F8651180F8445080F86850206908 -:1043E00090F84710082903D10221217080F8AB1002 -:1043F00041E4D049096991F870210AB991F8342053 -:1044000081F8342091F871210AB991F8352081F8AA -:104410003520002801D000204FE4704770B5C54C0E -:1044200006460D46206990F8AB00FE2800D0FFDF5D -:104430002269002082F8AB6015B1A2F86A001AE484 -:1044400022F8640F0120107115E470B5B94C0123F6 -:104450000021206990F84420383002F086F80028C6 -:104460003FD0206990F87A1139B390F87B1121BBC5 -:1044700090F8452001230B21383002F076F8E0B99E -:10448000206990F8340000F036FE0546206990F867 -:10449000350000F030FE0646206990F87C11284671 -:1044A00000F01BFE50B1206990F87D11304600F0FD -:1044B00014FE18B10020FFF700FC11E02069012371 -:1044C000032190F84520383002F04FF840B92069B8 -:1044D0000123022190F84520383002F046F808B157 -:1044E000002052E400211620FFF798FF01204CE441 -:1044F00070B5904C206990F8AB10FE2978D1A17866 -:10450000002975D190F8472001231946383002F070 -:104510002CF800286CD1206990F8501149B1002185 -:10452000A0F8621090F8511180F8AC100021022020 -:104530005BE090F8452001230421383002F015F8A3 -:10454000054600F0F5FE002852D1284600F01AFF7B -:1045500000284DD120690123002190F844203830F3 -:1045600002F003F878B120690123042190F8452076 -:10457000383001F0FAFF30B9206990F85C0010B1D2 -:104580000021122031E0206990F844200A2A0DD041 -:10459000002D2DD101230021383001F0E6FF78B144 -:1045A000206990F86C1104290AD105E010F8AA1FBF -:1045B00081700021072018E090F87000800718D063 -:1045C000FFF743FF002813D120690123002190F851 -:1045D0004420383001F0C9FF002809D0206990F844 -:1045E0006401002804D00021FF20BDE8704015E7D9 -:1045F00009E000210C20FFF711FF206910F8701F5F -:1046000041F00101017099E43EB505466846FDF7A9 -:10461000F6F800B9FFDF2221009803F0AFFC032178 -:10462000009802F0FBF90098017821F01001017068 -:10463000294602F022FA3F4C0C2D27D00ADCA5F1C6 -:1046400002050A2D16D2DFE805F01C154416161CCB -:10465000154F1516132D0ED006DC0D2D2CD0112D57 -:1046600021D0122D06D106E0162D29D0172D4CD0C1 -:10467000FF2D55D0FFDFFDF7D7F8002800D1FFDF71 -:104680003EBD2169009891F8AC1017E0E2680098EF -:104690001178017191884171090A81715188C17144 -:1046A000090A0172E7E70321009802F084FA062163 -:1046B000009802F084FADEE7009806210171DAE73B -:1046C0000098216991F87C21027191F87D11417166 -:1046D000D1E721690098D03102F031FA21690098C0 -:1046E000A43102F031FAC6E71349D1E90001CDE95E -:1046F0000101206901A990F8760000F005008DF80D -:104700000400009802F02AFAB5E7216991F87A01CD -:1047100000280098D6D111F8342F02714978D6E7D5 -:10472000206990F86721D0F86811009802F0B3F979 -:10473000A1E70000E400002000850100F84810B562 -:10474000006990F84A1041B990F8452001230621EC -:10475000383001F00AFF002800D0012010BD70B5EC -:10476000EF4D286990F8481039B1012905D0022988 -:1047700006D0032904D0FFDF39E4B0F8B41041E0DB -:1047800090F84710082934D0B0F85E10B0F86020D7 -:1047900000248B1C9A4206D3511A891E0C04240C47 -:1047A00001D0641EA4B290F85C1039B190F8442096 -:1047B00001230921383001F0D8FE30B3FFF7BEFFE6 -:1047C00078B129690020B1F85820B1F856108B1C37 -:1047D0009A4203D3501A801E00D0401EA04200D23D -:1047E00084B20CB1641EA4B22869B0F8B41021449C -:1047F00008E0B0F85E100329BFD3018FB0F8602045 -:104800001144491CA0F8B0101DE40024ECE770B579 -:104810000C4605464FF4E071204603F0D1FB25809D -:1048200011E4F8F792BC2DE9F0410D460746062148 -:10483000F8F782FB04003DD094F880010026B8B15F -:104840006E70072028700DE0268484F88061D4F80B -:104850008201C5F80200D4F88601C5F80600B4F854 -:104860008A01688194F880010028EDD1AE7094E04F -:1048700094F88C0190B394F88C010B2813D00C2879 -:1048800001D0FFDF89E02088F8F788FC0746F8F7B9 -:1048900052F978B96E700C20287094F88E01A870C7 -:1048A0002088A88014E02088F8F778FC0746F8F7FD -:1048B00042F910B10020BDE8F0816E700B20287025 -:1048C00094F88E01A8702088A88094F89201A871AD -:1048D00084F88C613846F8F728F95EE0FFE794F831 -:1048E000AC0130B16E700E20287084F8AC616F801E -:1048F00053E094F8940180B16E70082028702088ED -:104900006880D4F898116960D4F89C11A960B4F853 -:10491000A001A88184F894613FE094F8A20140B11D -:104920006E7015202870B4F8A401688084F8A26124 -:1049300033E094F8A60170B16E701620287005E07F -:1049400084F8A661D4F8A801C5F8020094F8A6017D -:104950000028F5D121E094F8AE0140B1182028706C -:1049600084F8AE61D4F8B001C5F8020015E094F8FF -:10497000B40100289FD06E701220287009E000BF9B -:1049800084F8B461D4F8B601C5F80200B4F8BA01ED -:10499000E88094F8B4010028F2D101208BE7604848 -:1049A0000021C16101620846704730B55C4D0C467C -:1049B000E860FFF7F4FF00B1FFDF2C7130BD00218C -:1049C00080F8441080F8451080F8481090F8BE1028 -:1049D00009B1022100E00321FEF760BD2DE9F0419D -:1049E0004F4C0546206909B1002104E0B0F8C6101B -:1049F000B0F8B6201144A0F8C61090F8501139B99B -:104A000090F8472001231946383001F0AEFD30B14F -:104A1000206930F8621FB0F85420114401802069E9 -:104A200090F8683033B1B0F86410B0F8B620114493 -:104A3000A0F8641090F96C70002F06DDB0F86A10D1 -:104A4000B0F8B6201144A0F86A1001213D2615B136 -:104A500080F8546013E02278022A0AD0012A11D08B -:104A6000A2782AB380F8531012F0140F0DD01E2133 -:104A700013E090F8AC20062A3CD016223AE080F8E9 -:104A8000531044E090F8522134E0110702D580F829 -:104A900054603CE0910603D5232180F8541036E0A1 -:104AA000900700D1FFDF21692A2081F854002AE015 -:104AB0002BB1B0F86420B0F866309A4210D2002FC3 -:104AC00005DDB0F86A20B0F866309A4208D2B0F836 -:104AD0006230B0F86020934204D390F850310BB1AB -:104AE000222207E090F848303BB1B0F85E309342A4 -:104AF00009D3082280F85420C1E7B0F85E20062AC6 -:104B000001D33E22F6E7206990F8531019B12069CD -:104B1000BDE8F04153E7BDE8F0410021FEF7BEBC1F -:104B2000E40000202DE9F047FF4C81460D46206946 -:104B30000088F8F745FB060000D1FFDFA078284386 -:104B4000A070A0794FF000058006206904D5A0F878 -:104B50005E5080F8C45003E030F85E1F491C0180AD -:104B6000FFF7ECFD012740B3E088000506D520697A -:104B700090F84A1011B1A0F856501EE02069B0F824 -:104B80005610491C89B2A0F85610B0F858208A4235 -:104B900001D3531A00E00023B4F808C00CF1050C4F -:104BA000634501D880F85C70914206D3A0F8565056 -:104BB00080F8AC712079EEF72BF9A0794FF002085C -:104BC00010F0600F0ED0206990F8481011B1032941 -:104BD00008D102E080F8487001E080F848800121A7 -:104BE000FEF75CFC206990F84810012904D1E188A7 -:104BF000C90501D580F84880B9F1000F70D1E1886E -:104C0000890502D5A0F8D85003E030F8D81F491C18 -:104C1000018000F054FBFEF7F5FEFFF769FC00F0A1 -:104C20006AFD0028206902D0A0F8B85003E030F8EF -:104C3000B81F491C018000F061FD38B1216991F86D -:104C4000C400022807D8401C81F8C400206990F8ED -:104C5000C400022804D9206920F8B85F4580057394 -:104C600020690123002190F84520383001F07DFCB7 -:104C700020B9206990F845000C2859D120690123FA -:104C8000002190F84420383001F06FFC48B32069CF -:104C90000123002190F84720383001F066FC00B372 -:104CA000206990F84810022942D190F8C400C0B998 -:104CB0003046F7F710FDA0B1216991F8AB00FE284E -:104CC00036D1B1F8B200012832D981F8BD70B1F8FF -:104CD0006000B1F85E20831E9A4203DB012004E0ED -:104CE00031E025E0801A401E80B2B1F8B820238957 -:104CF0009A4201D3012202E09A1A521C92B29042C7 -:104D000000D91046012801D181F8BD5091F8482101 -:104D100092B1B1F8BA20B1F84A118A4201D3012107 -:104D200002E0891A491C89B2884205D9084603E085 -:104D30002169012081F8BD5021690A8F1044A1F832 -:104D4000B400FFF70CFDE088C0F340214846FFF7B0 -:104D500045FE206980F8BE50BDE8F047FCF787BDEE -:104D6000714902468878CB7818430DD1084600690E -:104D700042B18979090703D590F84700082803D084 -:104D800001207047FEF7A9BA0020704770B5664C45 -:104D900005460E46E0882843E080A80703D5E807CB -:104DA00000D0FFDF6661EA074FF000014FF001001D -:104DB0001AD0A661F278062A02D00B2A14D10AE092 -:104DC000226992F84530172B0ED10023E2E92033F7 -:104DD00002F8370C08E0226992F84530112B03D114 -:104DE00082F8491082F86E00AA0718D56269D27855 -:104DF000052A02D00B2A12D10AE0216991F8452038 -:104E0000152A0CD10022E1E9222201F83E0C06E02D -:104E1000206990F84520102A01D180F84A10280610 -:104E200001D50820E070A7E42DE9F84F3E4C00259D -:104E30004FF00108E580A570E5704146257061F3EB -:104E4000070220619246814680F8BE800088F8F70C -:104E5000B7F9070000D1FFDF20690088FCF7CCFC20 -:104E600020690088FCF7F1FC2069B0F8B21071B13C -:104E700090F8AB10FE290FD190F8501191B190F835 -:104E8000472001231946383001F06FFB80B12069BB -:104E900090F8AB00FE2805D0206990F8AB0000BF69 -:104EA000FFF7B2FB206990F8BF1089B1258118E0A7 -:104EB0002069A0F8625090F8511180F8AC100021E0 -:104EC0000220FFF7ABFA206980F8BD500220E7E727 -:104ED00090F8801119B9018C8288914200D881889C -:104EE0002181B0F8B610491E8EB2B0F8B810314426 -:104EF000A0F8B81090F8BC1021B1A0F8BA5080F812 -:104F0000BC5004E0B0F8BA103144A0F8BA1030F840 -:104F10005E1F31440180FFF711FC20B1206930F899 -:104F2000561F3144018001E0E40000202069B0F800 -:104F3000B210012902D8491CA0F8B2100EB180F8B5 -:104F4000C45090F8BD10A1B1B0F8B80021898842D2 -:104F50000FD23846F7F7BFFB58B1206990F84811D7 -:104F600039B1B0F8BA10B0F84A01814201D300F06B -:104F7000C8FB206980F8BD5090F845100B2901D07E -:104F80000C2915D1028FB0F86E31D21A12B2002A54 -:104F90000EDBD0F87011816090F87411017302215A -:104FA00001F0D7F9206980F8455080F8788024E036 -:104FB00021290FD1018FB0F86E21891A09B2002979 -:104FC00008DB90F87A01FFF714FA206900F8455FD2 -:104FD000057612E090F84410212901D022290CD145 -:104FE000018FB0F86E01081A00B2002805DB01201D -:104FF000FFF7FFF9206980F8445020690146B0F8B6 -:10500000B620383001F022FA206990F8481109B131 -:10501000A0F8BA50F9480090F94BFA4A4946504670 -:1050200000F0DCFA216A11B16078FCF727F92069F9 -:105030000123052190F84520383001F096FA002828 -:1050400003D0BDE8F84F00F042BABDE8F88F00F099 -:1050500022BBED49C8617047EB48C069002800D009 -:1050600001207047E84A50701162704710B504463D -:10507000B0F874214388B0F87611B0F878019A42FC -:1050800005D1A388994202D1E38898420FD02388A2 -:10509000A4F88431A4F88621A4F88811A4F88A0120 -:1050A000012084F88001D8480079EDF7B1FE012194 -:1050B000204601F04EF9002004F8450F0320E0706F -:1050C00010BD401A00B247F6FE71884201DC00288C -:1050D00001DC0120704700207047012802D002281F -:1050E00005D102E0012904D001E0022901D000200D -:1050F00070470120704710B5012804D0022804D061 -:10510000FFDF204610BD0124FBE70224F9E7BE487B -:105110000021006920F86A1F8178491C817070475E -:10512000B94800B5016911F86C0F401E40B2087013 -:10513000002800DAFFDF00BDB3482421006980F8B1 -:105140004410002180F86411704710B5AE4C2069FE -:1051500090F86C11042916D190F844200123002105 -:10516000383001F002FA00B9FFDF206990F87010C2 -:10517000890703D4062180F8441004E0002180F858 -:10518000681080F86C11206990F84600800707D5F8 -:10519000FFF7C6FF206910F8461F21F002010170D9 -:1051A00010BD994910B5096991F844200A2A09D11E -:1051B00091F8AA20824205D1002081F8440081F8AC -:1051C000680010BD91F84620130706D522F00800AC -:1051D00081F84600BDE81040A2E7FF2801D0FFDFBC -:1051E00010BDBDE81040A7E710B5874C206910F846 -:1051F000761F41F004010170A06901F0DEFC162861 -:1052000006D1206990F844001D2802D0232805D03B -:1052100010BDA06901F0D5FCFEF74FFD216900200B -:1052200081F8440081F8680010BD10B5764C012368 -:105230000021206990F84520383001F096F930B10E -:10524000FFF765FF2169102081F8450010BD206936 -:105250000123052190F84520383001F086F908B186 -:10526000082000E00120A07010BD70B5664C01233D -:105270000021206990F84520383001F076F90125A9 -:1052800080B1A06901F044FC2169A1F86E01098F89 -:10529000FFF717FF40B12069282180F8541080F8EB -:1052A0005350C0E5A570BEE52169A06901F5B8714C -:1052B00001F029FC21690B2081F84500B3E510B508 -:1052C000FFF746F8FEF74FFF4F4CA079400708D58F -:1052D000A07830B9206990F84700072801D1012053 -:1052E0002070FEF72BFCA079C00609D5A07838B94C -:1052F000206990F845100B2902D10C2180F8451047 -:10530000E07800070ED520690123052190F845209B -:10531000383001F02AF930B10820A070216900204E -:1053200081F88C0110BDBDE81040002000F048BBA2 -:1053300010B528BB344C216991F84600C20702D051 -:105340000121092018E082070AD501210C20FFF76E -:1053500065F8206910F8701F41F0010101700DE03F -:10536000420702D50121132006E0000708D511F8F5 -:10537000A90FC87001210720FFF750F8012010BDC8 -:10538000002010BD10B5204C216991F8452040B394 -:10539000102A06D0142A07D0152A19D01B2A2BD17F -:1053A00019E001210B2018E0FAF75AFF0C2816D358 -:1053B00020690821D030FAF757FF28B1206904216D -:1053C000A430FAF751FF00B9FFDF0121042004E007 -:1053D00000F01FF803E001210620FFF71FF801206D -:1053E00010BD1E2A08D191F85D0078B991F87A01B4 -:1053F00010B191F87B0148B1002010BD254B010090 -:10540000614D01008D4D0100E400002001211720B5 -:10541000E3E770B5174C0025206990F85311012976 -:105420000AD0022925D190F86E10A9B1062180F882 -:10543000AC100121022017E090F88C11002918D13E -:1054400000F1900300F1C801002200F5AA7001F0FC -:105450002CF80121052007E090F87600400701D5DF -:10546000112000E00D200121FEF7D8FF206980F80F -:105470005351D8E4E400002011F00C0F6FF00D023E -:105480000BD0B0F5747F01D2002070475038C1179F -:1054900000EB916002EBA01003E0022903D002EBC5 -:1054A000D00080B270476FF00E0101EB9000F8E77A -:1054B000F8480078002800D00C20704710B504464A -:1054C000FFF7F6FF00B1FFDFF248447210BDF1496B -:1054D00001200872704770B5EE4934314C6804F110 -:1054E000380580B194F83510204601F0BEF882B23C -:1054F0001B2114F8353FA87C00F008FC2178BDE89A -:105500007040FBF7E5BB1F2094F83410F7E72DE956 -:10551000F047E04E814634367468204694F83510E2 -:1055200001F0A3F880B294F83510FFF7A5FF1B2116 -:105530001B2800D90846D74D0746D74868627668C9 -:1055400001203836FFF7C7FFB07C4FF0000840B3AA -:1055500006F15801D04891E80E1000F1480A8AE897 -:105560000E10B16EC0F86110F16EC0F865102230F7 -:10557000FBF73BFEC848012148300176D6E91412FA -:10558000C0E90412A0F12602696AFBF796FA94F8C2 -:10559000350000F0B1FB0246F9B20120FBF79BFA9F -:1055A00004E0686AFBF721FEFBF7BAFAB9F1000FD5 -:1055B0000AD1012294F8353096211046FBF74EFDB2 -:1055C00041469620FBF72AFE94F82C00012801D1D1 -:1055D000FBF794FE02202870BDE8F0872DE9F04724 -:1055E000AC4C8046089F20781D461646894610B967 -:1055F0000EB105B107B9FFDFE761C4E90565002019 -:10560000C4E90D892072E0712071E0706071A14FD2 -:10561000A071A0703437A0817E68354636F8380B0B -:10562000F7F7CEFDE0622888F7F7B8FD2063FBF7B7 -:1056300059FB95F93700FBF7BAFB05F11200FBF7B0 -:10564000BCFD05F10E00FBF7B8FB0120FBF7CAFD1E -:10565000B07EFBF7BCFBFBF7BFFD95F83510284685 -:1056600001F003F882B21B2115F8353FB07C00F041 -:105670004DFB2C782146FBF72BFB22460021012015 -:10568000FBF774FC7868D0F8C000FBF7B2FDBDE80A -:10569000F04701203BE77F4800B50078022800D0A2 -:1056A000FFDF00BD7B4810B534304468FBF7F8FDE0 -:1056B000FBF7D7FDFBF758FDFBF785FDFBF730FA4D -:1056C00094F82C00012801D1FBF70EFE714CA08943 -:1056D00000F02BFBE269E179E07890470020207030 -:1056E00010BD6C4810B50078022800D0FFDFBDE87F -:1056F0001040D7E7D6E7674840797047654800799A -:1057000070476449012088717047624810B5343091 -:10571000446804F13800017B21290BD0407B21280B -:1057200008D01C2909D01D2907D01F280FD094F8B4 -:10573000340010BD94F8701106E01F2807D094F8CB -:105740007C0100F0CFFA014694F8340008E094F8A8 -:105750007C0114F8311F084000F0C4FA0146E078DB -:10576000BDE8104000F0ECBA2DE9F14F4948494F2F -:105770003430A0F1140B466882B006F138041B25C2 -:1057800060794FF0000A4FF0010958B3012868D042 -:1057900002286AD0032875D0FFDF386A0825B8468A -:1057A000017821F008010170A37905EAC3031943C8 -:1057B00021F004010170E379042505EA830319430C -:1057C00021F0100101706779D8F82C00F6F793FFEB -:1057D0000546FCF75FF8022F60D0012F5ED0032F43 -:1057E0005FD061E0FFF791FF8046FFF78EFF014633 -:1057F000304600F03DFF80B24146FFF73DFE1B28DA -:1058000000D92846ADF804005846FCF721F830B11D -:105810004FF48060396A00F08DFA03201FE06A4679 -:1058200001A9F86A00F05CFA386210B194F83510FA -:1058300029B15846FBF7DDFF84F80590ADE79DF8E8 -:10584000001031B9A0F800A080F802A0012101F0F9 -:10585000E5F8BDF80410386A01F0B5F9022060716E -:105860009BE75846FBF7C5FF97E7ADF804506A463B -:1058700001A9F86A00F034FA386200288DD1FFDF00 -:105880008BE7FFE75846FBF7E3FF002885D1FFDFF2 -:1058900083E703E008010020280B0020A84301D083 -:1058A00002E00DB1012100E00021D8F820004546BA -:1058B000027842EA01110170617C51B361790129DA -:1058C00027D004F15801FC488EC900F1480888E847 -:1058D0008E00A16EC0F86110E16EC0F86510223034 -:1058E000FBF783FCF448483080F818A0D4E9121282 -:1058F000C0E90412A0F126012A6AFBF7DEF896F847 -:10590000340000F0F9F90246FB210020FBF7E3F830 -:1059100003E0FBF76AFCFBF703F9029830B996F84D -:105920003430012296210020FBF798FB85F8059082 -:10593000296A0A88EA818978297485F80090BDE887 -:10594000FE8F70B5DD4C054639B9012D05D12079A2 -:10595000401CC0B22071012820D8A1692846884780 -:10596000E0B1A179D44831B1012D04D1417811B908 -:105970000178C90612D5E17981B98DB9CF490E31C7 -:105980000978CA0602D40078C00607D5A07828B9DD -:10599000A06A28B9608918B1C80601D4012070BD79 -:1059A000002070BD10B5C54CA06A00B9FFDF628948 -:1059B000D4E90910D21C02F062FAA06A606210BD3C -:1059C0002DE9F0470600BD48BC4D00F134004468A5 -:1059D000686A04F13804477801D0012E03D1296B9D -:1059E00001F072FF687068784FF000084FF001090D -:1059F00038B1012817D0022830D0032845D0FFDF66 -:105A0000EAE5012E31D0FFF7CDFF39460122286BA0 -:105A1000F6F7E2FE27E000BF84F8078030E000BF21 -:105A200084F807902CE0012E08D0FFF7BBFF394621 -:105A30000022286BF6F7D0FE022EE1D0D4E9140143 -:105A4000401C41F10001C4E91401E079012802D0B1 -:105A500084F80790C0E584F80780BDE5012E04D0E6 -:105A6000286BF7F73DF8022ECAD0D4E91401401C88 -:105A700041F10001C4E91401E0790128D0D1CBE75C -:105A8000687ABDE8F047EDF7C3B9012EB8D0286BAE -:105A9000F7F726F8F4E72DE9F04101468748874DEE -:105AA000343000274468686A01263834027802F0EE -:105AB0000302012A1BD0022A19D0032A03D0E87955 -:105AC00040F0040011E000F0C2FF20B3A670A889E6 -:105AD00040F40060A8810120696A00F02BF91EE003 -:105AE000E771BDE8F081E671FBE7E871F9E740781E -:105AF000A8B1AA8942F40062AA81AA6A002AF0D059 -:105B00001B2808D8287A20B1BDE8F041802000F099 -:105B10000CB90E70E5E7E87940F01000E5E7E079B0 -:105B20000128E0D1DCE770B56448644D3430446846 -:105B300028783834012800D0FFDFA078012630B162 -:105B40000020A0700146042000F0F4F82671286AB5 -:105B50000078C043800706D1E07820B9E6700220C3 -:105B6000296A00F0E7F801210020FFF7EAFE10B1F2 -:105B7000BDE8704096E5BDE870400020C7E42DE91F -:105B8000F84F4E4F4D4C343700267D6882468DF8D5 -:105B9000006020783835022800D0FFDFA08940F46B -:105BA0000070A0810020FFF796FCA87CBAF1000FDE -:105BB0005BD0FAF7D8FFFAF7C8FF4FF0010968B9D0 -:105BC000A87C58B1606A417841B10078E979C0F3A6 -:105BD000C000884202D184F8039059E0606A41789D -:105BE000618121B1206BF6F7B1FDA06200E0A662F1 -:105BF000A089B84640F02000A0812671786800F1A5 -:105C00003807064690F82C00012816D1FBF76CFBEC -:105C10003946304600F067FC78B1D8F80400318886 -:105C2000A0F8A811397A80F8AA11797A80F8AB1116 -:105C300080F8A691607AEDF7EBF8606AA9790078B0 -:105C4000C0F38000884205D000F084F8A08940F4B9 -:105C50008070A081606AE9790078C0F3C000884252 -:105C60000AD16846FFF717FF06E008B1FAF7A7FF69 -:105C7000A08940F04000A08151460120FFF761FE5D -:105C800000289DF8000007D010B10020FFF798FE13 -:105C9000FFF708FDBDE8F88F10B10120FFF790FE77 -:105CA0000020FFF761FD9DF800000028F2D00220DF -:105CB000FFF786FEEEE70000280B00200801002019 -:105CC00070B5064642480D464468FAF7CAFF0346D7 -:105CD00094F8342029463046BDE87040FDF731BCC9 -:105CE000F6F744BCC10701D001207047800701D5F9 -:105CF000022070470020704700B5012802D002281A -:105D000002D0FFDF002000BD012000BD70B50C46B1 -:105D1000054619461046FFF7AFFB844200D22046E5 -:105D20000DB1001D80B2C0B270BD294A0021343AC5 -:105D300052691047264A0123343A9370526910473A -:105D4000002904D0012803D0012901D00220704786 -:105D50000120704770B51E48446894F83D003834FF -:105D6000002832D0022810D1194D343DE86AF6F7E8 -:105D700029FC00B9FFDFD4E91201401C41F1000108 -:105D8000C4E91201687AEDF743F8002565712079BE -:105D900020B1257100211020FFF7CCFFE07878B109 -:105DA000E570FBF764FD00B9FFDF00210820FFF775 -:105DB000C1FFD4E91201401C41F10001C4E9120104 -:105DC000A079012802D00120A07170BDA57170BD1D -:105DD0003C0100202DE9F0410F4606460024FA4D13 -:105DE0000FE000BF05EBC40090F84311B14206D1AB -:105DF0000622394600F5A27002F015F838B1641C8D -:105E0000E4B22878A042EDD81020BDE8F081204609 -:105E1000FBE7F0B50746EC4816460478621C0270B2 -:105E200000EBC4050868C5F844018888A5F8480156 -:105E3000102C00D3FFDF85F8437185F84A612046B6 -:105E4000F0BD70B5054600F0F9F910281CD1DE4C04 -:105E50002078401EC0B22070A84215D004EBC002CA -:105E600004EBC50102F58070D2F84321C1F843214B -:105E7000D0F84700C1F84701207800F0DFF910287A -:105E800002D0204480F8035170BD2DE9F047CE4C7C -:105E90000646A719A078401EC5B2A57097F80381E1 -:105EA000AE422AD004EB051A04EB06190AF10301ED -:105EB00009F10300102201F0E2FF0AF1830109F168 -:105EC0008300102201F0DBFF601905EB450290F81A -:105ED000031187F8031106EB460104EB420204EBC1 -:105EE0004101D2F80B31C1F80B31B2F80F21A1F802 -:105EF0000F2190F83B0187F83B0104EBC80090F8B4 -:105F00004A01C00703D14046BDE8F04799E7BDE824 -:105F1000F08710B540F2C311AB4802F02FF8FF2212 -:105F20000821AA4802F022F8A84800210A38417046 -:105F30004FF46171418010BD70B50D460646FFF704 -:105F400049FFA14C102807D004EBC00191F84A1179 -:105F5000C90701D0012070BD6178082910D210282E -:105F600008D004EBC000012180F84A116078401C81 -:105F70006070EFE7012229463046FFF74AFFF5E758 -:105F8000002070BD70B5904D2878401E44B20AE0E4 -:105F900005EBC40090F84A01C00702D0E0B200F05F -:105FA0005EF9641E64B2002CF2DA70BD2DE9F04790 -:105FB000984691460C460746FFF70CFF0546102809 -:105FC00005D000F03BF9102801D012209FE77E4E4B -:105FD000B07808281FD2102D05D10022214638465E -:105FE000FFF717FF0546B4781022601CB07006EB6F -:105FF0000417F81C494600F04BFA07F18300102201 -:10600000414600F045FA3019002180F8035180F82C -:106010003B1108467BE7072079E76B4810B580788D -:10602000401E44B204E0E0B2FFF72FFF641E64B2EA -:10603000002CF8DA10BD65490A394870704763488A -:106040000A384078704740B14AF2B811884204D803 -:106050005E490A39488001207047002070475B483C -:106060000A384088704710B5FFF7B4FE102803D0F7 -:1060700000F0E4F8102800D1082010BD52498A78B9 -:10608000824203D901EB0010833070470020704733 -:106090004D498A78824203D901EB0010C01C704739 -:1060A00000207047484B10B59C7884420FD91844A3 -:1060B00090F8030103EBC00090F843310B70D0F867 -:1060C00044111160B0F848019080012010BD0020FB -:1060D00010BD3D4A114491F803213C490A390A7028 -:1060E00002684A6080880881704710B5FAF79FFC03 -:1060F00018B1BDE81040FAF7AABCFF2010BD324924 -:106100008A78824209D9084490F8030101EBC00063 -:1061100090F84A0100F001007047002070472DE917 -:10612000F04700252F46284E2BE000BF06EBC704A2 -:1061300004F5A271884694F84301FFF794FF814665 -:10614000FFF7A6FF94F84A11C90718D060B1B9F15A -:10615000080F05D206EB090191F83B11012903D084 -:10616000102100F086F950B11849284601F8059031 -:106170006D1C94F843214146EDB2FAF7F4FD7F1C03 -:10618000FFB23078B842D1D8C1E603460F4810B507 -:106190000A380A46407840B10B48817829B11A4440 -:1061A000C01CFAF7F6FB012010BD002010BD064A06 -:1061B00001EB410102EB41010268C1F80B2180882B -:1061C000A1F80F0170470000980B00204E0100203D -:1061D00001461022274800F05BB92648F2E726491D -:1061E0008A78824203D9084490F83B0108B1002024 -:1061F000E8E70120E6E72DE9F0410E46074615469F -:106200000621304600F035F91B4C58B1002004E05F -:106210002118401C81F83B51C0B2A1788142F7D8C7 -:106220000120F2E531463846FFF71DFF082803D06C -:10623000204480F83B51F3E70020E6E50E4910B515 -:10624000034600208A7806E00C1894F803419C422B -:1062500004D0401CC0B28242F6D8102010BD0649BE -:106260004A78521E4A7001EBC001002281F84A218F -:10627000E7E500005B0D0020980B002000F0010115 -:10628000400800F001021144400800F001021144EE -:10629000400800F001021144400800F001021144DE -:1062A000400800F001021144400800F001021144CE -:1062B00001EB5000704710B50024C484448DDB000E -:1062C0004C43B3FBF2F394FBF2F45B1C44859BB2AA -:1062D00003FB02F40385B4F5C84F01DD5B1E0385A3 -:1062E0004FF4FA43B3FBF2F35B1CC385438C02EB20 -:1062F000C3035B1EB3FBF2F30384C38B4B43B3FBBB -:10630000F2F1C18310BD70B50546087B0E4600F062 -:106310001F0008730020287604463019007AFFF722 -:10632000ADFF2919641CC874297EE4B2084428769C -:10633000052CF2D3C0B2252800D9FFDF70BD0023A1 -:10634000C383428401EBC202521EB2FBF1F101840D -:10635000704770B50025044600F13806032909D0BE -:10636000E9B3012967D002294ED101463046BDE884 -:106370007040C8E77821304601F022FEB571F57112 -:1063800035737573F573357475717576B57601204F -:1063900086F83E00412186F83F10FE2186F87310F2 -:1063A00084F82C50258484F8340084F835002821A2 -:1063B00084F8361060734FF448606080A4F8B050E1 -:1063C000A4F8B250A4F8B450A4F8B650A4F8B85049 -:1063D000A4F8BA5084F8BD5084F8BF5000E014E02F -:1063E000A4F8C65084F8C450A4F8D850A4F8DA50E1 -:1063F00084F87A5184F87B5184F8485184F85051DC -:1064000084F8535184F86C5170BDA4F8C65084F8D8 -:10641000BE506188F9480A460844B0FBF1F0A4F880 -:1064200058004BF68030A4F85A00E3883046FFF756 -:1064300042FF21469AE7A4F8C6504188B4F8783163 -:10644000B4F874213046BDE8704034E7037E0BB1E8 -:10645000252B01D9122070472AB14B7B2BB1012B80 -:1064600005D01F2070470020704700F0EEB900F003 -:1064700092B910B500231A4603E0845C2343521CF2 -:10648000D2B28A42F9D30BB1002010BD012010BD59 -:1064900030B5134606E0CC18D51A14F8014C5B1E33 -:1064A0004455DBB2002BF6D130BD70B50E468CB032 -:1064B000144601461D4610226846FFF7E9FF1022E8 -:1064C000314604A8FFF7E4FF684600F045FC08A940 -:1064D0004FF0100228461CB1FFF7DAFF0CB070BD78 -:1064E00001F0CDFCFAE738B505460C466846FAF7E8 -:1064F00010FF002820D09DF900002072A17E61725B -:1065000094F90A100022411A00D5494295F82D301D -:106510008B4210DCFF2B0ED0E17A491CC9B2E1722C -:1065200095F82E30994202D8A17A7F2903D1A07222 -:106530000020E0720122104638BD0C2813D00B2831 -:1065400011D00D280FD01C280DD01D280BD01E28CF -:1065500009D01F2807D0202805D0212803D02328C0 -:1065600001D0002070470120704710B5A2F10F0341 -:106570000C2939D2DFE801F006080D1215181C3875 -:106580002436382792B32FE0072A30D0082A2ED09D -:106590002AE00C2A2BD00B2A29D025E00D2A26D060 -:1065A00022E00C2B23D91FE0103A0B2A1FD91BE045 -:1065B000032B1CD990F83600B0B11B2A17D913E071 -:1065C000062A14D010E01C2A11D01D2A0FD01E2A32 -:1065D0000DD01F2A0BD0202A09D0212A07D0232A28 -:1065E00005D001E00E2A02D0002010BDFFE70120F7 -:1065F000FBE72DE9F0410C46054640F2337786680B -:1066000006E000BFF8F7C8FD3946F8F7CEFAA860F3 -:106610002846F8F78EFF0028F4D094B13046A968D8 -:10662000F9F7C8FA00280CDD2044401EB0FBF4F74F -:1066300007FB04F13046F8F7B8FAA8603846BDE821 -:10664000F0810020FBE770B5044690420AD2101B8F -:10665000642800D2642025188D4204D8F9F7DDFAA9 -:1066600008B1284670BD204670BD4FF4A470704735 -:106670004FF4A47070470844184498300AB10421BC -:1066800000E00021084470472DE9F0410E461B2729 -:10669000384691F8341000F06DF84FF4A474A0421D -:1066A00000D920460546384696F8351000F062F8C5 -:1066B000A04200D9204601462846BDE8F04100220C -:1066C0001346D8E7C10701D001207047810701D5E3 -:1066D00002207047400701D508207047002070470E -:1066E0002DE9F0410546164688460124084600F08B -:1066F00044FA0746404600F042FA0346FFF7E2FF3D -:1067000002463846FFF7DEFF52EA000100D10024BE -:10671000990700D10022B90700D1002095F8341064 -:10672000914200D10022327095F83510814200D19B -:10673000002070706AB960B9404600F022FA298FD3 -:10674000401A00B247F6FE71884201DC002800DCE6 -:106750000024204673E710B540F6C41254100129F6 -:1067600003D0022902D0FFDF02E008B110463CE767 -:1067700020463AE711F00C0F04D04FF4747101EB8E -:10678000801006E0022902D0C000703001E08000D5 -:106790003C3080B27047F0B50C7C8B7BCD7B5C408D -:1067A0004B7C02886B4044EA0323067E5A40002457 -:1067B000D5B2120A95FAA5F592FAA2F22D0E120E92 -:1067C00045EA022202EB0212641C1A44E4B292B2BD -:1067D000032CEDD35A402523B2FBF3F403FB14231F -:1067E00001EBD30543762F7A03F00704012505FA60 -:1067F00004F4274204D083761DE00000FFDB05008F -:106800005643320C521CD2B20023C418E47C94428A -:1068100013D30024CE18367A05FA04F73E4201D08D -:10682000521ED2B222B1641CE4B2082CF4D306E0AA -:1068300004EBC30181760020F0BD121BD2B25B1CB9 -:10684000DBB2052BE1D31F20F0BDF0B5437E0C7EFB -:10685000012504FB02322523B2FBF3F403FB1422CF -:1068600001EBD204427602F00703247A05FA03F31F -:106870001C4201D082761EE0037EB2FBF3F403FBE0 -:106880001422521CD2B20023C418E47C944214D3C4 -:106890000024CE1896F8086005FA04F73E4201D0AD -:1068A000521ED2B222B1641CE4B2082CF4D306E02A -:1068B00004EBC30181760020F0BD121BD2B25B1C39 -:1068C000DBB2052BE0D31F20F0BD0000282101F032 -:1068D00055BB30B50546007801F00F0220F00F00DF -:1068E00010432870092910D2DFE801F005070507D9 -:1068F0000509050B0D00062409E00C2407E02224FD -:1069000005E0012403E00E2401E00024FFDF6C70A9 -:1069100030BD007800F00F0070470A6840F8032F80 -:106920008988818070470A6840F8092F89888180AA -:1069300070470278402322F0400203EA81110A43A3 -:1069400002707047027822F0800242EAC11202709F -:10695000704770B514460E4605461F2A00D9FFDF62 -:106960002246314605F1090001F089FAA41D6C7038 -:1069700070BD70B514460E4605461F2A00D9FFDFCC -:106980002246314605F1090001F079FAA41D6C7028 -:1069900070BD30B5017801F00F01032920D0052921 -:1069A00021D14578B0F81910B0F81B40B0F8173075 -:1069B000827D222D17D1062915D34FF44865A942AF -:1069C00011D8B4F5FA7F0ED26AB1082A0BD88A42E0 -:1069D00009D28B4207D8B0F81D00A84205D902E0C1 -:1069E00040780C2801D0002030BD012030BD407817 -:1069F000704700B5027801F0030322F003021A4346 -:106A00000270012905D0022903D0032903D0FFDF3A -:106A100000BD002100E00121417000BD00B50278F9 -:106A200001F0030322F003021A430270012905D08A -:106A3000022903D0032903D0FFDF00BD002100E0BD -:106A40000121417000BD007800F0030070474178DB -:106A500089B1C0780E2805D00F2803D0102801D0A6 -:106A6000192802D31B2904D905E05B4A105C88422F -:106A700001D1012070470020704730B50124054640 -:106A8000C170192902D25448445C02E0FF2900D0A9 -:106A9000FFDF6C7030BD70B514460E4605461B2AEC -:106AA00000D9FFDF6C7022463146E81CBDE870401B -:106AB00001F0E5B9B0F807007047B0F80900704779 -:106AC000B0F80B00704770B5B0F80720B0F8094077 -:106AD000B0F805300179951F40F67A46B54210D8D6 -:106AE000B4F5FA7F0DD261B108290AD8914208D2D3 -:106AF000934206D8B0F80B00B0F5486F01D80120DA -:106B000070BD002070BD42680A60007A087170474D -:106B1000B0F8090070470079704742680A608068E1 -:106B20004860704780890880704750F80E2F0A60CF -:106B3000406848607047D0F81600086070470A68DF -:106B400042604968816070470968C1607047007998 -:106B5000704742680A608068486070470A6842600F -:106B60004968816070470179490704D0407940073E -:106B700001D00120704700207047007970474079AC -:106B80007047C08870470CB514A2D2E90012CDE955 -:106B900000120179407901F0070269461DF80220D0 -:106BA000012A04D800F00700085C012801D9002060 -:106BB0000CBD01200CBD0171704700797047417117 -:106BC00070474079704730B50C4605461B2900D9FF -:106BD000FFDF6C7030BD000008850100000101027C -:106BE0000102020370B50C46A0F12001312901D346 -:106BF00001200CE041280CD020CC094E94E80E0076 -:106C000006EB8000241F50F8806C2846B0472060B7 -:106C100070BD2046EAF7C8FAF9E706207047000081 -:106C20002485010010B5524800F01CFA00B1FFDFC6 -:106C30004F48401C00F016FA002800D0FFDF10BDBE -:106C40002DE9F14F4B4ED6F800B00127484800F02F -:106C500011FADFF81C8128B95FF0000708F1010084 -:106C600000F01EFA444C00254FF00309012060603B -:106C7000C4F80051C4F80451009931602060DFF875 -:106C8000FCA018E0DAF80000C00614D50E2000F0D1 -:106C900064F8EFF3108010F0010072B600D001200C -:106CA000C4F80493D4F8001119B9D4F8041101B947 -:106CB00020BF00B962B6D4F8000118B9D4F80401B5 -:106CC0000028DFD0D4F804010028CFD137B1C6F8AE -:106CD00000B008F1010000F0CDF911E008F1010069 -:106CE00000F0C8F90028B9D1C4F80893C4F80451D9 -:106CF000C4F800510E2000F030F81D4800F0D0F923 -:106D00000020BDE8F88F2DE9F0438DB00D46064612 -:106D100000240DF110090DF1200817E004EB4407E1 -:106D2000102255F82710684601F0A9F805EB8707EF -:106D300010224846796801F0A2F86846FFF780FF04 -:106D400010224146B86801F09AF8641CB442E5DBB1 -:106D50000DB00020BDE8F08372E700F01F020121B2 -:106D600091404009800000F1E020C0F88012704797 -:106D70005601002004E5004000E0004010ED00E076 -:106D8000AE4900200870704770B5AD4D01232B60EF -:106D9000AC4B1C68002CFCD0002407E00E68066099 -:106DA0001E68002EFCD0001D091D641C9442F5D302 -:106DB0000020286018680028FCD070BD70B59F4E78 -:106DC0000446A14D3078022800D0FFDFAC4200D34A -:106DD000FFDF71699D48012903D847F23052944280 -:106DE00001DD03224271491C7161291BC160974971 -:106DF0007078F8F719FC002800D1FFDF70BD70B57E -:106E00008E4C0D466178884200D0FFDF8E4E082DF3 -:106E10004BD2DFE805F04A041E2D4A4A4A38207852 -:106E2000022800D0FFDF03202070A078012801D0C5 -:106E300020B108E0A06800F07FFD04E004F1080044 -:106E400007C8FFF7A1FF05202070BDE87040F8F7E4 -:106E5000AFB8F8F7A1F901466068F8F7ABFEB042A9 -:106E600002D2616902290BD30320F9F756F912E027 -:106E7000F8F792F901466068F8F79CFEB042F3D249 -:106E8000BDE870409AE7207802280AD0052806D08D -:106E9000FFDF04202070BDE8704000F0C5B802207C -:106EA00000E00320F9F739F9F3E7FFDF70BD70B5B3 -:106EB0000546F8F771F9614C60602078012800D030 -:106EC000FFDF6249012008700020087104208D60F6 -:106ED00048715D48C860022020706078F8F7A4FB14 -:106EE000002800D1FFDF70BD10B5544C207838B9B0 -:106EF0000220F9F728F918B90320F9F724F908B1A5 -:106F0000112010BD5248F8F7CEF86070202804D048 -:106F1000012020700020606110BD032010BD2DE90C -:106F2000F041144600EB84070E4605463F1F00F073 -:106F300016FD4FF080521169484306EB8401091F8A -:106F4000B14201D2012100E000211CB11269B4EB71 -:106F5000920F02D90920BDE8F0813E4A95420ED336 -:106F6000AF420CD3854205D2874203D245EA0600E0 -:106F7000800701D01020EEE7964200D309B10F2020 -:106F8000E9E7354835490068884205D02246314650 -:106F90002846FFF7F9FE10E0FFF7A6FF0028DAD138 -:106FA000264800218560C0E9036481704FF4A9710F -:106FB00004FB01F01830FFF77AFF0020CBE770B533 -:106FC0004FF08055044628692249B1FBF0F0844215 -:106FD00001D20F2070BD00F0C2FCA04201D81020E9 -:106FE00070BD1D481D490068884204D0286960436F -:106FF00000F0A2FC0CE0FFF777FF0028F0D1296930 -:107000000E4861438160012181701548FFF74FFFF1 -:10701000002070BD30B452EA030402D030BC062018 -:10702000704730BC00F0E4BE10B5044C6078F8F74F -:1070300094F800B9FFDF0020207010BD5801002037 -:1070400004E5014000E40140105C0C006C0D0020E0 -:10705000FF6D010000900100A4000020BEBAFECA2E -:107060007C5E010000210170084670470146002047 -:1070700008707047EFF3108101F0010172B60278D9 -:10708000012A01D0012200E000220123037001B98E -:1070900062B60AB1002070474FF400507047E9E72C -:1070A000EFF3108111F0010F72B64FF00002027081 -:1070B00000D162B600207047F2E700004C49096831 -:1070C0000160002070474A49086000207047012194 -:1070D0008A0720B1012804D042F20400704791676A -:1070E00000E0D1670020704742490120086042F269 -:1070F0000600704708B504233E4A1907103230B124 -:10710000C1F80433106840F0010010600BE0106813 -:1071100020F001001060C1F808330020C1F8080118 -:10712000354800680090002008BD011F0B2909D8D0 -:10713000304910310A6822F01E0242EA400008601D -:107140000020704742F205007047000100F18040C6 -:10715000C0F8041900207047000100F18040C0F819 -:10716000081900207047000100F18040D0F80009A4 -:10717000086000207047012801D9072070471F4A86 -:1071800052F8200002680A4302600020704701287C -:1071900001D907207047194A52F8200002688A4333 -:1071A000026000207047012801D907207047134A68 -:1071B00052F8200000680860002070470200104963 -:1071C0004FF0000003D0012A01D0072070470A6069 -:1071D00070474FF080410020C1F808014FF0E020D7 -:1071E000802180F800140121C0F8001170470000D0 -:1071F000000400400005004008010040E88501004F -:10720000780500406249634B0A6863499A420968FD -:1072100001D1C1F310010160002070475C495D4B52 -:107220000A685D49091D9A4201D1C0F31000086047 -:10723000002070475649574B0A68574908319A420F -:1072400001D1C0F3100008600020704730B5504BEA -:10725000504D1C6842F20803AC4202D0142802D2FE -:1072600003E0112801D3184630BDC3004B48184431 -:10727000C0F81015C0F81425002030BD4449454B16 -:107280000A6842F209019A4202D0062802D203E0BB -:10729000042801D308467047404A012142F83010C3 -:1072A000002070473A493B4B0A6842F209019A4272 -:1072B00002D0062802D203E0042801D30846704712 -:1072C000364A012102EBC00041600020704770B5D2 -:1072D0002F4A304E314C156842F2090304EB80020C -:1072E000B54204D0062804D2C2F8001807E00428EA -:1072F00001D3184670BDC1F31000C2F80008002089 -:1073000070BD70B5224A234E244C156842F2090321 -:1073100004EB8002B54204D0062804D2D2F800085B -:1073200007E0042801D3184670BDD2F80008C0F366 -:1073300010000860002070BD174910B508311848CA -:1073400008601120154A002102EBC003C3F8101594 -:10735000C3F81415401C1428F6D3002006E00428B6 -:1073600004D302EB8003C3F8001807E002EB8003AC -:10737000D3F80048C4F31004C3F80048401C0628A2 -:10738000EDD310BD0449064808310860704700007D -:10739000A4000020BEBAFECA00F5014000F0014082 -:1073A0000000FEFF784B1B6803B19847BFF34F8F77 -:1073B00076480168764A01F4E06111430160BFF349 -:1073C0004F8FFEE710B5EFF3108010F0010F72B68B -:1073D00001D0012400E0002400F0CDF850B1E9F71D -:1073E0007FFFF7F7A6FCF8F73BFEEBF7DCFC6949FB -:1073F0000020086004B962B6002010BD70B50C46CC -:107400000546EFF3108010F0010F72B601D001268F -:1074100000E0002600F0AFF818B106B962B6082007 -:1074200070BDE9F7D7FEE9F75FFF02460020430988 -:107430009B0003F1E02300F01F01D3F80031CB40A3 -:10744000D9071BD0202803D222FA00F1C90722D184 -:1074500041B2002906DA01F00F0101F1E02191F8B3 -:10746000141D03E001F1E02191F8001449090829F5 -:1074700011D281B101290ED004290CD0401C6428FE -:10748000D5D3EBF78FFC4349434808602046F9F712 -:1074900001FA60B904E006B962B641F2010070BDBC -:1074A000394804602DB12846F9F741FA18B1102483 -:1074B0002CE03A4D19E02878022802D94FF4805484 -:1074C00024E007240028687801D0F8B908E0E8B182 -:1074D00020281BD8A878212818D8012816D001E028 -:1074E000A87898B9E8780B2810D82D49802081F821 -:1074F000140DE9F7F9FE2946F8F798FDF7F7D8FBE0 -:1075000000F060FA2846E9F7BDFE044606B962B607 -:107510001CB1FFF757FF204670BD002070BD10B5AD -:10752000044600F028F800B101202070002010BDB2 -:107530001C4908600020704710B50C46102808D080 -:1075400011280BD012280CD013280ED0012008606F -:1075500010BDD4E90001FFF751FF0AE0FFF732FF49 -:1075600007E02068FFF7DBFF03E00E4920680860B2 -:107570000020206010BD074807490068884201D1FB -:107580000120704700207047700100200CED00E0E2 -:107590000400FA05A4000020BEBAFECAF08501006E -:1075A0000BE000E00400002000B5C04910F1080F16 -:1075B00019D00CDC10F1280F1DD010F1140F18D0C9 -:1075C00010F1100F13D010F10C0F08D10DE010F1D5 -:1075D000040F06D080B103280ED004280CD0FFDFA2 -:1075E00000BDFC2008E0F82006E0F42004E0F020D4 -:1075F00002E0EC2000E0D820086000BDAB4900B5F7 -:10760000091D012803D0022803D0FFDF00BD03209D -:1076100000E00420086000BDA54930B1012803D175 -:10762000086840F0010008607047086820F0010019 -:10763000F9E72DE9F0411E4604464FF4C86040F6D4 -:10764000980340F6E4474FF47A75012917D0022ACF -:1076500024D0012A25D0042A25D0964938460F186F -:107660003046F9F7CEFF07443046F9F7E4FF3844D7 -:1076700000F27120B0FBF5F0201ABDE8F081022A7B -:1076800008D0012A02D0042A06D0384649F608510B -:107690004718E5E72846F9E71846F7E786492846F8 -:1076A000DDE78649DBE786491846D8E770B514461A -:1076B000064601291CD0022B1DD0012B1ED0042B05 -:1076C0001ED0804DFA351046F9F7A8FF4FF47A71B5 -:1076D000012C17D0022C17D0042C18D0CA00AA1ADB -:1076E000104400F28920B0FBF1F0301A801E70BD0A -:1076F00049F6CA65E7E7704D643DE3E76F4DE1E7A2 -:107700006F4DDFE70A46EAE74FF4FA72E7E74FF416 -:10771000FA62E4E72DE9F041144605464FF4C860EB -:1077200040F6980240F6E4474FF47A7601291BD0E0 -:10773000022B28D0012B29D0042B29D05D493846B3 -:107740000F182046F9F76AFF0146012C23D0022CBE -:1077500023D0042C24D04FF4FA50381A084464384B -:10776000B0FBF6F0281A88E7022B08D0012B02D0D4 -:10777000042B06D0384649F608514718E1E7304651 -:10778000F9E71046F7E74C493046D9E74B49D7E7C8 -:107790004B491046D4E73046DFE74FF4FA70DCE798 -:1077A0004FF4FA60D9E770B516460546012918D09E -:1077B000022B19D0012B1AD0042B1AD0414CFA34C9 -:1077C0001046F9F71EFF04443046F9F734FF204411 -:1077D0004FF47A7100F2E140B0FBF1F0281A801EFC -:1077E00070BD49F6CA64EBE7334C643CE7E7334CC1 -:1077F000E5E7334CE3E72DE9F04106461D460C462C -:107800009046104600F048F806EB4601C1EBC61161 -:1078100000EBC1004FF47A76012C14D0022C14D066 -:10782000042C15D0F10047182046F9F7F7FE381A56 -:1078300000F60F60B0FBF6F44046F9F7D8FE20449E -:107840002844401D19E73146EDE74FF4FA71EAE7A5 -:107850004FF4FA61E7E770B5044615460E46084650 -:10786000F9F7CFFE04EB4401C1EBC411C0EBC10436 -:107870003046F9F7E0FE241A284600F00DF82044BF -:107880004FF47A7100F6B730B0FBF1F42846F9F7FF -:10789000AEFE2044401D70BD082803D0042801D04E -:1078A000F9F7AFBE4DF68830704700000C15004068 -:1078B0005016004030D3010068360200A2240200B6 -:1078C000D0FB0100C0D401002DE9FE430C468046E8 -:1078D000FFF7B9F8074698F80160204601A96A4603 -:1078E000F5F705F905000DD0012F02D00320BDE802 -:1078F000FE83204602AA0199F5F71BF80298B0F81A -:1079000003000AE0022F14D1042E12D3B8F80300AA -:10791000BDF80020011D914204D8001D80B2A919B4 -:10792000814202D14FF00000E1E702D24FF00100A6 -:10793000DDE74FF00200DAE70B4A022111600B4944 -:107940000B68002BFCD0084B1B1D18600868002832 -:10795000FCD00020106008680028FCD070474FF071 -:10796000805040697047000004E5014000E4014098 -:1079700002000B464FF00000014620D0012A04D03F -:10798000022A04D0032A0DD103E0012002E00220E4 -:1079900015E00320072B05D2DFE803F00406080AF0 -:1079A0000C0E100007207047012108E0022106E0BC -:1079B000032104E0042102E0052100E00621F7F79D -:1079C0008EBB0000F94805218170002101704170D3 -:1079D0007047F7490A78012A05D0CA681044C86080 -:1079E0004038F8F7B4B88A6810448860F8E700288F -:1079F00019D00378EF49F04A13B1012B0ED011E0F2 -:107A00000379012B00D06BB943790BB1012B09D15C -:107A10008368643B8B4205D2C0680EE00379012B7A -:107A200002D00BB10020704743790BB1012BF9D183 -:107A3000C368643B8B42F5D280689042F2D8012043 -:107A40007047DB4910B501220A700279A2B1002209 -:107A50000A71427992B104224A718268D34C52323F -:107A60008A60C0681434C8606060F7F795FBCF493E -:107A700020600220887010BD0322E9E70322EBE7B3 -:107A800070B5044609B1012000E00320C84D002173 -:107A90002970217901B100202871607968B1042032 -:107AA000C24E6871A168F068F7F77FF8A860E068D7 -:107AB0005230E8600320B07070BD0320F0E72DE97C -:107AC000F04105460226F7F76EFF006800B1FFDFC0 -:107AD000B64C01273DB12878B0B1012805D0022865 -:107AE00010D0032813D027710CE06868C82807D38A -:107AF000F8F793F820B16868FFF76BFF012603E001 -:107B0000002601E000F05CF93046BDE8F081207805 -:107B10000028F7D16868FFF76AFF0028E3D068689B -:107B2000017879B1A078042800D0FFDF01216868CE -:107B3000FFF7A6FF9E49E078F7F776FD0028E1D130 -:107B4000FFDFDFE7FFF77DFF6770DBE72DE9F04739 -:107B5000964C8846E178884200D0FFDFDFF84C92EF -:107B600000250127924E09F11409B8F1080F75D2CA -:107B7000DFE808F0040C28527A808D95A07803285D -:107B800002D0022800D0FFDFBDE8F087A0780328EC -:107B900002D0022800D0FFDF0420A07025712078D9 -:107BA000002878D1FFF715FF3078012806D0B0689B -:107BB000E06000F024F92061002060E0E078F7F751 -:107BC00030FCF5E7A078032802D0022800D0FFDFC0 -:107BD000207800286DD1A078032816D0F7F7DCFABA -:107BE00001464F46D9F80000F7F7E4FF00280EDB06 -:107BF000796881420BDB081AF0606D49E078F7F78D -:107C000013FD0028C0D1FFDFBEE7042028E00420D8 -:107C1000F8F783FAA570B7E7A078032802D0022806 -:107C200000D0FFDF207888BBA078032817D0F7F7B3 -:107C3000B3FA01464F46D9F80000F7F7BBFF00281A -:107C4000E5DB79688142E2DB081AF0605849E078A8 -:107C5000F7F7EAFC002897D1FFDF95E740E0052021 -:107C6000F8F75BFAA7708FE7A078042800D0FFDF51 -:107C7000022004E0A078042800D0FFDF0120A168E2 -:107C80008847FFF71CFF054630E004E011E0A078CC -:107C9000042800D0FFDFBDE8F04700F091B8A078DD -:107CA000042804D0617809B1022800D0FFDF2078D1 -:107CB00018B1BDE8F04700F08CB8207920B106205B -:107CC000F8F72BFA2571CDE7607838B13849E078BC -:107CD000F7F7AAFC00B9FFDF657055E70720BFE79B -:107CE000FFDF51E73DB1012D03D0FFDF022DF9D1B8 -:107CF0004AE70420C3E70320C1E770B5050004D0BC -:107D00002A4CA078052806D101E0102070BD08207B -:107D1000F8F719FA08B1112070BD2848F7F7C3F930 -:107D2000E070202803D00020A560A07070BD032063 -:107D300070BD1E4810B5017809B1112010BD8178C1 -:107D4000052906D0012906D029B1012101700020A2 -:107D500010BD0F2010BD00F03CF8F8E770B5134CD3 -:107D60000546A07808B1012809D155B12846FFF78A -:107D70003EFE40B1287840B1A078012809D00F20FC -:107D800070BD102070BD072070BD2846FFF759FE5A -:107D900003E000212846FFF773FE0549E078F7F776 -:107DA00043FC00B9FFDF002070BD0000740100201B -:107DB0007C0D00203D860100FF1FA1074D7B0100C7 -:107DC0000A4810B5006900F019F8BDE81040F7F74F -:107DD000EFB8064810B5C078F7F7BFF900B9FFDF74 -:107DE0000820F8F79AF9BDE81040EBE5740100208F -:107DF000094A1060101D0160002070477047002084 -:107E00007047054B02465B4210201344FC2B01D8FF -:107E10001160002070470000000600407047704766 -:107E200070477047704740EA010310B59B070FD1B8 -:107E3000042A0DD310C808C9121F9C42F8D020BADA -:107E400019BA884201D9012010BD4FF0FF3010BD92 -:107E50001AB1D30703D0521C07E0002010BD10F860 -:107E6000013B11F8014B1B1B07D110F8013B11F826 -:107E7000014B1B1B01D1921EF1D1184610BD032AE4 -:107E800040F2308010F0030C00F0158011F8013B37 -:107E9000BCF1020F624498BF11F801CB00F8013B1E -:107EA00038BF11F8013BA2F1040298BF00F801CBE2 -:107EB00038BF00F8013B11F0030300F02580083AB9 -:107EC000C0F0088051F8043B083A51F804CBA0E810 -:107ED0000810F5E7121D5CBF51F8043B40F8043B65 -:107EE000AFF30080D20724BF11F8013B11F801CB9A -:107EF00048BF11F8012B24BF00F8013B00F801CB6B -:107F000048BF00F8012B704710B5203AC0F00B8035 -:107F1000B1E81850203AA0E81850B1E81850A0E88D -:107F20001850BFF4F5AF5FEA027C24BFB1E81850E7 -:107F3000A0E8185044BF18C918C0BDE810405FEA57 -:107F4000827C24BF51F8043B40F8043B08BF7047D3 -:107F5000D20728BF31F8023B48BF11F8012B28BFD8 -:107F600020F8023B48BF00F8012B704702F0FF03E6 -:107F700043EA032242EA024200F002B84FF0000254 -:107F80000429C0F0128010F0030C00F01B80CCF12B -:107F9000040CBCF1020F18BF00F8012BA8BF20F899 -:107FA000022BA1EB0C0100F00DB85FEAC17C24BFED -:107FB00000F8012B00F8012B48BF00F8012B704797 -:107FC0004FF0000200B5134694469646203922BF72 -:107FD000A0E80C50A0E80C50B1F12001BFF4F7AFBD -:107FE000090728BFA0E80C5048BF0CC05DF804EB9F -:107FF000890028BF40F8042B08BF704748BF20F80D -:10800000022B11F0804F18BF00F8012B704770470A -:108010007047704770470000FEDF04207146084239 -:1080200019D10699124A914215DC0699023948780D -:10803000DF2810D10878FE2807D0FF280BD14FF099 -:1080400001004FF000020B4B184741F2010000996C -:10805000019A084B1847084B002B02D01B68DB68BD -:1080600018474FF0FF3071464FF00002014B1847A0 -:1080700000900100A5730100040000201848194970 -:108080007047FFF7FBFFE9F789F800BD4FF4805018 -:1080900015490968884203D1144A13605B68184780 -:1080A00000BD000020BFFDE74FF480500E49096875 -:1080B000884210D10E4B18684FF0FF318842F1D042 -:1080C00080F308884FF02021884204DD09480268C7 -:1080D00003210A4302600848804708488047FFDFC1 -:1080E000900D0020900D00200000002004000020D2 -:1080F00000900100140900406D0901008D8001000D -:1081000004207146084202D0EFF3098101E0EFF349 -:108110000881886902380078102813DB20280FDBDB -:108120002C280BDB0A4A12680A4B9A4203D16028BA -:1081300004DB094A1047022008607047074A1047CD -:10814000074A1047074A12682C321268104700008D -:10815000A4000020BEBAFECAED120000E56B0100CB -:1081600039750100040000200D4B0E4908470E4BE5 -:108170000C4908470D4B0B4908470D4B0949084767 -:108180000C4B084908470C4B064908470B4B05495F -:1081900008470B4B034908470A4B024908470000B0 -:1081A000D98C0000A12E00008D2C00009B890000BE -:1081B0002F890000132D0000F3120000752C000021 -:1081C000452E0000A9110000717F00005F810000B2 -:1081D000BF820000E38200001D8300005183000085 -:1081E0008D830000BD8300002B8400007B80000095 -:1081F0006F1200006F1200000920000053200000E1 -:1082000075200000FD20000019220000DB22000084 -:108210000D230000F9230000D92400002B250000C5 -:10822000AD250000CD2500000B2A00002F2A0000FC -:108230005F290000B3290000612A0000F52A000030 -:10824000333D00000D3E0000494100004742000060 -:10825000BD420000274300008B4300007312000062 -:108260007F440000EB440000EF250000F5250000EE -:1082700073120000731200007312000073120000EA -:10828000FF25000037260000731200007312000063 -:10829000731200006F1200006F1200006F120000D6 -:1082A0006F1200006F1200006F1200006F120000CA -:1082B0006F120000F75200007D5300009953000038 -:1082C000B553000043550000DF530000E9530000A0 -:1082D0002B5400004D540000295500006B55000040 -:1082E0006F1200006F120000DB6D0000FB6D0000DC -:1082F000FD6D0000416E00006F6E00005D6F0000BC -:10830000EB6F0000FF6F00004D7000003D7100003A -:10831000E37200000D740000EF5D000025740000A2 -:108320006F1200006F120000731200007312000041 -:10833000731200007312000073120000100110018C -:108340003A0200001A02000405060000B37A000099 -:10835000A17A0000FFFFFFFF0000FFFF37B300001E -:108360009D1B00009D4E0000395E000073780000E8 -:1083700000000000876B0000676B0000D56B0000F9 -:10838000795200003B5200005B520000EFB1000048 -:108390007DB2000041370000F56B000000000000D6 -:1083A000256C0000C7520000000000000000000023 -:1083B0000000000000000000C1370000513500003F -:1083C00051350000E51F00009DB20000BB600000B9 -:1083D000AF4D00000F4801007F3500007F350000E1 -:1083E00007200000C9B200003F610000214E0000DC -:1083F0002348010070017001400034005C0024003B -:10840000C00100000300656C746200000000000001 -:1084100000000000000000000000870000000000D5 -:1084200000000000000000000000BE83605ADB0B6B -:10843000376038A5F5AA9183886C00000100000020 -:1084400001D70000C9E50000000000010206030496 -:10845000050000000700000000000000060000000A -:108460000A0000003200000073000000B4000000A9 -:10847000113501000000000015240100E356010041 -:108480000000000000000000292701007F5B0100C0 -:10849000000000000000000075230100275B0100C0 -:1084A000000000000000000013240100F556010048 -:1084B0000000000000000000E3270100C15C010093 -:1084C0000000000000000000555555D6BE898E0002 -:1084D0000000C706C70CC71200006B030F06B308E5 -:1084E0000000B704A708970CF401FA009600640096 -:1084F0004B0032001E0014000A00050002000100BB -:1085000000410000000000000C0802170D010102EC -:1085100009090101060209181803010109090303E9 -:1085200005000000057201001D7201003572010096 -:108530004D7201007D720100A5720100CF72010031 -:1085400003730100BF6F01001F6F01001570010070 -:10855000037E01006570010075700100A1700100CB -:10856000730201007B0201008D020100CF70010047 -:10857000E9700100BD700100C7700100F5700100D5 -:108580002B7101001B6C01004B710100597101003E -:1085900067710100777101008F710100A7710100FF -:1085A000BD7101001B6C010000000000078B000082 -:1085B0005D8B0000738B000071790100416C01003C -:1085C000076D0100FB7C0100337D01005D7D010032 -:1085D000BD000100410401001B6C01001B6C010087 -:1085E0001B6C01001B6C01001C05004020050040B5 -:1085F000001002001486010008000020880100001D -:10860000441100004886010090010020000C000089 -:108610008011000001190545100E002036010001EF -:1086200000703720FB349B5F80041B8000100D21FD -:10863000F7070020B40700203A0800200581100940 -:088640000020024C10000000B4 -:00000001FF