1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
MZ@ !L!This program cannot be run in DOS mode. $\2֣2֣2r3ק2ְ֪2֣3-2֣2֢2r6ש2r1צ2r7ׂ2r:׃2r֡2r֢2r0ע2Rich2PEd!j" &`@ 0 , `6 `M h( X) p@H0.textS `fothk `.rdataFy@@.dataNP P @.pdatah( 0` @@.rsrc`M P @@.reloc   @BH @ H i H 9 H H ɨH ɨH H `H @H  H H H )H )H )H )`H(@Z H [HH@H@f@H K H(H H H H H H `H(hZ H HH@H@f@HJ H(H(H < H^DH ҨH(H(H"H3H(H@ H@ H(HH3H(@SH   Xt^ H  u=  ti l uH [ù H( 3H(H(  H(H\$Ht$WH0C5@2@t$ ؋ ? "uJs? HH }t H[H |5? @@t$ 4 HH8tH~tE3AP3HY HH8tHStH HHLHӋ! tU@u3ұ t;|$ u:H\$@Ht$HH0_ù@ 5 hH(H(^ffH; I; uHfuH@SH HHHtHH [H( t!eH%0HHH;t3H = u2H(ðH(u=  u2u 3H(@SH =W= ugwju t(u$H = uH = t.23foH< H< < H< < H [ùzHLMZf9uxHc HHʁ9PEu_ f9AuTL+QHHAH L H$I;tJ L;r BL;rH(3Hu2z$}2 22H@SH O 3҅t uH; H [@SH =; tu H [@SH H=; Hu HH ; I 3҅HDHH [H(HH(U @SH H37H6 HȺ H [H%HL$H8t)H ; HD$8H< HD$8HH!< Hz< H: HD$@H; : : : HkH : HHkH 7 HL HkH 7 HL H xH8H(H(̉L$H(tD$0)H : yHD$(H; HD$(HH-; H; H9 9 9 9 HkH 9 T$0HH -H(HHX WH@H`HH`H`dHHT$PHE3DHt2Hd$8HL$XHT$PLHL$0LHL$`HL$(3H\$ H\$hH@_@SVWH@Hd$hHHd$`Hd$pH3E3HT$`HHt9Hd$8HL$hHT$`LHL$0LHL$pHL$(3H\$ ǃ|H@_^[@SH HHtHK HtH [Hty'H8HD$ 3H8HHXHp HPHHWAVAWH0MMHH3HXXI;tHIHH|$PHH\$(D$ H\$`Ht$hH0A_A^_HLH L@HPSVWAVH8MIH@HIHHxHHH\$pHtH+H|$`HIfD$ H8A^_^[H\$Ht$HL$WAVAWHPMILH3H\$8H;tI+H|$pHI HL\$PI[(Is0IA_A^_H\$UHH0H3 H2-+H;uyHeHMHe5HEHE/H1E+HMH1E#EHMH H3EH3EH3HH#H3-+H;HDH83 H\$PHHi3 H0]̸3̸@H a; H%z̰H(_H$fHH(H~ H~ ̃%: H\$UH$@Hٹt)3HMAUHMHHHHE3HtLHd$8HHLHLHHL$0HHL$(HMHL$ 3HHL$PH3HAHHHHD$`D$P@D$T3HD$PHD$@HEHD$H HL$@ u tHH$H]H(3pHt9MZf9u/HcHHH HH;wAT$ HH;HBHT$`HL$`qHL$`HHHOHLHoIHu_HT$xH 3O6c_H\$PHfD$nHl$XH A_A^A\_^@SH HHH uWH HSHHHpHHH [@SH HHH 1WH HSHHHDHHH [HaHHAHHHH\$WH HHH;tiHQHv1H HUHrLAH'I+HAHwEI4HC3HCfOKHGHGfHH\$0H _HD@SH HH`Dt tHˋH;DH [@SH H ( Htr=( tHtDt HDH%( H  ( uH= HG  HDH= HG  :H [( Htr=W( tHDt H^DH%)( H  #( uH= HG  H8DH= HG  H ' Htu=' tHxDt HDH%' H  ' u!H= HG y H [H%H=x HG X ;H [@SH 0HSH A' H$ HHH$ HDH$ HuH ' H!$ HDt HDH [@SH H & HtIHwDu9L& H' H˺HiDHtm$ HH& 3H [HHXHpHxL` AUAVAWH E3DD8-& t^f D-& PHH s& FDH# Hu L# HVA @ H5# fD-# HD-# D-*f A D9-f EH & AAHuH% HA Et1fA;w(AHH% ft fA;v IH% Hf8;uuHH% HHfD9,XuH ]HEDLHt[LY% HHHSL( Hb" Hu L^" LILG" H % Hu,Et'A A5HAEt HtHH$ d ˃HwDCf7wH??HiH$ H $ H;vHHo$ ffk$ fD-e$ H T$ fD/+AnLH3uHHDf_H$ H $ H;HH# fHDtc HlDu}f_twDX=fA;ODP(fA;7DH)fA;P:f; H+f;D@ fA;9f;ftqDHH7 ,c fHf# fD-# H # fD/Et$H " @H^ HLrb H " AD b H+κHHtD1fEtfDHHuHL-" HNAHEfD)4%DDDBb H\$@Ht$HH|$PLd$XH A_A^A]@SH E3! H! HHEA=E3HHEA=E3HHEA=E3H$HEAt=E3H.HEA^=E3H0HEAH=E3H2HEA2=E3H4HEA=E3H>HEA=E3H@HEA<E3HBHEA<H [HT$LD$LL$ SVWH@tt Z HH5H= HDH= HG= DHt$ LHHH\$pHT$hLH4HHpgH@_^[HUATAUAVAWHhHHD$HHXHpHxH H3HE/3HMHULMI+HL5 ~H95 uEH H;w1IHHG= H HLIHTf4;~IQHEL-z H;EuHIH  IIH+H MH9=r LG R HD$0HHD$(HL$ HMgHUH HHMH : H IH+H;L  H9= LG  IH9= HG HT$0HD$(HL$ HMHUHM>H HzEHMHpHxf0HUL% I1HMHMHMH U HN IH+H;L ( H9=9 LG  IH9=' HG HT$0HD$(HL$ HM'HGHMNEHMHpHxf0HUH=9 HyHM$HMH  H L+L;$AL9= L p LG h L9=y LG5Y HT$0Lt$(HL$ HMyHHMEHMHpLxf0HUH K HMyHMo5a f5 H5 HLHQ=N HEL9= LG- EGIHѿDH HuH1H}@85 t6HL9=I HG) H  tL9=* HG  LjIL9= HGs H  tL9=t LG%T M4HL9= HG} H  tYL9=~ HG=^ LHH ; Ht!HDH5# H5 f5 3>@@HM/H3L$I[0Is8I{@IA_A^A]A\]'!H\$Ht$WH HLI tt HHHAIHDHHuHDD&{@s tH HDC3H;@s H\$0Ht$8H _HBAMI;wFL+L+E3IHtA ft fHHuHHAHEHfD%zE3WHtfDH\$Hl$Ht$WAVAWH ILI3HHf9,Zu@8i uDt_HA NH?Df;t;u7HiDAD#L IDHDH;uɋH\$@Hl$HHt$PH A_A^_HHHL$ HWHL$ H(H H\$Ht$WH0HzHLBvHHIHCH+L;w)H{I4HsHvH;H OM+M3fwLLD$ IHXHHt$HHH\$@H0_H\$Hl$Ht$WH0LHH3HfA9,QuHIHCH+H;w+H{H4HsHvH;LIH OLf,wHHT$ HHl$HHH\$@Ht$PH0_HyvH HHyH\$Hl$VWATAVAWH LyLHIHI+H;MfIHHH;wIHHH+L;w J "H;HCHT$PHL$PHL$PKHHXHXfxt$0LHT$0H,L@MA~IL\$`I[IkIs I{((t$PIA^y;H(HIHt @ŻH(H\$Ht$WH HHHx+LGHHHH?HK @HrtH@H\$0Ht$8H _P@SH HHIHt H ]HKHt @H [OHUWAVHhHHEHXHpHH3HE7HE3H fH Du f;_}H{!HߤDu f?_ZHfuWELuLuHLIfF94CuHHMLEHUH HuD8vuTHF LPHxvHHUH}HGUL]IM;IBHtH+DfD;HHuM;sH5; HMH;5+ uxWEWM'HfD94{uLHHM5LEHU#HMHM7H3EL$I[(Is0IA^_]{oHH F3H 7HH ȭ'H\$Hl$Ht$WATAUAVAWHPH@ Lq3HH9@ t IHtHD$HH·HD$@H(D$@HT$@HfD$@.MM@8=TtLHH LL$ >H9={Mu\H9=HDNu'@8=HH$DL$ L HHDZ@8=HlH=HD?H=H kFL LG H@8=D$ HDHLF AMtH0Ht'HHDfA;u HܠDHHDfA;u HDH9=!Ht!L MtFH A9@HCHL:MnA9ouuM&MtWMoMtNH=H=rHG=_Ld$0H^Ll$(DLljl$ H_3DHy3wIILHnHHHuH5?L\$PH2I[0Ik8Is@IA_A^A]A\_@SH HHu.H=HGLHH2=H=HGlLHH}z+6+++t@;3R3BHH gf33 ;Hu 0 u  LHI s 33.AH \3p3`AH +3A31D@H I3 GQ33H9H :MH=EH&HGH8tLHH H [H!)LH$H@HOHִLI lH\$Ht$H|$AVH0*8HDHHuH~HH `@σ` @2H`H`H` H`0fx(L5 +t]+t9+*3y3iI<HC3HH tHe3(H DH5p@3@3;u!CC 7u3;C{ @=\ IzHC@jHLI 4LH;t MHۃ{ H o@=u AljC 9{ uAC{vDCH5HL5[HD$(HT$ p HW q IHD$ (D$  s 5sfD$ n LCIMtHDH:HD$(HHD$ HT$ (D$ IfD$  Hht5H`HmKH@+HHֲHHeD2H\$@Ht$HH|$PH0A^H\$Hl$Ht$WATAUAVAWH@E3La LEAn@H=7 3H H HDHHpL0HH VQ PDp DpLpfD56 HH 6 HfD94Au Htf9TAuf?.uf9Wu fD9wA HݲHH˘DA HѲHHDED85IfD97H ALt$8LLt$03Dt$(ILt$ HDLc^IHטDHHCHd$8AH %LHd$03Dt$(HD$ IHDE3LLHH 4HHDLH߮H IIfF94_uKHIH;mH 4 HH+LHHH+KJ4^DAˉKEtA;vHHHD9suyMEHH+HHH+HMt3EML~LHHEuLHH HHfD94NuKH4NL5XD85L=3 fD6t/Ct(H HfB98uKH=fF48CH4EHHזDHHtGLIHH'H{DI$LNAHL)HǹHRH誼2%LH`I y@-\@L\$@I[0Ik8Is@IA_A^A]A\_uH\$WH HH3Yu$HHtH.HLLmHI 2H\$0H _H\$Hl$Ht$WATAUAVAWH LE3D3330DmH 3H3V3A;2=3ru!3fH 5HED-A;LDHI HHHqDiudHt_3A;9E 0HqD=t"]謷DHDH艺32H\$PHl$XHt$`H A_A^A]A\_HDA4EH\HH*LA HDuHFH}A{H\$H|$HBMLHH=LH3f98t HIuIIHII+ҁWHML#Mt_IJCI+t1M+IHL+HtEfEtfDHHHuHBHHEHҁzf8WH\$H|$LD$LL$ SVWAVH8HB3LH=vWHt1f,HrHLL$xx HH;wu zfAvH8A^_^[H\$Ht$WH@HHH `H脵HH,LdhHLHLPHH<3 HL$ 蜹HHL$ 蹶H\$H|$Lt$UHH0==HVHHUtHHEwHHEHE(EfEsHE"H,HEHU(EHfEKH=L5U*LGMt=iHDO HIDXH?HuHE%HEHEHU(EHfEH=E*LGMt= HDO HIDH?HuHEH HEHU(EHfE@8=t]HEHHEHU(EH !fEOH=wL XLHbLG BH bH\$@H|$HLt$PH0]H\$UVWH0HzH3H$ y HH:Zu>L HLHcDH;HvDD\3:fDT :fDT :fDT :fDT ;uLHL$ LźHDH;uH;stc3DAt7:fDT :fDT :fDT :fDT ‹A;u;t:fDT ;uLHL$ 3H$ H3H$`H0_^]H\$HALLHI@I;uMMBMBA@39ZuL@I;BuMB LI;uMI@IHJLIIH;IA8XLII;uFIHHAI8XuHHHAIAIH;HuLHHAH;uLLHI LIHB@HBHHYHBHHL IAHIA8XuHHHAIAIH;HuLHHAH;HuLHLII8Xu A@HBHHYHBHPL I;uIIAHHIA8XuHHHAIAIH;HuLHHAH;HuLHLIILIHB@HBHHYHBHHLIIHAI8XuHHHAIAIH;HuLHHAH;uLLHI LIHB8XFIB@H\$IH(H MhH\$Hl$Ht$WH LHH3HfA9,QuH;Qw)HyHvH1HHQLIHuf,3趸HH\$0HHl$8Ht$@H _H\$Hl$Ht$WH 3HHHt& 3HrDt HH;u<3<@H\$0@Hl$8Ht$@H _H\$Hl$Ht$WH 3HHHt' ^H Dt HH;u f<^<@H\$0@Hl$8Ht$@H _LD$HL$SVWATAUAVAWH@HD$0LH`' ML+H[' H+HII;9LHLL$ H 9' H+HHHIH+H;H II;HCI;HHH$Hr?HA'H;HA3HtHX'HHCL$1H D3Ht HL$HH$H$IM$Ml$ Ll$(L$IWA$I|$I|$IIfB9IHLt$`Hr)HO'H;HHHX'HHC#HtH$HHD$hLt$` 3Lt$`H\$hIM4AEAL H HM;uL+ML+A INLv M+I+ H [ HtAH_ H+HHHr"H'HIH+HHv HhxDɎH HHH5 H H  IH\$pHt$xH0A_A^A]A\_Z@WATAUAVAWH0HD$ H\$pHt$xMLHLL+1IHAH+HII;L`HIH+HHHIH+H;H II;HCI;H H|$`Hr5HA'H;HdHtHX'HHC-H:wD3Ht8HHD$hH|$` H|$`H\$hN4IEILFHHM;uL+ML+eINLFM+IRLMHH=IH\$pHt$xH0A_A^A]A\_c@SVWATAUAVAWH`HD$8MHHLL+9IHAH+HII;@L@LD$ HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;HHX'HHC,MtIƑHH$L$3L$H$J HL$(LqLt$0IEIeHH$LGHHH\$HH|$PI;u<HH!HHHT$HHI;uHT$@_HH!HHHT$HHH;uHT$@HL$@H$HOH|$PHH&IIHH;Lt$HuLt$@HL$@BH7HtrL3L6Mt'IN@>IN 5I)hIHI;uHHWH+HHrH'LAI+HAHw6I賊HHD$ H HOI HOHD$(H`A_A^A]A\_^[HtD˷EHT$VWAVH0HD$ H\$`LHHyH+9HH HH;HHr1HA'H;vmH訏HtHX'HHCH~sD3Ht|HH\$PLFL+HHMLHHH\$`H0A^_^G:@SH0HD$ HH!HQH H"Ht HH@2HH0[@SH HH H#Ht HqDHH [H!H3WHAHH\$Ht$WH HqH3H;Ht'HO@HO HhH襈HH;uH\$0Ht$8H _H(HHtHAHHHt H.qDH(H8HD$ HHtHAHHHt HH@\1H8H(H Ht HpDH(H8HD$ H Ht HH@1H8@SH HHt'HK@՛HK ̛HhH臇H [@SH HH Ht?HSH+HHrLAH'I+HAHwI6H#HcHcH [HpD@SH HH Ht?HSH+HHrLAH'I+HAHwIʆH#HcHcH [HBpDH\$Hl$Ht$WH HHHHi3H3Ht'HN@薚HN 荚HhHHHH;uHHWH+HHrLAH'I+HAHw,I H'HgHgH\$0Hl$8Ht$@H _HtoDH\$Ht$WH HHHtbHqHK ۙHәH@H;uHHWH+HHrLAH'I+HAHw'IfH'HgHgH\$0Ht$8H _HnDH(9| HmDH(H(f9t HmDH(H\$Ht$WH HH;tGHzHBvHH;Aw(HyHvH1HHALH3f3 LHH\$0HHt$8H _HH9H̸A̸@HUATAUAVAWHhHHEHXHpHx HH3HE'L3D]H5WEH]HEf]HD{)H"HMHVHMHt藱sH艱DFLM!IAf ffD+fA0fED…uLE!IHM]ADuHUHM蠰HM.HMH;MsHAHEHEH}HGEH) EHM}HF L`IIfC9|u~HUH}HGUWEH]H]LEHM.HUHM[ADuHM藖H]WEHeHeMIHMHHEHE(EfELEHUH*HMgDHM;r WHH9{w{HݾHH{vHHMH}'HGMDOL|$(HD$ E3IHfD;vIxH菾HH{vHHMH}'HGML|$(HD$ DE3IHrfDt;wHAu>IHPHM*HM/H3}L$I[@IsHIA_A^A]_]̺WHMHHM̋HMۏHԚHMH8D$  2D$ D$ H8HUHHHEHXHxHoH3HEHqHEHE HHEHE9HHEHE5H3H}HUHUH}HUH&H QTHUHtHEHHHt H|eDHMHHf9HHIHMW3EHMHHUAfEE)EMMLEPHUHHe"HMHt HaD*fD9ePtKHMHt HH@*"HMXHt HH@"IH$HĀA_A^A]A\_^]IdHIdHHGHM豊HHMχ,HLH HMyHrHM藇HMXHH߅HL gLH踈HM%HHMC̹蠅HMH耈HMHHM HHHWHPH@HXHHك`HHH`DHD$ HuHuHH\$hHP_̺HL$0pHiHL$0荆HHHWH`H@HXHك`H!@H`HHH!H@HD$ L ѧ3DBH ܦHu_DLD$@MtHT$HH LHt HHBH H H3HH HH\$xH`_HUWATAVAWHH0 HD$pHXHp)pHKH3H LH3APHMTWEE3LeHEfDeD$xLeHEfDd$xHHfD9$FuHHr f~:uHNHHVHLIHfD<;HSL%IH=vHHgD8=HDHXH]^HՙD8=t/HH=IHG)UyLHH5|HEH+EHH3H=HG=HHL$pvyixMHdH{HL$puHL$PjHM02HH3jH$ HA_A^A]A\_^]L|$HH]HH;]H{(D8d`HT$HH82pHL8G`BLzHL$HHJ LzfB(Lz0LDDH 2Ht ;AvH&H$ D;Hr.LHHuH;tHHHCD8xt,HCIHIH;Xu HH@D8xtHHHD8xt HH HtKD8=tHSDt H SDD=L=ѯHH=HG n葆L="H +3HuHIuH @8|$@HHH HVH+H;L H=LG ܤH~vH6HT$0Ht$(HL$ HM҃HUHM0$HH`EHM3HpH@f0HUHMHM|HM0|HM|H=HGbLEH}(LGEHU H;YHL+Bf;HHdHH+H;L ߣH=LG ϣIH=HGHL$0HD$(HT$ HM輂HUHM0~HΣHJEHM3HpH@f0HUHMHM{HM0{HM{H95HH H+H;sH=LG%H=LG=ТHL$0L|$(HD$ MHMH XHMEHMHpH@f0HUHH;HMzHMzHH=HG͢H t)H=͢HGLHW AMu0HEH}(HGEIE(IHL$pyHEf90AWEHuHEfuEHuHHMNLeHUH+UHHMHEHMH+HE3HAL}Lٺ@HMPIHMեHUPHMHHM谓H[M4HEMHHL$pGxBLEH}LGEHEHI/;u;HEHMH+HH;brHDH<tHM>HM'yHL$paoHL$P:HMyDIsHعxrLH0HXuWHM0vHHM0sPHHXHhHpWH0LbD΋։hHHSLD];u2}DΉl$ L:HH&LD;SDΉl$ L#HHKD;,DΉl$ L HHKD;DΉl$ LHHKD;DΉl$ LޓHHKD;DΉl$ LǓHHcKD;DΉl$ LHHH\$@Ht$HH|$PH0A^@SH YuHtHS(HJ_H [EtAtAtWHQHQ H;Qv@HQ 3MtHI I @UHHPHAWHeEHE3(MEHEEHE(E(EJ(MB (EJ0B@HP]̅yLH\$WH@Hڹ)lHHQzDLoHL$ rpHk{HL$ m@USVWAVHHpHELHHMHHHUHMWHvHHH H 3zFHMhHMe@eHe0HMMHHHYHHM:HHHHM#LHHAXHU@IHMLHHA`HUHIvHMLHHA8HU0IW}0 u(jHMHymE0HMu@u:tHMHH=%QjHLMHSy^mDtHMGHH=P]HDjH|$(\$ DMH(yHmU0HMnH}yHMkHUVWATAUAVAWH8HHE@HXH5H3HHLE3L}L}AO@aHH@H@f@HEHHH[{HL$xW3D$@HL$PHHD$HAfD$@Hz}HL$hD$@)EL$PMLEHHHH h}HL$hHt H DDHL$xHt HCDL}HH HUHL$@uHHw{HL$hQLHHHH }UHL$hHt HCDHT$@HtHD$HHHHt HH@D|$`HMHHT$`H@@H |D9|$`HH HUHL$@HHY{HL$hLHHH]H L|HL$hHt HBDHT$@HtHD$HHHHt HH@H1|HM$H0|HMWEhL}xHDžfD}hAEfL}L}@_HH@H@f@HEL}L|$hH]HHxHHUHL$@HHHqH {HT$@HtHD$HHHHt HH@<H]HHH HT$hHL$@IHHkzHM&LHHHH G{*HMHt HaADHT$@HtHD$HHHHt HH@H5]L|$xL|$`Ht$ L GMIHMH^H\$hHHxHHT$xHL$@HHHMH zHT$@HtHD$HHHHt HH@H\$xHHH8L|$@HD$`HD$HHL$`L|$`Ht HH@LD$@HdHHLD$@MtHT$HH LHt HHBH 'zH\$`HH`fD9}tHMH @DLEHUHHQH yH\$`HH`fD9}(tHM(H?DLE(HUHH H yDLefA9$L5 KM9|$MEt$HL3IfC9<~uMt3IIHfA>:tHtHHf8:uHHtI+HHL;IBLuHuLMII3D$LXHA Hy8vHA LA0IL;HCHtML+FfD;uHHuI;vHIyLH @8ytA8yuJIA Iy8vIA MA0IL;HCHtIH+D fD;HHuI;HxHMh軳HUHMh*HUhHHGUhHMH|$pH]HH(HT$pHL$@LHUHHNH =xHT$@HtHD$HHHHt HH@HL$pHa|H]HEHEHe@JZLHEHx WHgHgLIH%II_I_E3fE_LHUHHMB@D$PHD$PD8XH LPHxvHHHvHIL;WHCOHtH+DfD;HHuL9WHh@IS@E3IHE@L;H5LAEEfAHMZHL$`Ht HH@HL$xHt HH@_HH9EL]L$@MHT$@HMHL$pE3Ht HH@9HMH3H;D"H\$`HH(HT$pHL$@0LHUHHH u#HT$@HtHD$HHHHt HH@HL$pHt(tHL$pE3Ht HH@IH]HEHEHe@WHHEHx WHgHgMIH詒HH^H^E3fD~LHUHHMƓ@D$PHD$PD8xuoH LPHxvHHHvHIL;WHCOHtH+DfD;u'HHuL9Wr!He@HbQ}yHH9EL}L$@LHT$@HM+^H "pHL$0H oHL$(H :oHL$ MMHhtHaHL$pHt HH@ LMIHM5WHL$`Ht HH@HL$xHt HH@HL$hHt HH@HMHt HH@HM蘔HL$hHtHH@qH]HtHHH@YHM[L9}HMh0dHMHt H8DHMHt H8DHMHt HH@HMHH3OH$HĐA_A^A]A\_^]踭 HMHaHlHMH^蓭H\$Hl$Ht$WH HIH IHHt1HSH+HHrLAH'I+HAHw1INHH;Hl$8HCHHt$@HCH\$0H _Hc8DH(H ~.H(HJHrHHH'H+HHwHHH(lNH7DH(IHIrHJI'H+HHwHIHH(NH7DH(IHIrHJI'H+HHwHIHH(MHZ7DHWATAUAVAWHHǀHXHpHH3H$LD3H&6D؉D$HȾu#UHLH'qXD|$ L$K /A:Dƈ1 ;D|$$UHMHp`Xɍ E+Dd$$t5D|$@D|$EHD$0HHD$0HHD$`HoH l蟥"D|$$ UHHoWD|$ LD8t$G@L8D='au D|$9D5D|$)L$+AH$[H$ZH$ZE+Dd$$tjH|$0HH|$0HH פHHȾH;w!HH=HGtf8.uTHHoV'D|$$SHoHDVD|$ ,g!A+;yD@HpIH/DufD$BIE+Dd$$kH|$0HH|$0HHu/DƋH?H=SDLHzpHVD|$ nAHGpIH/DfD$@E+Dd$$HD$0HHD$0HH ̀@H AHnIH.DuD|$ID|$@D|$(I4AHnIHh.DE+Dd$$HD$0HHD$0HHHfD94BuH=vKRHHjnTAH$YXH$KXH$=X+ H$FH$H$HG$HD$x'D|$$QHH#nnTD|$ I(AHKnIHa-DuD|$HD|$@D|$(I$(QH3n0HnIH -DuD|$+IDD=8u;WoBA+eA+A;rE+Dd$$HD$0HHD$0H8HH$H$VHH$+DtFPHLHn&SAH$VH$|VH$nV\ D|$$OHmE+Dd$$HD$0HHD$0HH$7H$E+Dd$$HD$0HHD$0HH=l~HH\HH }蹼E+Dd$$HHD$0HHD$0LHHfE94@uHvK!OHHlRAH$hUH$ZUH$LU: Pu&H$xH+DH$xHD$XH$H+DH$HD$PD=AHlIHq*DuD|$@D|$(\uf;u D|$8DHzlIH,*DuD5{D|$;D|$*D={D|$:GvA+A+tS;D=уE+Dd$$t"HD$0HHD$0HH {"D|$$HE+Dd$$rHD$0HHD$0HH |ߝH |;D=UAEfDft>E+Dd$$HD$0HHD$0HWuH |萿KH |AHHE(H IMH(Dt,A;uʋLHMHkOD|$ H'Dȝ HHfE9tEuMlEIDd$$D=oL9$AD8t$Ct#D8t$@uA/LHHjOD|$ @|$(D8t$At(D8t$Eu@twAKHHjND|$ D$EtSD8t$HuD8t$It AKHHjND|$ D$Et!@tAKHHjND|$ Dd$8Et#|$9tAsKHHjVND|$ @|$)|$:tK@tAFKHHj)ND|$ @t$*@t%A KHHkNAljD$ @t$*D$ @t#@tAJHHkMAljD$ L95yuMH)H;*u.L95QzuAD|$JH+zH dxL95cxEt1=uiH=vyH=yHG=fyATJHj/=u8H=EyH=UyHG=5yA#JHjLHMAljD$ L95wuHyH wDD$ L95xu"D85tAIHHkLt;L$+AH$PH$OH$OD85L95fwuhH$CQLHHPI+HH*xH;w3H5xHHG5wHxH<LIHafD47!H wRHvH wEHwH=kwHhH lwHmwH;s HAHUwHHG=9wO_A_HTD5AAL95wt{AW$0fo 9$@fD$0,HH9uD8t$Jt4H$H$(HG$L$0LD$@dH5IH= ~UHtB ;GuB HL96u6D= Hr$DHHtPL0OHOH HxHH?HuD$;u;D85Mut2H$0H$HHG$0r2HN,A2_1H$0H$HHG$0?kt D95AtAH yHt"H5#DL5aL5fD5@A2wVH$0=MH$/MH$!MH$MH=jvHL95uuHa HiuгH=TvHG=4vH$H$HG$H*H˿ H; t%H誽t"FHH_IAH$iLH$[LH$ML>3GAH$3LH$%LH$L|$$\$HH\$@Hl$HHt$PH|$XH A_A^A\Q^#^H\$WH0LAMI;wHyvH IAHAHI+I+H;w$HyIvH J LH3?; LH H\$@H0_@WATAUAVAWH0HD$ H\$`Ht$pMLHI?I;fLaL+!IHIH+HHHIH+H;5L4 M;sM M;J<Hr)HO'H;J5HHX'HHCHt H&5H3H\$xJ II+A}uL3>Lt$hLt$hHtLt$hAEHIHuLFL+HH2HHt1HVH+HHrH'LAI+HAHw4I.HJHFHHFH\$`Ht$pH0A_A^A]A\_HED[xLD$VWATAVAWH0HD$(H\$`LHI I;LqL+1IHLHIH+HHHHIH+H;H I;s IHD$xHD$xI;jH@L$Ir,IL$'I;G~33H*HX'HHC3Mt IV3HHH\$pKvH HL$ II+H9HyHyHHHL$huLVLM;t2LKIPIxIHIxII8IAIIIMIIM;uL6MtaH~ IvIL;uHHFH+HHHH@HHrH'LAI+HAHw2I,HKH HNIHFH\$`H0A_A^A\_^H2DYeLD$SVWATAUAVAWH`HD$8LLII;HYH+HH\$ HII+ $HHHIH+H;PHI;sIMH$LH$I;$HHr?HA'H; Hs13HtHx'HHGL$!H?D3Ht =1HHH|$0HHH\$(H$ML+t$ H\$@H\$HLd$PMt!IH}[H H\$HIL$H$IT$HI$3WHqHqHIHpH@f0HI H H;uMMHIH`A_A^A]A\_^[ X蚔@UHHpHyMHvHLE0E3LQfDHHLEHfE9PuHUHHUHfD9BuHELEIHUHEIALMHEHHEHEHD$ LUvHp]HWATAUAVAWH`H@HXHhHp)pMMLL%HPIk0@D$@3LT$@A8juVIB LXHxvHIIvIIM;_ICOHtH+DfD;HHuM9_Hvb'vb'vI9D$I<$Ld$0Hl$8h.HHD$8IHH NYAEF@AMNPAE F`H>H~H~fnt$0LHT$0IL@MAnIL\$`I[0Ik8Is@(t$PIA_A^A]A\_y:̆WHHaHAH(HIHt hU(H(H\$Ht$WH HHHx+LGHHHH?HK ?HDLMpHL$ HrMHMD7aML$HM+ $ILH{vHLHHaD8-\t4LHL$paD8-HMLMDH`=IքIMMIDIDHT$(MDHL$ HnHMD`HD$X4H:HD$PHT$P(D$PHfD$P{H@EHHH+HHIL%TH HyvH H@LIIxvIIxu!AII+f;u HIugIhIH;&u I@H;&tJHL$p+H@L IyvM D8-æLpHHD$ MDHt_H@AHHH+AHH;"Ld$`HD$X4HHD$PHT$P(D$PHfD$PyI$IID$EH+HIHMHHpJ D8AuwIiL9l(tHZHH{v0H+LpD$ L*eHpNvD8-H8LLLDHCH_^I$AID$H+EHIL;KD8-euXD8-YHT$PHtHGHD$XHUHD$XHD$P(D$PfD$PxD8-LtLLMpHH]ID$EI$H+Dl$`HIHIHH D8ALiLpA< DEI|(u.ALpLcD$ HptL{MIvM?AMAIEEEHD$HL$@HΉT$8HzcDT$0Dl$(D\$ \DD$`E3II$AID$H+AHIDD$`H;D8-,Xt/HD$XH;HD$PHT$P(D$PHfD$Pw$LHL$p}LH(H$\I $EID$H+HIHIIHHiLtu4HHWH̃t&tt%tYtTHHSH2Hl̸2;w9t.-ttt tuHHXH́3tttӃuHgH~Q 2;wet8 w7twtt&4t tu4u f9Awu3̃w t tۃtttǃtՁ3t@USVWATAUAVAWH$8qH+HEHAH3HLMMLELHUHHM0HHEHHEIHH+- u HAH+( 3HADu@8=Au7@8=`t.Eu)H]OLH HG2IXHH{vH H"H@8=u-ML$M+ $ILLH{vLH6HEWfo LfI9}`u3LL}HHcHjH3%IUPLHUHzvL:L}HcEu H 3L}H HHEHMWEPWM`IIfB9INfA9xjEHjI8I IxvMHbH.>wH9{PtH@H{vHHIJHhL$ LMH\H=IJf9xjt"@jH8HD$ LMHiH=MMII+HDL;DI(I0H+HHHH@8xlt @8=Eu(HLHEHE(EfEHUHWI(H H9y8tBH(HyvH I(H DI LA(IxvMHHBHMpHMHHMPHHH35H8A_A^A]A\_^[]AH=QnDLHhHHMp3҉PAHT3DžP AHTELAHL$PA=AtDHHL$@HVDLH!H\$PM@8=UWEH}EH}EH}HEHD$(HEHD$ LMOIHL$@H qUD kUEut?IHUHT$8HUHT$0HUHT$(L$ NIHphHMĦHMHMOIHL$@],@8=TtFt, HT$XHDf;u HDMOIHL$X&6É\$PIIGH+HDL;Ll$p@8=qTHL$@@8=`TtI@8=uoHL$@uu]HMѥHMHMTuIHHD$pHD$x#(D$pf H HL$@a'@8=Su IHL$@ HL$@HHDDAt+u'HSN?ELHLHA@8|$Ht0HL$@H>DtHDD8EDDD@|$HH|$@Et+u'H%SNELHHAIN(HjDt tߋIN(HDDtIN(H(DHp@8=*tDU@8|$HtHL$@HqD@8|$`tHL$XHXDH=3R7@8|$HtHL$@H-D@8|$`tHL$XHDHHQ@USVWATAUAVAWH$}EH+HEHH3HMLD$hHLLLEHHHUHD$`IH+/uIH+'E3HHHzvHLrfD0M9p`uMMhPI}vMmIĄIDHEL9w(usDDDDHHD$PL$HT$@DD$8DL$0DT$(D\$ MLHS!HwH~vH6EHHKH+HHHHt2LIAH@L9Lu 8DtJEAH;rHLDHH HD̋IA;t\$(Ld$ LLHIE3D8%it\$ LMLHILHIED\$`Et_LALkXMIMu+LtfA9IwAuAEE;rDHIAH\$hHXD8%Ht9HKHt0LH{vLHulHaL+Bf;uXHI+uHNLLHHu HH3HA_A^A]A\_^[]H`LLHNE3Ht4HHDE3HtH;uHWNIHfD9JuL$H|$`~vDHOxHH=DNLLH}HDHD̊NɃULDIHD8bHDL D8MMDʉL$(HD$ LHM?HEE3IfF9puDD$dD9D$`IHL$hHHHHyvH -KD$dHkXHMLLAHMHAHEA+HLD$pE3HHMHfD9AuDT$d‰T$dHL$hHXHL$h;T$`hHUHM$WEWMHMHE3HfD94AuLHUHMAHEHD$ LDD$`HHM'KHMD85~LD85t`IhHuHHH~vH6HxHvH?HGLHt$ LLH+HD$pJHH{vHDt$PL$HD$@HD$8LuLt$0Ll$(H-HD$ MLHI38>t H{vHD$PD$HD$@H\$8Lt$0Ll$(H-HD$ MLHIG38L LHM=DKKL$PD$HL$@Hd$8Lt$0Ll$(HEHD$ MLHIL !LHMD$P3ۈ\$H\$@H\$8Lt$0Ll$(HEHD$ MLHI IHDf;u HDH~HEHEO(EfEHUIHH?8HDLMLI 3oLI[MCISUVWATAUAVAWHH`DIHE`H LHDm@ICDAEt'L}H HEHU(E@2HfE/H tT@u!HMHUHEH(EfEL}Hf HEHU(E@2HfEH ? EE3MLmHE3IHIH~vH6@u!HMHUHEH(EfEwM@2O I)FuCu IFFtLH H|HH)IXH IXI_DmHuPDH HEHEHU(EHfEDHEu'Ho HE HEHU(EfEH` LEtH LH* HEu LEhHJ :Et*H\ HEHEHU(EHfE;LEpHN Hjt L =GL HǴLDLH H-LExMtH HELeH3E3EM$IxHHvH?O I_DuBu I|DtLHN HLHT HIXHXIuDEt*H7 HEHEHU(EHfE*H)HDf;u HèDH$H`A_A^A]A\_^]H\$Hl$VWATAVAWH0H<H3H$ HZ(E3LLAHI;_(bHs(D8fdD8feD8fft D8%E@L9fPHN HyvH HD$ AH+HT$ IHtft fHIuHBMHL$ HEHBfD HDHHuH|$ HHHfD9$GuHG f8)t HH;wfD HBLHLF@IxvMHDN`IHCD8`t!HC H;Xu HH@D8`tHHHD8aHHHD8`t@t*I HDf;u HȦDH$ H3#L$0I[8Ik@IA_A^A\_^HHXHpHx UATAUAVAWHHH#H3HH HHDf;u H1DHMxHT$PHEHHE?(EfD$P2HxHT$PHEHHE|(EfD$PHACHHH\$p{Ls I~MLuvME3HDl$`E9n(vH%HQHE6HEHU(EfEHlHEPHEHU(EHfEkEf(3M~ Dd$DL|$hEBMDGHkXIELxLIvM?fD9Dw uE2EDt=H,HxDf;u HDMHPH AHkXIM{?tEDd$DuEDd$DDd$DH,HDf;u HFDHkXIMNI L $HLD}LL|$ HHrAAA;~(H\$pDl$`L|$hHHEHEHU(EHfEA~(HKEH  HPHEHEHU(EHfEAF(33L$HtJHD$@D$@LL$HHD$ DIH=|$@L$HtQAF(T;rA;2E3D|$H8A_\$dBLADž HkXHD$hD≍T$DH}HL HYHD$ L (DHHL$hHHH lf| LHHELIyvM AHNaHL$ DEHAA;~(D}LmH\$hHHkXFD( fD;D u[||TfAH LIEHHHxvHHL$(HHHD$ EEL$I[IkIs I{(IA^HHXHpHx UATAUAVAWHxH`H7H3HPL=pE3HD$XHT$pHA@H 4t$`HwjLDHD$P(D$PHfD$pL|$h>HgpHD$XHD$PHT$p(D$PHfD$pHJ3HHH\$@AD8kH{8Lc LevLc LeLs@HMF HpMH'qMHD8-HqHwqMHDHHqHENHEHT$P(EHfD$P^D8-2tPH,HΕDfA;u HDHqHE"HEHT$P(EHfD$PD8-uPH,HuDfA;u HDHqHE#HEHT$P(EHfD$PEnE3IHD$PELA_AELN^HM@pM$AHkXLI/tcH,HǔDf;u HDLE@HHqUI$f9\w u2AEAEDNAu I.t=H,HSDf;u HDLE@HHpH,HDf;u HHDHpHE HEHT$0(EHfD$0IEIHI$2HJ ;nt2 ,t'wt f+9t +t+.uf9Zw A tA*HHM@LHL$ HoHDE;~H\$@Let$`A4H:pHE HEHT$0(EHfD$0_EHpMHE3D8=/t*H/pHEHEHT$0(EHfD$0D8=HtrL|$hH pMM5wtD ++t/+t+t$+t +;3+A E9~vMHp'HqHE}HEHT$0(EfD$0XL|$h3D$@A9vv2Ld$PD~LL$@DIHAA;vrLeL|$hD$@t$`+A;E3D8-D8-e.HL?rHLDHIrD8-u\D8-4.HEsANLrrL={rMt.HGsH 5HDD8--HHD$ MD[HsD8--H5L rL|$(LDLd$ D8--HrLqHLDHr`L=qD8-H1tHEHEHT$0(EHfD$0D8-O-LqHuuHwD8-,-HMDHVwHEHEHT$0(EHfD$0D8-,H'wHE(HE HT$0(E HfD$0LHE9nvDN0MHwt'HxHE8kHE0HT$0(E0fD$0HPxHD$x+HD$pHT$0(D$pHfD$0MHPxH HCD8ht&HC H;Xu HH@D8htHHD$@HHD8i HHHD8hH\$@ttI^ H=+茲HGoI^ H=+nHkLLHKW/H%bHT$0HD$pHHD$x2(D$pfD$03HPH3&L$`I[8Is@I{HIA_A^A]A\]HHXHhHpHx AVH0L2HEIkXAI1yDQDA C(u'A@ffAt}fAu9w@tEHfHH\$@Hl$HHt$PH|$XH0A^̃w@u fAuEfEt@t DHf밃vDHf@uHfAt@uЃyHD$(HfHD$ HT$ (D$ HfD$ Y@t Hf @tH+fEHHkXIfxwt&@t Hf vHfDH{H)HDf;HދDѸ,;  wJt?tuzHcHbHc̃t!t{tuBH.tfD9.t,f>\t&H;u"HHHfD9.t f>\tH;uHH+HIISt3蛪MH#MHxHM#D#D #Eu u EHHfE9$GuIHr fA:uIOIHHMP`HMB"D"u ENHMHXH;Yw/LHyvL)HYHLHI3fB +Lm LHH]HKxL;aw/HHyvH1LaK$LHH3f<H] LIȱ3HH@8=Z!u @8=P!HHD$ LD$@HMkoHUH9uHGUH}t$H]H9uHG]N躧LHrHHD$ LD$@HMoHKHUH9uHGU%t&H]H9uHG]`LHHHD$ LD$@HMnHK HUH9uHGUt&H]H9uHG]LHfHEH9uHGEH}f8HFHD$`HEH:HD$PHD$X L|$0Ll$8L%CLd$@H|$HHD$`HD$ LL$PLD$0HT$@HMHK0HUH9uHGUt&H]H9uHG]LLH@8=yHEH9uHGEH}f8HOHD$`HEH3HD$PHHf9 HH{vH;HA誛LLHH臝|$DE3EDL$HIIH+HH\$`HAL,@EEHHCH+HHHHIL|$hIHiHf9D$tD9HKxHAHyvH IUMI}vMEH;HtL+Bf;HHuL9XHHHMH}HGMLBHzvHL;EuvMtH+f;ueHIu@uGEu&MI}vMEDL$@HI>ADHpI$E3f\$@AIA|$@AHD$`HAH@H+HIH;f|$@@L}u}u'MI}vMEDH Lt$hILt$hEATA)HXI|EASA(HBI^f|$@E3 Lt$hLt$hH\$`DD$H@AH HCH+HHHHIL}ILiLAfB9D}?E3E9/IIxHAHyvH IUMI}vMEH;HtL+Af;HHuM9XIHHMH}HGMLBHzvHL;EMtH+ f;HIuM9Q(u4H AD$ L LH IYH{vH@EAA,LHIE3AH\$`I IE3H HCH+HIH;@L}"AEATA)H}Ld$hITHHEHE(EfEHUIII}vIMH RLuI~8uII~vIIF(I~@vIF(|$D|$(HD$ DL HIE3ELSL+IHLMALiL AIIxHAHyvH IUMI}vMEH;HtL+Af;HHuIXIHHMH}HGMLBHzvHL;E~MtH+ f;iHIuMII'HpHD$PHD$X(D$PfEHUI\E3DD$HADD$HIAIH+HH;AAH HCH+HHHHIIHiHf9D$t_D9RL9XEHHHMH}HGMLBHzvHL;EMtH+ f;IIuL9K(ukH D$ L L!H @FAAI;LuLd$h|$DLuLd$h|$DH{HvH?DH|$ LHIH I~8uII~vIIF(I~@vIF(L$DL$(HD$ DLH IE3IHD$`HH@H+HIH;aL}|$Dlj|$DHEHHE;|$pINht$xHM豙H|$`E3Ɖt$xI@IHH+HH;Ћ\$LHG I$H\oDf;u1HnD#H0 ԒHOLH贔3H H3ÄH$H0A_A^A]A\_^]H\$LD$UVWATAUAVAWH0E3D$xLHA^DAI@hAHkXN$IO HH ׸>u9HwH~vH6HQ LH}LHғA9t9I}xHvH?H 譑LHELH芓f9_G f+f;vyf tr3H_ELAH{vL Ht$ H`HHH{LvL O Lt$ HH)G;r;EDH_H{LvL HHHHu8HHH{vHO LHLHI$p`Fv+H {DHLHXHLHLEHSI$3HNpHVhHH+HHtYE3JHxuL@hIxvM HxvHLH{HHNpHVhHH+DHHL;rH+HHDHxuL@hIxvM HxvHLH5HI$H fLOHx`LEHlLFp3HNhIH+HHt73LH9HE@@9LFpHNhIH+HHH;rL+HINDHE@@LGIxvMH HL$DD;t$x[H\$pH0A_A^A]A\_^]IM蕯t H=vkHHiAH|$ LHfH>DHbjDѸ,;   t|wI+tHH̃tktKHAHH̃wF t2tHH&H̃tt t6t1XHH̸2;w&t-t tuHHF́3t!ttt HHH@UHH0DB ,D;AAtvAt_AAt>At8AtvAu%HHE#HEHU(EfEH0]HHEH^HEH-HEHHE<HkHE5A-rAAt~AtdAtJAt8AtAeHHE;HWHE'H+?HHE&HHE8H_HE*H *H\$E3DEȅtGH AXAHkXf| wD A@Ar u tf9\ w DE;rDH\$AHHXHhHpHx AVH0L3HBHI+LHH3IH{H{v HLL LLHHHD$ IHHSh3HCpH+HHtS3L Iyt.IyAA@vM H{LvLH/D$ IHShHCpH+‹HH;rH{vL ILLHI軻LHGI+HH;H\$@Hl$HHt$PH|$XH0A^Q fBf;vft,f+f;v2ɊA ff+f;vfy uf9Qwt̋f9Qwu2̨H\$WH HH`eDuf_HfuH\$0H _H\$Hl$Ht$WAVAWH E3HHfD99t>HH;s2HoHdDt_fHHfD9}uHl$HHt$PfD;H\$@H A_A^_HHXHhHpWH`ALLHH HPI H@xuRHx0H HxvHI{MvMI;{H׹ICSHtL+E fD;uJHH+uI9{s2ɄueHHHD$8H$HD$Pl$@Ht$HuHyHCxHxvHLL$8HD$XMHT$ BOL\$`I[IkIs I_H\$WH03fAMLfE9Hw Au2AAJ ,An;pR <tmtG~t!?A2DfAfALA2DfAfAU}A2ffSDMI莘A2ffZ݊A2DfAfAN4qtGKt!A2DfAfAFA2DfAfAXA2DfAfAQA2DfAfAG9 t|tdtG6t! A2DfAfAYbA2DfAfAMJA2DfAfAJ2A2ffBA2DfAfATtHt+tVu|A2DfAfAEA2DfAfAIA2DfAfADA2DfAfAW-totUt;t!tWgA2DfAfAKRA2DfAfAP=A2DfAfAC(A2DfAfAHA2DfAfAAEI˄t)AHABLLD‰D$ HoLH^H\$@H0_H(HIrHJI'H+HHwHIHH(muH^DH(HJHrHHH'H+HHwHHH(uH^DH(HK@HHrHHH'H+HHwHHH(tHY^DH(HIiHrHHH'H+HHwHHH(}tH ^DH(HIkXHrHHH'H+HHwHHH(0tH]DHWH@H@HXHhHpIHHHyHH+HH;s&HHHH;tHH H;uH^NvLHFH+HH;v H G2H+H|$(H|$0Ht$8tHH诣H H|$0HuH~H\$PHl$XHt$`H@_H\$Hl$Ht$WH HYHLIHI+HIH;s'HRI,HH;tHUMHH;uHo@v>HGI+HIH;v HI;tHHHt$`LEHHL$XLd$hHt$`H {HM.IA;rL}I;tHHHt$`LEHHL$XVHt$`Ll$pIMPHyvH HIMHyvH H E3EHH\$XH+HHt!3LHvIO@AAH;rHHEHE (EfE0HU0IɽHAIH;tCLHvHGHH;tݹ.IHMDfA;uHLLDHuHEHE(EfE@HU@PID8d$P_MźH LLHkIRIOLHT$XQ؅=AAHt$xLHFI+HIHIIH LiMD8AuDD8Bu;E8u2HHD$0HD$XHD$(L II؅LHNI+HI΋H;rLLHduIpIO LHT$X]IOH}HEHE(EfEPHUPHt$`H\$XD8Mw@L HIHHEHE(EfEHUI荻HIH;tLLD$ MH诠HLHw薠IH;tLHHHLH?fHSHEHE(EfE`HU`ILH<I(LHHurLd$pHgHE3LgHXgHL$pHKDHL$p3H AHt3HL$pHvKDH\$pH gHDd$0Dd$(Ld$ ALHHH7KD=#u1Dd$0Dd$(Ld$ E3E3HHHJDxLH{HZLIHzvHIM3IfB9BuNEHLIHHMIfB9@uNEHHWIfH~H9ufsfH~H9BtLHWE@dHH@H@f@HEE3EHt$xHHFH+HHHHLALIH HiHHHEHHD8AD8BD8LHUHMRE3D8HLCIH{vHHHE3AD9twHkXHHSHzvHMIfF9 BuNEHvHS AH`AHHK;AuAIIGH+HHHAH;L}Ht$xWEpD9H/dHE3DHUpHH`HDHH7HD3H9Ew$ 0EwLEpH 螽LLHmI WWHIfB9`uMHH蕜HqxHLHLGHT$XIOE3t8HoHMݟHHnH9GD]HEHD$@HEHD$8HEHD$0HHD$(HD$XHD$ LL II؅xHwHEHE(EfEHUIO薵IO@HwHEHE (EfEHUmHnHMHHt HbFDHt$`H\$XHWHEHE(EfEHUI H+HFHcxLHeIO*Hy IWHXDDf;u HCDAHL$XHH3YH$HİA_A^A]A\_^]WEpHMHHt HwEDH\$UVWH$H@HH3H0HD$(H,vHD$ Hy (D$ HHT$ fD$ HH3HCH+HHtW3H ʀu1HHyvH HT$00LL$0HLD$0HvטHHCH+‹HH;rHD$(.H|wHD$ HT$ (D$ HfD$ OH 3HCH+HHtR3H рu,HHyvH HT$0LD$0HHDwCH HCH+HH;rHD$(+HXwHD$ HT$ (D$ HfD$ 軲HD$(H[wHD$ HT$ (D$ HfD$ 莲3H0H3WH$pH@_^]H\$Ht$WH0HD$(fHnHD$ HT$ (D$ HfD$ $HH{HOLvL LGxIxvMHn6H{vHLH^oHO HD$(HuoHD$ HT$ (D$ HO fD$ 觱HO@H9t*HD$(2HqHD$ HT$ (D$ fD$ sH\$@3Ht$HH0_HHXHhHpHx ATAVAWH`I)pLLR]HdH_,3LHdHD$8 HD$0(t$0LkXM<$MwI~vM6H 3҉T$D;HD$8 HcHD$0HT$0(D$0HfD$0贯H H-?Df;u H_>D(t$PL\$`I[ 3Ik(Is0I{8IA_A^A\HHXHhHpHx ATAVAWH`ILLZ[HH@bg3LLkXM<$MwI~vM6H ͚3҉T$LHHA8PuAW f9P sH@HHxtu G fA9G sHE3MIHALG($EA A IxvMHaLt$ H術;s-HHD$8HD$0HT$@(D$0HfD$@$;HHD$8HD$0HT$@(D$0HfD$@H Hb=Df;u H<DL\$`3I[ Ik(Is0I{8IA_A^A\HHXL@HPUVWATAUAVAWHHpHEHU)pMHueMHEM(EHfE:Hu`3DHHFH+HHt.LHA_HMHAHFH+AHH;rLEhL YHeLd$ HA>HeHEHE(uMmHkXLMeI|$vM$$H m3҉ULHA8XuAU f9P sH@LH8XtA8^u AF fA9E sLHUfuH2AMIHFAEMFH$EA A IxvMHB_Ld$ H)AAA+;s)HAN+HK;Df;u H}:DAMA;LePMAH)H:Df;u H):DHEHcHEHU(EHfE,MIHVLEHHcM̉]`HIA9HkXIUfD9r t>fz t7LJIyvM fz u A&tA HCcH LM`HAA+;s(HHEHEHU(EHfEgAA;_]`HHEHEHU(EHfE,H>HbHEHEHU(EHfEH$3(t$`HpA_A^A]A\_^]H8Bt>MHkXILEuIxvMHWIxvMHWώZvDHWEHXHE諎6HD$(HT$ HXEtHXHD$ (D$ fD$ /3H8H\$Ht$H|$UATAUAVAWHH@HuPLH}XHMMLHFH+LWL+HHIL; HEZHA}HEHU(EIfE蘨LFH}}L+INIHL賍HExH}HEHU(EINfEFHE H'~HEHU(EI IfEIII;_tLH4ZCHLNH}L+HIMLH?HH;^tW?H;t*I,H07Df;u Hb6DDH}I迌HHHEH/iHEHU(EIfEFMH}MIuHEH:YHEHU(EIfE III;_tLH#Y2HLNH}~L+HIMLLd$ 3 L\$@I[0Is8I{@IA_A^A]A\]@SUVWAVAWHxHH3H$`Hz`H|$`L$IMHtLJPIyvM E3H~(tH~HvvH?qMDMDHDDHD$PL$HHL$`T$@DD$8LEDT$0D\$(\$ 躢LHHu7L$HтLHM@ɊL$HM@MHt$ H)H$`H3JHxA_A^_^][HHXHpHxLh UAVAWHH@MMLHHMHu@HH;t"HSHzvHHZHXHAHCH 2HUH;tH;~tYH;>t+,IUH)Df;u H )DLH{vLHnI\H HH[HD$PHD$X(D$PfD$PHT$PIޙHD$@HD$(Ht$ LMMIIE3Ʌ*EDL$@HHFH+HHHH}ALEIHHiD8A#D8BD8LIH]LMHT$PHMxLvL+6IHLHIH{vHLiL>MHHL$`>uEMHHMku2Lt$8HEHD$0HEHD$(HEHD$ LMMHIDt$@L|$`HEHIHyvH LiLHL$0H|$(LEHUIE3ɅLEADt$@HHFH+HHHAH;LeWEWMIIfG9 DuIHM}HYHMTkLEH}LGEMHPI|LEH}LGEIO HUuHMQHM)HMH3HHr@39^8vR3LD$ HD$0WHF@ID$ HAA>LD$(HWrHw@A;^8rAu>HHi4X@HV(HtERLD$(3WIHD$0D$ bA,>LD$(HqH @HV HtERLD$(3WIHD$0D$ A=LD$(HqH?HV0HtIRLD$8W3IHED$ D$0@A=LD$8HqHj?^A>i=DHqDHF?LFMt/IHM@ːAH.=LHqH?A=HHq>HVHtaWLD$ 3ID$ HED$0Et*HHT$ I3HM'H3.H$0HA_A^_^]H\$Ht$H|$UATAUAVAWHHpM` 3ILLA8xqAHAHHAHAmH=tM^A;DHmH=E3^A;DHmH=t3LMHEWFIEEH IEELI;E3AT;LEHKmH3=ntY3LMHEWFIEEH IEELIA:LEHHmHHL$ h/@SH 3HYxHHAHAHAHA HA(HA0HA8HA@HAHHAPHAXHA`H5 HH [( H(MLAHxu H(HMBJH H I IˋBABR H(H\$Ht$WH IHDB HEtAum:BMAP:VMAPu]DGLNjRjuODSHNxAw9HH;r0HAPHH;w!F+ t DW 3H_ H\$0Ht$8H _H\$WH 3MLمuI83THYxAH} t9H:v/DAAH+ HH;}I@Hf9|Bu HBI뭸 H\$0H _H\$WH :TEMPILHuwB Hx9BwkE3ۅt= w]RDA tIHOxABC$ABC IB(HAB(CABC AB CE9Z tEZLL[3 H\$0H _HHXHhHpHx AVH IؾE3MLHfA@3CfAACfAAEY@tKC AAI(fEYMYSH}xAH  H QUERuAH *VMAPt BMAPAH ,Iʉ4LLEY,0ILcAqEY@tKC AAI(MY0CfAAfD9[uMY&SAH;sGC+;w=I@H H IIMB HABC fABCfABS, H\$0Hl$8Ht$@H|$HH A^HHXHhHpHx ATAVAWH0HyxL@IHHE3E3S E3HAHChL^DpD9~ {Eg A HDtl6L9{89ASEH "DLA:MAPSEBA?F LS8L9{0ASEHq DLA:CHANEBAAE9 LS0WL9{ tASAH ZDLA:EVNTGAB=TUU8D@AALS L9{ ASEHDLA:KEYWEBAAEoLSL9{ASEHEDLA:OPCOAB=TUUqD@A ZLS*L9{GASEH0DLA:TASKAzH$ EkBELSL9;ASEHDLA:LEVLAB=TUUD@AJLiL9{@ASEH!tsDLA:TTBLudAB=fffwYDF tDLS@BtktA L9{`uASEHtDLA:PRVAuEBAwF ^tLS`L9{XuASEH<tDLA:EVTA{EBAjF ULSX%L9{(BASEH+DLA:EVTFAB=  D@F LS(L9{PASAHuDLA:FLTREBAAA=LSP^L9{H{ASEHdDLA:QTABQEBA?@F +LSHI;n 3H\$PHl$XHt$`H|$hH0A_A^A\H\$Hl$Ht$WH Hy(HtHI Ht HDHK(H{0H?tHH HHtH|DHs0HK8HHtHHDHHH6DHHs@Ht HDL3HH2DHc@H#Hc Hc(cH'Hc8H\$0Hl$8Ht$@H _H\$Ht$WH HIHIHG(HuHDE3LHHHsDHHuHDHϋPHO(HH6DHG HtHO(HHZDGtHO HDHHt3H\$0Ht$8H _H\$WH Hy(HHy0HuBWMu MuudSvWH HK9CRIMuHA%=v:7ys:'9QwA H HH;w;w3 HxH\$0H _@SH@Hd$0HE3D$(HD$ HEAHDHC0HuH@[H%Hd$(E3Ƀd$ 3HEAHzDHC8HtHd$ E3E3HAQHJDHHtHK03HHDCt3H@[H\$HL$WH@HAD$4DCH LL;Hd$03H|$pT$0HL$8L[A;S sbH; vJI;sELIL;rHHAHKHiDHDL3HHDb)H\$Hl$Ht$WAVAWH0HH ~HH'DHHL=HH,HKD$ DLŋHDHI;u3Hf9|uuL4uHDMFHȋHPDHHt+3DFXHHcDHHu_HDH GHZDHt HqDL3HHDH7D`CHsAIHKILCCHsH{GL98t)L;HCHH^GH 'GHDHH\$PHHl$XHt$`H0A_A^_H(HHI0HtH*YHH8 H(HSVWATAUAVAWH0H@HHH3H$ LL$ ELDL$H$H$$M>>&HL$@.(HL$@^03HL$@0HT$@HL$`1HD$`H$3H$H$HD$`H$H$H$foKf$H$W$HD$ H$D$$fDŽ$$Ll$0Lt$8(D$0fD$0E3HT$0H$O HL$`HT$pH@ BD$P;v/H$Ht HW HL$@-z LHT$HIņMIHN<6HBWIhHHu/H$Ht HW~ HL$@s-MIHcJ 7LHT$ RH|$0AHD$8(D$0fD$0H$HL$01x$cKPH H$Ht HV HL$@,3WD$ H$ H3 H0A_A^A]A\_^[HA̋AHHXHhHpHx ATAVAW3@2MHLLI;s1E A tAtAtAt AtAu IM;rHT$HHtM;s fA:-u2 MBDL$@MA tXAAA"3҃ADA Ӄ0 ; @ IM;rA ӍAЃ r ar ȃsv; @ IM;rQAJЃ rʃ ar A;s&AA;;Ӌ @ IM;r,Ac M;u ACI@t AC" AcA$I;IH\$ Hl$(Ht$0H|$8A_A^A\H(HH HtH THHhH(H\$Ht$WH`DBLHAEt~AtkAtYAtOAt'AtAHi_RHHT$xAD$x-=3-H] H HHL$ 3Hf9YuH\$(HT$ (D$ HfD$ JAAAAtAAAtARE:DBD xH2H3Hf9^uH HT$xAD$x ,HLƋ?HKHHT$xAD$x ,HHHL\$`I[Is I_H ?H?H;t%AtyrHILQDJ HL$0A.Hu%HL$0H\$WHP3HHHAP9ALu-HA8H9A0teHHHH @H ACHQ*+ HILHH @H HT$`AACLD$`+HHH\$hHP_H >H> H;t"AtyrHISDLPA~HL$ -H$HL$ H\$WH HH3ɉKT9KPtHDCPL@A@8KhuHC8H9C0t@H HT$0AACPD$0*LWH H\$8H _fT$SH H3ɉKT9KPt HSPHP @8KhuHC8H9C0t@H HT$0AACPD$0G*H HT$8A4*H [H\$Ht$ WH aT@aPHyLAhFD$8t;H WHA+ƒD$0YH)HHT$0A)H+)gH@tH*HHT$8A)H\$@Ht$HH _H\$Ht$WHPHQ0HHI8H;GiHAqHG8w39_Pt-9_Tt(H;t8XuWPH(Tt HOTHH!HH_PA+ƃD$`Y](HHT$`A(H@(H\$hHt$pHP_H <H < H;t"AtyrHISDL>NAHL$ G+H!HL$ H ;H; H;t"AtyrHISDLMAHL$ *Hr!HL$ ~@SH HD$0H HT$0A'HH RHH@ H [H\$WH HH3ɉKT9KPtHDCPL@A@8KhuHC8H9C0t@H HT$0AACPD$0 b'HHH\$8H _ H\$Ht$WHPaPHaTHaHaLAh Hd$ H_0HAD$ HCH9tHG8D$$xuD$$AHL&itHHT$`AfD$`&HQ&HH HKH;KtHD$ HHCH\$hHt$pHP_H|$ HH+;Ht$ tHSH HH+H;sH49HHH 9H9H;t"AtyrHISDLKjAfHL$((HEHL$(QHXyhEDu6HA8H9A0Pw.HL@A|uA|ufELEºHXX H 8H8H;t%AtyrHILKDJ HL$ A'HHL$ H n8Hg8H;t%AtyrHILJDJQ HL$ A'H)HL$ 5HD@UVWAVAWHhHHEHXEHfoUfEHMHtOHE(EE3L}ML}D}AWHM8HHED}EHMHUHMKփetYt-(EHUHfED8{i  (EfEHUHMHUHHD9}~ ]|3QHEwHUwAH W#R3HHEoHUo(EfEHUHMoHUHHC8H9C0tD8{h"D8xHEHMHHH;f8 I&IHE _tGt}HupD$0 AHT$0H X"LEUH ]D(EfEHUHMzHD$1 AHT$1H "HUHb~HUHELBI;tf:xuHL|$(D$ HML|$(D$ HMD|$4LL$4F@)Mu|$4v E"(M|$4fsf~ȅt,H4H 4H;tAtyr LMHI H:(EfEHUHMpHUH\(EfEHUHD8}u HM@HMHt HFH$ HA_A^_^]H\$DD$UVWATAUAVAWHl$HLz3L"E3ɉ]E3LLM;v IK0fA;s"CfvՍCf2wUH??H?d3AI&AICfw Ar fA;w2rf;qf;h@t uGȉG G$@u@t AF)G@AFGAFu @ cH\$XHl$`Ht$hH A_A^A]A\_H\$Ht$WH H?H4HH;H6HHHtoHHtfHHLCL+Hl$0IeH HCH+HH,HtH76HKHkHl$0H;HsH\$8Ht$@H _H\$82Ht$@H _H(y uH FH(H\$Hl$Ht$WH 3H=fEHH AHEAHt 8C uPfkHl$8fs Ht$@H;C H\$0H _H8LL3I9RuE3E3A::HL$0AHnHL$0zH T!HM!H;t'At!yrHILI>A:5:HL$0AH HL$0HHXHpHxLp UHHpHHyAH΃t`NE9KD3HUH8HEHUH BH;f: I&IIу A+t {D&HAC@DsDHUHHUHE˃{Du CD D9sDRC@HUH`HUHEP6D9sD{D{D#HUH HULMI;uUH ;ML+MBf;uIIuI;u(H ;ML+MBf;uIIuH;u#L;MM+CfA;u MHujH; L;MM+DCfA;u MIu6H;Hg;L+B f;IHu {D8L\$p@I[IsI{ Ms(I]H H :H;t$DqtD8qrHIL;DAzHMЋF HHMH H:H;t$DqtD8qrHIL:DAHMЋ HqHM~H XHQ:H;t$DqtD8qrHILH: D7AqHMЋ HHM H H:H;t$DqtD8qrHIL9 DA?HMЋ, HHMH H:H;t$DqtD8qrHIL9 D{AdHMЋ HWHMdH >H7:H;t$DqtD8qrHIL.9 DAHMЋp HHMH H:H;t$DqtD8qrHIL8DAHMЋ HHMH H{:H;t$DqtD8qrHILr8DaAHMЋ H=HMJH\$Ht$WHp(H)D$03fsŝfH~HtLD$0AHH3iH;uHCHK|$ H;t8HCL\$pI[IsI_H+ Ht$ H+3HHHHkHHH;HGH;s%H tHSH HH+H;s<1:H OHHH;t"AtyrHISDL970AHL$@ H HL$@H|$DJH=6AAHAM 8fA9EK)fAJH8fA9fABMJH8fA9fABM H8fA9fABMfE IJH8fA9fABMJH8fA9fABMfE IJH8fA9fABMJH8fA9fABMfE IJH8fA9fABMJ H8fA9fABMfE IJ H8fA9fABMJ H8fA9fABMJ H8fA9fABMJ H8fA9fABMJH8fA9fABJH8fC9fCD3EtfCDH|$@SH HaHa3҃aHHAcHH [H(yHMHt HIH(H\$WH Ht HH\$0HH _H\$WHPHQ;QrHKH\$`HP_[H H H;t"AtyrHISDL4AsHL$ H\HL$ h̋AHA̋AHH\$WH H ;_w_H\$0H _#H\$Ht$WHPHًI;vIwRɍ;Fȋ/DCHHSHPW{t HK9{HsCH\$`Ht$hHP_H ZHS H;t"AtyrHISDL2;AHL$ HHL$ "H\$Ht$WHPAHAHٍ8;r+KDHKHV{H\$`Ht$hHP_H H H;t"AtyrHISDL2AaHL$ H`HL$ lH\$WH 3HHAHHAH HH@HHHB0HGHlj_H\$0H _H\$WH H;QwQH\$0H _H WHH@ 诃HHH@ 螃HHH@菃HHHB0~HG_HHH@h;GwGH\$Ht$WH HyHAHt5w-A+A;w#IDHOT_H\$0Ht$8H _H WHH@ HDHHH@ՂHHH@ƂHHHB0赂HG_HHH@蟂;GwGH\$Ht$UWATAVAWH$HHPH3HE3LD$`HD|$0LD|$(AL|$HEgAL|$ AHT$HAHD=#HD$PD|$(EOHD$ LD$@D|$@H/D|$PAHkD|$@HDD3HH DHHu DL$@HT$HD|$0LD|$(IL|$ HDxiHL$HH/E3EAHDxDEFE3IHL$HHDx#HL$HE3HEA HDAIHL$HHt HcDHt HDL3HHDHH3DL$I[8Is@IA_A^A\_]̃I3HHAHAHQDI HIH%IH(H9t#wA DAA+;w AAH(bH\$WH H9LAHt2w*A +A;w QDHIQ{H\$0H _HXH HH;t%AtyrHILR- DJ HL$ AHhHL$ tHL$WH0HD$ H\$HIHHHaHa8wHGHT$hHHL$`H @ H H"HH0HGHHGHXHGHX3HGDHH|HH\$HH0_H\$Ht$WH  HRHH;Qw-HyHvH1HHQLfH~HD$01yH8HIH+HHHI;tg(UHWfofsfH~H;uIfH~HtfI~L+B f;u-HHuH\$`HH|$xHl$hHt$pH@A_A^A\IzHHL$0ID(EfD$0HHXHpHxLp UHhH)pM)xIHHdQHZHE HE(uHUH^(LM(}LEHU'fEHf}fu'8LM'H˄t(HWxE3fE'pMH,ZHEHELEEHU(EfEf}'x8tHHYwAH }L(|$pL$I[IsI{ Ms(A(sI]HHXHpHxLp UHhH)pI)xMHH(P:H}YHE HE(}HUH]A(LM(uLEHUfEHfuf}7A(LMH˄tDG0HWHfEeoH HEHELE(MHUfMfufE=7tHmOtpH*HEHE(uHU'H\ LMH(E'LEHUfEMfu6tHHA?FHm{uH^{L$I[IsI{ Ms(A(sA({I]H;t9H\$WH HHYHK HHHHCH;uH\$0H _H;tqH\$Ht$WH HHH;HtHH;uH\$0Ht$8H _H;tSH\$Ht$WH HHH;HtHO(1H@HHH;uH\$0Ht$8H _H;t\H\$Ht$WH HHH;Ht'HOHHO(HxHsHH;uH\$0Ht$8H _H;teH\$Ht$WH HHH;Ht0HOh]HO@LHO CH;HHH;uH\$0Ht$8H _H;t\H\$Ht$WH HHH;Ht'HOHHO(HHHH;uH\$0Ht$8H _H;tJH\$Ht$WH HHH;HtHv(H9HH;uH\$0Ht$8H _H;t+H\$WH HHHHH;uH\$0H _H;tJH\$Ht$WH HHH;HtH.HHH;uH\$0Ht$8H _H\$Hl$Ht$WH@H$ILQH@0H$(H$LHxvLH@HD$8H$L\$0DHD$xHHxvHIyH@HD$(HD$pHL$ LIvIHzHD$IAHD$HvHL$H$HBAJAJHL$0AjPHl$XArTHt$`HD$$MB AJ8EZLAD$ AB(HCHHXHKH\$PH@_LL$ LD$SVWATAUAVAWHpHD$hMLHH+H988HLIIH?LHAH+HH988HI88I;L@LD$HHIH+HHHHIH+H;H II;HCI;HL<L|$@H$IrACL>AOK|>KD>fC|>I IFIH;uLLD$ HIHD$(H@A_A^A]A\_^[-LD$SVWATAUAVAWH0HD$ MLLLL+HgfffffffIHHHH?HHAH+HHHIfffffffI;ALxHII+HHHHIH+H;H II;HCI;HH H|$pHr5HA'H;H舵HtHX'HHC-H^D3Ht\HHD$xH|$p H|$pH\$xHH4H$H$AENfF MFIHM;uL+MM+d*HN(MFM+IQ*LMHI"HH0A_A^A]A\_^[jLD$SVWATAUAVAWH@HD$ MLLLL+H%I$I$IIHHHH?HHAH+HHm۶m۶mHI$I$II;iLxHII+HHHHIH+H;;H II;HCI;$Hk8H$Hr=HA'H;HɳHtHX'HHCL$,HD3Ht蕳HL$H$H$Hk8HH$HHxvHH@HL$(HD$0AMH$AND$(FN(MFIHM;uL+MM+x(HN8MFM+Ie(LMHI"HH@A_A^A]A\_^[~LD$SVWATAUAVAWH0HD$ MLLLL+H*IHHHH?HHAH+HHHI I;1L`HII+HHHHIH+H;H II;HCI;HH H|$pHr5HA'H;HرHtHX'HHC-HD3Ht謱HHD$xH|$p H|$pH\$xHvH4H$AEfFMFIHM;uL+MM+&HNMFM+I&LMHI!HH0A_A^A]A\_^[D@SVWATAUAVAWH@HD$0MHHLL+!IHAH+HII;L@LD$ HIH+HHHIH+H;H MI;LCM;N<L$Ir)IO'I;nSHSHX'HHC,MtI/HH$L$3L$H$N$Mt$Lt$(IEIeI$L$LGHHI;u0HH"HHHI;uHJHH"HHHH;uH5H$HOHH&IIHH;uIIHHt=HWHHWH+HHrH'LAI+HAHw4IHHD$ H HOI HOIH@A_A^A]A\_^[HD@SVWATAUAVAWH@HD$8MHHLL+9IHAH+HII;L@LD$(HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;"HmHX'HHC,MtIHH$L$3L$H$N4Lt$ MNLL$0IEIeIL$LFHHI;u-HH!HHRHI;u?HH!HHRHH;uH$HNH;tL+HH'JHH;uH>HthL~I;t+L7MtIkHIvHI;uLt$ HHVH+HHrH'LAI+HAHw4I4HHD$(H HNI HNIH@A_A^A]A\_^[HDN@SVWATAUAVAWH@HD$8MHHLL+9IHAH+HII;L@LD$(HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;֫HmHX'HHC,MtI貫HH$L$3L$H$N4Lt$ MNLL$0IEIeIL$LFHHI;u-HH!HHRHI;u?HH!HHRHH;uH$HNH;tL+HH'JHH;uH>HthL~I;t+L7MtII*HI;uLt$ HHVH+HHrH'LAI+HAHw4IHHD$(H HNI HNIH@A_A^A]A\_^[HID|@SVWATAUAVAWH`HD$8MHHLL+9IHAH+HII;IL@LD$ HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;芩HHX'HHC,MtIfHH$L$3L$H$J HL$(LqLt$0IEIeHH$LGHHH\$HH|$PI;u<HH!HHHT$HHI;uHT$@_HH!HHHT$HHH;uHT$@HL$@XH$HOH|$PHH&IIHH;Lt$HuLt$@HL$@H7Ht{LHtqL~I;t4L7MtIN(芦Ir@I5HI;uLt$ HHVH+HHrH'LAI+HAHw4IHHD$(H HNI HNIH@A_A^A]A\_^[HTD @SVWATAUAVAWH`HD$8MHHLL+9IHAH+HII;@L@LD$ HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;薤HHX'HHC,MtIrHH$L$3L$H$J HL$(LqLt$0IEIeHH$LGHHH\$HH|$PI;u<HH!HHHT$HHI;uHT$@_HH!HHHT$HHH;uHT$@HL$@ԕH$HOH|$PHH&IIHH;Lt$HuLt$@HL$@薕H7HtrL3L6Mt'INHIN(IٱxI蜝HI;uHHWH+HHrH'LAI+HAHw6I_HHD$ H HOI HOHD$(H`A_A^A]A\_^[HDw@SVWATAUAVAWH`HD$8MHHLL+9IHAH+HII;IL@LD$ HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;HHX'HHC,MtIڡHH$L$3L$H$J HL$(LqLt$0IEIeHH$LGHHH\$HH|$PI;u<HH!HHHT$HHI;uHT$@_HH!HHHT$HHH;uHT$@HL$@褓H$HOH|$PHH&IIHH;Lt$HuLt$@HL$@fH7Ht{LHthL~I;t+L7MtIW(IHI;uLt$ HHVH+HHrH'LAI+HAHw4IؕHHD$(H HNI HNIH@A_A^A]A\_^[H9Dl@SVWATAUAVAWH@HD$0MHHLL+!IHAH+HII;L@LD$ HIH+HHHIH+H;H MI;LCM;N<L$Ir)IO'I;h{HMHX'HHC,MtIWHH$L$3L$H$N$ML$LL$(IEIeI$L$LFHHI;u-HH!HHRHI;u?HH!HHRHH;uH$HNH;tL+HH'JHH;uH>HtKLv HHI;uHHVH+HHrH'LAI+HAHw4I譓HHD$ H HNI HNIH@A_A^A]A\_^[H}DA@SVWATAUAVAWH@HD$8MHHLL+9IHAH+HII;L@LD$(HIH+HHHIH+H;H MI;LCM;N$L$Ir*IL$'I;NHmHX'HHC,MtI*HH$L$3L$H$N4Lt$ MNLL$0IEIeIL$LFHHI;u-HH!HHRHI;u?HH!HHRHH;uH$HNH;tL+HH'JHH;uH>HthL~I;t+L7MtI'I袑HI;uLt$ HHVH+HHrH'LAI+HAHw4I`HHD$(H HNI HNIH@A_A^A]A\_^[HzDzH\$Ht$WH AxIHHu%LCHHH˺ H֐{tH\$0Ht$8H _H\$Ht$WH AxIHHu%LCHHH˺0Hz{tH\$0Ht$8H _H\$Ht$WH AxIHHu%LCHHH˺8H{tH\$0Ht$8H _HHXHhHpHx AVH AxIHLuXLCHIHHH~0Ht'HO@HO ףH hH蒏8H腏{tH\$0Hl$8Ht$@H|$HH A^H\$Ht$WH AxIHHu%LCHHH˺(H{tH\$0Ht$8H _HHXHpHxL` UAVAWHH`H1E3MIHLE8`tEHFD8`u+HFHUAHMH EM,HFHDgA@ HUA HMEMH;ukHHGDgH3D8ftGHsHHD8fu-HLLLLIH;uHHvHLHD8ftD8`HEHFHH@D8`tAHUN HMEMIHFD8`DgtH7/HHG#AHUK HMEMHsD8ft)HsD8fHHH;Fu'HvHD8ftHD8auHHHD8`tD8fF HUAHMEM耸xcMHUIH]D8cu%C HUAHMEMDyAĄtHHGG.E=HCD8`Dgu H7GHLg3L\$`I[ Is(Mc8GfGGHI{0IA_A^]H\$Ht$WH@HIHLHbL 3B HHHBAHHT$ HL$0K D$ L$0ky gH[GH_H{tH\$PHHt$XH@_HLH L@HPSVWATAUAVAWH@H@MMHLHAH$H1Ht$ L8L|$(HIHI+ML;ML+HHI+L; O)LD$0H+HHHH+H;v.H$H&胐HAHp'HHFZH II;HCHrHO'H$H;HtH1HH$H$3H$H$HH+D$ H$HHD$(MH$HOIuI;u MHT$ H&L$HT$ H"HL$(IL+MH I $Ht.IT$H+HrH'LAI+HAHw3II4$HD$0HID$H>ID$H@A_A^A]A\_^[H"sDIH+L;sBII+MHI}K7ID$H+L+LHI`MIHQ/J< H$LH8H>ID$MIH!aTHHXHpHxUHH`HH HUI)pHMEM)xy]go w0@WPKOC G K0O0C@G@KPOPck s0{@SPHUHMEMU^HUf HMn0v@~PONG F O0N0G@F@OPNP_g o0w@P MEyEKOC G K0O0C@G@KPOP[c k0s@{P(t$PL\$`I[IsI{ (|$@I]H\$Ht$H|$UHH@HH HUIHMEM菲y0gW KOC G cS HUHMEM>yuHUHM^f ONG F _g  MEy$KOC G [c H\$PHt$XH|$`H@]H\$Ht$H|$UHH@HH HUIHMEMky,_g KOC G [c HUHMEMynHUHM^f ONG F _g EMѰy!KOC G [c H\$PHt$XH|$`H@]H\$Ht$H|$UHH@HH HUIHMEMSy SOKWHUHMEMyYHUHM^KN[MEѯyOK_H\$PHt$XH|$`H@]H\$WH HIH+HLHH;H\$0H _HHXHpHxLp IMXH+IHLLL IH+HH('MHHHHH A@HH8BHsNINJA@H8BHsNJMA@H8BHsNIMIH+H:GHA8@HsI9LI9N GHA8@HsJ< MH:GHA8@HsI9LMIL+H+I8H2GH8FHsH:I0H2I;FH8GHsI3H:MACH8GHsLI8NMACHA8@HsMNMLACHA8@HsULMJBHA8@HsBIN9HI BH8AHsII II BH8AHsII IBH8AHsII IQM;s IHHMAMA8KHr w MIM;rH;sIHHH8HHr wHH;rLM$I8IOH8HHrwI;t HH:IHLL;rM;v3IKIH9@H8GHrwL+L;t II9HL+H+M;rM;u*L;tgI;t HI IH I HIILIIL;u(L+M;t II II I H+HIH fIIII RH\$IHt$H|$MIVLt$ HHXHpHxLp IMXH+IHLLL IH+HH(3MHHHHH I@(HH9B(sNINJI@(H9B(sNJMI@(H9B(sNIMIH+H:HG(I9@(sI9LI9N HG(I9@(sJ< MH:HG(I9@(sI9LMIL+H+I8H2HG(H9F(sH:I0H2I;HF(H9G(sI3H:MIC(H9G(sLI8NMIC(I9@(sMNMLIC(I9@(s\LMJHB(I9@(sHIN?HI HB(H9A(sII II HB(H9A(sII IHB(H9A(sII IQM;s!IHH(MAMI9K(r w MIM;rH;sIHH(HH9H(r wHH;rLM&I8IHO(H9H(rwI;t HH:IHLL;rM;v5IKIH9H@(H9G(rwL+L;t II9HL+H+M;rM;u*L;tgI;t HI IH I HIILIIL;u(L+M;t II II I H+HIH dIIII PH\$IHt$H|$MIVLt$ HHXHpHxLp IMXH+IHLLL IH+HH('MHHHHH A@(H8B(sNINJA@(8B(sNJMA@(8B(sNIMIH+H:G(A8@(sI9LI9N G(A8@(sJ< MH:G(A8@(sI9LMIL+H+I8H2G(8F(sH:I0H2I;F(8G(sI3H:MAC(8G(sLI8NMAC(A8@(sMNMLAC(A8@(sULMJB(A8@(sBIN9HI B(8A(sII II B(8A(sII IB(8A(sII IQM;s IH(MAMA8K(r w MIM;rH;sIH(H8H(r wHH;rLM$I8IO(8H(rwI;t HH:IHLL;rM;v3IKIH9@(8G(rwL+L;t II9HL+H+M;rM;u*L;tgI;t HI IH I HIILIIL;u(L+M;t II II I H+HIH fIIII RH\$IHt$H|$MIVLt$ HHXHpHxLp IMXH+IHLLL IH+HH(?MHHHHH A@(Hf9B(sNINJA@(f9B(sNJMA@(f9B(sNIMIH+H:G(fA9@(sI9LI9N G(fA9@(sJ< MH:G(fA9@(sI9LMIL+H+I8H2G(f9F(sH:I0H2I;F(f9G(sI3H:MAC(f9G(sLI8NMAC(fA9@(sMNMLAC(fA9@(s]LMJB(fA9@(sHIN?HI B(f9A(sII II B(f9A(sII IB(f9A(sII IQM;s"IH(MAMfA9K(r w MIM;rH;sIH(Hf9H(r wHH;rLM&I8IO(f9H(rwI;t HH:IHLL;rM;v5IKIH9@(f9G(rwL+L;t II9HL+H+M;rM;u*L;tgI;t HI IH I HIILIIL;u(L+M;t II II I H+HIH dIIII PH\$IHt$H|$MIVLt$ HHXHpHx HHUATAUAVAWHHp)pIX)xH.袋.IMH+LHHHLkXHH+LHHHH(~LHHHkXHiL4LI`IN?H+INMEH+IHH+9ILI+I_XM;sMAIHUEHMEx'AHUHMMExLL;rI;sJAEHUHMEx(AHUHMMEx HXI;rHIHUAHMEMuHUHMMEVxsH;t]ck s0{@SPOKG C O0K0G@C@OPKPgo w0@WPHXHXI;LI;LvAHUAHMEMMHUHMAMIXM;ttAAgAo Aw0A@AWPAANAOAF AG AN0AO0AF@AG@ANPAOPAAfAn Av0A~@AVPHXIXL;%I;I;FH;tlAAgAo Aw0A@AWPAKAOC AG K0AO0C@AG@KPAOPck s0{@SPHXAAgAo Aw0A@AWPAOAOG AG O0AO0G@AG@OPAOPIXgo w0@WPHƨI;IXI;tlAfn v0~@VPAONAG F AO0N0AG@F@AOPNPAAgAo Aw0A@AWPAHXAgAo Aw0A@AWPAKAOC AG K0AO0C@AG@KPAOPck s0{@SPgo w0@WPNOF G N0O0F@G@NPOPfn v0~@VPHE0L\$pIs@I{H(t$`(|$PHXI[8L8IA_A^A]A\]HHXHpHx HHUATAUAVAWHHPHIXIMH+LHHHHLH^MHIvZHHMIHIWA,HrHKH'H+HCHw HHHV(H?DH9MIH+A,H>HH\$PHl$XHt$`H A_A^A]A\_uGH\$Hl$VWAVH LqHHHI+H;HoILIL;wHHHH+H;w H *L;ICHT$@HL$@WlHL$@HHOHH_NuHvKHHSHmHrHKH'H+HCHw HHUH>DH H7HH\$HHl$PH A^_^dHL@WAVAWH0H@HXHp LHHH;!LyL+9HIH+HHHH+H;v+H\$`H&ZHHx'HHGDH I;IBH\$`HHrHK'H\$`H;Ht HYH3H|$XJ ?MM+3UcLFL+HHHHt-HVH+HrH'LAI+HAHw0ISH>J7HFHHFH\$PHt$hH0A_A^_H=DUπHL@WAVAWH0H@HXHp LHII;;LyL+9IHIH+HHHIH+H; H I;s IHD$XHD$XI;H4Hr)HN'H;lXHHX'HHCHt HHXH3H\$`J MM+I3aLGL+HHHHt1HWH+HHrH'LAI+HAHw0I7RHJHGHHGH\$PHt$hH0A_A^_H;DUϻLD$SVWAVAWH0HD$(HLII;MLqL+1IHII+HHHIH+H;H H;s HH\$xH\$xI;HHHr:HA'H;HVH3HtH'HHHH:D3HtVHHD$pIHHHL$ HI+WHyHAf9H HHL$huMGHI3WHzHzIJHyHAf9HR H I;uLLHIH0A_A^_^[鏹}DLD$VWAUAVAWH@HD$0H\$pLHI  I;HqH+1HHHHIH+HHHHIH+H;sH I;s IHD$xHD$xI;RLiIr)IN'I;5PUHHX'HHCMt I,UH3H$HiHHL$(IH+;HD$ HGH$LH7H;t#HI6IHH;$uH7HtcLoH*HI;uHHGH+HHHHiHrH'LAI+HAHw4INHIiHHGIHGH\$pH@A_A^A]_^H8D{ILD$VWATAVAWH0HD$(H\$`LHI袋.I;HqH+1HH.袋.HHIH+HHHHIH+H;AH I;s IHD$hHD$hI; LkXIr)IN'I;WSHHX'HHCMt I3SH3H\$pHkXHHL$ IH+4HD$xLHWHH7HtgLgHN8paHNgaHXI;uHHGH+HH.袋.HHkXHrH'LAI+HAHw1ILHIkXHHGIHGH\$`H0A_A^A\_^HL6DzH\$Hl$Ht$ WAVAWH@HAH+IHHvHDHL$0LHL|$0HLt$8IHH+HHHDHLI+HH;}IHwIHIgIHH+HH=zH;LIL;AHHH+HH8MHMHIH/HH+HLI#IΈ\$ LL$`LIHJHD$` MH|{HAL+HLL$`HD$`LHL+I3HH\$ HI6HH}/HHLA@H8EHsLHH*HIH;H\$hHl$pHt$xH@A_A^_H\$Hl$Ht$ WAVAWH@HAH+IHHvHDHL$0LHL|$0HLt$8IHH+HHHDHLI+HH;}IHwIHIgIHH+HH=zH;LIL;AHHH+HH(H9M(MHIH/HH+HLI#IΈ\$ LL$`LIHJHD$`MH||HAL+HLL$`HD$`LHL+I3HH\$ HI6HH}0HHLI@(H9E(sLHH*HIH;H\$hHl$pHt$xH@A_A^_H\$Hl$Ht$ WAVAWH@HAH+IHHvHDHL$0LHL|$0HLt$8IHH+HHHDHLI+HH;}IHwIHIgIHH+HH=zH;LIL;AHHH+H(8M(MHI H/HH+HLI#IΈ\$ LL$`LIHJHD$`MH|{HAL+HLL$`HD$`LHL+I3HH\$ HI6HH}/HHLA@(8E(sLHH*HIH;H\$hHl$pHt$xH@A_A^_H\$Hl$Ht$ WAVAWH@HAH+IHHvHDHL$0LHL|$0HLt$8IHH+HHHDHLI+HH;}IHwIHIgIHH+HH=zH;LIL;AHHH+H(f9M(MHI2H/HH+HLI#IΈ\$ LL$`LIHJHD$`MH|}HAL+HLL$`HD$`LHL+I3HH\$ HI6HH}1HHLA@(f9E(sLHH*HIH;H\$hHl$pHt$xH@A_A^_HHXHpHxUATAUAVAWHhH)pA)xID)@LD)HHD)PD)xHH+H=X I.袋.HDHL$0MHLd$0HL|$8IHH+HDHHILI+HIIH;}IH1III!MIH+H=X vI;LoXIM;oAX3HT$0HHL$@{DC DK0DS@D[PD$0t$@ MHI7DG DO0DW@D_PIIH+LILMIM~nMkXLM\$ AILL$PAOMI)D$PHAG )L$`AO0)D$pAG@)MAOP)EMMH.袋.I^IƨHMHHAMLL$PANL+3)D$PHAF I)L$`AN0\$ )D$pAF@)MANP)EMAOLANG AF O0AN0G@AF@OPANP0H.袋.IIXH+H9Lt$0IXHT$@HL$0AD$@Hy7AONAG F AO0N0AG@F@AOPNPI6~DF DN0DV@D^PHXIXI;L$I[0Is8I{@A(sA({E(CE(KE(SE([IA_A^A]A\]HHXHpHxUATAUAVAWHhH)pA)xID)@LHHH+H=(IHDHMMHLeHL}IHH+HDHHILI+HIIH;}IHFIII6MIH+H=(yI;Lo(IM;A(HUL3HM{DC EukMHIJ7DG IIH+LIMMIM~QKL,Mm؈\$ AEILMAMMIEHAE EMMIIIHMIH|WAMLMANL+3EHIAF E\$ MAOMANG AF II(H+HP}eHuH(HUHMEjy ANAOF AG LA7AEG H(I(I;TL$I[0Is8I{@A(sA({E(CIA_A^A]A\]HHXHpHxUATAUAVAWHhH)pA)xID)@LHHH+H=0IHDHMMH LeHL}IHH+HDHHILI+HIIH;}IHFIII6MIH+H=0yI;Lo0IM;A0HUL3HM{DC Euh$MHIg7DG VIHH+LILMIM~QOHD H;uHFHH;HBHOfD9"sd| tZH;t^HHFHH;HBHODHIHt)fE9tHtHHfD9uHt H;tHHHH+HHCIGH$ H37L$0I[@IkHIA_A^A\_^MH;MLA0L+E3A@WAIXA@CDA@fCDA@fCDA@fCDA@fCDA@fCDA@fCDCDO\OA@CDAHWCLMXIfEXCDO\O\ A@M@XIHCDAHCLMXI@fEXH;'IIH;LLA8L+E3EZWOTOTA@AHWHMPH@MXfEPCDOTOA@CDAHCLMPMfEPM@@IHH;uHHXHhHpHx AVH 3HHHHY0DuHO3A7E/WCHWKHkL3fkCHkLs fkC(Hk8Ls@fk(CHHkXLs`fkH@khCpHLfHLfHLfHLfH(L0f8HHLPf8HXH`HhpHLfpHHHHHHHHHmH\$0HH|$HHl$8Ht$@H A^H\$Hl$Ht$WH 3HHHtUHY03HODBTZC/WHkHXHkCHkHfkCHkHC fkH[XHuH\$0HHl$8Ht$@H _HHXHhHpHx AVH HYHHHHs$H;HHBsHHvHHXE3HtE3HHRHfDsHH[sH\$0Hl$8Ht$@H|$HH A^H\$Hl$Ht$WAVAWH0LLIIIXD3yWN~JIIHcHHSHl$ MIHCIϋIHcHHl$XH\$PHt$`H0A_A^_H\$Ht$WH@H$I@8H$0H$LHxvLH@HD$8H$LT$0DHD$xLHxvLIyH@HD$(HD$pLD$ LIvIHzDHD$IAHD$HvHL$H\$PH$HBHD$H$qPHt$XLQ D$ DAHIDYLL$0@yTA(I8H@_H8HHQH;QtqE3҉WBLRLR ABABAHWJMPI@fEB(LR8LR@AB(AIJ8MQIAfEHQHBHHALL$ MLfjHHH8LAVH`ICI[IkIsI{ MHHH)HEIC3I[L8Xu*AHD$@9Hs \$HH@D$HLH8XtA8Yu AAA9s[HH9FtpHt$0H\$8 5LAA@I(IhIhfAXD$@D$0HT$0HLȳL_HL\$`I[IkIs I{(IA^HATAVAWH`H@HXHhHpHx MLLH)H]HX3HxH3H\$@HKAIMy |$HH[D$HHH@8{t@8~uHVAIy_HUUUUUUUI9GtyL|$0H|$804A$@H(HhHhfxD$@D$0LHT$0I辊H@I6A~IL\$`I[ Ik(Is0I{8IA_A^A\蹌HUATAUAVAWHHpHEHXHpHxMLLL)I]H]3H}I@8{uCAEH]C EHUHMYy }H[ EHH@8{t@8~u$F EA $MHUHMYYyZHUUUUUUUI9GtsL}H}ع0G3A$@ L(LhLhfxEELHUIuH@I6A~IL\$pI[0Is8I{@IA_A^A]A\]qHWATAUAVAWHpH@HXHhHpMLLH1H^HX3HxIhDogH\$PHS(HEH H=v,MI9<$ME$IH9{ HEK D$ DMHDu |$XH[D$XHH@8{t@8~uILN(HEI H=v,MH9~ LEF I9<$ME,$D$ UIH^DubHUUUUUUUI9Ft{ILt$@H|$H01A$@ HHXHXfxD$PD$@LHT$@I؇H@I7AIL\$pI[0Ik8Is@IA_A^A]A\_ԉH\$Ht$WH0HHڹ31HD$@DFWH\$HHpL@f0@ Hp0L@8fp @@HpPL@Xfp@H`fHhpdfpjpl@ppPq@xHLfpxHLfHHt$PHHH0_H\$Hl$VWAVHPL3IHM@G0HD$pHL$(HOHoEHGf/NfV L$8Hn(T$(Hn0Hn8Hl$8HD$@fl$(y>L\$PI6I[(IIk0IA^_^H\$Ht$WH0H3H/HD$@NWH\$HHpHHf0@ Hp0HH8fp @@HpPHHXfp@P`HphHppHpxHHt$PHHH0_H\$Ht$WH0H3H/HD$@NWH\$HHpHHf0@ Hp0HH8fp p@@HHpXHH`fpH@hHpxHfphHHt$PHHH0_H\$Ht$WH0H3H{.HD$@NHWH\$HHpHHf0@p @(Hp8HH@fp(@HHpXHH`fpH@phpl@ppHpxHt$PHHHH0_H\$Hl$VWAVHPL3IHM(-HD$pHL$(HOHoEHGf/L$8Hl$8NV T$(HD$@fl$(#B>HL$WH0HD$ H\$PHH!Ha8VHH@H@f@HH_H\$HH#Hc &HH@H@f@HH_ H\$HH#Hc0HH@H@f@HH_0H\$HH#Hc0HH@H@f@HHH\$PH0_HHHWH0H@HXHp H3H1HqHqHqHq Hq(Hq0Hq8Hq@HqHHqPHqXHq`HqhHqpHYxH\$HH3HsN8(HH@H@f@HHHHHHHHHHHHHHHHHHHHH H(H0H8H@HHHPHXH`HhHpHxHHHHHHHHHHHHHHHHHHHHH\$PHt$XH0_H\$Ht$H|$UATAUAVAWHHP(HEXMA(MLmPLA(A (HE`IA(MA@I0(HEhIP( (A`fofsfH~H;v;fH~H8HUKHMEM8lHH8H;rA(AfoAfsfH~I;v;fH~HXHUKHMEM d+IHXH;rA(IfofsfH~I;v;fH~H0HUKHMEM#8IH0H;rA(MIfofsfH~I;v;fH~H0HUKHMEM7IH0H;rHEXI(fofsfH~I;v;fH~H0HUKHMEMu7vIH0H;rHE`I(fofsfH~I;v;fH~H0HUKHMEM7IH0H;rHEhI(fofsfH~I;v7fH~H(HUKHMEM6yHIH(H;rL\$PII[0Is8I{@IA_A^A]A\]HMHw*HMLHMpH]*HM2HMVHC*HMHM<H)*HMHM"H*HMHMH)HMHMH)HM@SH 3WHAHHAJIHBHBffDA H1HH [H(HIHt H(H(HIHt 0 H(H(HIHt 8 H(H(HIHt (m H(H\$WH HYHHt0H[0Ht'HK@hHK _HShH HOHt 8 H\$0H _H\$WH HyHHK(HKHHH;uH\$0H _H\$Ht$WH HqHHH;uHHWH+HHrLAH'I+HAHw,IH'HgHgH\$0Hl$8Ht$@H _HjDH\$Hl$Ht$WH HHHHiMtH+f;u-HIuH$LH\$pHl$xH@A_A^A\_^HHvHIQMIyvMH;WuHtL+Af;u HHuIM;VJƄ$H$HL$ H\$ HK@HbHHbHH{vH HCHL$0HD$8(D$0fD$0HT$0IebHLLII觱IVI;VtHd$ HIF LD$ I;HHIH$HH\$ HHHKxHK@HK HHH?Hй^ HHHUVWATAUAVAWHhHHEHXMHE3MpIxiIIIxvILJHHzvHM;Hu>MtH+ f;u-HIuHEHH$HĠA_A^A]A\_^]IL;uIIxvI8IPHUwH}HULuLu(EfE(UfULfXKdHHFPHEHLH+HHHH~MfUHHL4vMCEHUHMyOMtH+ f;u-HIuHEHH$HĠA_A^A]A\_^]IL;uIIxvI8IPHUwH}HULuLu(EfE(UfULf(KdHHF HEHLH+HHHH~MfUHHL4vMCEHUHM yOt_HEHtV{tPLC IxvMLȿ@HM]HMH}HGM׃d$ E3LFH菃HM色{`u]HUAtƂH\$(HEHD$ LMEHHEHHMH3H$HĠA_A^A]A\_^]AuHE9C`uHHйHHHPHHUVWATAUAVAWHHHEHX MIHu`MIxvM0MhMeLuLeLEHUIMH}u7G ELuLeHUHMxI;?tHO0HEhH:H{vHIEH]HE(EfEHUHMHLYHHMP谲HH}PHXHSHO(KS(fW HGHLDHD$8LD$0Ht$(H71HD$ AHS HM@H ,H@HHH;PtHePH:HH LEP=HHH@LMhIHHxvHH@HMHELEHUI軷H]PHt'HKH HK(HHH$HĀA_A^A]A\_^]H\$Hl$Ht$WAVAWHPHzMIHHvH2LzLD$ HT$0L|$(HHt$ .KH|$@uOG HT$0Ht$ HL$ L|$(D$0x(H;}t"HG0L\$PI[ Ik(Is0IIA_A^_HHйLWH`ICI[IsHHyH7HFIC؃d$H3ɉL$LH΀xu,R`HD$@9P s d$HH@D$HHHxt׀yuA 9C`srHUUUUUUUH9Gt\H|$0Hd$80S`P HX(H0HpHpf`D$@D$0LHT$0H2H\$pHt$xH`_74̋S`IHHXHhHpHx AVH @iE3ILH@uPH{HvH HCHAHv,H'f8%uHf%uH f0f v HH;r@HwH;wtXAM@HWLvfH~LvWF Lv0Lv8F KN0LsHCfD3HG@LHHnH\$0Ht$@@oHl$8H|$HH A^@USWATAUAWHHxHEHH\HEHE(EfEA,HUHM8LHSH;StHI HHC Hg2A@H}8HtHO(HrAH7H\HEHE(EfEA.HUHM@HSH;StHH H HC LH1H}@HtHO(HIHHP\HEHE(EfEA/HUHMH蔿HSH;StHH H HC LHi1H}HHtHO(HzIH?H\HEHE(EfEA0HUHMPHSH;StHH H HC LH0H}PHtHO(HIHH[HEHE!(EfEA1HUHM蜾HSH;StHH H HC LHq0H}HtHO(HIHGH[HEHE(EfEA2HUHM L-LLmA Le(EfEE3HUH^HSH;StHH H HC LH/H}HtHO(HIHH#[HEHE(EfEA3HUHMwLmLe(EfEE3HUHH cYHMHE (EfEE3HUHHSH;StHH H HC LH/H}HtHO(*HIHH|ZHEHE (EfEA4HUHM谼H HMA Le(EfEAHUHHSH;StHH H HC LHX.H}HtHO(HiIH.HYHEHE (EfEA5HUHMH HMLe(EfEAHUHKHSH;StHH H HC LH-H}HtHO(HIHHhYHEHE (EfEA6HUHMdLmHE (EfEAHUHHSH;StHH H HC LH-H]HtHK(>H&IHHxA_A]A\_[]H\$WH0Hd$(HLʉ|$ 3I HHI(DBHDHC0Ht=E3H|$ E3HAQHDHHtMHH{ HCH\$@H0_HK8HHD~ LHm%2HK8HHbD~ LH_%H\$Ht$WH HA IH+AHHHI;w IH+uBHKLHHH{H\$0Ht$8H _H\$Ht$WH H:HHBH4GuDfA"tWfA&tGfAH|6HML=y#HUH [L}HE(EfE DM(EfELMLEHUH5tqH>HU0HHWpH;WxtHH H HGp LHOh%H}0Ht0HOhHOHHO vHnH1HIy1HHApH9AhuMǺ;H|5HL$I[ Is8IA__]HUVWHhHHEHX)pHH3HE'HHHUeEHUHE2H/KHUH#\EHM.Q<tu<"tX<(HUHf\0uHMtHH ufI~Lm&WH|5HX@UHUH\HHwH3LIx0uLp#>H3HHM'H3,L$I[0A(sI_^]H\$WH HA HE3E3HHHH;t0HH;tD8t D8tAHH;uAJAEtkAtOAt9At#At AAH[*DEApEAPEAA0AMAIuEAAyAȃthtctEt'tuREA0AHEAP;HD$PHt1DA"HD$PHtDA EAtAE HT$XHDR`H\$0H _HmHUWAVHhHHEHXHp)pHHE3DuH HUHsVH%HEHE (ufuE(EfD$0LMLEHT$0Hd0EwHUwHL$ >ADuHvGzHUHpXD$0HL$0yM<t2<t<"uGHUHXHL$ H (HUHXHL$ HU'HXHL$ H@HH*tuHD$ HxuL >H0HD$ HWH;WtHd$ HHG LD$ HADuHt$ HHEHEft$0GE(EfELL$0LEHUH/tyHUHHWH;WtHH H HG LH HuHtH+@uL\>Hs+HHMH3ȿH$PH _^]H8L`LMtDLXMt8Iu.HXL`H L9u A@ 8A tHI;uH8IHL;H IHILLD$(EHT$ HHHHUAVAWHhHHEHXHpHx HHBH+HH WEA0A_HH@H@f@HEWEE~A6HH@H@f@HEWEAHH@H@f@HEWEAHH@H@f@HEHH3H;HHH@HxXvHH@H@PHMHELEHUHMv@8pHf9Hht"@hEgLEgHUHM@8pHH9p0t6HH Hx8vHH H@0HMHELEHUHM@8p HHHxvHH@HMHELEHU/HM@8p-HH;HEHX@8su)LCHUHM^,HHI@8stHEIHHMHY@8su)LCHUHM,HHIż@8stHMI購HMHY@8su)LCHUHM+HHI腼@8stHMIsHMHY@8su)LCHUHM+HHIE@8stHMI3L$I[(Is0I{8IA_A^]H7HHйH7HLH7HH@HйH Hd7H`HйHF7HBLH37PhUH7HLH 7I Hй#HUATAUAVAWHhHHEHXHpHxHWEA0AHH@H@f@HEE3L}L}El$AkHH@H@f@HEWEAFHH@H@f@HEH;LsI;@HHHxvHH@HMHELEHUHMԋD8xHHuHFHEL}HD8xu+HS HEH9P s D}H@ EHHD8xtD8yuHA H9C HfffffffH9EzHEHEL}IgHK HH H0HpHpfDxL}EELHUHMHL9x8t6HH(Hx@vHH(H@8HMHELEHUHM܊D8x?HI;HEHXD8{u)LCHUHMj(HHID8{tHEIHHMHYD8{u)LCHUHM)HHIѸD8{tHMI迸HMHYD8{u)LCHUHM'HHI葸D8{tHMIL$I[0Is8I{@IA_A^A]A\]H4HHй4H3HLH3HP 5H3HLH3J (Hй6HHHUAVAWHhHHEHXHxHWEA0A8HH@H@f@HEWEE~AHH@H@f@HEWEAHH@H@f@HEH;H[H;HHHxvHH@HMHELEHUHMxxxHH MgLEgHUHMx)HHx8t6HH(Hx@vHH(H@8HMHELEHU/HMx1HH;WHEHX{u)LCHUHM%HHIK{tHEIH6HMHY{u)LCHUHM%HHI{tHMIHMHY{u)LCHUHM%HHIȵ{tHMI趵L$I[(I{0IA_A^]HH1HDLH51P WH1HHй 9H1HH(Hй HUAVAWHhHHE'HXHpHxL` HE3LeLeAL$8荺HH@H@f@HELeLeEt$0AcHH@H@f@HEWEA>HH@H@f@HEH3L{I;HEHEHLuLe8HHEHH{vHHKHG HO(HHG0L7LwLwfDgLuI^H]LeD8cu]G EH]C EHUHMtuHG0H9C0uA$y DeH[ ELHD8ctE8fuAAF EO MHUHMuIF0H9G0uA$,H$I$IH9ELeEELHUHM6HH}HEHELeA0A赸LHEDK DH HHH(H8HxHxfD`HUHJHMLe:HMD9I uI@(H9A(uA$y DeHI EHH D8atD8bu#D;J uHB(I9@(uA$_HUUUUUUUH9ELeEEHUHMAHL9`8t6HH(Hx@vHH(H@8HMHELEHU/HM范D8`'HI;HEHXD8cu)LCHUHM!HHIıD8ctHEIH诱HMHYD8cu)LCHUHM HHI聱D8ctHMIoHM蹪L$I[ Is(I{0Mc8IA_A^]rl8H*H,HHйIIH,HLH,P H,HH(~HйHUWATAVAWHhH@HEHXHpHH3HE0HWD$PA0AHH@H@f@HD$PWD$@AߵHH@H@f@HD$@WD$0A踵HH@H@f@HD$0WD$ A葵HHH@H@f@HD$ HHLpE3I;HHHHx(vHHH@ HL$`HD$hLD$`HUHL$@D8x1LHUHL$0D8xHHHPHxhvHHPH@`HL$pHD$xLD$pHUHL$ 跀D8xHHHBHD8xqu5HHxvHH@HMHELEHUHL$P讁D8xHH;uHI;HL$ HYD8{u,LCHT$ HL$ HHI蒮D8{tHL$ IHL$0HYD8{u,LCHT$0HL$0HHIND8{tHL$0I;HL$@HYD8{u,LCHT$@HL$@`HHI D8{tHL$@IHL$PHYD8{u,LCHT$PHL$PHHIƭD8{tHL$PI賭HM0H3胭L$@I[8Is@IA_A^A\_]H6)HAHMH)HHLHU5H(HHHйH(HHйH(HHPHй HHXHhHpHx ATAVAWH H 3I9MHBLI9@H+HHD}APH @IHzLvLHyLLQvLL;RMtM+CfA;uvIM+u@8Af9f9}H9pH9cfAAIIHzLvLHyLLQvLL;RMtM+CfA;uvIM+u@8eA[f9-f9 H9H9fAAIIfAIFH+HH;]tJ@t H\$@Hl$HHt$PH|$XH A_A^A\IlILaHй!IGILA>HM茹HKhHCpH+HHXMǿDJHHxvHHx u+ L L+B f;uHHu@@tAHʓHEL}HkHEHE(EfE(MfMLEHUHChJ D8t=HyvH HMHHfD9L9~tTHHEHEHUH(fEHUHPHHEHEHUH}0HKH;KsHAHCHH{vHD$H EH7HKH;KsHAHCHH{vHH%A%HLMIf ff+f0fA9uLEIHMMHUHHM&HHEHEHUHIHHKH;KsHAHCH{vHK> EHPHMH3lHĐA_A^A\_^[]HHPUVWHhHHEHXHHeEwHUwHipEH$HUH*EHM<<<<tl<tO<t6<#HUH*EHUH8QHHUH*HH@HUH*HHwHUH*HH`HHUH*LL2HUHh*HH HHU/HP*LLEHUqMHEH>HxuL/HQHHx0uL,H6HH$H_^]HWHH@HXHpHH*HT$@H&HeHD$0HD$8(D$@fD$P pL$`(D$0fD$pLL$PLD$`HT$pHtZH$HHSH;StHH H HC LHH$HtH謟H軕HD6L$I[IsI_H\$Ht$WH (IA(fofofsfsfH~fH~HH;fH~ѻHtfI~L+Af;urHH+uHLD$8Hd$HHT$Hd$8HH@h9>xV(D$8foHT$HfsfH~H;u"HtfI~L+Af;u HH+u2Ht$@H\$0H _DHH葷HĉPL@LH USVWHhHHEHH3HE'H3LEwHMOEoy8_@uj9_D|GDHw8Ht7H$H#HMH}HGM\$ DLGHUoH+=HM%lHM'H3赓H_^[]H#H~#\$ DDEoHUHMHgHMLMCMK SVWAVHHD$@HH3H$IHHL$8T$0MC WD$Pfo L$`D$PHHL$P ` H|$8t$0y@usD|wDLw8Mt9H"H"HL$PH|$hHGL$P\$ DLGHI;HL$PjH$H3zHA^_^[H"HB"\$ DDHT$PHL$pH*HL$p趡HUWAVHhH`HD$8HXHp HNH3HEXHHHT$@d$0襗HD$ HxHD$0E2HHT$HH$D$ HL$ ȃfE$tbt<2HT$XH$D$ HT$ HEHAHT$hHU$HHH費HT$xH4$D$ LD$ HU8HbHHHH\HM8HUH#HHhHHUH#D$ H(HL$ 褟THUH#HHHQHUH#HH(9HUH{#HH!tkt8HUH2#D$ HT$ HIHHHUH#D$ HT$ HAIHA~HUH"HHxHUH"HH]HUH"HHBHU(H"D$ HT$ HCHBH>UEuL>HHHMXH3ߎL$`I[0Is8IA^_]HUWATAVAWHhHHEHXHp HH3HE/LHE3AAWEfo .MfDeEEMfDe"HUH!D$0HL$0<tP<"t2<(HUHW!D$0HT$0HGD@XHUH-!HHM荸>HUH!D$0LD$0HUHAEHHMAHM@H<?@uL>H@uL>HDt$ IOLMLEHT$ \HM股HMxHM/H3L$I[@IsHIA_A^A\_]HUHhHHEHXHpHx )pHHuHU'HHHEHE(u'fu.gE(EfELMLEHUHH˄t[H>HUw虂HWH;WtHH H HG LH"H}wHH(HH3H{HEHE fufE(EfELMLEHUdtxHtlHHEHE(uHU7H(E7fE )fMfuLMLEHUHt HHH:uH:L$I[IsI{(A(sI]H\$Hl$Ht$WH Hy HH;vHHHHH;r{qi+1+)H HArDHK0HrDHHH9s wHH+S }H HHKH;KvHKHHH\$0Hl$8Ht$@H _H85LHyHHXHhHpHx AVH HHHJE3HM0AIHHC(ENHEHHHt D fCAHHtAP fCft+fCftfA+fA; 2A;wwtn w6t/twA+trA+tXA+tSA+tAA+tH@uLp>HwHHM?H3̄L$I[0Is8IA^_]H\$Hl$Ht$WAVAWH@HkyXHYH.袋.HL<;HHH~L(fD$ HHT$ HHL$0LkXAD$0yHXHIH+HHHI;t?(EfsfH~H9Ku+ HT$0(EHL$ L$ fD$0.uH3H\$`Hl$hHt$pH@A_A^_HWATAUAVAWHpH@HXHhHpLL(IfI~fsfI~Mt7II3MtfA9:tHtHHf::uHHtI+HIHL;L+MM;MBM4ALt$0L|$8A(fD$@(T$0fT$`IChH I[`L$IH+HHHH~HfT$0HHHH,ED$PHT$0HL$PWyH](IH+HHHI;tV HCI;uJHtfH~I+A fA;u2IHuHL\$pI[0Ik8Is@IA_A^A]A\_3HL$@HL$@HT$`HE(fD$`HL$`ШHUVWHpH@HXH+H3HD$hHH(HfI~fsfI~Mt7II3MtfA9:tHtHHf::uHHtI+HHHL;L+L;IBIHXHFI;uI^/v-IFI+HIH;v Iu#H+I=IFHUpE3HMhHH+E3HH3~H LD$ Hd$ DHkXI'HD$ HLHEhH4tpHE3HH+HHtSE3J LD$ Hd$ E3HkXIHD$ DHHLEHfH+HL;rHUpDHMhHH+AHH;3H|$0LH+HIEI+ELl$(ILHHxHXH8HHHHGhHGHHL$8HEIHHHA_A^A]A\_^][H8HD$ d$@H HHT$@HOD$@H8H8HD$ d$@H HHT$@HD$@H8LI[WH IcMCd$0HH HISHH@pxHD$@HD$0HCHH\$8H _DHH\HHXHhHp HHWATAUAVAWH IiLIXHI+ HI+E3HMHHMH;s,HiI9HH;tHJHH;uI~2v0IAI+HHHH;v IKH+H~8IF3Ht@3I$LL$PHd$PILiHMDHD$PHHLH;rHD$pH\$XHl$`Ht$hL8H A_A^A]A\_LIKVWAVH`ICI[IH3$WD$@ICHLfsfH~I;t@H H$H;tH HHT$HL$HL$@谸HD$PHT$HHH$HD$ LLD$@H#HL$@$H$H`A^_^LI[WH IcMCd$0HH HISHH@`QxHD$@HD$0HCHH\$8H _DHHLI[WH IcMCd$0HH HISHHxHD$@HD$0HCHH\$8H _DHHmH\$WH yH+9HH9y w HH+Q H HHKH;KvHKH\$0H _HUWATAVAWHhH HD$pHXHp )pHH3HELHHT$xE3Dd$$WELeHEfDefDd$ AAOE|$~HT$0HCD$@HL$@L<t9<"t0<(uJHUHD$@HT$@HZ$fD$ AAHT$PHVHHM趕HzL9euLQ>Hp@uLP>HWuL>H?LD$ HUI?AD|$$EHSHHUHHHD$`HD$h(uft$PDE(D$`fD$0LL$PLEHT$0HIDd$ WELeHEfDeHoHUHD$0HL$0<t<+u@HUHHHM_&HUHD$0HT$0HD$ H{uL9euL^>HLD$ HUHL$(At$$HM}HS0H;S8tHD$(Ld$(HHC0LD$(HK(UH\$(HtHJ}(H iHHbEuLú;HYHM}IHMH3hL$ I[@IsHA(sIA_A^A\_]H\$@HD$H ft$0CE(D$@fD$PLL$0LEHT$PHEDEKHUVWATAUAVAWHhHHD$PHXHGH3HEHLWD$xE3AH]EELEfDl$xEHI8IF@H+HHWHzH-N$L;sHH+HL$xH]HHL$x5HMH;Ms!HAHEHD$xH}HGD$xH\A\HL$xIHL$x3HnHL$xlHT$xH}HGT$xWD$0Ll$@Ll$HLEHL$0HT$0HMI$HMA$MHE+@H AIHMD$ CRIMEHM+D$$D$(D$,D$ HM\oIIN8IF@H+HL;s LEH]HL$xzHMH3BfH$`HA_A^A]A\_^]HWHH@HXHpHHHT$@HHHiHD$0HD$8(D$@fD$P a@L$`(D$0fD$pLL$PLD$`HT$pH1tlH$HHWH;WtHH H HG LHH$Ht'HKHyHK(yHyxHMeHe$L$I[IsI_HUVWAVAWHhHHEHX)pH H3HEHHHUE3D|$ AOxvjHD$(WLxAOHHfD8Lx @(Lx8HH@fDx(@HLxXHH`fDxHDxhDxlLxpHD$ AHoHUHD$0HL$0ȃt?t )HUHHHH(HUH3HH蔎HUHD$0LD$0HUHEHHHHBHMwHUH0t$0HHEHEHUHL$0*L|$(HLDD8AHT$(Ht$0HHNDLHL$8HtHNH9D$(uHLDD98tfI~LWHHLp @HHA>L9xuL)AHJ@uLAH3HHMH3bL$I[@A(sIA_A^_^]HWHH@HXHpHHHT$@HHHD$0HD$8(D$@fD$P <L$`(D$0fD$pLL$PLD$`HT$pHutlH$HHWH;WtHH H HG LHH$Ht'HKHuHK(uHuxHaH$L$I[IsI_HUWAVHhHHEHXHp HgH3HE7HHHUE3DuANxfHEWLpANHHfD0Dp @(Lp8HH@fDp(@HLpXHH`fDpHDphDplLppHEAHiHUH`EHMk<tk<tN<"t5<(HUHEHUHCHH @jHUHrHH(HUH]HH辊H7@uL>HHHM7H3s_L$I[0Is8IA^_]HUSVWATAVAWHhHHE)pHyH3HEIELHWEE3LeHEfDeAthHT$0HH}uCHL$0LL+Af;u%HHuHUHHHMS@H u@uL>HH?HHD$0HE @}(t$0HUH(EfE(fMfuLMLEHUHtMHEH}HGEHD$0HEHE(D$0fE(fM@|$(HEHD$ LMEIHpH iHMqHMH3]($HA_A^A\_^[]HUSVWATAVAWHhHHE)pHH3HEIELHWEfo ME3fDe@tHCHEHE (uHUHO(EfE(fMfuLMLEHUH]t"(fE@|$ LMEIHNAH uHMpHMH3~\($HA_A^A\_^[]HT$SH@HD$(H3D$ WHBHBfD$ D$0HL$0HH@[H\$Hl$Ht$WH HzHHHvH3HjHQH f(H9WsH_HH+H_H9HXHHHOH;OsHHAHGvH?O)A)H:uH\$0Hl$8Ht$@H _HUVWAVAWHhHHEHX)pHHL=L5HUHRL}HE(ufuv5E(EfELMLEHUHLH΄tHUw\H0HEwHEH8H;@t HH8 LE螥HHH;tHEwHewHH LEwLH}wLuHEfu4E(EfELMLEHUHUHH0HEHEH8H;@t HH8 LEݤHHH;tHEHeHH LE苼H}Ht0HOh[HO@mHO mHmHaYHy/L ĹL<HL$I[0A(sIA_A^_^]HUVWAVAWHhHHEHXHH3HE/LHE3AAWEfo _MfD}D|$ EMfD}QHUHED$0HL$0N<tQ<"t3<(HUHD$0HT$0HD$ @XHUH[HHM軂>HUHAD$0LD$0HUHoHHMotHMl@H>@uL/>H6@uL>HILMLEHT$ 4&HMkHMkHM/H3HWH$0HA_A^_^]H\$WHp)t$`HHtwH+HD$(HD$ (t$ HT$ HC |1LL$0H(D$ LD$@HT$PfD$0L$@ft$PFt HHHuH$(t$`Hp_HHXHpHxUATAUAVAWHhH)pH)xH@2tNHUH H}u*HMLL+Af;u HHu@Hu@uLV>HuH@2E2E2L-A;LmL%HEL-(}HUH"0LL$ H(uLEHUft$ Ef}H˄tHW`@/LmLMHELEEHT$ (EfD$ fu蠿H˄tHA/LeLMHELEEHT$ (EfD$ fuPH˄tLG0HW4mAX5/HHEHELMELE(EHT$ fD$ fuH˄tHW0E3.H&HEHELMELE(EHT$ fD$ fu蜾H˄tHWH.HIHEHELMELE(EHT$ fD$ fuGH˄tLH-}O,.HHE HELMELE(EHT$ fD$ fut HHHL- A;@uMAH谾EuLAH虾EuLAH肾L$I[0Is8I{@A(sA({IA_A^A]A\]HUWAVHhHHEHXHpHH[aL5@HUHHHEHE (EfE ,M(EfE'LMLEHU'H迼HHU7HfLuHE (E7fE' ,M(EfELM'LEHUH`tmHUwH HWH;WtHH H HG LH襴HuwHt0HNhSHN@eHN eHeH{QH5HGH9uMƺ;HʼHjL$I[ Is(IA^_]@SH HH HH@HDx H [DHHs@SH HH HT$0d$0^u|$0t|$0uܰH [x2DHfHsHWHH@HXHhHpIHH HT$@HHΨHD$0HD$8(D$@fD$P *L$`(D$0fD$pLL$PLD$`HT$pHntoLH$HHWH;WtHH H HG LHLH$Ht'HKHcHK(cHcHOH!L$I[IkIs I_HUWAVHhHHEHXHp HWH3HE?IHHHUE3DuTHEWLpANHHfD0Dp @(Lp8HH@fDp(@HLpXHH`fDpHDphDplDppLpxHHEAHJ HUHAEHMLȃtptR t8HUHpEHUHHH HUHAHH(HUH,HHxfHUHEHUHHHhHܸuL>HĸHHM?H3ML$I[0Is8IA^_]HUVWAVAWH@H@HXMHHL9H`HPHݮx)IH\$pHIH@HHH@x HOA&?v n A>L6H$H$HfxuHd$pHD$pHD$(Hd$ E33AH$HHa5DHHH@[x(IHT$pIH@CHL$pHH@0x HNxH\$xH@A_A^_^]DH9HnH\$UVWAVAWHl$HPHH3HE@(HHfD$0LHD$ HT$ HD$(HL$0[H\$8H|$0HtsAHL$@E3ZLT$ L\$(IKZL;tfD99HD@H;uH_HH;s!fD99|@HH;rHH;HBH+H  :05HH H+L:Af;HHuL_HI;sD IIMt,fE9 tHt HHfD9uHtHI;rJH+HCHu4H H+L:Af;uHHu'Hu HtLLWI?2HM@H3IH$HPA_A^_^]HHXHhHHVWAVH HIL3HHhE3HPIH4DfH;\$@u IHsH~HvHHnf(H\$HHl$PH A^_^H\$Hl$Ht$WH Ix&WIHHuI0f>{uIH.#HNLH;tLLߦWH.WHl$8HH\$0Ht$@H _HHPSH0H@HL3ɉHWHJHBf @I@H0I)f;TABf;Bf;AAfA fA sf;AfA tf;AfA rf;A fA if;A fA nf;AfA gf;uBf;AuvIHrHH{vH RAOA ]mf;u<AfA cf;u*Bf;Au!IHqHH{vH@mcMLWIyHH0[HHXHpWH0(HHf@3HHH=wH uLLWHHt$HH\$@H0_HHXHpWH0(HHf@3HHHH uLLzWH豲Ht$HH\$@H0_HHXHpWH0(HHf@3HHCH=wH uLLWHFHt$HH\$@H0_H\$Ht$H|$ UHH@(HfEHUHEHMHEs 3H}H.DDHUH]Hˉ8H/DHMHtH KH9MuH.D98u@H\$X3uHt$`@}H|$hfEEHEH@]HHPUVWAVAWHhHHEHXHHكeEwHUwHADu@2HE}HUH?EHMJ< t6<t<"uLHUHHHUHuHH HnHUHXHH@HnAH{HHx0uLI>Hh@uL@>HOHH5LHUHHuHE(EfE M(EfELMLEHUHDH7EwHUwHMADuE2HjHUHEHM<t%<(u=HUHH0EuL>HHVpH;VxtHEHeHHFp LEHNhٝADuHuHt0HNhVHNHVHN yVHqVH4BH5HEZHHApH9AhuLƺ;HxHH$HA_A^_^]HUVWATAUAVAWHHHEHXH|H3HEMLWEE3LEHkrXHZHH}H;t4H]I;t HHH}LEHHMfLEH}HXLHuL+IDMHH L>EHUHM~IH]HkIWHK kIW(HK@kAGHfChAGLC`AGTCpAGPCdIO HtHUHM|IHM'H3>L$I[@IsHIA_A^A\_]HUVWATAUAVAWHHHEHXHyH3HEMHM3WEDH}HBXH<@HHZPHHuH;t4H]I;t HHHuLEHHM耈LEHuH0LLuM+IDMHII>xBLHEW3HHQHPfHH HX(HKHSf @HHHXHP`fHHHhHlHHpHEHHogHG(ID$ HWHZgHO 3HtHU2HIL$H!YHMPAMIHMZrIxI;tHL"IxLEIp貜H]Ht'HKHxPHK(oPHgPxH*t0I+HEHt!IDIfD9PjWAAH;rfACjHWLHI+HDL;rLE3M4$II]II}IIuIe LL$`LL$h0'7HH@H@f@HD$`LLD$`II#LLD$`II #LLD$`II"HL$`HY3@8{u.LCHT$`HL$`WHH00@8{tHL$`00LuxLt$ MLD$pI$HM I$HD$PHD$pHD$HHEHD$@HEHD$0HEHD$(HEHD$ LMLEIHMLD$pI$HMI$H(xI$HX#{I$HpuI$HˆqI$z]HL$pHY@8{u.LCHT$pHL$p觟HH8/@8{tHL$p8/HM ;IM;H]L}pIH(A_A^A]A\_^[]~EHLH L@HPUVWATAUAVAWHhHHEHXIMLHeHeA(A4HH@H@f@HEWEAM4HH@H@f@HEHHLI;hLHt$XLl$PHHD$HHEwHD$8HEoHD$0HEgHD$(H|$ MLHUOq`HxH H LuIFHE3HUI HEH9x s UH@ EHH8Pt8Qu H;y |HfffffffH9EbHEHEHU(3Hx L0LpLp3fxH}EELHUHMHH9tBHHvHHHMHELEHUHM@8xHI;tH}_LuW3A(HI蠐HMHY@8{u+LCHUHM茜HH04-@8{tHM0 -HMHY@8{u)LCHUHM褝HHI,@8{tHMI,H$ HA_A^A]A\_^]HjD@`*SHKHC[Hй+bSHLH UATAUAVAWHhHHEHXHpHxMLLWEǹ 1HH@H@f@HEWE01HH@H@f@HEWE1HH@H@f@HEIM3I;7H7H~XtHHVHLMSHeH~xtOLDNAIF@L HVhLD$8Lt$03Ht$(HHD$ DF IMOAƆ3HH@@A ȉMLEHUHMW@8pHH9p0t6HH Hx8vHH H@0HMHELEHUHMP@8prHHHHt-HxvHHEHMLEHUHM@8pHI;HEHX0@8su)LCHUHM蠙HHHJ*@8stHEHH5*HMHY@8su)LCHUHM]HHH*@8stHMH)HMHY@8su+LCHUHMHH )@8stHMǺ )L$I[0Is8I{@IA_A^A]A\]H;H7XHйRVPHD@AP@L5PHHH WHйKPHHXHhHpHx AVH HpMHxHHMFPIFXL@IMM;HHzHvH MHAL;Ju+MfI~L+A f;uHIHB I9@(Hz8tIHz@HJ(vHJ(MHAHL;J8u+MfI~L+A f;uHII0M;OHE3LH]HH;H\$0Hl$8Ht$@H|$HH A^H蕣HVHL肣5HP NHkHgVHй4NHMHIVHL:HH(5VHй6TNHL@HPUVWATAUAVAWHhHHEHXLLE3Ld$ Ld$(At$8,HH@H@f@HD$ I>MnI;Hw8HHHFH~vHHEHMLEHUHL$ 芚HED8`u'@ E(MfMHUHM%RH$I$IH9D$(H\$ HD$ HELeǹ8,(E@ H0HHXHXf`LeEELHUHL$ #H^H~vHLfH]LeLEHUIL}A%AG EH]LeHUHMWQE3HEoL;8I_0L{`A?ACgHVHK@觠H]LMMHUHMw+D8`HHHHI;t L}o]8II~H;t"HK(e9HK\9HHH;uIIFHD$ HX!LCHT$ HL$ 袔HHH$D8ctHHL$ $H$HA_A^A]A\_^]HOpSHйUKHO(YSHй[xK‚AIdKHK .SHйVMKHATAVAWHpH@HXHhHpHx MMHLW@0)HH@H@f@HD$8IInH;H$HHHxvHH@HL$HHD$PLD$HHT$XHL$8?xLIvMLHD[LIH|$ MHIHH;uHD$80HX{u,LCHT$8HL$8蓒HHH=#{tHD$8HH'#L\$pI[ Ik(Is0I{8IA_A^A\HN QLH觞HQHй IHLH HHUVWATAUAVAWHhHHEHXIMLHLI;LE3HL@pHPhHffHI;uHLPpHPh-HLLIffIM;uHI;uHfHLBhHEHD$ LIHH9pPt@`H3M&He8v'HHELx HH~vHHNIIOIwL'LgLg3fwMHUIW@EHE@8pu'@ EAMHUHMLH$I$II9FtsHuULHUI)}H;u}G`uHHHM_}HI;t L]_H}weH$HĠA_A^A]A\_^]~8H HcH_OHй7~GHIOHйhGHUVWATAUAVAWHHHE@HXHE3L}0L}8AO0%HH@H@f@HE0HLE0HWxHEw(A%HHWEL}L}EGHѧHM|`A,HUH~HHVH;Vt AHHFLH輇HHtH3IHuI%HHWEL}L}A HcHM_A-HUHHHVH;Vt IHHFLH&HHtH3IHHILL7IHHyvHHyu&AL XL+B f;u HIu@HHyvHHyAL vXL+B f;HIuLy((#HH WE3H]H]DCHHM^EMNH]HEf]^ HM2HIWI;Wt H2IGLI܅HE3HtH1AW(HIM;HHHHFH+HHm۶m۶mHH;v"H$I$IH;HHH_xHD8{HK0HH;AItHP0HEHUHQ0H HA HxvHHHEHUHA@LI`HVH;VtCHHxvHHL$`H@HD$hAEBL$`JEB(HF8HMHL$(HD$ LEHhmHCD8xt!HC H;Xu HH@D8xtHHHD8xtHHOhH+O`HHHCH+HH.袋.HH;v"H袋.H;v HHLwhHw`I;HLxpL`dLHH`H HH@H(HHxHvHHxHHL$`HD$h(D$`fD$pHT$pH螚HEHLJ BhHKH H;Kt:L|$HLd$@Ll$8HD$0H(HD$(HEHD$ LH}SCL|$PLd$HLl$@HD$8H(HD$0HEHD$(LL$ LLHH,^HI;HE3HHSLL+IH.袋.LEH EHHOH+HHHCH+HIIIUUUUUUUH;vI; HH0LwH7I;HHHHHx`vHHHH@XHL$`HD$h(D$`fD$pHT$pHLHLIH(HSH;StVLHyvL HALMHEEH IIxvII@HMHEEMJLZ DJ(HC0HHD$(HL$ MH HVHI;-HHSLL+IMEH HHO H+OHHHCH+HIH;vI; HHLw HwI;HHHHHx`vHHHH@XHL$`HD$h(D$`fD$pHT$pHʗLHLIH(HSH;StXLHyvL HALMHEEH IIxvII@HMHEEMJLZ fDJ(HC0HHD$(HL$ MH HJWHI;+HHSLL+IMEH =H0HO8H+O0HHHCH+HIH;vI;9 HH蓼Lw8Hw0I;HHHHHx`vHHHH@XHL$`HD$h(D$`fD$pHT$pHzLHLIH(HSH;StVLHyvL HALMHEEH IIxvII@HMHEEMJLZ DJ(HC0HHD$(HL$ MH HSHI;-H0HSLL+IMEH HHHOPH+OHHHHCH+HIH;vI;HHELwPHwHI;HHHHHx`vHHHH@XHL$`HD$h(D$`fD$pHT$pH,LHLIH(HSH;StVLHyvL HALMHEMH IIxvII@HMHEEMJLZ LJ(HC0HHD$(HL$ MH HVHI;-HHHSLL+IMEH H`HH+HHHCH+HIH;v"H H;HH{LHI;t|HLx HHxvHH@HL$`HD$h(D$`fD$pHT$pHMu*HSH;StAfBHCMLHGgHI;uH`E3HSLL+IMEH MLHHHH0H+H(HLHI;uHHKH+ HIHHCH+HHH;v)HH;tHH蠹HLxHH+HHIFI+HHHH;v%HfffffffH;HImHLLLeM;oL{L+;IEHp(H H@0HEH;HHHxvHHPHMHUvHHEHU(EfD$pHT$pHMH(HHEH`LhL+IHL(EfD$p MLK4dHHHH~}M LHHHH@IH(EHU HM=yL(IHH+HHHLLxLHMKdH`HL;:EA M HUHM 0~H LI HSH;StALBHC MH[HH H;uhLeIMHA0H+A(HIL;L|$`HD$hHq HHyvHHAHUHE(EfEHUHM&IVI;VtD$`BfB IF(HL$`HL$ LLI `IM;LxE3IVLM+IHLEI!IINH+HHHD$pHL$xHHHPH+HHHHEHMH0H8H+HHHEHMHH H+HHHEHMHHH+HHHD$`HL$hHHH+HH.袋.HHEHMHHH+HHm۶m۶mHHEHM(D$pfE(MfM(EfE (MfL$p(D$`fE(MfM(EfEHEHD$8HEHD$0HE HD$(HD$pHD$ LMLEHUHMXH@ H0@@HP@`HM0H$HA_A^A]A\_^]yxHL$pHL$pHUHEEHM"5HxBxHqEuL`>Hq@uLFb>HqH͈*HdHD$`HD$hDv(|$`HUH"(uft$ QD$0f|$@LL$ LD$0HT$@H&pH˄tHHˆ?HddHD$`Ht$hft$@D$0(D$`fD$ LL$@LD$0HT$ oH˄tHH(趢>HdHEHEft$@D$0(EfD$ LL$@LD$0HT$ ioH˄tHLXH@DHcHELuft$@3D$0(EfD$ LL$@LD$0HT$ oH˄tHHXE3zH:_HEHEft$@D$0(EfD$ LL$@LD$0HT$ nH˄tHHpםHcHEHEft$@rD$0(EfD$ LL$@LD$0HT$ FnH˄t H[HbHEHE ft$@D$0(EfD$ LL$@LD$0HT$ mH˄tHH茰dHbHEHE ft$@D$0(EfD$ LL$@LD$0HT$ mH˄tHH $H=aHE Hu(ft$@`D$0(E fD$ LL$@LD$0HT$ 4mH˄tHH¸ lHaHELuft$@D$0(EfD$ LL$@LD$0HT$ lH˄tHHyRHaHD$PHt$Xft$@D$0(D$PfD$ LL$@LD$0HT$ ~lt HH;*HHHMPH3L$I[0Is8A(sA({IA^_]E3MuA@DHH;u H H;BtHH;uHH;Bu IA MA@A@SH0HIIكd$@LL$@Hd$ HDuHdD~ 3 L$@3Ht H0[HUVWATAUAVAWHH@HEHXLHE3L9a0LeLeLePHLMP3AHDH]PH]LeXE3HUXH ŒHDeHuXHuHE3AT$HH@(gQHEt$EAT$HH@(C@HEAT$HH@($4HHHH@ -LeHO0Hw0Ht HH@HtHHH@ШLII;GtIGDe@MIHU@H\E@ Mu!tHHHU@H@0{,uHO0HE3HHXDePHHHUPH@89EPE@tuHO0HHEuMwM+7E@SH_IK46LcHIH+H;sH2/v1HCH+H;v HH蜩H+L3I J&HCHWALIrHIEMuIH$H@A_A^A]A\_^]DHH !DHH DHʈH DHH DHH DHH DHH DHH DH$Ht DHHa HHXHpWH `IHL@HHDL$0LHH+FDHt$@H\$8H _@SH0HD$ Hكd$@HHT$@H@0|$@tHT$@H tH0[HHXHpWH `IHL@HHkDL$0LHH|(FDHt$@H\$8H _DD$HT$HL$SVWHHD$HHHHHL$PH$`LH$`HL$PO؅yH$`HL$P H$`RLO(LGHW8GD$8Ht$0HHD$(HGHD$ H$@H$H$һH$H$`vHL$Pg $HĀ_^[HHHWATAUAVAWHHD$PHXHpIELHAuH2H5VHt$@HHL$`LE3Ht fD9+AuEH$pEtPH\$@LH$pHL$`؅yH$pHL$`H$pHt$@LO(LGHW8GD$8Ht$0HHD$(HGHD$ H$H$H$AA;tPMLD$@H$HL$`؅y)H$H$pHL$`]Ht$@HH$EHDH$H$)H$pHL$`|$L$I[8Is@IA_A^A]A\_HD@HPHHWH`HD$HHX HHHHL$PqLK(LCHS8CD$8H|$0HHD$(HCHD$ H$vLH$HL$P`؅yH$EHL$P7HܻH$H$HL$Pv$H$H`_HUVWATAUAVAWHhHHEHXHD3H3HELMELHHEgHEL}oLewH}3I $HuHHvHHOflEHHM蔛HHvHHGHMHELEHUHN(ZkHXHF(H;tGHHvHHGC EHMHEHUHM"xMHS0HHHMZ'HHMeHMG MHUHHE@fHEHH Hx8vHH H@0HMHEHEHD$ LMLHUHN(H]Ht'HK@ HK HphHLd$8L|$0Hd$(HEHD$ LMEHHAƇHMH30H$HİA_A^A]A\_^]̃A H\$WH Hكyu*Ht%HHHIH DWHH\$0H _@SH HIIHd$0ELD$0HDuHDȅ~ ȁ3HD$03HtHH [HVWAVH HǀXHXHD0H3H$HHL$PHT$`E3Dt$0IIfF94BuWD$pL$L$HL$pp5HT$pH$JWD$8H^@H+^8HHHH$"AH$;s@DHF8J$+KDT HV8E3JH$UD$8CRIM$+D$HTH7kL%H>P@uLA>H%PHUgtvHCHD$ HD$((t$ HT$ Ht(D$ fD$@ MfuLL$@LEHUHNtLIH诓HOuHHMH3($HA^_^[]HHPUVWATAUAVAWHl$HPHEHX)p)xHHE3Dl$ VHWLhAMHHfD(@ Lh0HH8fDh @@LhPHHXfDh@Dh`LhhLhpLhxLLLLfDHE}D|$ EELl$(HdHUHuD$`HL$`j<tH<#t<&u\HT$PHvHBHT$@HuD$`HT$`H0HHT$0HuHH H! HeiHL9huL>>HMHeHCHD$pHD$xH5C(|$pHUH_r(uft$0D$@f|$PLL$0LD$@HT$PHcLH˄t=H7HUhIHVpH;VxtHL(H HFp LHNh)LHMHpBHEHEft$PD$@(EfD$0LL$PLD$@HT$0KH˄tKH7HT$pHVpH;VxtHL(H HFp LHNhKHL$p!H5AHuHEft$PxD$@(EfD$0LL$PLD$@HT$0LK>MtLIxvMWH)LDHH¸AD|$ HuHEHUH Hb]HUHsH}uBHML;L+Af;u%HHuHU HEsHH HuLLLt$(AD|$ HHHEHE IN HUN H8HEHE IHU+ Hw@HD$`HD$hft$PD$@(D$`fD$0LL$PLD$@HT$0HIt4Eu/HUHWHH@HU HL9hPt@`AH(MDHH H7HH=HK Hg=HHhHQH;QtLHHA LHHHhHQH;QtLl$(L2HA LD$(HHQHL$(FHL$PI[@A(sA({IA_A^A]A\_^]HWHH@HXHpHH`HT$@HnH :HD$0HD$8(D$@fD$P 1L$`(D$0fD$pLL$PLD$`HT$pHHtZH$H}HSH;StHH H HC LHIH$HtHH/HG6L$I[IsI_@SVATAUAVHHD$xH H3H$EHT$PLHL$`HT$pDD$HW$H$HDŽ$Ƅ$Hd$@Hd$0d$(HD$@HD$ E33ҹHDtuH$H$H+H;w?HH$H$H$HG$HDHT$@HW3)Ht$ LL$@HH$s H6DH\$@Ht!HDL3HHDLt$`HD$pHD$PDd$HH$H$HG$L$Mtg3AH$H5gHLgƄHI;uIEHH;HBHH;tHuH+ H5bgHHL;s SH$H$HG$H$H$H$HG$L$MtP3AH$H fƄHH;uJ+HH;st|HH;rHIL;HCH$H$HG$L+MEH3UL$IjIiMu"HL$PHL$ EA?ӋH+닉\$ DEH$H$ HH$ H(LH LAxdHtE@``AxgtE@`J̹?HXHD$ HHL$(vEHHйHĉHHPL@LH H8DLH33*DD$LL$ H8LL$XHWHHD$0HXHpAڋMHH\\$ DDHT$8HL$`HFHL$`DD$SHHD$0AL$HL$8譯IHL$8#$d$ E3DHT$8HL$`WHHL$`\LISMCMK HHICLDICbH\$WHHH3HD$pHƂHBYHT$ H8jH|$( HL$ uRL 2A L+HAf;u5HIuHT$@HgjHT$0HD$0u^H|$( uVL~1 L+Af;u=HHuHT$PHjLD$0HHT$`D$0躍H蛅&HL$pH3H$HĀ_HUAVAWHhHHEHXHpHx)pILHYL=HUHtfH7HEHE(ufuE(EfELMLEHUHg@H˄t ITF%HD7HEHEfu<E(EfELMLEHU@HAXHU'HeL}HE(E'fE M(EfELMLEHUH?t[HUHiHWH;WtHH H HG LH3HuHtHN(8H @HHGHGH9uMǺ;H2@H҃fL$I[ Is(I{0A(sIA_A^]H(LBHI@H=wZHzvH NA)f9?wIIrf9|tf9\tHI;rH(HHйwHйvH\$Ht$WHPIHHEu%fzhBhf+f;HzPu HJ@NHHtADKhHHHSxHD$8AH|$0H:+Hd$(HD$ ƇHtGHd$@HHHvHE3LD$@AQH̹Dtv@IFH+HH;v HIny#H3H+IHLJ#IFE3H3IHL(LHILH HL$ H$ H(HHyHAvH Hu>LHHH+f;u%HIuƇ@L9GL9G8AAH;eHXtOH$HhLGHH\$ LIVHx`u#H]HPHtp@ <wgHtL$LpH@t/HƅMH\$PHl$XHt$`H|$hH0A_A^A\uHDHйZHDHй)HILHIHHLLD$(ADHT$ HIHuIHjHL[DAHT$ HtH;DHй(WHDHйY:HDHй@SH@EILJ Mt IAItEtXHLtEt]HzXt6H HBpHD$8HHH\$0H:"Hd$(E3HD$ GƃH@[HeHй2MHLHй3Mh@SH@z IwEtLHzXt>DJ HBpH HHHD$8AH\$0H!Hd$(HD$ ƃH@[HR L @SH@B E, ILH-HDH=HUHURH|$PHD$X(EfE wL$`(D$PfD$@LMLD$`HT$@HH,H>D$$HT$$HL$(ADt$ E2HNCHUHBTD$@HL$@KI<tX<"t9<(HUHTD$@HT$@HzHD$(H@A[HUHRTHHL$(@HUH7TD$@LD$@HUHexHL$(H H`HM Ho5EuL#>H*,HD$(Hx0uL>H ,HD$(HWpH;WxtHd$(HHGpLD$(HOhADt$ H|$(Ht0HOhyHOHpHO gH_H"H=H3oLIQpI9QhuLǺ;Hf+HHMH3軿H$PHA_A^_^]LL$ WH0HD$ H\$HIALHHDHR33 H\$XD$P|$@Ht;H\$HH0_H\$Ht$WH HA IH+AHHHI;w IH+3HKLH:HKHHKH;KvHKH\$0Ht$8H _HUVWATAUAVAWHhHHEHXLLWEE3LuLuLuAN0>HH@H@f@HEAA+?}wAVI RMepM+ehIAEAIEhHLuIFHEE3LEID8@u)S@HE9P s DEH@ EHHD8@tD8Au A 9C@rE3iHUUUUUUUH9EHEHELE׹0nK@H H`(L0LpLpE3fDpLuEELHUHMHHY(HA;$}wH]HH;]HK(A@EHHt @`AHUIHCD8ptHC H;Xu HH@D8ptHHHD8quHHHD8pttA}`u EVMAPDuEBMAPEAGA++ljE AEIEDdHMHYD8su+LCHUHM+HH0iD8stHM0UH$HĐA_A^A]A\_^]hHUATAUAVAWHH`HEHXHpHx LL3Hu@HuHuDWEN8HH@H@f@HEI]HI;]H{(H9wt-HOH vHOHGHMHEHUHM"0AH9w8Hw(H@vH6E3EA;zf;u*AH FHMA+ЋHEHUHMD ADNj׋FfuAH FHMA+ЋHEHUHM30AHC@8pt!HC H;Xu HH@@8ptHHH@8qHHH@8ptEfE+& I,NAFA+AHIH]HAFA+H;]tmC0C(DHS IgLHIUHC@8ptHC H;Xu HH@@8ptHHH@8quHHH@8pt놨tLHJII]HI;]bH{(GEAfEBH9wtCHOH vHOHGHMHEE@HUHM&MDAHU@IH9w8Hw(H@vH63DRzf;uAAH FHMA+ЋHEE@HUHMMDAHU@ID3ɋ׋FfuAH FHMA+ЋHEE@HUHMoMDAHU@Ih3HC@8pt!HC H;Xu HH@@8ptHHH@8qHHH@8ptEEVTAAFA+A+ĉEIEAE|HMHY@8su+LCHUHM'HH8@8stHM8L\$`I[0Is8I{HIA_A^A]A\]HUATAUAVAWHhHHEHXHpHx HH3HE'HHULHME3E3HELIAI;tWHH(AD8ADDHHD8itHH H;Au HHID8itHHHD8juHH HD8itAt$A+4$u IJAT$A+$AH @HIHHH;;Hs(D8AW3HEEEE@fEtFFEHhHtAhEDqjI8LuLuHPHt@ EHXHt@ fEtFH`Ht@ EHH;xLmLmǹ0贻LHH@H@f@HEHH+xHt5MDHxI<HW HMH8Md$IuLELeII;tQHH(L q LuHHD8itHH H;Au HHID8itHHHD8juHH HD8itIxD8ou+LGHUHM$HH?0)D8otLE0IH}HEAHUIHCD8ht!HC H;Xu HH@D8htHHHD8iHHHD8htEEVTFAD$A+$M+EI$ED|HM'H3JL$I[8Is@I{HIA_A^A]A\]HUVWATAUAVAWHhHHEHXHDH3HEHHULWEDrDuˋY+]ǺGAGA+KvHHIdH>H?E3El$0H;>yHw(WEEE@fEtFFEHHHt@`EMHhHtAhEDqjI8LuAlELuHPHt A EAhE HXHtA fEAxEtFEH`Ht A EAlEHpHt EHH;x-LeLeIXHHH@H@f@HEHH+xHЉUAGA+Et5DHxIHS HMHMd$IuHME3El$0HH;tgHS(L r LuHhAI7HCD8`t"HC H;Xu HH@D8`tHHMHHD8auHHHD8`tHYD8cu)LCHUHM HHI話D8ctHMI藱MHUI4HGD8`t%HG H;xu HH@D8`tHHuHHD8auHHHD8`tEEVNTAGA+M+EۋEˉEDeIEHMH3H$HĐA_A^A]A\_^]HUVWATAUAVAWHH`HEHXLH3HEWE؍H0GHH@H@f@HE؋w+7uP HDG+EXMeM+eIEAHHHAEt#3IEHHS HMHIIuE2HEHDmXH;Hs(F EHF H EHFpHt@`EMG+EAHUHrAAʼnFhHHHCxtHC H;Xu HH@xtHHHyuHHHȀxtAHELEKEYWuPEt G++ƉEeAԋHETG+tHePD+EHUPH$HMHY{u+LCHUHM0HH0خ{tHMغ0ĮH$H`A_A^A]A\_^]HHPUVWATAUAVAWHhHHEHXHH3HEHEEE3LuLuH0HH@H@f@HEߋw+7uwAV HADgD+'LkL++IAH @IH螺EAʼnEEAHHLuIFHEE3LEID8@u)S HE8P s DEH@ EHHD8@tD8Au A 8C rE3iHUUUUUUUH9EHEHELE0 K H H`(L0LpLpE3fDpLuEELHUHM/ HHY(AHD;}H]oHEHH;Hs(F EHFpHt@`EMG+EA HUHqDfhHHHCD8ptHC H;Xu HH@D8ptHHHD8quHHHD8ptA HE^ELEVLuwEt G++ƉEDuAՋHETHMHYD8su+LCHUHMYHH0D8stHMߺ0H$HĐA_A^A]A\_^] HLH UATAUAVAWHH`HEHXHpHxIMHHE33HEWE؍H8HH@H@f@HELkL++IE3IIFH+HHtY3HHCpH+ChHDHK H{8vHK HC0HMHEHUHM聺HAIIFH+HAH;rE3HHFH+HHtY3HHCpH+ChHDHK H{8vHK HC0HMHEHUHMHAHHFH+HAH;rDwD+7 H=DgD+'AHH=W+BABH迶H]HE3H;]tdO+HC0HS0H HHCD8xtHC H;Xu HH@D8xtHHHD8yuHHHD8xtEt.IL}HIHG+HH[HuE3EHEHH;EtaLH0AMHAA HHD8ytHH H;Au HHID8ytHHHD8zuHH HD8ytAEMAPSG+A+ƉEHEAElHMHYD8{u+LCHUHMoHH8軨D8{tHMغ8觨L\$`I[0Is8I{@IA_A^A]A\]HUVWATAUAVAWHHpHEHXLH3}P3HEWE؍O8HH@H@f@HEMuM+uIs+3uXW H;D{D+;D}ELeJH;EteEDIEH<HGpH+GhHDHO H8vHO HG0HMHEHUHMH8HIuDePLeuXD}3CMP ȋS+HEt/K+ IEHIUHHHIu3DHMHH;thLH0AALHAA HH@8ytHH H;Au HHI@8ytHHH@8zuHH H@8ytAHMEQTABC++ƉE̋HEDtHMHY@8{u+LCHUHMHH8c@8{tHMغ8OH$HpA_A^A]A\_^]HHPUVWATAUAVAWHhHHEHXHH3HEHEljEH!EH!EDx0A脫HH@H@f@HEw+7uwAWHS9DwD+7DuLcL+#IAH @IH&3DEDHM<A_ IHt@ HuHFHEHeHHE9X s UH@ EHH8Pt8Qu;Y seHUUUUUUUH9EHEHEHU0蒪X 3HH(H0HpHpfHHMEELHUHMH3Ly(AIE;H]oDuA0HEHH;Hs(C EHFxHt@`EMG+EA HUHDvlHH HC38PtHC H;Xu HH@8PtHHH8QuHHH8PtA HEaEOPCOuwEt G++ƉEUۋHEDdHMHY8Su)LCHUHMHHI荣{tHMI{H$HĐA_A^A]A\_^]HHPUVWATAUAVAWHhHHEHX)pHHE3LuLuLt$ Lt$(E~8A蠨HH@H@f@HD$ w+7uwAVHn6G+EHS HG+EHS@H~HSpH+ShHHUECEHChM,IMhIvIMhIExHMHELt$ I^H]e3EI(u8Cu@fuH]C EHUHMy eH[ EHH{tŀ~u$F EfuHUHMsxE3lH$I$IH9D$(HD$ HEHe8Qp H`0L0LpLpE3fDpLuEELHUHL$ uHLn0AID;eH]ouwA8H\$ HG+H;\$ EHS0HhHG+HS0HHHAHUHHCD8ptHC H;Xu HH@D8ptHHHD8qxHHHD8ptdEQUER+ƉEHEHUTHL$ HYD8su,LCHT$ HL$ HHIWD8stHL$ IDL$I[@A(sIA_A^A]A\_^]RH\$UVWATAUAVAWHH@HHHWfH~LH+uHOfsfH~H+HHHWDfH~H+uHNfsfH~H+DcHɺ HD+#EDxED}3CH+JCHU+AHˉEEE~ IVAHzvHG?H;AtAHpH AEt-CEF+HUHˉEE EHH}t/CHU+AHˉEE QMHHC+UA+ĉEHH$EPRVAEAATH@A_A^A]A\_^]HD@UVWATAUAVAWHhHHEHXHH3DWEH\$ ]H]H]K0衣LHH@H@f@HELHHEL; MeI9\$uI9\$8tEA $A8$@tAD$  A\$ IGHE3HUIHE9X s UH@ EHH8Pt8Qu ;Y r3cHUUUUUUUH9E HEHEHU0賢X 3HX(L8LxLxfXH]EELHUHMHLa(IL;mt L}H_+EHC0D#D+'Dd$(HH+E3AHHH+HsHH+HrH_LIGI+JHBHH+QHBL9EuJD8EtJH_LD8EwtHH+QHBуUHHl/HH+LoHID$ AE+D$$HHD$ I _+] H/DwD+7LL+IL}AHEAHAHHEE3AHMLeHHAD8{qEAE+EChEHHt@`EMAHUHDslHH AHMHHMIuLoDd$(L}]ECHANAE++EHED|IEHGALH_L0IAI;tSD$ AE+D$$AAHHHD$ H LHHYIEHGALgHOLIHMH H+HrDD$ AE+D$$A΋D$(LHHD$ IIH6IEHALLLHH+HD$ AE+D$$ADl$(HIHHD$ H HH+HH]A$+E H,3t\DHELmNjA $+HIHIHIEI$MHuLLgDl$(H]ETTBLGM++EHE\II$ADl$(D$ A+D$$AAHHHD$ H HHMII$AD$ +D$$JHHD$ H HXHII$Aƃd$ +D$$JHHD$ H H(HRII$ADuD$ +D$$JHHD$ H WEA$+E HH+A $+MHHH+@HH]HkHH3f;E3EHEDmH@IC EHHt@`EMChEA+EAHUHDkxHHAIHmuLLgDuDl$(H]3ETASKMftA++EHETII$AD$ +D$$AJHHD$ H HpHII$A3H9Uu IMD$ A+D$$AJHHD$ H HUHII$AIM38UtBD$ +D$$D$(JHHD$ H HUHII$AH_Lo38Uwt=D$ A+D$$D$(JHHD$ H HUHII$A3HH+HBD$ +D$$D$(JHHD$ H EuD+7DuH(LL+IL}AE+AHMAHHH蛡3EE3ELmHM4WfEAF@EAFAEIHt@`EM+EIHt EAHUH3IHPIIuH_LoL}Du3EFLTRA++ED}UAHEHIEEWEVT+M+EH Ht@`EMEEHEHMHY8Su,LCHUHMHH0Ǔ38CtHM0貓H$HA_A^A]A\_^]H\$H|$UHH@3E3ɉEWHHHEHtUfUft ffUfEHHtffE*ft$fEft ffwffUfDMD8t1f+HfEfEfUfDEfDM6E䊃EfEHHt EDMtf@fEfUGHU+AHωEHHH\$PH|$XH@]H\$ UVWATAUAVAWHHPLjpHL+jhWDHDq(D+1IEED}PDuHR%H+HDDe@HU@AD+H΅DD"VK +U@HHEHWh3EEHEHHWhHH[HH+HDIuHGhE3IHHH+HHt13HE3HTHAHH+AHH;rIIuDuHD}PF+H$A+ƉEԋE@EA G`EHUETEMPMDmD}EfLT HPA_A^A]A\_^]H\$Hl$ VWAVH BE3HzHHfDt$@4EvHFD$HtD$HAHT$HDHHtAHT$@HH\$PHl$XH A^_^HUWATAVAWHhHHEHXHp )pHH3HEHHE3HHD$ HD$((t$ HUHX(EfD$  iMft$0LL$ LEHT$0H^WELeHEfDeEEAHhzHUHb!D$0HL$0k<t7<"t/<(uGHUH!D$0HT$0HyGDAHUHx!HHMظH=uL9euLw>HEuLv>H}uL>He(臓HD$ ED$0MMLeHEfDeEHT$0HgLHD$ HMʡHVH;Vt IL2HFLD$ HH\$ HtH蓡(HVHn<HMH3L$I[@IsHA(sIA_A^A\_]H\$Hl$Ht$WH HIH IHHtCHCH.袋.H+HHHkXHrLAH'I+HAHw7I襌HkXHl$8HH;HCHkXHt$@HHCH\$0H _HvDH\$Ht$H|$AVH HIH MHHtGHCHH+HHHHHrLAH'I+HAHw:IH;KH HKHHt$8H H|$@HKH\$0H A^HKuDH\$Ht$H|$AVH HIH MHHtGHCHH+HHH@HHrLAH'I+HAHw@I8H;KvHHHCHvHt$8HHH|$@HCH\$0H A^HtDH\$Hl$Ht$WH HIH IHHt1HVH+HHrLAH'I+HAHw7I蓊H.HHHHH~Hl$8H^H\$0Ht$@H _HsDH\$Hl$Ht$WH HIH IHHtCHCHm۶m۶mH+HHHk8HrLAH'I+HAHw7IHk8Hl$8HH;HCHk8Ht$@HHCH\$0H _HCsDH\$Ht$H|$AVH HIH MHHtGHCHH+HHH@HHrLAH'I+HAHw:I0H;KvH HKHvHt$8H H|$@HKH\$0H A^HrDH\$Ht$WH HLHH;H HHVH+LII+H;w I<I;IB3Ht1HrLAH'I+HAHw=ImHH^H^Hr.HO'H;vUHtHX'HHCHqDHt HHHH;H^H\$0HFHt$8H _NH(H gH(HKHHrHHH'H+HHwHHH(锇H!qDH(HKHHrHHH'H+HHwHHH(DHpDH(HK@HHrHHH'H+HHwHHH(HpDH(HIk8HrHHH'H+HHwHHH(騆H5pDHyH(MA8HIH(@SEHALALtA@McPLHcL#IcJHCHHCDt DLL3I[HHXHhHpHx AVH IY8HMHIHILCdE$fظEADDCtLMHHJH\$0Hl$8Ht$@H|$HH A^ffHL$L\$M3LT$L+MBeL%M;sfAMAM;uL$L\$H%p%Jp%Fp%nff%pffff%rp@UH HHHы(H ]@UHH3Ɂ8]HT$UH HHH ]@UH H} uLMpLE(HUXHMPH ]@UH H} uLMxLEpHUhHM`诊H ]@SUH(HHM@HM0HE0HHM(HE(8csmt E E "赒HM(HHE0HX譒H聒H(][HPpH^HpLH:H(HHH`HH0HT$UH HHU(HsLHȗ33HT$UH HLE`HUh333藑HT$UH HLE`HUhl333mHT$UH HHU0HLH,333-HT$UH HLEXMHUP233HH黕Hh驕@UH HE t e HM(H ]HxjH H(HH Hh@UH HE`te`HH ]@UH HE t e HM`zH ]@UH HE0t e0HMpqH ]H0HbHPHp銊HHHHH0HHFY@UH HH3Ɂ8H ]H0~HHH86H(HxHhHH@HHHhHHHpHxH`p@UH HL BAH评H ]HHpHHHHHT$SUH(HH{[}XH JHDH*E$H|EH(][HT$SUH(HHHH@s&HعLHĬHԍE$HnEH(][HT$UH H赊HH蘍E$HDH ]H<HT$UH HLEpHUx33HT$UH HLEhHUx33ċHT$UH HHUhHM ELExHUp,33荋HT$UH HHHM(LHU0W33PH@H0]SHHՏH`ÏH鱏HSH 鍏HoTHiH@WHEHTHSHhSHXH@HpmWH7H%H+SH鑎H@UH HELteLHVH ]@UH HELteLH&H ]H(H@H@H H0ӍHXHg H靍H@g HMY@UH0HH3Ɂ8H0]HT$UH HHHM H6nH ]H@H)kHp7pH`UH@nHPHT$UH HHUXH^LHU`33诇H(FoH@HTH H>HT$UH HLH33AHT$UH HLH33HT$UH HLHX33HT$UHPHLH33豆HT$UH HHU0HM LHU()33wHT$UH HLEpHUx33MHT$UH HLEpHUxr(33#HT$UH HLEpHUx'33HT$UH HHU0HkLH33蹅HT$UH HLEpHUx33菅HT$UH HLH&33_HT$UH HLEpHUx335HT$UH HHU(HLH&33HT$UH HHU0H/LH&33资HT$UH HHU0HGLHt&33uHT$UH HHU0H_LH4&335HT$UH HHU0H蓪LH%33HT$UH HHU0H質LH%33赃HT$UH HHU0HߪLHt%33uHT$UH HHU0HLH4%335HT$UH HHU0H?LH$33HT$UH HHU(HWLH$33赂HT$UH HHU0HOLHt$33uHT$UH HLHH33EHT$SUWH HHHH{H ;LL;H {HHHE(H33HT$UH HHHH33ǁHT$SUH(HLHHH1HE(H33芁HT$UH HHHH33bHT$UH HLEXMHUPt335HT$UH HLEXMHUP/33HT$UH HLEXMHUPR33ۀHT$UH HLEXMHUP"33讀HT$UH HLEXMHUPH33聀HT$UH HLEXMHUP33THT$UH HLE`HUX-33*HT$UH HLEXHU`!33HT$UH HHUhHM uLExHUpЅ33HT$UH HHU HM(6:LExH~33HT$UH HHUxHM 8:LEhHUp33XH0eH0fH@eH@fHP˃HHH8鵃H@HiHP H@hH@HiH@H hH@rH@HktH@H0UtH@HHrH@H`oHHdHH8鯂H(=kH iHEjHjHpeFHjHiHiHiHiH@yiHHgiHPUiHXCiH`1iH0i@UH HE te HviH ]Hh@UH HE$t e$HMHkhH ]H@g@UH Hꋅ8t8HM ngH ]@UH HE$t e$HMhAgH ]HPheH@6fH0DeH 2eH@ eH FfH|bH0eHH0eHpdHbHaHPKHX:D@UH HE te HYhH ]HfH@nCHT$UH0HHH0]HP;C@UH HE0t e0HM@fH ]HeHf@UH HE0t e0HM@eH ]H(~HT$UH@HHRH@]@UH HEHt eHHMXdBH ]HT$UH HHEhH8M HH ]HT$UH HHrH ]HT$UH HH^H ]H86d@UH HXHM iH ]HT$SUH8HHH]0H8t-DC@HKHyvH DD$ DKHT$SUH8HHEPH]hH8t*DC@HKHyvH DD$ DK@ P@#P@8 @8 @ z@@!@8 @8 @  {@@ @8 @8 @ v@8@@8 @8 @{@ x@0@8 @8 @{@ @h@8 @8 @ x@8 @x@x@ 8 @x@x@8 @ y@0y@8 @Xy@py@8 @y@y@8 @y@y@8 @z@ z@8 @Pz@ pz@8 @>@ z@8 @z@z@8 @ {@8{@8 @v@X{@8 @{@ {@8 @{@ {@8 @ |@ 8|@8 @h|@ |@8 @|@ |@8 @|@}@8 @8}@`}@8 @}@ }@ 8 @}@}@8 @}@~@8 @(~@@~@ 8 @?@X~@8 @~@ ~@8 @~@ ~@ 8 @~@@ 8 @?@ @8 @@@P@ 8 @p@@8 @@ @ 8 @@@8 @@@ 8 @8@H@ 8 @h@x@ 8 @@@ 8 @@Ѐ@ 8 @@@8 @@(@ 8 @@@04@/n@@@@ @`@H@ `@@@@@@ @@8@`@ @@ @ @ X@@ @@@@@x@@؆@@8@`@@@ @ @@@@@ X@x@Q@ p@p@ n@p@p@ p@p@p@q@q@ 0q@@q@ Xq@dq@89@pq@ q@ q@q@Ho@Xo@q@q@q@r@ r@0r@ Hr@ `o@H9@`r@r@r@r@r@r@o@s@ s@(s@8s@Hs@`s@#s@@ Ј@@@ @@P@ p@ @@@X@@ @@8@ P@@@@@ @`@@Ћ@@@@p@@@ @P@@@@0@p@@@@P@@@@0@`@@А@@ (@@X@p@8@ @ @p@@@@0@ H@@HR @@@@]uA@!@@@@G G B G ~G fG JG 2G G G F F F F F F F xF hF VF HF E *E E D D D D D D pD RD 6D "D D C C C C tC fC LC > > > ? ? $? 0? T? r? ? ? ? ? @ @ z> Z> <> > > = = = = = = z= d= (I 2I < = = < A I E E E E E F H 0@0@0@P@P@@P@0@p@0@@@@P@@p@@@@@@@P@p@@@@@@@P@@@@@Z)8 ՛bhoi|gm""#U#_#a#%;>XW0Pp0PpPpP0p! "))*ЍБ@`@ P 9@999:: ;(0.0  0!' W0`й0Pp @` @", MC: Could not convert culture <%ls> to locale. Unknown exceptionMessageIdTypedefSeverityNamesFacilityNamesLanguageNamesMessageIdSeverityFacilitySymbolicNameLanguageOutputBaseMessageIdTypedefMacro.mc.dbg.rc.xsdrtrt,ccs=UTF-16LEunable to open input fileunable to open output file - %lserrorwarning%ls(%u) : %hs : Out of memory reading charsexpected keyword - %lsinvalid number - %lsinvalid character (0x%02x)bad array new lengthstring too longwtwt,ccs=UTF-8wt,ccs=UTF-16LETEMP.BINOut of memory reading messagesmessage "%.*ls" (0x%04x) has no translation for language %ls (0x%04x)1 WEVT_TEMPLATE "%ls%ls" Out of memory writing to output file - %ls.binwbWriting %ls LANGUAGE 0x%x,0x%x 1 11 "%ls_%ls" 1 11 "%ls" [%08lx .. %08lx] - %lu bytes Total of %lu messages, %lu bytes DWORD%ls : error : The symbol or name cannot be empty.The symbol or name "%ls" is invalid.The symbol or name "%ls" has been used more than once.// // Values are 32 bit values laid out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +-+-+-+-+-+---------------------+-------------------------------+ // |S|R|C|N|r| Facility | Code | // +-+-+-+-+-+---------------------+-------------------------------+ // // where // // S - Severity - indicates success/fail // // 0 - Success // 1 - Fail (COERROR) // // R - reserved portion of the facility code, corresponds to NT's // second severity bit. // // C - reserved portion of the facility code, corresponds to NT's // C field. // // N - reserved portion of the facility code. Used to indicate a // mapped NT status value. // // r - reserved portion of the facility code. Reserved for internal // use. Used to indicate HRESULT values that are not status // values, but are instead message ids for display strings. // // Facility - is the facility code // // Code - is the facility's status code // // // Values are 32 bit values laid out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +---+-+-+-----------------------+-------------------------------+ // |Sev|C|R| Facility | Code | // +---+-+-+-----------------------+-------------------------------+ // // where // // Sev - is the severity code // // 00 - Success // 01 - Informational // 10 - Warning // 11 - Error // // C - is the Customer code flag // // R - is a reserved bit // // Facility - is the facility code // // Code - is the facility's status code // // // Define the facility codes // #define %-32ls %ld #define %-32ls 0x%lX // // Define the severity codes // // // This file maps message Id values in to a text string that contains // the symbolic name used for the message Id. Useful for debugging // output. // struct { %ls MessageId; char *SymbolicName; } %lsSymbolicNames[] = {// // MessageId: %ls // MessageId: 0x%08lXL (No symbolic name defined) // // MessageText: // // (%ls) %ls, (char*) "%ls",#define %-32ls %ls(%ldL)#define %-32ls %ls(0x%08lXL)#define %-32ls ((%ls)%ldL)#define %-32ls ((%ls)0x%08lXL)#define %-32ls %ldL#define %-32ls 0x%08lXL %ls%ls(%d) : error : Duplicate message ID - 0x%x (%ls and %ls) Duplicate message ID - 0x%lx// %hs// %lsMC: Unable to open %ls for input MC: Compiling %ls Symbol name must follow %ls=Equal sign must follow %lsIllegal value for %ls=Number must follow %ls=Left parenthesis name must follow %ls=Invalid message file token - '%ls' (%ls) 0xFFFFFFFF, NULL }; Out of memory parsing memory definitions.Invalid message definition - text missing.Number must follow %ls=+Symbol name must follow %ls=+Message Id value (%lx) too largeInvalid message definition token - '%ls'MC: failed to allocate memory. No symbolic name defined for0x%08lXL // %lsLanguageId=MessageId=Unterminated message definitionMessage text too long (> %lu)Message text larger than size specified by -m %luFile name must follow =%lu:Colon must follow =%luEqual sign name must follow %lsValue is too large (> %lx)CodePage %d is invalidUsing CodePage %d for Language %04x CodePage must follow %ls=:Invalid name - %lsMissing name after %ls=map/set too longRedefining value of %lsOut of memory capturing name.Out of memory copying string.rbmc : error : errno %u trying to open file <%ls>. mc : error : More than one message file was specified. Only one message file can be compiled per invocation of mc. \Microsoft (R) Message Compiler Version %u.%u.%04u Copyright (c) Microsoft Corporation. All rights reserved. Usage: MC [-?aAbcdnouUv] [-m ] [-h ] [-e ] [-r ] [-x ] [-w ] [-W ] [-z ] [-cp ] [-km | -um | -generateProjections | -cs ] [-mof] [-p ] [-P ] [] [...] -? - Displays this message. -a - Indicates that the input .mc file is CP_ACP (default). Ignored if the .mc file has a UTF-8 or UTF-16LE BOM. -A - DEPRECATED. Encode .BIN messages using CP_ACP (ANSI). -b - .BIN filename should have .mc filename included for uniqueness. -c - Sets the Customer bit in all of the message IDs. -d - FACILITY and SEVERITY values should be printed as decimal in header file (default is hexadecimal). -e - The extension for the C include file (1-3 chars). -h - The path for the C include file. Default is: ".\" -m - Warn if any message exceeds characters. -n - NUL-terminate all message table strings. -o - Generate OLE2 header file (use HRESULT definition instead of status code definition). -r - The directory for the RC include file and the binary message resource files it includes. Default is: ".\" -s - Generate a separate binary resource per provider. Generate summary global resource MCGenResource.BIN. -t - Validate against baseline resource. -u - Indicates that the input .mc file is UTF-16LE. This flag is required when the .mc file is UTF-16LE without a BOM. Ignored if the .mc file has a UTF-8 or UTF-16LE BOM. -U - Encode .BIN messages using UTF-16LE (default). -U8 - Encode .BIN messages using UTF8. Resulting message table is supported on Windows 10 2004 (build 19041) or later. -v - Enables verbose output. -W - The path to a custom winmeta.xml file (rarely needed). -w - The path to a custom eventman.xsd file (rarely needed). -x - The path for the .dbg C include file that maps message IDs to their symbolic names. This option can only be used with a message text file. -z - The base name of the generated files. Default is the base name of the input file. - The name of a manifest file to compile. - The name of a message file to compile (no more than 1). Code Generation Options ----------------------- -cp - Generated text files will use the specified character encoding. Valid encoding names include "ansi" (default), "utf-8", and "utf-16". The UTF encodings will add a byte order mark (BOM). -um - Generate C/C++ logging macros. -km - Generate C/C++ logging macros with activity ID. -generateProjections - Generate logging interfaces projectable to JavaScript. -generateTemplateProjections - Generate logging interfaces projectable to JavaScript that reduce projection cost. -generateTemplateStubs - Override the default template wrapping stubs file from WinRTTemplateProviderStubs.js to .js. -cs - Generate C# (managed) logging class based on the .NET 3.5 Eventing class. -css - Generate static C# (managed) logging class based on the .NET 3.5 Eventing class. -co - Generate EventWrite macros that invoke an MCGEN_CALLOUT macro. Not supported (ignored) for C#. -mof - DEPRECATED. Generate downlevel (XP-compatible) functions and macros for ETW. Generate a MOF file describing the ETW events. The MOF file will be generated in the location specified by the "-h" switch. -p - Defines the macro name prefix applied to each generated logging macro. Default is: "EventWrite" -P - Specifies text at the start of each event symbol name to remove before forming the macro names. -contextSuffix - Defines the macro name suffix applied to each generated FORCONTEXT logging macro. Default is: "ForContext" Warning Suppression ----------------------- -wdEncoding - No warning for unrecognized XML encoding. -wdInsert - No warning for string with unexpected inserts. Notes: - The 'A' and 'mof' switches are deprecated and will be removed in the future. - At most one .mc file can be processed per invocation of mc.exe. - The mofcomp and rc tools do not currently support UTF-8 input. If a UTF-8 encoding is requested, the MOF and RC files will be generated as UTF-16LE. vector too longMSG0000%dMSG00001bad allocationInsertEncodingmc : error : %hs failed 0x%X CoCreate(DOMDocument60)xmlDoc.put_asyncCoCreate(XMLSchemaCache60)xmlDoc.get_parseErrormc : error : file "%ls" not found %ls : error : %ls%ls(%u,%u) : error : %lsbuilt-in.xsdmc : error : Failed to create memory stream mc : error : Failed to load "%ls" http://schemas.microsoft.com/win/2004/08/eventsmc : error : Failed to add "%ls" to the schema cache (expecting a schema for namespace "%ls") xmlDoc.putref_schemashttp://www.w3.org/2001/XMLSchemahttp://manifests.microsoft.com/win/2004/08/windows/eventshttp://schemas.microsoft.com/win/2004/08/events/tracexmlNode.get_textxmlns:evt='http://schemas.microsoft.com/win/2004/08/events' xmlns:asm='urn:schemas-microsoft-com:asm.v3'/evt:instrumentationManifest/evt:instrumentation/evt:events/evt:provider/asm:assembly/asm:instrumentation/evt:events/evt:providerevt:templates/evt:template//evt:dataSelectionNamespacesxmlDoc.setSelectionNamespacesxmlDoc.selectNodesnodeList.get_lengthinTypeoutTypeproviderList->nextNodeproviderNode.selectNodestypeList.nextNodedataNode.AsElementdataNode.GetInTypedataNode.GetOutTypenamespace::providerNode.selectSingleNodedataElement.selectSingleNode%ls : error : Invalid namespace prefix for type '%ls'. Prefix must resolve to one of the following namespaces: '%ls', '%ls', '%ls'. INCLUDEmc%ls : warning : %hs (-wd%ls) %ls : warning : %hs %ls : error : %hs %ls(%u,%u) : error : %hs $(mc.__mcId__Manifest File Name: %ls. Schema File Name: %ls. Winmeta File Name: %ls. MetadataResourceFileName: %lsMC: error : Failed creating provider resources for manifest %ls %ls : error : The generated header file for the .mc file and the manifest will not have unique names. r, ccs=UNICODEinstrumentationManParseXml: Failed HR = %d %ls MC: error : Failed creating single provider resources for manifest %ls man*Target dir is %ls No files Found in %ls File %ls Failed to parse manifest : %ls Couldn't find next file, GetLastError() = 0x%08X. Failed to create global resource file mc : error : CoInitialize failed, error = 0x%x .WinRTTemplateProviderStubsApplicationSuccessInformationalWarningErrorEnglish.\hcontextSuffixcsscsmc : error : Missing name space argument for -cs or -css switch. mc : error : Missing argument for -%ls switch. cocpmc : error : Invalid encoding argument for -cp "%ls". mc : error : Invalid argument for -e switch. mc : error : Missing argument for -%c switch. generateTemplateProjectionsgenerateTemplateStubsmc : error : generateTemplateStubs argument too large mc : error : Missing argument for -generateTemplateStubs switch. generateProjectionsmc : error : Invalid switch: %c. kmmofmc : error : Invalid argument (%ls) for -%c switch. NoVersionmc : error : Prefix too large, max size allowed 16 chars mc : error : Invalid baseline path name %ls mc : error : Missing Baseline argument for -%c switch. umu8mc : error : Invalid switch: -%ls. mc : error : Choose -um, -km or -cs option mc : error : -km is not allowed with -um, -winrt or -cs option mc : error : choose either -generateProjections or -cs option, not both mc : error : choose either -um or -cs option, not both mc : error : Both ANSI and Unicode input were specified. mc : error : Both ANSI and Unicode output were specified. mc : error : Both UTF8 and Unicode output were specified. mc : error : Both ANSI and UTF8 output were specified. mc : error : -u switch was specified but .mc file "%ls" has no BOM and does not appear to be UTF-16. mc : error : -u switch was not specified but .mc file "%ls" has no BOM and appears to be UTF-16. mc : error : -x switch cannot be used without a legacy .mc file! mc : error : ErrorCode=0x%x mc : error : ErrorCode=%u mc : error : %hs mc : error : Internal error invalid string_view positionjو_@2Qjو_@2Qansiutf8utf-8utf16utf16leutf-16utf-16leucs2ucs2leucs-2ucs-2le3)6{O>`Ȅ97EDEjޕ3)6{O>` Root element of an instrumentation manifest. Not a valid root element for an instrumentation manifest. Used when storing instrumentation data within other XML documents. An instrumentation manifest may contain MESSAGETABLE strings, ETW providers, and/or a Windows Performance Counter V2 provider. Manifests containing MESSAGETABLE strings can be compiled with mc.exe. Manifests containing ETW providers can be compiled with mc.exe, installed or uninstalled with wevtutil.exe, and used with TDH APIs or ETW tools to decode ETL traces. Manifests containing a Performance Counter V2 provider can be compiled with ctrpp.exe, installed using lodctr.exe, and uninstalled using unlodctr.exe. Note that instrumentation manifests must be uninstalled before they can be reinstalled. May contain MESSAGETABLE strings, ETW providers, and/or a Windows Performance Counter V2 provider. The events element is used for MESSAGETABLE strings and ETW providers. The counters element (defined in the counterman.xsd schema) is used for a Windows Performance Counter V2 provider. Contains MESSAGETABLE strings and ETW providers. Defines an ETW provider. A provider is a unit of organization for ETW event definitions. At runtime, the provider GUID is used when opening the ETW handle. When collecting a trace, the provider's control GUID is used to enable or disable the collection of the provider's events. Within the trace data, the provider GUID identifies the provider as the source of the event. When the trace data is processed, the provider GUID is used to match an event to the manifest that contains the event definitions needed to decode it. A manifest-based ETW provider has a decode GUID (used to locate the manifest) and a control GUID (used to enable the provider or filter events). Normally, the same GUID (the provider guid) is used for both decode and control. If distinct values are needed for the decode and control GUIDs, set the "guid" attribute to the decode GUID and set the "controlGuid" attribute to the control GUID. Note that to avoid provider name conflicts, if the controlGuid attribute is used, the provider name must end with the decode guid, e.g. guid="{54bab802-bb0b-4b4a-9ce9-7360a0120b3e}" name="MyProvider.54bab802bb0b4b4a9ce97360a0120b3e" controlGuid="{74d557d9-4a8e-4a3f-9a32-3f1a0eab71ba}" If a provider uses distinct decode and control GUIDs, the resulting traces may not decode properly when decoded on Windows versions prior to Windows 10 Fall Creators Update (2017). Note that distinct decode and control GUIDs are typically used to support tool-generated manifests and are generally unnecessary for hand-maintained manifests. Name of the executable file into which the provider's non-localized template resource is linked, usually the same as the provider's binary. Since the full install path of the provider binary is usually determined at install time, the value of this attribute is usually overridden by using wevtutil.exe's /rf:FullResourceFilePath parameter. Name of the executable file into which the provider's localizable message resource is linked, usually the same as the provider's binary. Since the full install path of the provider binary is usually determined at install time, the value of this attribute is usually overridden by using wevtutil.exe's /mf:FullMessageFilePath parameter. Deprecated. Use channels to describe the destinations for your events. Each channel you define here will show up in the Windows Event Viewer. Declares a channel that is used by events in this manifest but is not owned by this manifest. This may be used to reference well-known channels from winmeta.xml or to reference channels owned by other components that this manifest will depend upon. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a channel that is used by events in this manifest and is owned by this manifest. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Default publishing session/security if not specified explicitly by the channel access attribute. Channel logging config Channel publishing config Amount of memory allocated for the session buffers (KB) Number of etl files to create across enablement Minimum number of session buffers Maximum number of session buffers Buffer flush interval (sec) Clock resolution Defines custom levels for use by this provider. Levels are used to filter events. Note that winmeta.xml provides predefined levels win:LogAlways, win:Critical, win:Error, win:Warning, win:Informational, win:Verbose. Custom levels must use values 16-255. Defines a custom level for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines custom tasks for use by this provider. A task is a localizable string label that can be applied to an event. Note that winmeta.xml provides predefined task win:None. Custom tasks must use values 1-65535. Defines a custom task for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines custom opcodes for use by this provider. An opcode is a semantic category for certain special types of event. For example, the Start opcode is used on events that trace the beginning of an activity, and the Stop opcode is used on events that trace the end. Note that winmeta.xml provides predefined opcodes win:Info, win:Start, win:Stop, win:DC_Start, win:DC_Stop, win:Extension, win:Reply, win:Resume, win:Suspend, win:Send, win:Receive. Custom opcodes must use values 10-239. Defines a custom opcode for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines custom keywords for use by this provider. A keyword is a bit (flag) that specifies a category that an event may belong to. Keywords are used to filter events. Note that winmeta.xml provides several predefined keywords. These keywords should only be used for their described purpose. The reserved keywords should not be used directly (mc.exe adds the reserved keywords to events as appropriate based on the event's channel). Custom keywords must use the low 48 bits of the keyword mask. Defines a custom keyword for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Each keyword must have a unique name, which is used to reference the keyword from the events section of the manifest. Mask is a 64-bit value in which only one bit is set. Mask value cannot be zero. The high 16 bits of the mask are reserved for definition by winmeta.xml. Defines custom enumerated types (maps) for use by this provider. Defines an enumeration value for use in this value map. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a flag value for use in this bit map. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a value for use in this pattern map. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Use templates to describe the payload logged by an event. Many events can share a template. Tags is a 28-bit user-defined metadata value applied to each event that uses this template. The event producer and consumer coordinate to define the semantics of the tags value. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the TRACE_EVENT_INFO Tags field. Defines the name and type of an event property (field). Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Tags is a 28-bit user-defined metadata value applied to this property. The event producer and consumer coordinate to define the semantics of the tags value. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the EVENT_PROPERTY_INFO Tags field. Defines the properties (fields) of an event structure. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Tags is a 28-bit user-defined metadata value applied to this property. The event producer and consumer coordinate to define the semantics of the tags value. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the EVENT_PROPERTY_INFO Tags field. Represents binary data in classic eventlog API Defines the events logged by this provider. Defines the event's value (ID), name, level, keywords, fields, etc. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Also referred to as the Event-Id. A manifest-based ETW event is uniquely identified by the {Provider-Guid,Event-Id,Event-Version} tuple. Non-localized event name. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the TRACE_EVENT_INFO EventNameOffset field. Non-localized event attributes. This should be a semicolon-delimited list of name=value attributes associated with the event. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the TRACE_EVENT_INFO EventAttributesOffset field. Defined attributes include: FILE=Filename of source code associated with event; LINE=Line number of source code associated with event; FUNC=Function name associated with event; MJ=Major component associated with event (component name); MN=Minor component associated with event (subcomponent name). Values containing semicolons or double-quotes should be quoted using double-quotes; double-quotes within the value should be doubled. Example: attributes='FILE=source.cpp;LINE=123;MJ="Value; ""Quoted"""' Note that most of these attributes are intended for use with tool-generated manifests and may not be appropriate for use with hand-maintained manifests. For example, the FILE ane LINE attributes are not generally appropriate for use in a hand-maintained manifest, since a single event might be emitted from multiple source code locations and the source code locations will change over time. The FILE and LINE attributes are intended for use in cases where the manifest is regenerated (with a new GUID) by a code generation tool each time the source code changes. Reference to the name of a predefined level (from winmeta.xml) or the name of a custom level (defined in the <levels> section). If not specified, the event's level will default to "LogAlways". Event level is a primary filtering attribute. All events should be assigned a meaningful level (win:Critical, win:Error, win:Warning, win:Informational, or win:Verbose) to support effective filtering during event collection. Reference to the name of a custom level defined in the <keywords> section. If not specified, the event will have no keywords set and will bypass most keyword-based event filtering. Event keyword is a primary filtering attribute. All events should be assigned at least one meaningful keyword to support effective filtering during event collection. Increment the version of an event if its template is modified. Use this to indicate that this event has been removed and will not be logged by this version of the provider. The description of the event should be retained in this manifest so that if an etl file collected from an older version of the provider on a different machine is brought to this machine, it can be correctly decoded on this machine. Use this to indicate that the template associated with this event contains valid WinRT types i.e. the event payload fields can come from arguments of projected WinRT methods. This attribute will be used if generating code for WinRT projection APIs. Defines a set of custom filters for use in this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a custom filter for use in this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Specifies values for this provider's provider traits. The provider traits consist of a small binary blob that is registered with the ETW runtime via EventSetInformation and included with each call to EventWrite. The traits blob contains information about a provider's name, decode GUID, and group GUID. When provider traits are needed (i.e. when the provider has different values for its control GUID and its decode GUID or when the traits element is present), the MC tool's -um or -km codegen will generate a provider traits blob, will generate code to automatically register the blob as part of EventRegister, and will include the blob in each call to EventWrite. Optional. Default is false. If true, the provider's name will be included in the provider traits. If false, the provider's name will be left blank to reduce the size of the trace file. Including the provider name makes it possible to filter an event by provider name. Optional. Specifies that this provider is a member of the specified provider group. By default, the provider is not a member of any provider group. Decimal or hexadecimal message ID. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. Deprecated. Specifies an alias for this string table entry. Contains one or more resource tables, each of which contains resources for a single locale. This attribute is not used. Contains resources for a single locale. Specify the locale of the resources using a Windows locale name, e.g. "en-US". Locale name syntax is documented in MSDN topics such as "locale names" and "LocaleNameToLCID". Localized values of strings referenced in MESSAGETABLE strings and ETW providers. Defines the localized value of a string referenced by an event or a message table in this manifest. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. The stringTableId of the string reference in the ETW provider or the MESSAGETABLE string. For example, if a string is referenced as "$(string.MyString1)" then the id would be "MyString1". The localized string. Not used by Windows or mc.exe. This attribute can be used to describe the usage of the string to aid in tracking and localization. Used only by the Microsoft-provided WinMeta.xml file. WinMeta.xml uses this element to document ETW facilities that are built into the Windows operating system or are commonly used by ETW decoding tools. This includes the definitions of the property types supported by TDH APIs as well as Microsoft-defined constants for well-known event levels, opcodes, and channels. Declares an outType supported by Windows. An outType is a sub-type that extends the inType with additional semantics and presentation details for a property of an ETW event. For example, a property could have inType "AnsiString" (indicating nul-terminated CHAR8 string) and outType "Utf8" (indicating UTF-8 character encoding). Declares an inType supported by Windows. An inType is the type of a property of an ETW event. Every ETW event property declares an inType. The inType fully defines the mechanism for determining the size of a property and also gives a general idea of how the property's value should be interpreted. For example, an inType "Int16" indicates the size is 2 and the property should be interpreted as a signed 16-bit integer. Each inType has a set of outTypes that are supported for use with it. The outType adds semantics or presentation details to the inType. For example, the inType "UInt16" can be used with outType "Port" to indicate that an event property is a big-endian 16-bit Internet protocol port number. Each inType specifies one outType as "default", indicating the behavior that should be used when an ETW property uses the inType but does not specify an outType. Declares that Windows supports the use of the specified outType with this inType. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Deprecated. Specifies an alias for this string table entry. A globally unique identifier in Registry format, e.g. {12345678-4321-ABCD-1234-9ABCDEF012345678}. Use GUIDGen.exe or UUIDGen.exe to create a GUID. Symbol is used for code-generation. It should be a valid C Symbol or an empty string. Is used for code-generation on namespaces which should be valid C++ symbols. E.g. Namespace1._Namespace2.Namespace2 1-2 hexadecimal digits with '0x' prefix. 1-4 hexadecimal digits with '0x' prefix. 1-8 hexadecimal digits with '0x' prefix. 1-16 hexadecimal digits with '0x' prefix. 8-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. 16-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. 32-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. 64-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. For a constant-Length property, specify the value (decimal). For a variable-Length property, specify the name of the property that will have the length of this property. Length is required for "Binary" properties. It indicates the size (in bytes) of the property value. Length is optional for "UnicodeString" and "AnsiString" properties. If present, Length indicates the size (in characters) of the property value. If Length is not present, the property is assumed to be nul-terminated. Length is not used for other inTypes. Other inTypes either use a well-known constant size (e.g. Int32 length is 4) or encode the size within the value (e.g. nul-terminated strings end at the first 0 character, and "counted" values start with a 16-bit size). In the case of an array (i.e. when the property has a Count), the same Length value applies to all elements of the array. As a result, it is not generally useful to create an array of variable-Length properties. Note that some decoders only recognize Length properties that immediately precede the corresponding variable-Length property. For constant-Count array, specify the value (decimal). For variable-Count array, specify the name of the property that will have the count of this property. Note that some decoders will treat Count="0" as an error, and some decoders will treat Count="1" as non-array. Note that some decoders only recognize Count properties that immediately precede the corresponding variable-Count property. A reference to a localized string value provided elsewhere. The value of this attribute should be of the form "$(string.stringTableId)", where stringTableId is the "id" attribute of a <string> element defined in the <stringTable> section, or of the form "$(mc.mcSymbolId)", where mcSymbolId is the symbol of a message string defined in an .mc file compiled along with this manifest. A fully-qualified path to a file. Standard Windows environment variables are allowed. Typically, the file is of type .exe, .dll, or .sys. Space-separated list of keywords. To support consistent event filtering, all events should have at least one keyword assigned. F0:s *Dw= F//**********************************************************************` //* This is an include file generated by Message Compiler. *` //* *` //* Copyright (c) Microsoft Corporation. All Rights Reserved. *` //**********************************************************************` #pragma once //***************************************************************************** // // Notes on the ETW event code generated by MC: // // - Structures and arrays of structures are treated as an opaque binary blob. // The caller is responsible for packing the data for the structure into a // single region of memory, with no padding between values. The macro will // have an extra parameter for the length of the blob. // - Arrays of nul-terminated strings must be packed by the caller into a // single binary blob containing the correct number of strings, with a nul // after each string. The size of the blob is specified in characters, and // includes the final nul. // - Arrays of SID are treated as a single binary blob. The caller is // responsible for packing the SID values into a single region of memory with // no padding. // - The length attribute on the data element in the manifest is significant // for values with intype win:UnicodeString, win:AnsiString, or win:Binary. // The length attribute must be specified for win:Binary, and is optional for // win:UnicodeString and win:AnsiString (if no length is given, the strings // are assumed to be nul-terminated). For win:UnicodeString, the length is // measured in characters, not bytes. // - For an array of win:UnicodeString, win:AnsiString, or win:Binary, the // length attribute applies to every value in the array, so every value in // the array must have the same length. The values in the array are provided // to the macro via a single pointer -- the caller is responsible for packing // all of the values into a single region of memory with no padding between // values. // - Values of type win:CountedUnicodeString, win:CountedAnsiString, and // win:CountedBinary can be generated and collected on Vista or later. // However, they may not decode properly without the Windows 10 2018 Fall // Update. // - Arrays of type win:CountedUnicodeString, win:CountedAnsiString, and // win:CountedBinary must be packed by the caller into a single region of // memory. The format for each item is a UINT16 byte-count followed by that // many bytes of data. When providing the array to the generated macro, you // must provide the total size of the packed array data, including the UINT16 // sizes for each item. In the case of win:CountedUnicodeString, the data // size is specified in WCHAR (16-bit) units. In the case of // win:CountedAnsiString and win:CountedBinary, the data size is specified in // bytes. // //***************************************************************************** // // MCGEN_DISABLE_PROVIDER_CODE_GENERATION macro: // Define this macro to have the compiler skip the generated functions in this // header. // #ifndef MCGEN_DISABLE_PROVIDER_CODE_GENERATION #endif // MCGEN_DISABLE_PROVIDER_CODE_GENERATION // // MCGEN_EVENT_ENABLED macro: // Override to control how the EventWrite[EventName] macros determine whether // an event is enabled. The default behavior is for EventWrite[EventName] to // use the EventEnabled[EventName] macros. // #ifndef MCGEN_EVENT_ENABLED #define MCGEN_EVENT_ENABLED(EventName) EventEnabled##EventName() #endif // // MCGEN_EVENT_ENABLED_FORCONTEXT macro: // Override to control how the EventWrite[EventName]_ForContext macros // determine whether an event is enabled. The default behavior is for // EventWrite[EventName]_ForContext to use the // EventEnabled[EventName]_ForContext macros. // #ifndef MCGEN_EVENT_ENABLED_FORCONTEXT #define MCGEN_EVENT_ENABLED_FORCONTEXT(pContext, EventName) EventEnabled##EventName##_ForContext(pContext) #endif #if !defined(MCGEN_TRACE_CONTEXT_DEF) #define MCGEN_TRACE_CONTEXT_DEF // This structure is for use by MC-generated code and should not be used directly. typedef struct _MCGEN_TRACE_CONTEXT { TRACEHANDLE RegistrationHandle; TRACEHANDLE Logger; // Used as pointer to provider traits. ULONGLONG MatchAnyKeyword; ULONGLONG MatchAllKeyword; ULONG Flags; ULONG IsEnabled; UCHAR Level; UCHAR Reserve; USHORT EnableBitsCount; PULONG EnableBitMask; const ULONGLONG* EnableKeyWords; const UCHAR* EnableLevel; } MCGEN_TRACE_CONTEXT, *PMCGEN_TRACE_CONTEXT; #endif // MCGEN_TRACE_CONTEXT_DEF #if !defined(MCGEN_LEVEL_KEYWORD_ENABLED_DEF) #define MCGEN_LEVEL_KEYWORD_ENABLED_DEF // // Determines whether an event with a given Level and Keyword would be // considered as enabled based on the state of the specified context. // Note that you may want to use MCGEN_ENABLE_CHECK instead of calling this // function directly. // FORCEINLINE BOOLEAN McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ) { // // Check if the event Level is lower than the level at which // the channel is enabled. // If the event Level is 0 or the channel is enabled at level 0, // all levels are enabled. // if ((Level <= EnableInfo->Level) || // This also covers the case of Level == 0. (EnableInfo->Level == 0)) { // // Check if Keyword is enabled // if ((Keyword == (ULONGLONG)0) || ((Keyword & EnableInfo->MatchAnyKeyword) && ((Keyword & EnableInfo->MatchAllKeyword) == EnableInfo->MatchAllKeyword))) { return TRUE; } } return FALSE; } #endif // MCGEN_LEVEL_KEYWORD_ENABLED_DEF #if !defined(MCGEN_EVENT_ENABLED_DEF) #define MCGEN_EVENT_ENABLED_DEF // // Determines whether the specified event would be considered as enabled based // on the state of the specified context. Note that you may want to use // MCGEN_ENABLE_CHECK instead of calling this function directly. // FORCEINLINE BOOLEAN McGenEventEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ) { return McGenLevelKeywordEnabled(EnableInfo, EventDescriptor->Level, EventDescriptor->Keyword); } #endif // MCGEN_EVENT_ENABLED_DEF // // MCGEN_USE_KERNEL_MODE_APIS macro: // Controls whether the generated code uses kernel-mode or user-mode APIs. // - Set to 0 to use Windows user-mode APIs such as EventRegister. // - Set to 1 to use Windows kernel-mode APIs such as EtwRegister. // Default is based on whether the _ETW_KM_ macro is defined (i.e. by wdm.h). // Note that the APIs can also be overridden directly, e.g. by setting the // MCGEN_EVENTWRITETRANSFER or MCGEN_EVENTREGISTER macros. // #ifndef MCGEN_USE_KERNEL_MODE_APIS #ifdef _ETW_KM_ #define MCGEN_USE_KERNEL_MODE_APIS 1 #else #define MCGEN_USE_KERNEL_MODE_APIS 0 #endif #endif // MCGEN_USE_KERNEL_MODE_APIS // // MCGEN_HAVE_EVENTSETINFORMATION macro: // Controls how McGenEventSetInformation uses the EventSetInformation API. // - Set to 0 to disable the use of EventSetInformation // (McGenEventSetInformation will always return an error). // - Set to 1 to directly invoke MCGEN_EVENTSETINFORMATION. // - Set to 2 to to locate EventSetInformation at runtime via GetProcAddress // (user-mode) or MmGetSystemRoutineAddress (kernel-mode). // Default is determined as follows: // - If MCGEN_EVENTSETINFORMATION has been customized, set to 1 // (i.e. use MCGEN_EVENTSETINFORMATION). // - Else if the target OS version has EventSetInformation, set to 1 // (i.e. use MCGEN_EVENTSETINFORMATION). // - Else set to 2 (i.e. try to dynamically locate EventSetInformation). // Note that an McGenEventSetInformation function will only be generated if one // or more provider in a manifest has provider traits. // #ifndef MCGEN_HAVE_EVENTSETINFORMATION #ifdef MCGEN_EVENTSETINFORMATION // if MCGEN_EVENTSETINFORMATION has been customized, #define MCGEN_HAVE_EVENTSETINFORMATION 1 // directly invoke MCGEN_EVENTSETINFORMATION(...). #elif MCGEN_USE_KERNEL_MODE_APIS // else if using kernel-mode APIs, #if NTDDI_VERSION >= 0x06040000 // if target OS is Windows 10 or later, #define MCGEN_HAVE_EVENTSETINFORMATION 1 // directly invoke MCGEN_EVENTSETINFORMATION(...). #else // else #define MCGEN_HAVE_EVENTSETINFORMATION 2 // find "EtwSetInformation" via MmGetSystemRoutineAddress. #endif // else (using user-mode APIs) #else // if target OS and SDK is Windows 8 or later, #if WINVER >= 0x0602 && defined(EVENT_FILTER_TYPE_SCHEMATIZED) #define MCGEN_HAVE_EVENTSETINFORMATION 1 // directly invoke MCGEN_EVENTSETINFORMATION(...). #else // else #define MCGEN_HAVE_EVENTSETINFORMATION 2 // find "EventSetInformation" via GetModuleHandleExW/GetProcAddress. #endif #endif #endif // MCGEN_HAVE_EVENTSETINFORMATION // // MCGEN Override Macros // // The following override macros may be defined before including this header // to control the APIs used by this header: // // - MCGEN_EVENTREGISTER // - MCGEN_EVENTUNREGISTER // - MCGEN_EVENTSETINFORMATION // - MCGEN_EVENTWRITETRANSFER // // If the the macro is undefined, the MC implementation will default to the // corresponding ETW APIs. For example, if the MCGEN_EVENTREGISTER macro is // undefined, the EventRegister[MyProviderName] macro will use EventRegister // in user mode and will use EtwRegister in kernel mode. // // To prevent issues from conflicting definitions of these macros, the value // of the override macro will be used as a suffix in certain internal function // names. Because of this, the override macros must follow certain rules: // // - The macro must be defined before any MC-generated header is included and // must not be undefined or redefined after any MC-generated header is // included. Different translation units (i.e. different .c or .cpp files) // may set the macros to different values, but within a translation unit // (within a single .c or .cpp file), the macro must be set once and not // changed. // - The override must be an object-like macro, not a function-like macro // (i.e. the override macro must not have a parameter list). // - The override macro's value must be a simple identifier, i.e. must be // something that starts with a letter or '_' and contains only letters, // numbers, and '_' characters. // - If the override macro's value is the name of a second object-like macro, // the second object-like macro must follow the same rules. (The override // macro's value can also be the name of a function-like macro, in which // case the function-like macro does not need to follow the same rules.) // // For example, the following will cause compile errors: // // #define MCGEN_EVENTWRITETRANSFER MyNamespace::MyClass::MyFunction // Value has non-identifier characters (colon). // #define MCGEN_EVENTWRITETRANSFER GetEventWriteFunctionPointer(7) // Value has non-identifier characters (parentheses). // #define MCGEN_EVENTWRITETRANSFER(h,e,a,r,c,d) EventWrite(h,e,c,d) // Override is defined as a function-like macro. // #define MY_OBJECT_LIKE_MACRO MyNamespace::MyClass::MyEventWriteFunction // #define MCGEN_EVENTWRITETRANSFER MY_OBJECT_LIKE_MACRO // Evaluates to something with non-identifier characters (colon). // // The following would be ok: // // #define MCGEN_EVENTWRITETRANSFER MyEventWriteFunction1 // OK, suffix will be "MyEventWriteFunction1". // #define MY_OBJECT_LIKE_MACRO MyEventWriteFunction2 // #define MCGEN_EVENTWRITETRANSFER MY_OBJECT_LIKE_MACRO // OK, suffix will be "MyEventWriteFunction2". // #define MY_FUNCTION_LIKE_MACRO(h,e,a,r,c,d) MyNamespace::MyClass::MyEventWriteFunction3(h,e,c,d) // #define MCGEN_EVENTWRITETRANSFER MY_FUNCTION_LIKE_MACRO // OK, suffix will be "MY_FUNCTION_LIKE_MACRO". // #ifndef MCGEN_EVENTREGISTER #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTREGISTER EtwRegister #else #define MCGEN_EVENTREGISTER EventRegister #endif #endif // MCGEN_EVENTREGISTER #ifndef MCGEN_EVENTUNREGISTER #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTUNREGISTER EtwUnregister #else #define MCGEN_EVENTUNREGISTER EventUnregister #endif #endif // MCGEN_EVENTUNREGISTER #ifndef MCGEN_EVENTSETINFORMATION #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTSETINFORMATION EtwSetInformation #else #define MCGEN_EVENTSETINFORMATION EventSetInformation #endif #endif // MCGEN_EVENTSETINFORMATION #ifndef MCGEN_EVENTWRITETRANSFER #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTWRITETRANSFER EtwWriteTransfer #else #define MCGEN_EVENTWRITETRANSFER EventWriteTransfer #endif #endif // MCGEN_EVENTWRITETRANSFER #ifndef _mcgen_EVENT_BIT_SET #if defined(_M_IX86) || defined(_M_X64) // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENT_BIT_SET(EnableBits, BitPosition) ((((const unsigned char*)EnableBits)[BitPosition >> 3] & (1u << (BitPosition & 7))) != 0) #else // CPU type // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENT_BIT_SET(EnableBits, BitPosition) ((EnableBits[BitPosition >> 5] & (1u << (BitPosition & 31))) != 0) #endif // CPU type #endif // _mcgen_EVENT_BIT_SET // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline VOID __stdcall McGenControlCallbackV2( _In_ LPCGUID SourceId, _In_ ULONG ControlCode, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext ) /*++ Routine Description: This is the notification callback for Windows Vista and later. Arguments: SourceId - The GUID that identifies the session that enabled the provider. ControlCode - The parameter indicates whether the provider is being enabled or disabled. Level - The level at which the event is enabled. MatchAnyKeyword - The bitmask of keywords that the provider uses to determine the category of events that it writes. MatchAllKeyword - This bitmask additionally restricts the category of events that the provider writes. FilterData - The provider-defined data. CallbackContext - The context of the callback that is defined when the provider called EtwRegister to register itself. Remarks: ETW calls this function to notify provider of enable/disable --*/ { PMCGEN_TRACE_CONTEXT Ctx = (PMCGEN_TRACE_CONTEXT)CallbackContext; ULONG Ix; #ifndef MCGEN_PRIVATE_ENABLE_CALLBACK_V2 UNREFERENCED_PARAMETER(SourceId); UNREFERENCED_PARAMETER(FilterData); #endif if (Ctx == NULL) { return; } switch (ControlCode) { case EVENT_CONTROL_CODE_ENABLE_PROVIDER: Ctx->Level = Level; Ctx->MatchAnyKeyword = MatchAnyKeyword; Ctx->MatchAllKeyword = MatchAllKeyword; Ctx->IsEnabled = EVENT_CONTROL_CODE_ENABLE_PROVIDER; for (Ix = 0; Ix < Ctx->EnableBitsCount; Ix += 1) { if (McGenLevelKeywordEnabled(Ctx, Ctx->EnableLevel[Ix], Ctx->EnableKeyWords[Ix]) != FALSE) { Ctx->EnableBitMask[Ix >> 5] |= (1 << (Ix % 32)); } else { Ctx->EnableBitMask[Ix >> 5] &= ~(1 << (Ix % 32)); } } break; case EVENT_CONTROL_CODE_DISABLE_PROVIDER: Ctx->IsEnabled = EVENT_CONTROL_CODE_DISABLE_PROVIDER; Ctx->Level = 0; Ctx->MatchAnyKeyword = 0; Ctx->MatchAllKeyword = 0; if (Ctx->EnableBitsCount > 0) { #pragma warning(suppress: 26451) // Arithmetic overflow cannot occur, no matter the value of EnableBitCount RtlZeroMemory(Ctx->EnableBitMask, (((Ctx->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } break; default: break; } #ifdef MCGEN_PRIVATE_ENABLE_CALLBACK_V2 // // Call user defined callback // MCGEN_PRIVATE_ENABLE_CALLBACK_V2( SourceId, ControlCode, Level, MatchAnyKeyword, MatchAllKeyword, FilterData, CallbackContext ); #endif // MCGEN_PRIVATE_ENABLE_CALLBACK_V2 return; } #ifndef _mcgen_PENABLECALLBACK #if MCGEN_USE_KERNEL_MODE_APIS #define _mcgen_PENABLECALLBACK PETWENABLECALLBACK #else #define _mcgen_PENABLECALLBACK PENABLECALLBACK #endif #endif // _mcgen_PENABLECALLBACK #if !defined(_mcgen_PASTE2) // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_PASTE2(a, b) _mcgen_PASTE2_imp(a, b) #define _mcgen_PASTE2_imp(a, b) a##b #endif // _mcgen_PASTE2 #if !defined(_mcgen_PASTE3) // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_PASTE3(a, b, c) _mcgen_PASTE3_imp(a, b, c) #define _mcgen_PASTE3_imp(a, b, c) a##b##_##c #endif // _mcgen_PASTE3 // // Macro validation // // Validate MCGEN_EVENTREGISTER: // Trigger an error if MCGEN_EVENTREGISTER is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTREGISTER); // Trigger an error if MCGEN_EVENTREGISTER is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTREGISTER) MCGEN_EVENTREGISTER_must_not_be_redefined_between_headers; // Trigger an error if MCGEN_EVENTREGISTER is defined as a function-like macro: typedef void MCGEN_EVENTREGISTER_must_not_be_a_functionLike_macro_MCGEN_EVENTREGISTER; typedef int _mcgen_PASTE2(MCGEN_EVENTREGISTER_must_not_be_a_functionLike_macro_, MCGEN_EVENTREGISTER); // Validate MCGEN_EVENTUNREGISTER: // Trigger an error if MCGEN_EVENTUNREGISTER is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTUNREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTUNREGISTER); // Trigger an error if MCGEN_EVENTUNREGISTER is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTUNREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTUNREGISTER) MCGEN_EVENTUNREGISTER_must_not_be_redefined_between_headers; // Trigger an error if MCGEN_EVENTUNREGISTER is defined as a function-like macro: typedef void MCGEN_EVENTUNREGISTER_must_not_be_a_functionLike_macro_MCGEN_EVENTUNREGISTER; typedef int _mcgen_PASTE2(MCGEN_EVENTUNREGISTER_must_not_be_a_functionLike_macro_, MCGEN_EVENTUNREGISTER); // Validate MCGEN_EVENTSETINFORMATION: // Trigger an error if MCGEN_EVENTSETINFORMATION is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTSETINFORMATION_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTSETINFORMATION); // Trigger an error if MCGEN_EVENTSETINFORMATION is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTSETINFORMATION_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTSETINFORMATION) MCGEN_EVENTSETINFORMATION_must_not_be_redefined_between_headers; // Trigger an error if MCGEN_EVENTSETINFORMATION is defined as a function-like macro: typedef void MCGEN_EVENTSETINFORMATION_must_not_be_a_functionLike_macro_MCGEN_EVENTSETINFORMATION; typedef int _mcgen_PASTE2(MCGEN_EVENTSETINFORMATION_must_not_be_a_functionLike_macro_, MCGEN_EVENTSETINFORMATION); // Validate MCGEN_EVENTWRITETRANSFER: // Trigger an error if MCGEN_EVENTWRITETRANSFER is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTWRITETRANSFER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTWRITETRANSFER); // Trigger an error if MCGEN_EVENTWRITETRANSFER is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTWRITETRANSFER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTWRITETRANSFER) MCGEN_EVENTWRITETRANSFER_must_not_be_redefined_between_headers;; // Trigger an error if MCGEN_EVENTWRITETRANSFER is defined as a function-like macro: typedef void MCGEN_EVENTWRITETRANSFER_must_not_be_a_functionLike_macro_MCGEN_EVENTWRITETRANSFER; typedef int _mcgen_PASTE2(MCGEN_EVENTWRITETRANSFER_must_not_be_a_functionLike_macro_, MCGEN_EVENTWRITETRANSFER); #ifndef McGenEventWrite_def #define McGenEventWrite_def // This macro is for use by MC-generated code and should not be used directly. #define McGenEventWrite _mcgen_PASTE2(McGenEventWrite_, MCGEN_EVENTWRITETRANSFER) // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventWrite( _In_ PMCGEN_TRACE_CONTEXT Context, _In_ PCEVENT_DESCRIPTOR Descriptor, _In_opt_ LPCGUID ActivityId, _In_range_(1, 128) ULONG EventDataCount, _Pre_cap_(EventDataCount) EVENT_DATA_DESCRIPTOR* EventData ) { const USHORT UNALIGNED* Traits; // Some customized MCGEN_EVENTWRITETRANSFER macros might ignore ActivityId. UNREFERENCED_PARAMETER(ActivityId); Traits = (const USHORT UNALIGNED*)(UINT_PTR)Context->Logger; if (Traits == NULL) { EventData[0].Ptr = 0; EventData[0].Size = 0; EventData[0].Reserved = 0; } else { EventData[0].Ptr = (ULONG_PTR)Traits; EventData[0].Size = *Traits; EventData[0].Reserved = 2; // EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA } return MCGEN_EVENTWRITETRANSFER( Context->RegistrationHandle, Descriptor, ActivityId, NULL, EventDataCount, EventData); } #endif // McGenEventWrite_def #ifndef McGenEventSetInformation_def #define McGenEventSetInformation_def #if MCGEN_HAVE_EVENTSETINFORMATION == 1 // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX MCGEN_EVENTSETINFORMATION #elif MCGEN_HAVE_EVENTSETINFORMATION == 2 #if MCGEN_USE_KERNEL_MODE_APIS // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX 2K #else // MCGEN_USE_KERNEL_MODE_APIS // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX 2U #endif // MCGEN_USE_KERNEL_MODE_APIS #else // MCGEN_HAVE_EVENTSETINFORMATION == 0 // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX 0 #endif // MCGEN_HAVE_EVENTSETINFORMATION // This macro is for use by MC-generated code and should not be used directly. #define McGenEventSetInformation _mcgen_PASTE2(McGenEventSetInformation_, _mcgen_EVENTSETINFORMATION_SUFFIX) // This function is for use by MC-generated code and should not be used directly. _IRQL_requires_max_(PASSIVE_LEVEL) DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventSetInformation( _In_ REGHANDLE RegHandle, _In_ EVENT_INFO_CLASS InformationClass, _In_opt_bytecount_(InformationLength) PVOID EventInformation, _In_ ULONG InformationLength ) /*++ Routine Description: This function invokes EventSetInformation to provide additional information to the ETW runtime. Note that the implementation of this function depends on the values of the MCGEN_HAVE_EVENTSETINFORMATION and MCGEN_EVENTSETINFORMATION macros. Depending on the values of these macros, this function may call EventSetInformation directly, may dynamically-load EventSetInformation via GetProcAddress, or may call a replacement function. Arguments: RegHandle - Registration handle returned by EventRegister. InformationClass - Type of operation to be performed on the registration object. EventInformation - The input buffer. InformationLength - Size of the input buffer. --*/ { ULONG Error; #if MCGEN_HAVE_EVENTSETINFORMATION == 1 #pragma warning(suppress: 6387) // It's ok for EventInformation to be null if InformationLength is 0. Error = MCGEN_EVENTSETINFORMATION( RegHandle, InformationClass, EventInformation, InformationLength); #elif MCGEN_HAVE_EVENTSETINFORMATION == 2 #if MCGEN_USE_KERNEL_MODE_APIS typedef NTSTATUS(NTAPI* PFEtwSetInformation)( _In_ REGHANDLE regHandle, _In_ EVENT_INFO_CLASS informationClass, _In_opt_bytecount_(informationLength) PVOID eventInformation, _In_ ULONG informationLength); static UNICODE_STRING strEtwSetInformation = { sizeof(L"EtwSetInformation") - 2, sizeof(L"EtwSetInformation") - 2, L"EtwSetInformation" }; PFEtwSetInformation pfEtwSetInformation; #pragma warning(push) #pragma warning(disable: 4055) // Allow the cast from a PVOID to a PFN pfEtwSetInformation = (PFEtwSetInformation)MmGetSystemRoutineAddress(&strEtwSetInformation); #pragma warning(pop) if (pfEtwSetInformation) { Error = pfEtwSetInformation( RegHandle, InformationClass, EventInformation, InformationLength); } else { Error = (ULONG)STATUS_NOT_SUPPORTED; } #else // !MCGEN_USE_KERNEL_MODE_APIS HMODULE hEventing; Error = ERROR_NOT_SUPPORTED; if (GetModuleHandleExW(0, L"api-ms-win-eventing-provider-l1-1-0", &hEventing) || GetModuleHandleExW(0, L"advapi32", &hEventing)) { typedef ULONG(WINAPI* PFEventSetInformation)( _In_ REGHANDLE regHandle, _In_ EVENT_INFO_CLASS informationClass, _In_opt_bytecount_(informationLength) PVOID eventInformation, _In_ ULONG informationLength); PFEventSetInformation pfEventSetInformation = (PFEventSetInformation)GetProcAddress(hEventing, "EventSetInformation"); if (pfEventSetInformation) { Error = pfEventSetInformation( RegHandle, InformationClass, EventInformation, InformationLength); } FreeLibrary(hEventing); } #endif // MCGEN_USE_KERNEL_MODE_APIS #else // MCGEN_HAVE_EVENTSETINFORMATION == 0 (void)RegHandle; (void)InformationClass; (void)EventInformation; (void)InformationLength; #if MCGEN_USE_KERNEL_MODE_APIS Error = (ULONG)STATUS_NOT_SUPPORTED; #else // !MCGEN_USE_KERNEL_MODE_APIS Error = ERROR_NOT_SUPPORTED; #endif // MCGEN_USE_KERNEL_MODE_APIS #endif // MCGEN_HAVE_EVENTSETINFORMATION return Error; } #endif // McGenEventSetInformation_def #ifndef McGenEventRegisterContext_def #define McGenEventRegisterContext_def // This macro is for use by MC-generated code and should not be used directly. #define McGenEventRegisterContext _mcgen_PASTE3(McGenEventRegisterContext_, MCGEN_EVENTREGISTER, _mcgen_EVENTSETINFORMATION_SUFFIX) #pragma warning(push) #pragma warning(disable:6103) // This function is for use by MC-generated code and should not be used directly. _IRQL_requires_max_(PASSIVE_LEVEL) DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventRegisterContext( _In_ LPCGUID ProviderId, _In_opt_ _mcgen_PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ MCGEN_TRACE_CONTEXT* Context ) /*++ Routine Description: This function registers the provider with ETW and registers provider traits. The EventRegister[ProviderName] macro will use this function instead of McGenEventRegister if the provider has traits to be registered. Arguments: ProviderId - Provider ID to register with ETW. EnableCallback - Callback to be used. CallbackContext - Context for the callback. Context - Provider context. Remarks: Should not be called if the provider is already registered (i.e. should not be called if Context->RegistrationHandle != 0). Repeatedly registering a provider is a bug and may indicate a race condition. --*/ { ULONG Error; if (Context->RegistrationHandle != 0) { #if MCGEN_USE_KERNEL_MODE_APIS Error = (ULONG)STATUS_INVALID_PARAMETER; #else Error = ERROR_INVALID_PARAMETER; #endif } else { Error = MCGEN_EVENTREGISTER( ProviderId, EnableCallback, CallbackContext, &Context->RegistrationHandle); if (Error == 0 && Context->Logger != 0) { (void)McGenEventSetInformation( Context->RegistrationHandle, (EVENT_INFO_CLASS)2, // EventProviderSetTraits (void*)(UINT_PTR)Context->Logger, *(USHORT const UNALIGNED*)(UINT_PTR)Context->Logger); } } return Error; } #pragma warning(pop) #endif // McGenEventRegisterContext_def // This macro is for use by MC-generated code and should not be used directly. #define McGenEventRegister _mcgen_PASTE2(McGenEventRegister_, MCGEN_EVENTREGISTER) #pragma warning(push) #pragma warning(disable:6103) // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventRegister( _In_ LPCGUID ProviderId, _In_opt_ _mcgen_PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ) /*++ Routine Description: This function registers the provider with ETW. Arguments: ProviderId - Provider ID to register with ETW. EnableCallback - Callback to be used. CallbackContext - Context for the callback. RegHandle - Pointer to registration handle. Remarks: Should not be called if the provider is already registered (i.e. should not be called if *RegHandle != 0). Repeatedly registering a provider is a bug and may indicate a race condition. However, for compatibility with previous behavior, this function will return SUCCESS in this case. --*/ { ULONG Error; if (*RegHandle != 0) { Error = 0; // ERROR_SUCCESS } else { Error = MCGEN_EVENTREGISTER(ProviderId, EnableCallback, CallbackContext, RegHandle); } return Error; } #pragma warning(pop) // This macro is for use by MC-generated code and should not be used directly. #define McGenEventUnregister _mcgen_PASTE2(McGenEventUnregister_, MCGEN_EVENTUNREGISTER) // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventUnregister(_Inout_ PREGHANDLE RegHandle) /*++ Routine Description: Unregister from ETW and set *RegHandle = 0. Arguments: RegHandle - the pointer to the provider registration handle Remarks: If provider has not been registered (i.e. if *RegHandle == 0), return SUCCESS. It is safe to call McGenEventUnregister even if the call to McGenEventRegister returned an error. --*/ { ULONG Error; if(*RegHandle == 0) { Error = 0; // ERROR_SUCCESS } else { Error = MCGEN_EVENTUNREGISTER(*RegHandle); *RegHandle = (REGHANDLE)0; } return Error; } typedef LONG (__stdcall *PFN_WMIENTRY_CALLBACK)( _In_ UCHAR MinorFunction, _In_opt_ PVOID DataPath, _In_ ULONG BufferLength, _Inout_updates_bytes_(BufferLength) PVOID Buffer, _In_ PVOID Context, _Out_ PULONG Size ); // This function is for use by MC-generated code and should not be used directly. NTSTATUS __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PETWENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ); // This function is for use by MC-generated code and should not be used directly. NTSTATUS __stdcall McGenControlCallback( _In_ UCHAR MinorFunction, _In_opt_ PVOID DataPath, _In_ ULONG BufferLength, _Inout_updates_bytes_(BufferLength) PVOID Buffer, _In_ PVOID Context, _Out_ PULONG Size ); // This function is for use by MC-generated code and should not be used directly. VOID __stdcall McGenControlCallbackV2( _In_ LPCGUID SourceId, _In_ ULONG ControlCode, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext ); typedef ULONG (__stdcall *PFN_ETW_WRITE)( _In_ REGHANDLE RegHandle, _In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_opt_ LPCGUID ActivityId, _In_ ULONG UserDataCount, _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData ); typedef NTSTATUS (__stdcall *PFN_ETW_REGISTER)( _In_ LPCGUID ProviderId, _In_opt_ PETWENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Out_ PREGHANDLE RegHandle ); typedef NTSTATUS (__stdcall *PFN_ETW_UNREGISTER)( _In_ REGHANDLE RegHandle ); typedef BOOLEAN NTKERNELAPI (__stdcall FN_PS_GETVERSION)( _Out_opt_ PULONG MajorVersion, _Out_opt_ PULONG MinorVersion, _Out_opt_ PULONG BuildNumber, _Out_opt_ PUNICODE_STRING CSDVersion ); typedef FN_PS_GETVERSION *PFN_PS_GETVERSION; #define WMIREG_FLAG_CALLBACK 0x80000000 // not exposed in DDK #ifndef WMIREG_FLAG_TRACE_PROVIDER #define WMIREG_FLAG_TRACE_PROVIDER 0x00010000 #endif // This structure is for use by MC-generated code and should not be used directly. typedef struct _MCGEN_TRACE_CONTEXT { #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_WMIENTRY_CALLBACK Callback; TRACEHANDLE Logger; TRACEHANDLE RegistrationHandle; ULONGLONG MatchAnyKeyword; ULONGLONG MatchAllKeyword; LPCGUID ControlGuid; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_ETW_WRITE PfnEtwWrite; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_ETW_REGISTER PfnEtwRegister; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_ETW_UNREGISTER PfnEtwUnregister; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_PS_GETVERSION pfnPsGetVersion; ULONG Flags; ULONG IsEnabled; UCHAR Level; BOOLEAN McGenPreVista; BOOLEAN McGenTracingSupportInit; USHORT EnableBitsCount; PULONG EnableBitMask; const ULONGLONG* EnableKeyWords; const UCHAR* EnableLevel; } MCGEN_TRACE_CONTEXT, *PMCGEN_TRACE_CONTEXT; BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ); BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ); // This function is for use by MC-generated code and should not be used directly. NTSTATUS __stdcall McGenEventTracingUnregister(_Inout_ PMCGEN_TRACE_CONTEXT Context); // This function is for use by MC-generated code and should not be used directly. NTSTATUS McGenInitTracingSupport( _In_ PMCGEN_TRACE_CONTEXT Context ); #ifdef ALLOC_PRAGMA #pragma alloc_text( PAGE, McGenEventTracingRegister) #pragma alloc_text( PAGE, McGenEventTracingUnregister) #pragma alloc_text( PAGE, McGenControlCallback) #pragma alloc_text( PAGE, McGenInitTracingSupport) #endif // ALLOC_PRAGMA FORCEINLINE BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ) { return McGenLevelKeywordEnabled(EnableInfo, EventDescriptor->Level, EventDescriptor->Keyword); } FORCEINLINE BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ) { if(!EnableInfo){ return FALSE; } if (EnableInfo->McGenPreVista) { return ( ((Level <= EnableInfo->Level) || (Level == 0)) && (((ULONG)(Keyword & 0xFFFFFFFF) == 0) || ((ULONG)(Keyword & 0xFFFFFFFF) & EnableInfo->Flags))); } // // Check if the event Level is lower than the level at which // the channel is enabled. // If the event Level is 0 or the channel is enabled at level 0, // all levels are enabled. // if ((Level <= EnableInfo->Level) || // This also covers the case of Level == 0. (EnableInfo->Level == 0)) { // // Check if Keyword is enabled // if ((Keyword == (ULONGLONG)0) || ((Keyword & EnableInfo->MatchAnyKeyword) && ((Keyword & EnableInfo->MatchAllKeyword) == EnableInfo->MatchAllKeyword))) { return TRUE; } } return FALSE; } // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline NTSTATUS __stdcall McGenControlCallback( _In_ UCHAR MinorFunction, _In_opt_ PVOID DataPath, _In_ ULONG BufferLength, _Inout_updates_bytes_(BufferLength) PVOID Buffer, _In_ PVOID Context, _Out_ PULONG Size ) /*++ Routine Description: Called by WMI for registration/unregistration or enabled/disabled. Arguments: MinorFunction - specifies the type of callback (register, event enable/disable) DataPath - varies depending on the ActionCode BufferLength - size of the Buffer parameter Buffer - in/out buffer where we read from or write to depending on the type of callback Context - the pointer private struct MCGEN_TRACE_CONTEXT Size - output parameter to receive the amount of data written into Buffer Return Value: NTSTATUS code indicating success/failure Comments: If return value is STATUS_BUFFER_TOO_SMALL and BufferLength >= 4, then first ulong of buffer contains required size. Supports XP and W2K3, no W2K support. --*/ { PMCGEN_TRACE_CONTEXT Ctx; NTSTATUS Status = STATUS_SUCCESS; UNREFERENCED_PARAMETER(DataPath); PAGED_CODE(); McGenDebug(0,("McGenControlCallback 0x%08X %p\n", MinorFunction, Context)); *Size = 0; // // Get the context // Ctx = (PMCGEN_TRACE_CONTEXT)Context; switch (MinorFunction) { case IRP_MN_REGINFO: { PWMIREGINFOW WmiRegInfo; ULONG BufferNeeded; WmiRegInfo = (PWMIREGINFO)Buffer; // // Calculate buffer size need to hold all info. // BufferNeeded = FIELD_OFFSET(WMIREGINFOW, WmiRegGuid) + sizeof(WMIREGGUIDW); // // If the provided buffer is large enough, then fill with info. // if (BufferNeeded <= BufferLength) { RtlZeroMemory(Buffer, BufferLength); // // Fill in the WMIREGINFO // WmiRegInfo->BufferSize = BufferNeeded; WmiRegInfo->RegistryPath = 0; WmiRegInfo->GuidCount = 1; // // Fill in the WMIREGGUID // WmiRegInfo->WmiRegGuid[0].Guid = *Ctx->ControlGuid; WmiRegInfo->WmiRegGuid[0].Flags = WMIREG_FLAG_TRACE_CONTROL_GUID | WMIREG_FLAG_TRACED_GUID; McGenDebug(0,("Control GUID::%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", Ctx->ControlGuid->Data1, Ctx->ControlGuid->Data2, Ctx->ControlGuid->Data3, Ctx->ControlGuid->Data4[0], Ctx->ControlGuid->Data4[1], Ctx->ControlGuid->Data4[2], Ctx->ControlGuid->Data4[3], Ctx->ControlGuid->Data4[4], Ctx->ControlGuid->Data4[5], Ctx->ControlGuid->Data4[6], Ctx->ControlGuid->Data4[7] )); Status = STATUS_SUCCESS; *Size = BufferNeeded; } else { Status = STATUS_BUFFER_TOO_SMALL; if (BufferLength >= sizeof(ULONG)) { *((PULONG)Buffer) = BufferNeeded; *Size = sizeof(ULONG); } } break; } case IRP_MN_ENABLE_EVENTS: case IRP_MN_DISABLE_EVENTS: { PWNODE_HEADER Wnode; ULONG Level; ULONG ReturnLength; ULONG Ix; if (Context == NULL) { Status = STATUS_WMI_GUID_NOT_FOUND; break; } if (BufferLength < sizeof(WNODE_HEADER)) { Status = STATUS_INVALID_PARAMETER; break; } // // Initialize locals // Wnode = (PWNODE_HEADER)Buffer; // // Do the requested event action // if (MinorFunction == IRP_MN_DISABLE_EVENTS) { McGenDebug(0,("McGenControlCallback: DISABLE_EVENTS\n")); Ctx->IsEnabled = 0; Ctx->Level = 0; Ctx->Flags = 0; Ctx->Logger = 0; if (Ctx->EnableBitsCount > 0) { RtlZeroMemory(Ctx->EnableBitMask, (((Ctx->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } } else { Ctx->Logger = (TRACEHANDLE)( Wnode->HistoricalContext); Status = WmiQueryTraceInformation(TraceEnableLevelClass, &Level, sizeof(Level), &ReturnLength, (PVOID) Wnode ); if (Status == STATUS_SUCCESS) { Ctx->Level = (UCHAR)Level; } Status = WmiQueryTraceInformation(TraceEnableFlagsClass, &Ctx->Flags, sizeof(Ctx->Flags), &ReturnLength, (PVOID) Wnode ); Ctx->IsEnabled = 1; for (Ix = 0; Ix < Ctx->EnableBitsCount; Ix += 1) { if (McGenLevelKeywordEnabled(Ctx, Ctx->EnableLevel[Ix], Ctx->EnableKeyWords[Ix]) != FALSE) { Ctx->EnableBitMask[Ix >> 5] |= (1 << (Ix % 32)); } else { Ctx->EnableBitMask[Ix >> 5] &= ~(1 << (Ix % 32)); } } McGenDebug(0,("McGenControlCallback: ENABLE_EVENTS " "LoggerId %d, Flags 0x%08X, Level 0x%02X\n", (USHORT) Ctx->Logger, Ctx->Flags, Ctx->Level)); } #ifdef MCGEN_PRIVATE_ENABLE_CALLBACK // // Notify changes to flags, level for GUID // MCGEN_PRIVATE_ENABLE_CALLBACK(Ctx->ControlGuid, Ctx->Logger, (MinorFunction != IRP_MN_DISABLE_EVENTS) ? TRUE:FALSE, Ctx->Flags, Ctx->Level ); #endif break; } case IRP_MN_ENABLE_COLLECTION: case IRP_MN_DISABLE_COLLECTION: { Status = STATUS_SUCCESS; break; } case IRP_MN_QUERY_ALL_DATA: case IRP_MN_QUERY_SINGLE_INSTANCE: case IRP_MN_CHANGE_SINGLE_INSTANCE: case IRP_MN_CHANGE_SINGLE_ITEM: case IRP_MN_EXECUTE_METHOD: { Status = STATUS_INVALID_DEVICE_REQUEST; break; } default: { Status = STATUS_INVALID_DEVICE_REQUEST; break; } } return(Status); } // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline NTSTATUS __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PETWENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ) /*++ Routine Description: This function registers the provider with ETW KERNEL mode. Arguments: ProviderId - Provider ID to be registered with ETW. EnableCallback - Callback to be used. CallbackContext - Context for this provider. RegHandle - Pointer to registration handle. Remarks: If the handle != NULL will return STATUS_SUCCESS If Windows 2000, provider will not register. --*/ { NTSTATUS Status; PMCGEN_TRACE_CONTEXT Context = (PMCGEN_TRACE_CONTEXT)CallbackContext; PAGED_CODE(); if (!Context) { return STATUS_INVALID_PARAMETER; } if (!RegHandle) { return STATUS_INVALID_PARAMETER; } if (*RegHandle) { // // already registered // return STATUS_SUCCESS; } // // Initialize Tracing funtion pointers according to OS version // Status = McGenInitTracingSupport(Context); if (Status == STATUS_INVALID_PARAMETER) { // // This means that its W2K, we will not register the provider // McGenDebug(0,("Generated code does not support Windows 2000\n")); return STATUS_SUCCESS; } // // Vista // if (!Context->McGenPreVista) { Status = Context->PfnEtwRegister(ProviderId, (EnableCallback == NULL) ? McGenControlCallbackV2 : EnableCallback, CallbackContext, RegHandle); } else { Context->Callback = (EnableCallback == NULL) ? McGenControlCallback : (PFN_WMIENTRY_CALLBACK)EnableCallback; Context->ControlGuid = ProviderId; #pragma prefast(suppress:__WARNING_BANNED_API_ARGUMENT_USAGE, "MC Generated Code Down-Level Support"); Status = IoWMIRegistrationControl((PDEVICE_OBJECT)Context, WMIREG_ACTION_REGISTER | WMIREG_FLAG_CALLBACK | WMIREG_FLAG_TRACE_PROVIDER); McGenDebug(0,("IoWMIRegistrationControl Status = %08X\n", Status)); Context->RegistrationHandle = (REGHANDLE)Context; } return Status; } // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline NTSTATUS __stdcall McGenEventTracingUnregister( _Inout_ PMCGEN_TRACE_CONTEXT Context ) /*++ Routine Description: Unregister from ETW KERNEL mode. N.B. If provider has not registered, RegistrationHandle == NULL, return STATUS_SUCCESS Arguments: Context - Context for this provider Return Value: Status code. --*/ { NTSTATUS Status = STATUS_SUCCESS; PAGED_CODE(); if (!Context) { return STATUS_INVALID_PARAMETER; } if (!Context->McGenTracingSupportInit) { // // EventRegister macro has not been called // return STATUS_SUCCESS; } if (!(Context->RegistrationHandle)) { // // Provider has not been registerd // return STATUS_SUCCESS; } Context->IsEnabled = 0; if (!Context->McGenPreVista) { Status = Context->PfnEtwUnregister(Context->RegistrationHandle); } else { IoWMIRegistrationControl((PDEVICE_OBJECT)Context, WMIREG_ACTION_DEREGISTER | WMIREG_FLAG_CALLBACK ); Context->Flags = 0; Context->Level = 0; Context->Logger = 0; if (Context->EnableBitsCount > 0) { RtlZeroMemory(Context->EnableBitMask, (((Context->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } } Context->RegistrationHandle = (REGHANDLE)0; return Status; } #endif // This function is for use by MC-generated code and should not be used directly. FORCEINLINE NTSTATUS McGenInitTracingSupport( _In_ PMCGEN_TRACE_CONTEXT Context ) /*++ Routine Description: This function assigns at runtime the ETW API set to be use for tracing. Arguments: Context - Provider Context Remarks: At runtime assign the functions pointers for the trace APIs to be use. Vista and later use EtwWrite, EtwRegister, otherwise use IoWMIWriteEvent, IoWMIRegistrationControl --*/ { ULONG MajorVersion = 0; ULONG MinorVersion = 0; UNICODE_STRING Name; PAGED_CODE(); if (Context->McGenTracingSupportInit) { return STATUS_SUCCESS; } RtlInitUnicodeString(&Name, L"PsGetVersion"); Context->pfnPsGetVersion = (PFN_PS_GETVERSION) (INT_PTR) MmGetSystemRoutineAddress(&Name); if (Context->pfnPsGetVersion != NULL) { Context->pfnPsGetVersion(&MajorVersion, &MinorVersion, NULL, NULL); } if (MajorVersion < 6) { // // If it's W2K return // if ((MajorVersion == 5) && (MinorVersion == 0)) { return STATUS_INVALID_PARAMETER; } // // XP or W2K3 // Context->McGenPreVista = TRUE; goto done; } RtlInitUnicodeString(&Name, L"EtwRegister"); Context->PfnEtwRegister = (PFN_ETW_REGISTER) (INT_PTR) MmGetSystemRoutineAddress(&Name); RtlInitUnicodeString(&Name, L"EtwUnregister"); Context->PfnEtwUnregister = (PFN_ETW_UNREGISTER) (INT_PTR) MmGetSystemRoutineAddress(&Name); RtlInitUnicodeString(&Name, L"EtwWrite"); Context->PfnEtwWrite = (PFN_ETW_WRITE) (INT_PTR) MmGetSystemRoutineAddress(&Name); if ((Context->PfnEtwRegister == NULL) || (Context->PfnEtwUnregister == NULL) || (Context->PfnEtwWrite == NULL)) { // // Subsitute with the generated funtions // Context->PfnEtwRegister = McGenEventTracingRegister; Context->PfnEtwUnregister = NULL; Context->McGenPreVista = TRUE; McGenDebug(0,("[McGenInitTracingSupport] : Could not load V2 ETW APIs\n")); } done: McGenDebug(1, ("[McGenInitTracingSupport] Prevista %s \n", McGenPreVista ? "TRUE" : "FALSE" )); Context->McGenTracingSupportInit = TRUE; return STATUS_SUCCESS; } //***************************************************************************** // Notes on the ETW event code generated by MC with the -mof option enabled: // // General: The -mof option is deprecated and will be removed in a future // version of MC.exe. // // Arrays : Only constant size arrays supported. The length must be specified // in the manifest. // // Strings: No support for arrays of strings. // // SID : No support for array of SIDs. The macro will take a pointer to the // SID and use appropriate GetLengthSid function to get the length. //***************************************************************************** //********************************************************************** // // Vista down-level support // //********************************************************************** #define __WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE 28735 typedef ULONG (__stdcall *PFN_EVENT_WRITE)( _In_ REGHANDLE RegHandle, _In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount, _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData ); typedef ULONG (__stdcall *PFN_EVENT_REGISTER)( _In_ LPCGUID ProviderId, _In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Out_ PREGHANDLE RegHandle ); typedef ULONG (__stdcall *PFN_EVENT_UNREGISTER)( _In_ REGHANDLE RegHandle ); // This function is for use by MC-generated code and should not be used directly. ULONG __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ); // This function is for use by MC-generated code and should not be used directly. ULONG __stdcall McGenEventTracingUnregister2( _Inout_ PMCGEN_TRACE_CONTEXT Context ); BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ); BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ); #if !defined(MCGEN_TRACE_GLOBALS_DEF) #define MCGEN_TRACE_GLOBALS_DEF // These variables are for use by MC-generated code and should not be used directly. __declspec(selectany) BOOLEAN McGenTracingSupportInit = FALSE; __declspec(selectany) BOOLEAN McGenPreVista = FALSE; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); __declspec(selectany) PFN_EVENT_WRITE PfnEventWrite = NULL; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); __declspec(selectany) PFN_EVENT_REGISTER PfnEventRegister = McGenEventTracingRegister; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); __declspec(selectany) PFN_EVENT_UNREGISTER PfnEventUnregister = NULL; #endif // MCGEN_TRACE_GLOBALS_DEF #if !defined(McGenEventEnabledCheck) #define McGenEventEnabledCheck FORCEINLINE BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ) { if(!EnableInfo){ return FALSE; } if(McGenPreVista){ return ( ((Level <= EnableInfo->Level) || (EnableInfo->Level == 0)) && (((ULONG)(Keyword & 0xFFFFFFFF) == 0) || ((ULONG)(Keyword & 0xFFFFFFFF) & EnableInfo->Flags))); } // // Check if the event level is lower than the level at which // the channel is enabled. // If the event level is 0 or the channel is enabled at level 0, // all levels are enabled. // if ((Level <= EnableInfo->Level) || // This also covers the case of Level == 0. (EnableInfo->Level == 0)) { // // Check if Keyword is enabled // if ((Keyword == (ULONGLONG)0) || ((Keyword & EnableInfo->MatchAnyKeyword) && ((Keyword & EnableInfo->MatchAllKeyword) == EnableInfo->MatchAllKeyword))) { return TRUE; } } return FALSE; } FORCEINLINE BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ) { return McGenLevelKeywordEnabled(EnableInfo, EventDescriptor->Level, EventDescriptor->Keyword); } #endif // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenControlCallback( _In_ WMIDPREQUESTCODE RequestCode, _In_ PVOID Context, _Inout_ ULONG *InOutBufferSize, _Inout_ PVOID Buffer ) /*++ Routine Description: This is the notification callback for pre-Vista support. Arguments: Remarks: ETW calls this function to notify provider of enable/disable --*/ { PMCGEN_TRACE_CONTEXT Ctx = (PMCGEN_TRACE_CONTEXT)Context; TRACEHANDLE Logger; ULONG Flags; ULONG IsEnabled = 0; UCHAR Level; ULONG Ix; *InOutBufferSize = 0; switch (RequestCode) { case WMI_ENABLE_EVENTS: { Logger = GetTraceLoggerHandle( Buffer ); Level = GetTraceEnableLevel(Logger); Flags = GetTraceEnableFlags(Logger); IsEnabled = 1; McGenDebug(1, ("[Callback] WMI_ENABLE_EVENTS Ctx %p Flags %x" " Lev %d Logger %I64x\n", Ctx, Flags, Level, Logger) ); // // 0 for flags is considered "ALL" // if (Flags == 0) { Flags = 0xFFFFFFFF; } break; } case WMI_DISABLE_EVENTS: { Logger = 0; Flags = 0; Level = 0; if (Ctx->EnableBitsCount > 0) { RtlZeroMemory(Ctx->EnableBitMask, (((Ctx->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } McGenDebug(1, ("[Callback] WMI_DISABLE_EVENTS Ctx 0x%08p\n", Ctx)); break; } default: { return(ERROR_INVALID_PARAMETER); } } Ctx->Logger = Logger; Ctx->Level = Level; Ctx->Flags = Flags; Ctx->IsEnabled = IsEnabled; for (Ix = 0; Ix < Ctx->EnableBitsCount; Ix += 1) { if (McGenLevelKeywordEnabled(Ctx, Ctx->EnableLevel[Ix], Ctx->EnableKeyWords[Ix]) != FALSE) { Ctx->EnableBitMask[Ix >> 5] |= (1 << (Ix % 32)); } else { Ctx->EnableBitMask[Ix >> 5] &= ~(1 << (Ix % 32)); } } #ifdef MCGEN_PRIVATE_ENABLE_CALLBACK // // Call user defined callback down-level // MCGEN_PRIVATE_ENABLE_CALLBACK( RequestCode, Context, InOutBufferSize, Buffer ); #endif return(ERROR_SUCCESS); } // This function is for use by MC-generated code and should not be used directly. FORCEINLINE ULONG __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ) /*++ Routine Description: This function registers the provider with ETW and handles OS version. Arguments: ProviderId - Provider Id to be register with ETW EnableCallback - Callback to be used: Vista : McGenControlCallbackV2 down-level : McGenControlCallback CallbackContext - Context for this provider is PMCGEN_TRACE_CONTEXT RegHandle - down-level is a pointer to PMCGEN_TRACE_CONTEXT Remarks: Register with ETW Vista down-level, and set the RegHandle as a pointer to PMCGEN_TRACE_CONTEXT for this provider. For Vista registers the provider. --*/ { ULONG Error = ERROR_SUCCESS; if(!RegHandle) { return ERROR_INVALID_PARAMETER; } if(*RegHandle) { // // already registered, ignore this one // goto Cleanup; } // // Initialize Tracing funtion pointers according to OS version // McGenInitTracingSupport(); // // Vista // if(!McGenPreVista ){ Error = PfnEventRegister(ProviderId, (EnableCallback == NULL) ? McGenControlCallbackV2 : EnableCallback, CallbackContext, RegHandle); } else { // // down-level : XP/W2K3 // PMCGEN_TRACE_CONTEXT Context = (PMCGEN_TRACE_CONTEXT)CallbackContext; TRACE_GUID_REGISTRATION TraceRegistration; if(CallbackContext == NULL) { Error = ERROR_INVALID_PARAMETER; goto Cleanup; } *RegHandle = (REGHANDLE)CallbackContext; TraceRegistration.Guid = ProviderId; TraceRegistration.RegHandle = 0; #pragma prefast(suppress:__WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE, "Generated Code Down-Level Support"); Error = RegisterTraceGuids((EnableCallback == NULL) ? McGenControlCallback : (WMIDPREQUEST)EnableCallback, CallbackContext, ProviderId, 1, &TraceRegistration, 0, 0, &Context->RegistrationHandle); } Cleanup: return Error; } #if !defined(McGenEventTracingUnregister2_df) #define McGenEventTracingUnregister2_df #pragma warning(push) #pragma warning(disable:4068) // This function is for use by MC-generated code and should not be used directly. __inline ULONG __stdcall McGenEventTracingUnregister2( _Inout_ PMCGEN_TRACE_CONTEXT Context ) /*++ Routine Description: Unregister from ETW. Arguments: Context is the pointer to the provider context. --*/ { ULONG Error; if (Context == NULL) { return ERROR_INVALID_PARAMETER; } if (!McGenTracingSupportInit) { // // EventRegister macro has not been called // return ERROR_SUCCESS; } if (!Context->RegistrationHandle) { // // Provider has not registered // return ERROR_SUCCESS; } // // Vista // if (!McGenPreVista) { Error = PfnEventUnregister(Context->RegistrationHandle); } else { // // down-level : XP/W2K3 // #pragma prefast(suppress:__WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE, "Generated Code Down-Level Support"); Error = UnregisterTraceGuids(Context->RegistrationHandle); Context->Flags = 0; Context->Level = 0; Context->Logger = 0; if (Context->EnableBitsCount > 0) { RtlZeroMemory(Context->EnableBitMask, (((Context->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } } Context->RegistrationHandle = 0; return Error; } #pragma warning(pop) #endif // McGenEventTracingUnregister2_df // This function is for use by MC-generated code and should not be used directly. FORCEINLINE ULONG __stdcall McGenEventTracingUnregister(_In_ PREGHANDLE RegHandle) /*++ Routine Description: Unregister from ETW. Arguments: RegHandle is the pointer to the provider context down-level Remarks: Unregister provider and disables provider context --*/ { ULONG Error = ERROR_SUCCESS; if(!RegHandle) { return ERROR_INVALID_PARAMETER; } if (!McGenTracingSupportInit){ // // EventRegister macro has not been called // return ERROR_SUCCESS; } if(!(*RegHandle)) { // // Provider has not registerd // return ERROR_SUCCESS; } // // Vista // if(!McGenPreVista ){ Error = PfnEventUnregister(*RegHandle); } else { // // down-level : XP/W2K3 // PMCGEN_TRACE_CONTEXT Context = (PMCGEN_TRACE_CONTEXT)(ULONG_PTR)(*RegHandle); #pragma prefast(suppress:__WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE, "Generated Code Down-Level Support"); Error = UnregisterTraceGuids(Context->RegistrationHandle); Context->Flags = 0; Context->Level = 0; Context->Logger = 0; if (Context->EnableBitsCount > 0) { RtlZeroMemory(Context->EnableBitMask, (((Context->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } Context->RegistrationHandle = 0; } *RegHandle = (REGHANDLE)0; return Error; } #if !defined(MCGEN_TRACING_DLL) #define MCGEN_TRACING_DLL L"advapi32.dll" #endif #if !defined(MCGEN_TRACING_DLL_V2) #define MCGEN_TRACING_DLL_V2 L"api-ms-win-eventing-provider-l1-1-0.dll" #endif #if !defined(MCGEN_EVENTWRITE_API) #define MCGEN_EVENTWRITE_API "EventWrite" #endif #if !defined(MCGEN_EVENTREGISTER_API) #define MCGEN_EVENTREGISTER_API "EventRegister" #endif #if !defined(MCGEN_EVENTUNREGISTER_API) #define MCGEN_EVENTUNREGISTER_API "EventUnregister" #endif #if !defined(McGenInitTracingSupportFunc) #define McGenInitTracingSupportFunc // This function is for use by MC-generated code and should not be used directly. FORCEINLINE VOID McGenInitTracingSupport( VOID ) /*++ Routine Description: This function assigns at runtime the ETW API set to be use for tracing. Arguments: Remarks: At runtime assign the function pointers for the trace APIs to be used. Vista and later uses WriteEvent, otherwise use TraceEvent. --*/ { OSVERSIONINFO OSVersion; HINSTANCE TraceApiDll = NULL; BOOL OkVersion; BOOL IsWin8OrLater = FALSE; if (McGenTracingSupportInit){ return; } OSVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); OkVersion = GetVersionEx(&OSVersion); if (OkVersion) { McGenPreVista = (OSVersion.dwMajorVersion < 6); IsWin8OrLater = (OSVersion.dwMajorVersion > 6) || ((OSVersion.dwMajorVersion == 6) && (OSVersion.dwMinorVersion > 1)); if (McGenPreVista) { goto done; } } TraceApiDll = GetModuleHandleW(MCGEN_TRACING_DLL); if ((TraceApiDll == NULL) && (IsWin8OrLater != FALSE)) { TraceApiDll = GetModuleHandleW(MCGEN_TRACING_DLL_V2); } if (TraceApiDll != NULL) { PfnEventWrite = (PFN_EVENT_WRITE)GetProcAddress(TraceApiDll, MCGEN_EVENTWRITE_API); if (NULL == PfnEventWrite) { if (OkVersion) { McGenDebug(1, ("[McGenInitTracing] Failed to load EventWrite, using PreVista ETW \n")); } McGenPreVista = TRUE; goto done; } PfnEventRegister = (PFN_EVENT_REGISTER) GetProcAddress(TraceApiDll, MCGEN_EVENTREGISTER_API); if (NULL == PfnEventRegister) { McGenDebug(1, ("[McGenInitTracing] Failed to load EventRegister, using PreVista ETW \n")); PfnEventRegister = McGenEventTracingRegister; McGenPreVista = TRUE; goto done; } PfnEventUnregister = (PFN_EVENT_UNREGISTER) GetProcAddress(TraceApiDll, MCGEN_EVENTUNREGISTER_API); if (NULL == PfnEventUnregister) { McGenDebug(1, ("[McGenInitTracing] Failed to load EventUnregister, using PreVista ETW \n")); PfnEventRegister = McGenEventTracingRegister; McGenPreVista = TRUE; goto done; } } else { McGenDebug(1, ("[McGenInitTracing] Failed to load %ls, using PreVista ETW \n", MCGEN_TRACING_DLL)); McGenPreVista = TRUE; } done: McGenDebug(1, ("[McGenInitTracing] Prevista %s \n", McGenPreVista ? "TRUE" : "FALSE" )); McGenTracingSupportInit = TRUE; } #endif //--------------------------------------------------------------------- // // // Generated by Message Compiler (mc.exe) // // Copyright (c) Microsoft Corporation. All Rights Reserved. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //--------------------------------------------------------------------- { using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Diagnostics.Eventing; using Microsoft.Win32; using System.Runtime.InteropServices; using System.Security.Principal; using System.Threading; using System.Security; internal class EventProviderVersionTwo : EventProvider { internal EventProviderVersionTwo(Guid id) : base(id) {} [StructLayout(LayoutKind.Explicit, Size = 16)] private struct EventData { [FieldOffset(0)] internal UInt64 DataPointer; [FieldOffset(8)] internal uint Size; [FieldOffset(12)] internal int Reserved; } // // ETW Pre Vista support class // internal class EventProviderVersionOne : IDisposable { EtwNativeMethods.EtwEnableCallback m_etwCallback; // Trace Callback function private ulong m_regHandle; // Trace Registration Handle private byte m_level; // Tracing Level private long m_flags; // Trace Enable Flags private int m_enabled; // Enabled flag from Trace callback private Guid m_providerId; // Control Guid private ulong m_logger; // logger private int m_disposed; // when 1, provider has unregister internal const uint s_eventFlags = 0x00140000; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR // // Mof Structure is the same as EventData // [StructLayout(LayoutKind.Explicit, Size = 16)] private struct EventData { [FieldOffset(0)] internal UInt64 DataPointer; [FieldOffset(8)] internal uint Size; [FieldOffset(12)] internal int Reserved; } internal EventProviderVersionOne(Guid providerId) { m_providerId = providerId; // // Register the ProviderId with ETW // Register(); } // // Registration Vista Down-Level // private unsafe uint Register () { m_etwCallback = new EtwNativeMethods.EtwEnableCallback(EtwEnableCallBack); EtwNativeMethods.TRACE_GUID_REGISTRATION guidReg; // // This dummyGuid is there for ETW backward compatibility issues // Guid dummyGuid = new Guid ("{b4955bf0-3af1-4740-b475-99055d3fe9aa}"); guidReg.Id = (IntPtr)(&dummyGuid); guidReg.RegHandle = IntPtr.Zero; return EtwNativeMethods.RegisterTraceGuids(m_etwCallback, null, ref m_providerId, 1, ref guidReg, null, null, out m_regHandle); } // // called by ETW to enable or disable tracing // internal unsafe uint EtwEnableCallBack (EtwNativeMethods.WMIDPREQUESTCODE requestCode, IntPtr context, uint* bufferSize, byte* byteBuffer) { switch (requestCode) { case EtwNativeMethods.WMIDPREQUESTCODE.WMI_ENABLE_EVENTS: m_logger = EtwNativeMethods.GetTraceLoggerHandle(byteBuffer); m_flags = EtwNativeMethods.GetTraceEnableFlags (m_logger); m_level = EtwNativeMethods.GetTraceEnableLevel (m_logger); m_enabled = 1; break; case EtwNativeMethods.WMIDPREQUESTCODE.WMI_DISABLE_EVENTS: m_enabled = 0; m_logger = 0L; m_level = 0; m_flags = 0; break; default: m_enabled = 0; m_logger = 0L; break; } return 0; } // // implement Dispose Pattern to early deregister from ETW insted of waiting for // the finalizer to call deregistration. // Once the user is done with the provider it needs to call Close() or Dispose() // If neither are called the finalizer will unregister the provider anyway. // public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { // // explicit cleanup is done by calling Dispose with true from // Dispose() or Close(). The disposing arguement is ignored because there // are no unmanaged resources. // The finalizer calls Dispose with false. // // // check if the object has been already been disposed // if (m_disposed == 1) return; if (Interlocked.Exchange(ref m_disposed, 1) != 0) { // somebody is already disposing the provider return; } // // Disables Tracing in the provider, then unregisters // m_enabled = 0; Deregister(); } // // This method deregisters the controlGuid of this class with ETW. // public virtual void Close() { Dispose(); } ~EventProviderVersionOne() { Dispose(false); } // // This method unregisters from ETW. // private unsafe void Deregister() { // // Unregister from ETW using the RegHandle saved from // the register call. // if (m_regHandle != 0) { EtwNativeMethods.UnregisterTraceGuids(m_regHandle); m_regHandle = 0; } } public bool IsEnabled(byte level, uint flags) { // // If not enabled, return false. // if (m_enabled == 0) { return false; } // This also covers the case of Level == 0. if ((level <= m_level) || (m_level == 0)) { // // Check if flags is enabled // if ((flags == 0) || (((flags & m_flags) != 0))) { return true; } } return false; } public bool IsEnabled() { if (m_enabled == 0) { return false; } return true; } internal unsafe bool WriteEvent(ref EventDescriptor eventDescriptor, ref Guid eventGuid, string data) { if (IsEnabled(eventDescriptor.Level, (uint)eventDescriptor.Keywords)) { int eventSize = sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)+ sizeof(EventData); byte* userData = stackalloc byte[eventSize]; EventData* userDataPtr = (EventData*)(userData+ sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)); EtwNativeMethods.EVENT_TRACE_HEADER* header = (EtwNativeMethods.EVENT_TRACE_HEADER*)userData; // // header here // header->Guid = eventGuid; header->Flags = s_eventFlags; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR; header->Version = (short)eventDescriptor.Version; header->Level = eventDescriptor.Level; header->Type = eventDescriptor.Opcode; header->Size = (short)eventSize; // // Event data here userDataPtr->Size = (uint)(data.Length + 1)*sizeof(char); fixed (char* a0 = data) { userDataPtr->DataPointer = (ulong)a0; EtwNativeMethods.TraceEvent(m_logger, userData); } } return true; } [SuppressUnmanagedCodeSecurityAttribute()] internal static class EtwNativeMethods { [StructLayout (LayoutKind.Explicit, Size=48)] internal struct EVENT_TRACE_HEADER { [FieldOffset (0)] internal short Size; [FieldOffset (2)] internal ushort FieldTypeFlags; [FieldOffset (4)] internal byte Type; [FieldOffset (5)] internal byte Level; [FieldOffset (6)] internal short Version; [FieldOffset (8)] internal uint ThreadId; [FieldOffset (12)] internal uint ProcessId; [FieldOffset (16)] internal Int64 TimeStamp; [FieldOffset (24)] internal Guid GuidPtr; [FieldOffset (24)] internal Guid Guid; [FieldOffset (40)] internal uint ClientContext; [FieldOffset (44)] internal uint Flags; } [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)] internal struct TRACE_GUID_REGISTRATION { internal IntPtr Id; internal IntPtr RegHandle; } internal enum WMIDPREQUESTCODE : uint { WMI_ENABLE_EVENTS = 4, WMI_DISABLE_EVENTS = 5 } internal const String ADVAPI32 = "advapi32.dll"; // // Callback WMIDPREQUEST // internal unsafe delegate uint EtwEnableCallback ( WMIDPREQUESTCODE requestCode, IntPtr requestContext, uint* bufferSize, byte* buffer ); // // Registration APIs // [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="RegisterTraceGuidsW", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern unsafe uint RegisterTraceGuids( EtwEnableCallback requestAddress, void* requestContext, ref Guid controlGuid, uint guidCount, ref TRACE_GUID_REGISTRATION traceGuidReg, string mofImagePath, string mofResourceName, out ulong registrationHandle ); [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="UnregisterTraceGuids", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern int UnregisterTraceGuids (ulong registrationHandle); // // Enable // [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="GetTraceLoggerHandle", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern unsafe ulong GetTraceLoggerHandle (byte* Buffer); [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="GetTraceEnableFlags", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern uint GetTraceEnableFlags (ulong TraceHandle); [DllImport(ADVAPI32, ExactSpelling = true, EntryPoint="GetTraceEnableLevel", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern byte GetTraceEnableLevel (ulong TraceHandle); // // Writing (Publishing/Logging) APIs // [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="TraceEvent", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern unsafe uint TraceEvent ( ulong traceHandle, byte* eventTrace ); } (default)EventWriteForContextwin_None!!!NOT SUPPORTED!!!const signed charconst unsigned charconst signed shortconst unsigned shortconst signed intconst unsigned intconst signed __int64const unsigned __int64const floatconst doubleWinRtProvider%ls : error : Failed trying to open a header file ("%ls") for the manifest constants. %ls : error : Failed trying to open MOF file ("%ls"). idl%ls : error : Failed to open ("%ls") for IDL generation hpp%ls : error : Failed to open ("%ls") for WinRT headerfile generation cpp%ls : error : Failed to open ("%ls") for WinRT CPP file generation XMLAppXExtension%ls : error : Failed to open ("%ls") for WinRT AppX Extension XML file generation js%ls : error : Failed to open ("%ls") for WinRT JavaScript stubs file generation #define %-32ls 0x%08lXL$(string. #define MSG_%-32ls 0x%08lXL%ls : error : Failed to Create OutputFile. Return code = %d namespace %ls #include #include #include #ifndef ETW_INLINE #ifdef _ETW_KM_ // In kernel mode, save stack space by never inlining templates. #define ETW_INLINE DECLSPEC_NOINLINE __inline #else // In user mode, save code size by inlining templates as appropriate. #define ETW_INLINE __inline #endif #endif // ETW_INLINE #if defined(__cplusplus) extern "C" { #endif #if !defined(McGenDebug) #define McGenDebug(a,b) ((void)0) #endif // // MCGEN_ENABLE_CHECK macro: // Determines whether the specified event would be considered as enabled // based on the state of the specified context. Slightly faster than calling // McGenEventEnabled directly. // #ifndef MCGEN_ENABLE_CHECK #define MCGEN_ENABLE_CHECK(Context, Descriptor) (Context.IsEnabled && McGenEventEnabled(&Context, &Descriptor)) #endif #if !defined(MCGEN_CONTROL_CALLBACK) #define MCGEN_CONTROL_CALLBACK #endif // MCGEN_CONTROL_CALLBACK #if !defined(McGenEventRegisterUnregister) #define McGenEventRegisterUnregister #endif // McGenEventRegisterUnregister #if !defined(McGenEventRegisterUnregister) #define McGenEventRegisterUnregister #define MANIFEST_MAX_MOF_FIELDS_SUPPORTED 16 VOID McGenInitTracingSupport( VOID ); #if !defined(McGenEventRegisterUnregister) #define McGenEventRegisterUnregister #pragma warning(push) #pragma warning(disable:4068) #pragma warning(pop) #endif // McGenEventRegisterUnregister // // MCGEN_ENABLE_CHECK macro: // Determines whether the specified event would be considered as enabled // based on the state of the specified context. Slighly faster than calling // McGenEventTracingEnabled directly. // #ifndef MCGEN_ENABLE_CHECK #define MCGEN_ENABLE_CHECK(Context, Descriptor) (Context.IsEnabled && McGenEventTracingEnabled(&Context, &Descriptor)) #endif //*** // Warning : Classic Crimson Provider Ignored // Provider : %ls //*** GetManifestData: Failed with Error 0x%x%ls : error : GetManifestData: Failed with Error 0x%x #if defined(__cplusplus) } #endif %ls : error : I/O error %u %ls_EVENT_0x%x_%x_%x_%x_%x_%x_%I64x EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR %ls = {0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%I64x}; #define %ls_value 0x%x%lsEvent%d %ls = new EventDescriptor(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, (long)0x%I64x);0x%08x, 0x%04x, 0x%04x, {0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x%cr%dR%d%c%dr%d%c%d%cR%cr%d%c%cR%d #define %ls%ls%ls(pContext, Activity%ls_Len_, ) \ MCGEN_EVENT_ENABLED(%ls) \ ? MCGEN_EVENT_ENABLED_FORCONTEXT(pContext, %ls) \ ? _mcgen_TEMPLATE_FOR_%ls(&%ls_Context&(pContext)->Context&_mcgen_CheckContextType_%ls(pContext)->Context, Activity, NULL, &%ls%ls, &%lsId, %ls_Len_, %ls) : 0Unknown combination (Level, Keyword) = (%d, 0x%I64x) // // Enablement check macro for event "%ls" // #define EventEnabled%ls() _mcgen_EVENT_BIT_SET(%lsEnableBits, %u) #define EventEnabled%ls_ForContext(pContext) _mcgen_EVENT_BIT_SET(_mcgen_CheckContextType_%ls(pContext)->EnableBits, %u) // // Event write macros for event "%ls" // // MC Note :: Macro for event id = %d // This event contains complex types that require the caller to pack the data. // Refer to the note at the top of this header for additional details. //%ls : error : Event %ls must use a task and define eventGUID %ls : error : Too Many Properties for template : %ls MofCoMcTemplate%ls%ls%lc0%ls : error : MC cound not recognize type for template %ls property = %ls _AssumeEnabled_%ls_%lsAssumeEnabled // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_TEMPLATE_FOR_%ls _mcgen_PASTE2(%ls_, MCGEN_EVENTWRITETRANSFER) #define _mcgen_TEMPLATE_FOR_%ls %ls %ls : error : ControlGuid not supported for MOF generation %ls : error : Opcodes are required for MOF generation #pragma autorecover #pragma classflags("forceupdate") #pragma namespace("\\\\.\\root\\WMI") // // ETW Generated File from Manifest // MC: "%ls" event count = %Id [Dynamic, Description("%ls") : amended, guid("{%ls}"), locale("MS\\0x409")] class %ls : EventTrace { [Description ("Enable Flags") : amended, ValueDescriptions{, "%ls "%ls}, DefineValues{ "%ls"%ls Values{ ValueMap{ "0x%.8X"%ls}: amended ] uint32 Flags; [Description ("Levels") : amended, ValueDescriptions{ "Abnormal exit or termination", "Severe errors that need logging", "Warnings such as allocation failure", "Includes non-error cases", "Detailed traces from intermediate steps" } : amended, DefineValues{ "TRACE_LEVEL_FATAL", "TRACE_LEVEL_ERROR", "TRACE_LEVEL_WARNING" "TRACE_LEVEL_INFORMATION", "TRACE_LEVEL_VERBOSE" }, Values{ "Fatal", "Error", "Warning", "Information", "Verbose" }, ValueMap{ "0x1", "0x2", "0x3", "0x4", "0x5" }, ValueType("index") ] uint32 Level; };%ls : warning : There are more than %lu versions of this event [Dynamic, Description("%ls") : amended, guid("{%ls}"), EventVersion(%d), DisplayName("%ls") : amended ] class %ls_V%d:%ls { };%ls :ERROR: For Task : '%ls', attribute "eventGUID" is required on element <task> for downlevel code generation If the intent is to raise events in XP/W2K3 then add "eventGUID" attribute [Dynamic, Description("%ls") : amended, EventType{%d, %d [Dynamic, Description("%ls") : amended, EventType(%d%c, EventTypeName%c%c "%ls"%c : amended ] class %ls_V%d:%ls_V%d { [Dynamic, Description("%ls") : amended, EventType(%d), EventTypeName("%ls") : amended ] class %ls_V%d:%ls_V%d { };%ls : warning : Property Not Supported = %ls NULL Event Name%ls : error : Maximum number of properties is %lu :: Event = %ls %ls : error : No support for non fixed size arrays in MOF = %ls [WmiDataId(%d), Description("%ls%d") : amended, read] %ls %ls%d; [WmiDataId(%d), Description("%ls") : amended,BitValuesValues %ls{ "%ls", "%ls" }:amended,BitMapValueMap "%d", "%d" } ] uint32 %ls;%ls : error : Unsupported map type %d in MOF read] %ls %ls;stringsint8uint8sint16uint16sint32uint32sint64uint64real32real64objectpointer StringTermination("NullTerminated"), format("w"), extension("Guid"), pointer, extension("Sid"), format("x"), StringTermination("Counted"), format("w"), StringTermination("Counted"), StringTermination("ReverseCounted"), format("w"), StringTermination("ReverseCounted"), StringTermination("NotCounted"), format("w"), StringTermination("NotCounted"), format("c"), extension("SizeT"), // // Event method for %ls //%ls : error : Too Many Properties for template : %ls !!!!! // // The event's template has types not supported in c# generation // // // The event's template has types not supported in c# generation // use win:Binary or win:Int8 array instead // static public %lsbool %ls%ls(int %ls_Len_, []%ls%ls %ls, %ls%ls %ls) { return m_provider.WriteEvent(ref %ls, %ls); } if (m_vistaProvider) { return m_provider.WriteEvent(ref %ls, %ls); } else { if (!m_providerLegacy.IsEnabled()) { return true; } return m_providerLegacy.WriteEvent(ref %ls, ref %lsId, %ls); } } if (!m_provider.IsEnabled()) { return true; } if (m_vistaProvider) { if (!m_provider.IsEnabled()) { return true; } ++*EventDescriptor*++ %*ls return m_provider.Template%ls(ref %ls, %*ls return m_provider.TemplateEventDescriptor(ref %ls); } else { if (!m_providerLegacy.IsEnabled()) { return true; } return m_providerLegacy.TemplateEventDescriptor(ref %ls, ref %lsId); } %ls, %ls); } else { if (!m_providerLegacy.IsEnabled()) { return true; } return m_providerLegacy.Template%ls(ref %ls, ref %lsId, } } %ls : error : ControlGuid not supported for CS generation // // WARNING: This provider uses provider traits, but the C# code generation // does not support provider traits. Provider traits will not be registered // or included in events. // : IDisposable public %lsclass %ls%ls { // // Provider "%ls" event count = %Id // internal %lsEventProviderVersionTwo m_provider = new EventProviderVersionTwo(new Guid("%ls")); internal %lsEventProviderVersionTwo m_provider; internal %lsEventProviderVersionOne m_providerLegacy; private %lsbool m_vistaProvider = (Environment.OSVersion.Version.Major > 5); private %lsGuid m_providerId; // // Task : eventGUIDs // private %lsGuid %lsId = new Guid("%ls"); // // Event Descriptors //private static protected %lsEventDescriptor %ls; protected virtual void Dispose(bool disposing) { if (disposing) { m_provider.Dispose(); } } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { if (m_vistaProvider) { m_provider.Dispose(); } else { m_providerLegacy.Dispose(); } } } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }staticpublic %ls %ls() { unchecked { } } } m_providerId = new Guid("%ls"); if (m_vistaProvider) { m_provider = new EventProviderVersionTwo(m_providerId); } else { m_providerLegacy = new EventProviderVersionOne(m_providerId); } } %ls : error : Template for Event Id = %d contains types that can not be described in MOF : (structures, non fixed size Arrays, Binary, SystemTime) } #ifndef _%ls_def #define _%ls_def typedef enum _%ls { %ls%ls = %d, } %ls; #endif // _%ls_def _ContextHandleMcGenEventRegisterContextMcGenEventRegister #ifndef %ls%ls%ls #define %ls%ls%ls(%ls) %ls(&%ls, McGenControlCallbackV2, &%ls_Context, &%ls%ls%ls) #endif %ls : error : ControlGuid not supported for downlevel code generation //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Provider "%ls" event count %Id //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Id_ // Provider GUID = %ls EXTERN_C __declspec(selectany) const GUID %ls = {%ls};_ControlGuid // Control GUID = %ls #ifndef %ls_Traits #define %ls_Traits ( \ "\x%02X\x%02X" /* Total size of traits = %u */ \ "\\\"\%u%u%u omitted\x00" /* Provider name%ls */ \ "\x13\x00\x01\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X" /* Group guid */ \ "\x13\x00\x02\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X" /* Decode guid */ \ ) #define %ls_Traits NULL #endif // %ls_Traits // // Channel // #define %ls 0x%x #define %ls_KEYWORD 0x%I64X #define %ls_CHANNEL_%ls 0x%x #define %ls_CHANNEL_%ls_KEYWORD 0x%I64X // // Levels // #define %ls_LEVEL_%ls 0x%x // // Opcodes // #define %ls_OPCODE_%ls 0x%x // // Tasks // #define %ls_TASK_%ls 0x%x EXTERN_C __declspec(selectany) const GUID %lsId = {%ls}; // // Keyword // #define %ls 0x%I64X #define %ls_KEYWORD_%ls 0x%I64X // // Event Descriptors //NULL #define %ls 0x%XL // // Event Enablement Bits // These variables are for use by MC-generated code and should not be used directly. // EXTERN_C __declspec(selectany) DECLSPEC_CACHEALIGN ULONG %lsEnableBits[%d]; EXTERN_C __declspec(selectany) const ULONGLONG %lsKeywords[%d] = {0x%I64x}; EXTERN_C __declspec(selectany) const unsigned char %lsLevels[%d] = {%d // // Provider context // EXTERN_C __declspec(selectany) MCGEN_TRACE_CONTEXT %ls_Context = _Traits0(ULONG_PTR){0, %ls%ls%ls, 0, 0, 0, 0, 0, 0, %d, %lsEnableBits, %lsKeywords, %lsLevels};, (ULONG_PTR){0%ls%ls%ls}; // // Provider REGHANDLE // #define %ls (%ls_Context.RegistrationHandle) {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, %d, %lsEnableBits, %lsKeywords, %lsLevels};{0};1 do not // // This macro is set to %ls, indicating that the EventWrite[Name] macros%ls // have an Activity parameter. This is controlled by the -km and -um options. // #define %ls_EventWriteActivity %ls // // Register with ETW using the control GUID specified in the manifest. // Invoke this macro during module initialization (i.e. program startup, // DLL process attach, or driver load) to initialize the provider. // Note that if this function returns an error, the error means that // will not work, but no action needs to be taken -- even if EventRegister // returns an error, it is generally safe to use EventWrite and // EventUnregister macros (they will be no-ops if EventRegister failed). //EventRegister // // Register with ETW using a specific control GUID (i.e. a GUID other than what // is specified in the manifest). Advanced scenarios only. //(Guid)GuidEventRegisterByGuid // // Unregister with ETW and close the provider. // Invoke this macro during module shutdown (i.e. program exit, DLL process // detach, or driver unload) to unregister the provider. // Note that you MUST call EventUnregister before DLL or driver unload // (not optional): failure to unregister a provider before DLL or driver unload // will result in crashes. // #ifndef EventUnregister%ls #define EventUnregister%ls() McGenEventUnregister(&%ls) #endif // // MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION macro: // Define this macro to enable support for caller-allocated provider context. // #ifdef MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION // // Advanced scenarios: Caller-allocated provider context. // Use when multiple differently-configured provider handles are needed, // e.g. for container-aware drivers, one context per container. // // Usage: // // - Caller enables the feature before including this header, e.g. // #define MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION 1 // - Caller allocates memory, e.g. pContext = malloc(sizeof(McGenContext_%ls)); // - Caller registers the provider, e.g. EventRegister%ls_ForContext(pContext); // - Caller writes events, e.g. EventWriteMyEvent_ForContext(pContext, ...); // - Caller unregisters, e.g. EventUnregister%ls_ForContext(pContext); // - Caller frees memory, e.g. free(pContext); // typedef struct tagMcGenContext_%ls { // The fields of this structure are subject to change and should // not be accessed directly. To access the provider's REGHANDLE, // use %ls_ForContext(pContext). MCGEN_TRACE_CONTEXT Context; ULONG EnableBits[%u]; } McGenContext_%ls; _mcgen_PASTE3(_mcgen_RegisterForContext__, MCGEN_EVENTREGISTER, _mcgen_EVENTSETINFORMATION_SUFFIX)_mcgen_PASTE2(_mcgen_RegisterForContext__, MCGEN_EVENTREGISTER) #define EventRegister%ls_ForContext(pContext) %ls(&%ls, pContext) #define EventRegisterByGuid%ls_ForContext(Guid, pContext) %ls(&(Guid), pContext) #define EventUnregister%ls_ForContext(pContext) McGenEventUnregister(&(pContext)->Context.RegistrationHandle) // // Provider REGHANDLE for caller-allocated context. // #define %ls_ForContext(pContext) ((pContext)->Context.RegistrationHandle) // This function is for use by MC-generated code and should not be used directly. // Initialize and register the caller-allocated context. __inline ULONG __stdcall %ls( _In_ LPCGUID pProviderId, _Out_ McGenContext_%ls* pContext) { RtlZeroMemory(pContext, sizeof(*pContext)); pContext->Context.Logger = (ULONG_PTR)%ls_Traits; pContext->Context.EnableBitsCount = %u; pContext->Context.EnableBitMask = pContext->EnableBits; pContext->Context.EnableKeyWords = %lsKeywords; pContext->Context.EnableLevel = %lsLevels;.RegistrationHandle return %ls( pProviderId, McGenControlCallbackV2, &pContext->Context, &pContext->Context%ls); } // This function is for use by MC-generated code and should not be used directly. // Trigger a compile error if called with the wrong parameter type. FORCEINLINE _Ret_ McGenContext_%ls* _mcgen_CheckContextType_%ls(_In_ McGenContext_%ls* pContext) { return pContext; } #endif // MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION // // Register with ETW XP, W2K, W2K3, Vista +, Kernel Mode // #ifndef EventRegister%ls #define EventRegister%ls() McGenEventTracingRegister(&%ls, NULL, &%ls_Context, &%ls_Context.RegistrationHandle) #endif // // Unregister with ETW // #ifndef EventUnregister%ls #define EventUnregister%ls() McGenEventTracingUnregister(&%ls_Context) #endif // // Register with ETW XP, W2K, W2K3, Vista + // #ifndef EventRegister%ls #define EventRegister%ls() McGenEventTracingRegister(&%ls, NULL, &%ls_Context, &%ls) #endif // // Unregister with ETW // #ifndef EventUnregister%ls #define EventUnregister%ls() McGenEventTracingUnregister2(&%ls_Context) #endif _Arg%d EventDataDescCreate(&EventData[%d],%ls, (ULONG)(sizeof(WCHAR)*%ls*%ls)); // Blob containing %ls concatenated strings; each string has the same length (%ls)%ls, (ULONG)(sizeof(WCHAR)*%ls_Len_)); // Blob containing %ls concatenated nul-terminated strings%ls, (ULONG)(sizeof(WCHAR)*%ls)); (%ls != NULL) ? %ls : L"NULL", (%ls != NULL) ? (ULONG)((wcslen(%ls) + 1) * sizeof(WCHAR)) : (ULONG)sizeof(L"NULL"));%ls, (ULONG)(sizeof(char)*%ls*%ls)); // Blob containing %ls concatenated strings; each string has the same length (%ls)%ls, (ULONG)(sizeof(char)*%ls_Len_)); // Blob containing %ls concatenated nul-terminated strings%ls, (ULONG)(sizeof(char)*%ls)); (%ls != NULL) ? %ls : "NULL", (%ls != NULL) ? (ULONG)((strlen(%ls) + 1) * sizeof(char)) : (ULONG)sizeof("NULL"));%c%ls, sizeof(%ls)%c%ls);GUID%ls, sizeof(%ls)%c%ls);const void*FILETIMESYSTEMTIME %ls, %ls_Len_);(%ls != NULL) ? %ls : (const void*)"\0\0\0\0\0\0\0", (%ls != NULL) ? (8u + %ls->SubAuthorityCount * 4u) : 8);WCHARchar%ls, (USHORT)(sizeof(%ls)*%ls_Len_)); // Blob contains data for %ls chunks; each chunk is a 16-bit ByteCount followed by ByteCount bytes of data.&EventData[%d].Size, sizeof(USHORT)); EventDataDescCreate(&EventData[%d], %ls, (USHORT)(sizeof(%ls)*%ls_Len_));%ls, (ULONG)sizeof(char)*%ls*%ls); // Blob containing %ls concatenated strings; each string has the same length (%ls)%ls, (ULONG)sizeof(char)*%ls);%ls : error : No support for STRUCT in MOF %ls, %ls * %ls_Len_);%ls, %ls_Len_);%ls,sizeof(const void*));NOT_SUPPORTEDsbytebyteshortushortintuintlongulongfloatdoubleboolbyte[]IntPtrDateTimeSecurityIdentifierconst WCHAR*PCWSTRconst char*PCSTRconst unsigned char*const SID*const GUID*const FILETIME*const SYSTEMTIME*reads_(_Arg%d_Len_)reads_(_Arg%dreads_(%d*_Arg%d*%dreads_(_Arg%d)opt_reads_(%d) + 1 // // Template Functions // // // Function for template "%ls" (and possibly others). // This function is for use by MC-generated code and should not be used directly. // #ifndef %ls_def #define %ls_def ETW_INLINE ULONG _mcgen_PASTE2(%ls_, MCGEN_EVENTWRITETRANSFER)( %ls( _In_ PMCGEN_TRACE_CONTEXT Context, _In_ PCEVENT_DESCRIPTOR Descriptor _In_opt_ const GUID* Activity _In_opt_ const GUID* EventGuid _In_ ULONG %ls_Len_ _In_ %ls %c%ls%ls : error : too many properties in template %ls ) { #define %ls_ARGCOUNT %d ULONG Error = 0; EVENT_DATA_DESCRIPTOR EventData[%ls_ARGCOUNT%ls]; typedef struct _MCGEN_TRACE_BUFFER { EVENT_TRACE_HEADER Header; EVENT_DATA_DESCRIPTOR EventData[%ls_ARGCOUNT]; } MCGEN_TRACE_BUFFER; MCGEN_TRACE_BUFFER TraceBuf; PEVENT_DATA_DESCRIPTOR EventData = TraceBuf.EventData; typedef struct _MCGEN_TRACE_BUFFER { EVENT_TRACE_HEADER Header; } MCGEN_TRACE_BUFFER; MCGEN_TRACE_BUFFER TraceBuf; %ls : error : internal error processing template %ls Context-> if (!%lsMcGenPreVista) {ActivityError =return %ls McGenEventWrite(Context, Descriptor, %ls, %ls_ARGCOUNT%ls, EventData);EventData %ls Context->PfnEtwWrite(Context->RegistrationHandle, Descriptor, Activity, %ls_ARGCOUNT, %ls); %ls PfnEventWrite(Context->RegistrationHandle, Descriptor, %ls_ARGCOUNT, %ls); } else { // // Fill in header fields // TraceBuf.Header.GuidPtr = (ULONGLONG)EventGuid; TraceBuf.Header.Flags = WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_GUID_PTR|WNODE_FLAG_USE_MOF_PTR; TraceBuf.Header.Class.Version = (USHORT)Descriptor->Version; TraceBuf.Header.Class.Level = Descriptor->Level; TraceBuf.Header.Class.Type = Descriptor->Opcode; TraceBuf.Header.Size = sizeof(MCGEN_TRACE_BUFFER); TraceBuf.Header.FieldTypeFlags = 0; ((PWNODE_HEADER)&(TraceBuf.Header))->HistoricalContext = Context->Logger; %ls IoWMIWriteEvent(&TraceBuf.Header); %ls TraceEvent(Context->Logger, &TraceBuf.Header); } #ifdef MCGEN_CALLOUT MCGEN_CALLOUT(Context->RegistrationHandle, Descriptor, %ls_ARGCOUNT, &EventData[%lc]); MCGEN_CALLOUT(Context->RegistrationHandle, Descriptor, 0, NULL); #endif // MCGEN_CALLOUT return Error; } #endif // %ls_def // Value contains data for %ls strings; each string has length = %ls: if (%ls.Length + 1 < %ls*%ls) return false; userDataPtr[%d].Size = (uint)(sizeof(char)*%ls*%ls); // Value contains %ls concatenated nul-terminated strings (embedded nul between each one - use something like string.Join("\0", array) to generate this value): userDataPtr[%d].Size = (uint)(%ls == 0 ? 0 : sizeof(char)*(%ls.Length + 1)); userDataPtr[%d].Size = (uint)(sizeof(char)*(%ls.Length + 1)); // Value has length = %ls: if (%ls.Length + 1 < %ls) return false; userDataPtr[%d].Size = (uint)(sizeof(char)*%ls); // Value is a nul-terminated string (assume no embedded nuls): userDataPtr[%d].Size = (uint)(%ls.Length + 1)*sizeof(char); userDataPtr[%d].DataPointer = (UInt64)(&%ls); userDataPtr[%d].Size = (uint)(sizeof(byte)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(short)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(int)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(long)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(float)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(double)%c%ls); %ls : error : Not allowed array of bool: PropertyName = %ls is an array of length %ls!!!!! int %lsInt = %ls ? 1 : 0; userDataPtr[%d].DataPointer = (UInt64)(&%lsInt); userDataPtr[%d].Size = (uint)(sizeof(int)); userDataPtr[%d].Size = (uint)(sizeof(Guid)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(IntPtr)%c%ls); %ls : error : Not allowed array of DateTime: PropertyName = %ls is an array of length %ls long %lsFileTime = %ls.ToFileTime(); userDataPtr[%d].DataPointer = (UInt64)(&%lsFileTime); userDataPtr[%d].Size = (uint)(sizeof(long)); short* %lsSysTime = stackalloc short[8]; %lsSysTime[0] = (short)%ls.Year; %lsSysTime[1] = (short)%ls.Month; switch (%ls.DayOfWeek) { case DayOfWeek.Sunday: %lsSysTime[2] = 0; break; case DayOfWeek.Monday: %lsSysTime[2] = 1; break; case DayOfWeek.Tuesday: %lsSysTime[2] = 2; break; case DayOfWeek.Wednesday: %lsSysTime[2] = 3; break; case DayOfWeek.Thursday: %lsSysTime[2] = 4; break; case DayOfWeek.Friday: %lsSysTime[2] = 5; break; case DayOfWeek.Saturday: %lsSysTime[2] = 6; break; default: break; } %lsSysTime[3] = (short)%ls.Day; %lsSysTime[4] = (short)%ls.Hour; %lsSysTime[5] = (short)%ls.Minute; %lsSysTime[6] = (short)%ls.Second; %lsSysTime[7] = (short)%ls.Millisecond; userDataPtr[%d].DataPointer = (UInt64)(%lsSysTime); userDataPtr[%d].Size = (uint)(8 * sizeof(short)); %ls : error : Not allowed array of SecurityIdentifier : PropertyName = %ls is an array of length %ls byte [] %lsBin = new byte[%ls.BinaryLength]; %ls.GetBinaryForm(%lsBin, 0); userDataPtr[%d].Size = (uint)(%ls.BinaryLength); // Value contains data for %ls chunks; each chunk is a 16-bit ByteCount followed by ByteCount bytes of data: userDataPtr[%d].DataPointer = (UInt64)(&userDataPtr[%d].Size); userDataPtr[%d].Size = sizeof(ushort); userDataPtr[%d].Size = (ushort)((%ls == null ? 0 : %ls.Length) * sizeof(%ls)); // Value contains data for %ls chunks; each chunk has length = %ls: // Value has length = %ls: if (%ls.Length < sizeof(byte)*%ls%c%ls) return false; userDataPtr[%d].Size = (uint)(sizeof(byte)*%ls%c%ls); userDataPtr[%d].Size = (uint)(%ls_Len_%c%ls); internal unsafe bool Template%ls( internal bool TemplateEventDescriptor( ref EventDescriptor eventDescriptor int %ls_Len_ %ls%ls %ls ) { int argumentCount = %d; bool status = true; if (IsEnabled(eventDescriptor.Level, eventDescriptor.Keywords)) { byte* userData = stackalloc byte[sizeof(EventData) * argumentCount]; EventData* userDataPtr = (EventData*)userData; %*ls fixed (%ls* Bin%c0 = %ls%ls, %c%d = %ls%ls %*ls { %*ls userDataPtr[%d].DataPointer = (ulong)%c%d; %*ls status = WriteEvent(ref eventDescriptor, argumentCount, (IntPtr)(userData)); %*ls } } return status; } if (IsEnabled(eventDescriptor.Level, eventDescriptor.Keywords)){ return WriteEvent(ref eventDescriptor, 0, IntPtr.Zero); } return true; } } internal unsafe bool TemplateEventDescriptor( ref EventDescriptor eventDescriptor, ref Guid eventGuid int argumentCount = %d; if (IsEnabled(eventDescriptor.Level, (uint)eventDescriptor.Keywords)) { int eventSize = sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)+ sizeof(EventData) * argumentCount; byte* userData = stackalloc byte[eventSize]; EventData* userDataPtr = (EventData*)(userData+ sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)); EtwNativeMethods.EVENT_TRACE_HEADER* header = (EtwNativeMethods.EVENT_TRACE_HEADER*)userData; // // header here // header->Guid = eventGuid; header->Flags = s_eventFlags; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR; header->Version = (short)eventDescriptor.Version; header->Level = eventDescriptor.Level; header->Type = eventDescriptor.Opcode; header->Size = (short)eventSize; // // Event data here //%*ls fixed (%ls* %*ls{ %*ls EtwNativeMethods.TraceEvent(m_logger, userData); } return true; } if (IsEnabled(eventDescriptor.Level, (uint)eventDescriptor.Keywords)){ int eventSize = sizeof(EtwNativeMethods.EVENT_TRACE_HEADER); byte* userData = stackalloc byte[eventSize]; EtwNativeMethods.EVENT_TRACE_HEADER* header = (EtwNativeMethods.EVENT_TRACE_HEADER*)userData; // // header here // header->Guid = eventGuid; header->Flags = s_eventFlags; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR; header->Version = (short)eventDescriptor.Version; header->Level = eventDescriptor.Level; header->Type = eventDescriptor.Opcode; header->Size = (short)eventSize; EtwNativeMethods.TraceEvent(m_logger, userData); } return true; } TraceIsEnabledBCryptOpenAlgorithmProviderMicrosoft Primitive ProviderMD5BCryptCreateHashBCryptHashDataBCryptFinishHashunsigned charBYTEsigned intINTunsigned intUINT32signed __int64LONGLONGunsigned __int64ULONGLONGbooleanDOUBLEFLOATHSTRING[in, size_is(%ls)] _In_reads_(%ls) [in, size_is(%d)] _In_reads_(%d) [in] _In_ [version(NTDDI_WIN8), uuid(%ls)] interface I%ls : IInspectable { class %lsServer : public Microsoft::WRL::RuntimeClass<I%ls> { InspectableClass(RuntimeClass_%ls_%ls, BaseTrust); public: } // namespace %ls [propget] HRESULT %ls%ls%ls([out, retval] boolean* value); IFACEMETHOD(get_%ls%ls%ls)( _Out_ boolean* value) override; IFACEMETHODIMP %ls::%lsServer::get_%ls%ls%ls( _Out_ boolean* value) { *value = EventEnabled%ls(); return S_OK; } HRESULT %ls%ls(%ls%c %ls IFACEMETHOD(%ls%ls)( ) override; if (!EventEnabled%ls()) { return S_OK; } ULONG _MCGEN_StringLength%d; LPWSTR _MCGEN_Buffer%d = NULL; Counted _MCGEN_StringLength%d = GetStringArraySize(%ls, %ls); _MCGEN_Buffer%d = AllocateAndFillBuffer%ls(_MCGEN_StringLength%d * sizeof(WCHAR), %ls, %ls); if (_MCGEN_Buffer%d == NULL) { goto Cleanup; } Cleanup: free(_MCGEN_Buffer%d);WindowsGetStringLen(%ls), WindowsGetStringRawBuffer(%ls, nullptr)WindowsGetStringRawBuffer(%ls, nullptr)_MCGEN_StringLength%d, _MCGEN_Buffer%d IFACEMETHODIMP %lsServer::%ls%ls( { %ls%ls(%c%ls return S_OK; } namespace %ls { ActivatableClass(%lsServer) } [version(NTDDI_WIN8), activatable(NTDDI_WIN8)] runtimeclass %ls { [default] interface I%ls; }%ls : error : Property %ls from event %ls is fixed count, which is not supported by WinRT. %ls : error : Property %ls from event %ls has a specified length, which is not supported by WinRT. %ls : error : Property %ls from event %ls is not supported type for WinRT. import "oaidl.idl"; import "Inspectable.idl"; import "Windows.Foundation.idl"; #include #include <wrl\implements.h> #include <wrl\module.h> #include "%ls.h" #include "%ls.h" #include "%ls.hpp" STDAPI DllGetActivationFactory(_In_ HSTRING activatibleClassId, _COM_Outptr_ IActivationFactory** factory) { auto &module = Microsoft::WRL::Module::GetModule(); return module.GetActivationFactory(activatibleClassId, factory); } HRESULT WINAPI DllCanUnloadNow() { auto &module = Microsoft::WRL::Module::GetModule(); return module.GetObjectCount() == 0 ? S_OK : S_FALSE; } HRESULT WINAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID FAR* ppv) { auto &module = Microsoft::WRL::Module::GetModule(); return module.GetClassObject(rclsid, riid, ppv); } /// IdentifierNameIsMisspelled %ls.man : error : Provider %ls does not have namespace attribute. %ls.man : error : Namespaces %ls and %ls do not have common root namespace namespace %ls }; MS-GenEtw-WinRTTemplate })(this); BOOL __stdcall DllMain ( _In_ HINSTANCE Module, _In_ DWORD Reason, _In_opt_ PVOID Reserved ) { UNREFERENCED_PARAMETER(Reserved); if (Module == NULL) { return FALSE; } switch (Reason) { case DLL_PROCESS_ATTACH: EventRegister%ls(); EventSetInformation(%lsHandle, EventProviderBinaryTrackInfo, NULL, 0); break; case DLL_PROCESS_DETACH: EventUnregister%ls(); break; } return TRUE; } #pragma warning(disable: 4505) // unreferenced local function has been removed #define LIMIT_RAW_LENGTH(RawLength) (RawLength < 0x7f00 ? RawLength : 0x7f00) static ULONG GetStringArraySize ( _In_ unsigned int StringsCount, _In_reads_(StringsCount) HSTRING* Strings ) { ULONG TotalSize = 0; for (ULONG Ix = 0; Ix < StringsCount; Ix += 1) { UINT32 RawLength = WindowsGetStringLen(Strings[Ix]); TotalSize += LIMIT_RAW_LENGTH(RawLength) + 1; } return TotalSize; } static LPWSTR AllocateAndFillBuffer ( _In_ ULONG BufferSize, _In_ ULONG StringsCount, _In_reads_(StringsCount) HSTRING* Strings ) { LPWSTR Buffer = static_cast(malloc(BufferSize)); ULONG Offset = 0; if (Buffer) { for (ULONG Ix = 0; Ix < StringsCount; Ix += 1) { UINT32 RawLength; PCWSTR RawString = WindowsGetStringRawBuffer(Strings[Ix], &RawLength); ULONG Length = LIMIT_RAW_LENGTH(RawLength); RtlCopyMemory(Buffer + Offset, RawString, Length * sizeof(WCHAR)); Offset += Length; Buffer[Offset] = L'\0'; Offset += 1; } } return Buffer; } static LPWSTR AllocateAndFillBufferCounted ( _In_ ULONG BufferSize, _In_ ULONG StringsCount, _In_reads_(StringsCount) HSTRING* Strings ) { LPWSTR Buffer = static_cast(malloc(BufferSize)); ULONG Offset = 0; if (Buffer) { for (ULONG Ix = 0; Ix < StringsCount; Ix += 1) { UINT32 RawLength; PCWSTR RawString = WindowsGetStringRawBuffer(Strings[Ix], &RawLength); ULONG Length = LIMIT_RAW_LENGTH(RawLength); Buffer[Offset] = static_cast(Length * sizeof(WCHAR)); Offset += 1; RtlCopyMemory(Buffer + Offset, RawString, Length * sizeof(WCHAR)); Offset += Length; } } return Buffer; } <ActivatableClass ActivatableClassId="%ls.%ls" ThreadingModel="both"/>TraceProvider.dll <!-- Place this XML fragment into your AppX manifest file. --> <Extensions> <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path><!-- Place DLL name here. E.g. %ls --></Path> (function init%ls(global) { var providerTemplates = null; var ns = global; if (ns.Diagnostics === undefined) { ns.Diagnostics = {}; } var ns = ns.Diagnostics; if (ns.Tracing === undefined) { ns.Tracing = {}; } var ns = ns.Tracing; if (ns.%ls === undefined) { ns.%ls = {}; } var ns = ns.%ls; ns.%ls = function () { if (providerTemplates === null) { providerTemplates = new global.%ls.%lsTemplate(); } }; var proto = ns.%ls.prototype; [version(NTDDI_WIN8), uuid(%ls)] interface I%lsTemplate : IInspectable { static PCEVENT_DESCRIPTOR _MCGEN_EventDescriptorArray[%Iu]; PCEVENT_DESCRIPTOR %lsTemplateServer::_MCGEN_EventDescriptorArray[%Iu] = { &%ls HRESULT EventEnabled([in] UINT EventIndex, [out, retval] VARIANT_BOOL* Enabled); static const UINT _MCGEN_EventEnabledBitArray[%Iu]; IFACEMETHOD(EventEnabled)( _In_ UINT EventIndex, _Out_ VARIANT_BOOL* Enabled) override; const UINT %lsTemplateServer::_MCGEN_EventEnabledBitArray[%Iu] = { %u #define _MCGEN_IS_%ls_ENABLED(i) (0 == (%lsEnableBits[_MCGEN_EventEnabledBitArray[i] >> 5] & (1 << (_MCGEN_EventEnabledBitArray[i] & 0x1f)))) %lsTemplateServer::EventEnabled( _In_ UINT EventIndex, _Out_ VARIANT_BOOL* Enabled ) { if (Enabled == NULL) return E_POINTER; if (EventIndex >= %Iu) return E_INVALIDARG; *Enabled = (_MCGEN_IS_%ls_ENABLED(EventIndex) == S_OK) ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } HRESULT Trace%ls([in] UINT _MCGEN_EventIndex IFACEMETHOD(Trace%ls)( _In_ UINT _MCGEN_EventIndex%lsTemplateServer::Trace%ls( _In_ UINT _MCGEN_EventIndex if (_MCGEN_EventIndex >= %Iu) return E_INVALIDARG; if (_MCGEN_IS_%ls_ENABLED(_MCGEN_EventIndex)) return S_OK; %ls(&%ls_Context, _MCGEN_EventDescriptorArray[_MCGEN_EventIndex], %c%ls proto.is%lsEnabled = function () { return !!providerTemplates.eventEnabled(%Iu); }; proto.trace%ls = function () { providerTemplates.trace%ls(%Iu };%ls :ERROR %d: corrupt baseline binary resource win:EventlogClassicwin:UnicodeStringwin:AnsiStringwin:Int8win:UInt8win:Int16win:UInt16win:Int32win:UInt32win:Int64win:UInt64win:Floatwin:Doublewin:Booleanwin:Binarywin:GUIDwin:Pointerwin:FILETIMEwin:SYSTEMTIMEwin:SIDwin:HexInt32win:HexInt64Unrecognize typexs:stringxs:dateTimexs:bytexs:unsignedBytexs:shortxs:unsignedShortxs:intxs:unsignedIntxs:longxs:unsignedLongxs:floatxs:doublexs:booleanxs:GUIDxs:hexBinarywin:HexInt8win:HexInt16win:PIDwin:TIDwin:Portwin:IPv4win:IPv6win:SocketAddresswin:CIMDateTimewin:ETWTIMEwin:Xmlwin:ErrorCodeunknown type <data inType="%ls" outType="%ls" name="%ls" count="%d" count="%ls" length="%d" length="%ls" map="%ls" /> <struct name="%ls"> </struct> <template guid="%ls"> </template> <event channel="%ls" keywords="%ls" level="%ls" opcode="%ls" task="%ls" value="%d" version="%d" notLogged="true" template="%ls" /> : error ::ERROR:%ls %ls Event Id %d from provider %ls has been removed from manifest %ls %ls Event Id %d found, but version %d NOT FOUND - provider %ls %ls %ls Event Id %d version %d - provider %ls Template properties have been removed from baseline Create new event Id to solve problem, leave old event in manifest %ls %ls Event Id %d version %d - provider %ls Template properties have been reordered, keep original ordering to preserver application compatibility. If this change is intentional and required, increment the version number of this event %ls %ls Event Id %d version %d - provider %ls Template property %ls has been renamed, create new event Id to solve problem, leave old event in manifest %ls %ls Event Id %d version %d - provider %ls Template properties do not match. Increment Version of the Event to solve problem and keep old event in manifest %ls %ls Event Id %d version %d - provider %ls Template Added - : Increment Version of the Event to solve problem %ls :ERROR %d: corrupt baseline binary resource %ls .BINGetManifestData: Failed at validation with Error 0x%x bЅ;t@@FF001050000009`if o f o f o f o f o PY )E`aKRpp  < < > L M M Q T b c   < < > > ? ? @ B G H K M p q   < < > C G H K M V W   > D F H J M U V   > C F H J M W W 114:GN557799>>??q *0/00000N00!0)0AZaz14>AHJ~P OQ\^1VYYa!:AJq 9 = = X a     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 6 9 = = \ ] _ a     ( * 3 5 9 ` a     ( * 9 ` a .0023@E@GIi    <<>>@@LLNNPPTUYY_acceeggiimnrsuu EHMPWYY[[]]_}&!&!*!+!.!.!!!A00001,1< &:] ]< "&:"$/!U?K $ >" >"/! >" !#$=&# '2"*& ""&v<  '"&< #@= =; " xF09C 09C; " 09FafFAFF; " M MP "P $?SP >Q-X[c -Z -]Z -_[>" Ce Dg Ai Tk Am [o ]ro ]tp> "p#|y y;* " x09 09;* " 09afAF;* " # ;2 " x09 09;2 " 09afAF;2 " ""&v"< *$'"&"< 2$]> ]gtltampaposquot9w?HC [0123456789abcdeftruefalse<//>&amp;&lt;YE:ш/v;7ObjectLengthMS-WEVTY(6CS>;l=|PFailed to open file for write: '%ls'Failed to create FileMapping for '%ls'Failed to map view of file for '%ls'Arithmetic overflow expanding file: '%ls'Debugchannelproviderwin:NoneSYSTEMSECURITYAPPLICATIONfilterkeywordlevelmapopcodeen-UStask&quot; Name=""><EventData__binLengthBinaryComplexDataData</EventData>urn:schemas-microsoft-com:asm.v3accessattributeschidcontrolGuidcountculturedefaultenabledeventGUIDformatgroupGuidguididincludeNameisolationkeywordslengthmaskmessagemessageFileNamemofValuenamenamespacenotLoggedparameterFileNameresourceFileNamesourcesuppressProjectionsymboltagstemplatetidtypevalueversionwarnOnApplicationCompatibilityErrorxmlTypeInvalid value "%ls", expected UInt8.Invalid value "%ls", expected UInt16.Invalid value "%ls", expected UInt32.Invalid value "%ls", expected HexInt32.Invalid value "%ls", expected HexInt64.Invalid value "%ls", expected $(string.*) or $(mc.*).Invalid value "%ls", expected 0, 1, true, or false.Invalid value "%ls", expected {GUID}.eventsmessageTableXmlWbemInvalid value "%ls", expected Xml or Wbem.channelslevelstasksopcodesmapsnamedQueriestemplatesfilterstraitsimportChannelAdminOperationalAnalyticInvalid value "%ls", expected Admin, Operational, Analytic, or Debug.SystemCustomInvalid value "%ls", expected System or Custom.valueMapbitMappatternMapspatternMapdatastructbinaryUserDataeventresourcesstringTabletypesxmlTypesinTypesdescriptionGenSumResource.BINcategory.DevicesDevicescategory.DiskDiskcategory.NetworkNetworkcategory.PrintersPrinterscategory.ReservedReservedcategory.ServicesServicescategory.ShellShellcategory.SystemEventSystem Eventchannel.Applicationchannel.ProviderMetadataProviderMetadatachannel.SecuritySecuritychannel.Systemchannel.TraceClassicTraceClassicchannel.TraceLoggingTraceLoggingkeyword.AnyKeywordAnyKeywordkeyword.AuditFailureAudit Failurekeyword.AuditSuccessAudit Successkeyword.ClassicClassickeyword.CorrelationHintCorrelation Hintkeyword.ResponseTimeResponse Timekeyword.SQMSQMkeyword.WDIDiagWDI Diaglevel.CriticalCriticallevel.Errorlevel.InformationalInformationlevel.LogAlwaysLog Alwayslevel.VerboseVerboselevel.Warningopcode.DCStartDCStartopcode.DCStopDCStopopcode.ExtensionExtensionopcode.InfoInfoopcode.ReceiveReceiveopcode.ReplyReplyopcode.ResumeResumeopcode.SendSendopcode.StartStartopcode.StopStopopcode.SuspendSuspendtask.NoneNoneWINEVENT_CHANNEL_GLOBAL_APPLICATIONWINEVENT_CHANNEL_PROVIDERMETADATAWINEVENT_CHANNEL_GLOBAL_SECURITYWINEVENT_CHANNEL_GLOBAL_SYSTEMWINEVENT_CHANNEL_CLASSIC_TRACEWINEVENT_CHANNEL_TRACELOGGINGwin:CriticalWINEVENT_LEVEL_CRITICALwin:ErrorWINEVENT_LEVEL_ERRORwin:InformationalWINEVENT_LEVEL_INFOwin:LogAlwaysWINEVENT_LEVEL_LOG_ALWAYSwin:ReservedLevel10WINEVENT_LEVEL_RESERVED_10win:ReservedLevel11WINEVENT_LEVEL_RESERVED_11win:ReservedLevel12WINEVENT_LEVEL_RESERVED_12win:ReservedLevel13WINEVENT_LEVEL_RESERVED_13win:ReservedLevel14WINEVENT_LEVEL_RESERVED_14win:ReservedLevel15WINEVENT_LEVEL_RESERVED_15win:ReservedLevel6WINEVENT_LEVEL_RESERVED_6win:ReservedLevel7WINEVENT_LEVEL_RESERVED_7win:ReservedLevel8WINEVENT_LEVEL_RESERVED_8win:ReservedLevel9WINEVENT_LEVEL_RESERVED_9win:VerboseWINEVENT_LEVEL_VERBOSEwin:WarningWINEVENT_LEVEL_WARNINGWINEVENT_TASK_NONEwin:DC_StartWINEVENT_OPCODE_DC_STARTwin:DC_StopWINEVENT_OPCODE_DC_STOPwin:ExtensionWINEVENT_OPCODE_EXTENSIONwin:InfoWINEVENT_OPCODE_INFOwin:ReceiveWINEVENT_OPCODE_RECEIVEwin:ReplyWINEVENT_OPCODE_REPLYwin:ReservedOpcode241WINEVENT_OPCODE_RESERVED_241win:ReservedOpcode242WINEVENT_OPCODE_RESERVED_242win:ReservedOpcode243WINEVENT_OPCODE_RESERVED_243win:ReservedOpcode244WINEVENT_OPCODE_RESERVED_244win:ReservedOpcode245WINEVENT_OPCODE_RESERVED_245win:ReservedOpcode246WINEVENT_OPCODE_RESERVED_246win:ReservedOpcode247WINEVENT_OPCODE_RESERVED_247win:ReservedOpcode248WINEVENT_OPCODE_RESERVED_248win:ReservedOpcode249WINEVENT_OPCODE_RESERVED_249win:ReservedOpcode250WINEVENT_OPCODE_RESERVED_250win:ReservedOpcode251WINEVENT_OPCODE_RESERVED_251win:ReservedOpcode252WINEVENT_OPCODE_RESERVED_252win:ReservedOpcode253WINEVENT_OPCODE_RESERVED_253win:ReservedOpcode254WINEVENT_OPCODE_RESERVED_254win:ReservedOpcode255WINEVENT_OPCODE_RESERVED_255win:ResumeWINEVENT_OPCODE_RESUMEwin:SendWINEVENT_OPCODE_SENDwin:StartWINEVENT_OPCODE_STARTwin:StopWINEVENT_OPCODE_STOPwin:SuspendWINEVENT_OPCODE_SUSPENDwin:AnyKeywordWINEVT_KEYWORD_ANYwin:AuditFailureWINEVENT_KEYWORD_AUDIT_FAILUREwin:AuditSuccessWINEVENT_KEYWORD_AUDIT_SUCCESSwin:CorrelationHintWINEVENT_KEYWORD_CORRELATION_HINTWINEVENT_KEYWORD_EVENTLOG_CLASSICwin:ReservedKeyword49WINEVENT_KEYWORD_RESERVED_49win:ReservedKeyword56WINEVENT_KEYWORD_RESERVED_56win:ReservedKeyword57WINEVENT_KEYWORD_RESERVED_57win:ReservedKeyword58WINEVENT_KEYWORD_RESERVED_58win:ReservedKeyword59WINEVENT_KEYWORD_RESERVED_59win:ReservedKeyword60WINEVENT_KEYWORD_RESERVED_60win:ReservedKeyword61WINEVENT_KEYWORD_RESERVED_61win:ReservedKeyword62WINEVENT_KEYWORD_RESERVED_62win:ReservedKeyword63WINEVENT_KEYWORD_RESERVED_63win:ResponseTimeWINEVENT_KEYWORD_RESPONSE_TIMEwin:SQMWINEVENT_KEYWORD_SQMwin:WDIDiagWINEVENT_KEYWORD_WDI_DIAGNoPrintReducedStringCIMDateTimeCodePointerDateTimeCultureInsensitiveDateTimeUtcETWTIMEErrorCodeHResultHexInt16HexInt32HexInt64HexInt8IPv4IPv6JsonNTSTATUSPIDPkcs7WithTypeInfoPortSocketAddressTIDUtf8Win32ErrordateTimehexBinaryunsignedByteunsignedIntunsignedLongunsignedShortAnsiCharAnsiStringBooleanCountedAnsiStringCountedBinaryCountedStringCountedUnicodeStringDoubleFloatHexDumpInt16Int32Int64Int8NonNullTerminatedAnsiStringNonNullTerminatedStringPointerReverseCountedAnsiStringReverseCountedStringSIDSizeTUInt16UInt32UInt64UInt8UnicodeCharUnicodeStringWBEMSidtrace:ReducedStringtrace:NoPrinttrace:CountedStringtrace:ReverseCountedStringtrace:ReverseCountedAnsiStringtrace:NonNullTerminatedStringtrace:NonNullTerminatedAnsiStringtrace:UnicodeChartrace:AnsiChartrace:SizeTtrace:HexDumptrace:WBEMSidCreateXmlReader failedGetNodeTypeGetQualifiedNameGetNamespaceUriGetLocalNameGetValueOpenInputFileMoveToFirstAttributeMoveToNextAttributeReadFirstChildNextChildCreateXmlWriterOutputWithEncodingCodePageCreateXmlWriterLiteSetProperty(ByteOrderMark)SetProperty(ConformanceLevel)SetProperty(OmitXmlDeclaration)SetOutput(AppendStream)WriteNodeFlushinstrumentationManifestassemblymetadatalocalizationinvalid string positionyrp@=iK 0 Ɣ$J-p " 0H"P"L`x"$0 " ",<h0",`8", ",Px " ",  "` " "p"PX "" 0@"0" ")H?@"@" @p"@"4@("\p8"\8"(P8",(", H ", "( "dp " 4"xp""<H"" X0"0 "px "P`",@ " 8" "Pp " "" 0",8 ",\8",0",Lx ",(",4` ",8",$P8",0",@8",8",08",| ", (",l8",8",\ ",8",Lx0" 8",t ", ",d ", ",T ", ",D p P",  ",  8",< h 8"   h",  ",  H ",  ", ( ",p  ",  "  p"  p"  "h p "h  "  0"   " X "  "  "h  " ( P x"  0" "H 0"x " " " ",  "` "  h"  0" "$ 0 0"d  @"0 X " "  "  "H P ("  P"$ 0 X"l x "  P"  "< P "  ("8 H "l  0"  ", 8 "  "  H"$ < h 0"  0"  ( `"  @"  p"l  P"  "\ x "  `"x P" @ @"  8"  "  8"( 0 "d x ("  @"  "  "  "  "T ` @"  ("  p"$ 8 0"  P"  "  8"$ 0 "l x p"$  "  @"  "@ H `"t  "  "   "|  ("   @"` h "  0",! 8! "h! p! P"! ! 0"" ("H" P" @"" " X"" " h"8# @# 0"h h# "# # "$ $ h"H$ P$ 0"$ $ " $ 0"4% @% P"% % ",& @& P"& & "& ' P"8' P' p"' ' p"& ( P"@( `( "( ( P") () ") ) `"D* `* "* * "4+ P+ "+ + 0"0, 8, ("|, , " -  - H"x- - @"- -  . 8"p. x. ". . / H"/ / 0 P"0 0 0 "T1 t1 1 H",2 p2 8"2 2 P3 `!j!j $$!j$!jQ Q @P 8X0P @ (Q @XP (0XP @(P @Q pPQ @PQ X(Q @P hQ @ /wR ###i89vKK5.u  15<@LS]d<|Д|ҙ%OyQ̞,\ƟDޠHȡHȢHȣHpۤ5b=toTݭFв1~;]wI D&k\)RSDSc8 ib{mc.pdbGCTL.text$dip~.text$mnf.text$mn$00V&.text$xS.text$ydfogrp-.rdata$brc0.idata$50.00cfg.CRT$XCA.CRT$XCAA.CRT$XCU.CRT$XCZ.CRT$XIA.CRT$XIAA.CRT$XIAC.CRT$XIC.CRT$XIZ.CRT$XPA.CRT$XPZ.CRT$XTA.CRT$XTZ.gehcontt.gfidsp.rdata.rdata$r.rdata$voltmd.rdata$zzzdbg.rtc$IAA.rtc$IZZ.rtc$TAA.rtc$TZZ d.xdata3 ,.xdata$x6 .idata$27 .idata$37 0.idata$4< V .idata$6P X.data$brcXP p.data$r$brcQ 8.data$rs$brcR .dataT @J.bss h(.pdata .rsrc$01 `J.rsrc$02 c8 ib{̰_ruA%h3!j d 4R p$\Qc\ "$'PB  b  4 rprp`0 b$@8  2P$d 4 Rp$8bp`0$ d4p$#BP0  4 RP4Pd4 p  4 2p20r0d42 pB42 p d T 42p d T 42p T 4 2p` d T 4 2pT 42 p `d 4R pd T 4Rp  t d 42rp`0: ,t((d'$4& PؐГ=Z>n>>>)???B@S@Bb T 4 2 p `d42 pRp9 +t#'d"#4! PؐȣPPUU9 +t''d&#4% PؐIINO dT 4 rp!4p`PP b p ` 0  t4d T42p4dT42p% %h!tdT4 $*TZZ d T 4 2p dT4rpt d 4R dT4p t 4RP0 "d4pPؐ@\H]V]d 4 r p"r p ` 0$hP@<82wwxp  2P$h2 tS dR TQ 4P LPP- t)d(4'"PP t d T 42' dT4pPHT 42p`d42p p`0$t@Д8\  2P$$ $d 4R p$@|8+oG  2P$! !d4R p$d@8YĉĔ  2P$ Bp ` P 0 b$%4 R p`$0 @8ˌ51  2P$0 b$X8 &dB"4@: pؐ P H XP |H@ҙ8DmI  BP0$  2P$? .h*dn&4lf pPؐ e b$MZZd4 p$Х`9 (4D< p`Pؐ%̖ޖ%  &:J,ܪ7C  ί߯ Ͱ ʱ W]9 +t#'d"#4  Pؐ =OaOJ͓2OdZ2P 42p`P t d T 4R4 &d"4 pPؐHјR0$pq9 (4<2 p`Pؐʗܗ%ܗ   $ 6 ܗ% % %ܗHZl~ܗ%%ܗĘܗ%֘%ܗ  %Kr޻<W¼  T Ͻ /fҾ8Qr) R!G^u#"$6Wg#%&#1H_u(*K'j p",t4Pؐz( (4 p `P$ĕ֕%%%'j:Qnɜk *bp`0P$^pW4 p$8*4 p$`W%7F4 p$3B4 r p  P t d 4R$ )8)  4 Rp p`0$<@8\~  2P$4 R p`$ا@y8<<  2P$ا! !d4 R p$4@O8)b)m  2P$R p`0$(@%8!e?C  2P$(((h$d T4 p$P7  Pd T 4 rp$x+L7 &t&d&4&PP3 " p`0PP7 &tu&dt&4s&lPPP3 "  p`0PPP; "g p`0Pؐ"#5GYkk}kRp5s "&*,- . .v/ tdT46 %4;%0 p`PPp< " p`0PؐȨF    RP 4R p ` PB 14! p`Pؐ"Wcw; "# p`0PؐK p PPt d 4 rP@ @x.htd4P# #t#d#4#P//x'h#t#d#4#Ptd T466.x 'h #t#d#4#P--x&h"t"d"4"PNN F > 6.x'h#t*#d)#4(#"Pt d4 td4P4 Rp$ -@ p`0$Hp@ȡ8rKst  2P$Hr p`0$p@H8V`|  2P$p  d 4 R p$`@8_R  2P$R p`0$@=8]h  2P$  d 4 R p$H@8@1  2P$ p`0$@H8w?xy|  2P$ p`0$88@Ȣ8}w}~  2P$8r p`0$`@8 l~lm<  2P$`r p`0$(@8%  2P$r p`0$@8pp%r  2P$ p`0$ج@8uzzQ|  2P$جR p`0$@8bbc8  2P$4 R p`$(@8]"٦  2P$(r p`0$P@H8Qnno|  2P$Pr p`0$x@85<  2P$xR p`0$p@Ɵ8a__V`  2P$r p`0$ȭ@8uuw<  2P$ȭ4r p`$`@t8#jX  2P$&rp`0$x  @ȣ8@H@H8@pH@8~͍BjϤ   2P$  2pP0$  BP0$R p`0$@@8f5gg  2P$@R p`0$h@8a\aa  2P$hR p`0$x@ޠ8jj]k  2P$ p`0$@,8YbY,ZP  2P$ p`0$h@̞8TBU V  2P$ p`0$@8VRWX   2P$ p`0$0X @\h[i[1\  P$0d T 4 rpr p`0$X @8hhiҠ  2P$X+ T/4.& p `P **x#htd4P**x #h td4Pr p`0$ @D8Gddex  2P$ dT4 rp&rp`0$P @8]j]^  2P$" p ` 0$Я @Q8_QQRRRR"S1SS  2P$ЯT 4 2 p `4 R p`$ @87h  2P$4 R p`$ 4 @ۤ8  2P$ 4 R p`$H @58MV  2P$H4 R p`$p @8Oݥ  2P$p4 R p`$ @8iӻ)  2P$4 R p`$ @b8X  2P$ tdT 4 rT4 p `d 4 R p0 "h 4pPؐ?cCyC0 "h 4pPؐ[EqE dT4 p$8  4 Rptd4P dT4 p$`-% %t!dT4 $J$ $d T4 p$ /! !tdT4 $ر' 't#d4 P$,d4p$(%E&# #td4P$P#''d4p$x)(~(+@ `0ؐ?< @wX:;  rP$! !4r p`P$Ȳ4֕%%%,ANd 4 Rp$U4r p`P$R0$@  4 2p b$h b$R0$%'%4 Rp$ @I8OW  2P$  4 Pd 4 Rp$&%d 4 r p p0P$0Ǩ٨!3EWiFBlBBBCCjCCC;DbDDDEfEE-FFF$GyG G#4pؐXZI[---.# 0ؐR$:U! 0ؐrJ"( (4B: p`P$д˱;b .d 4 Rp$ͧK$ $d T4 p$ } dT4p $H]==%4 p`Pؐpj%]=ĕҕ r0$׮4 &4," p`PؐY˯+i  p`P0 d T 4 2pT 4 2 p `9 +t'd#4 Pؐu_`a' 't#d4 P$ZI[^3 %4 p`Pؐ8b8de! !4 p`P$`\,fVfg) )4 p `P$zhh_inijk) )4 p `P$\ϸpqqqsust 4 r P 4 p`P- -h )4" p `P$ض8ssu(uMvv! !4 p`P$nnBp% %4 p`P$(u5X`XYY+ +t'd#4 P$P[kkm 4r p`P) )4" p `P$x\xy(z߂>4 &4-$ p`Pؐ45ops 0$ȷP @H>>  RP$ȷbbd4 p$_>*4 pؐs @oX͛  rP$%pP0PH/ !4& p`Pؐ@.Ich 4 p9 +h'd-#4,$ pPؐh,y[0qѭ.8 *h&d'"4& pPؐ[ 1Z+ +h 't#d4P$ݷ|@AA..x 'h #t$#d##4"#P td4P2 $h( p`0Pؐ"<δT*++z,,2 $h  p`0Pؐ2 $h  p`0Pؐ04 &d'"4& pPؐX]y 4 pPp0 "d#4"pPؐ0d4 p$71 #d342,pPؐйZ߫΄d4 p$UЀ$$4 p `P$ N~]-..!!4 p `P$HX~22x.h*42* p `P$p5#334 555(667w8d4 p$e8\99% %4 p `P$֯%fg" "d4pP$($ / !h 4 p`Pؐ?M%%d!4 pP$8{JBLjL0 "4*" p`Pؐ`S UxV% %h !4 p`P$ yμ:3 %h!4& p`Pؐ}d4 p$ػk,S0 "d!4 pPؐLdT4 p$(:t. h p`0PؐP0dT4 p$xh// 00 "d!4 pPؐd4 p$ȼm,4*$p`Pؐ/)S& &h"d%4$ pP$PPQ=RdR9 +x'h#d7460pPؐ@R= ' 'h #td4P$h XT 4 2p`& 42* p`PP@ R0$yLd 4R pt d 4 rP2p ` 0ؐͫ @H1{  RP$$ $d T 4 R p$k93p`0Pؐ=d42 pd42 p42 p dT4p5 't!#d 4Pؐ0vx! !4 p`P$XFLtnuu- -4!p ` P$nn 5-  p`0Pؐ|}}, ,4 p ` P$о=>>/ !4" p`Pؐ%%*))**3 %4 p`Pؐ r8,d4pPؐHZI $$d4p$p@@3 %4  p`Pؐδδ 3 %4 p`Pؐ|<<<=#  p`0P$7++,m,- -4"!p ` P$8JsH$% %t!dT4 $8l) )4 p `P$`D:T::+ +#'t"#d!4 P$""ab5bwbcdeee2 $4 p`Pؐz7- -4&!p ` P$n\   O Q ) )4 p `P$65566' 't#4 P$(ڪ;_d___``\a3 %4 p`PؐPr%0) )4 p `P$x223+ +t"'d!#4  P$Ȫ[\-\\ ]w]2 $4 p`Pؐz`[~/ /t"+d!'4  P$&\@\] td4P T4 Rp`1 14$%p`P$:6q- td4PPP* "%p ` 0 P$@̰ް\ g4 &d0"4/( pPؐh2\mffffDgh(i~i4 Rp$}M}4 &d"4 pPؐNN*<rt d4 T4 r p`$mJ/\//U0+ +t#'d"#4! P$\nX=XbXXXYZ[:[2 $4 p`Pؐ0ru td4P%4 p`PؐXZ-?2U4 p`$- Q 0TX P H@ݭH+^  bP0$  RP$4 Rp$U"pp`0$ . Q @Fh P X@вX=S  P0$  rP$( (dz$4yr p$/ Q H1h P X@X18v  P0$  rP$/4*$p`ؐ 0 Q hX P ;H@]H""""!  bP0$   RP$ $$41,p$H1 Q @h P ~X@XRa  P0$H  rP$H$p02 Q 0X P H@HO#ص  bP0$p  RP$p6 $d" 4! pؐ03 Q h8 P 8@8(P,  2P$03 3 XP ()P ()3 P 2P 2(4 P4 3 )x4 P4 3 )4 (Q )5 PQ 5 4 3 Q 85 4 3 )`5 5 xQ (?5 x6 3 )6 Q Hx!@6 3 p< B= 8P: B < 8B `7 RE 7 `E : nE 9 zE 9 E < F x9 vH (: I G G B G ~G fG JG 2G G G F F F F F F F xF hF VF HF E *E E D D D D D D pD RD 6D "D D C C C C tC fC LC > > > ? ? $? 0? T? r? ? ? ? ? @ @ z> Z> <> > > = = = = = = z= d= (I 2I < = = < A I E E E E E F H 6_initterm7_initterm_e_c_exit=_register_thread_local_exe_atexit_callbackapi-ms-win-crt-runtime-l1-1-0.dll__CxxFrameHandler3 __C_specific_handlermwcsstrC_o___acrt_iob_funcO_o___p___argcQ_o___p___wargvS_o___p__commode^_o___std_exception_copy__o___std_exception_destroyb_o___stdio_common_vfprintff_o___stdio_common_vfwprintfj_o___stdio_common_vsnprintf_sl_o___stdio_common_vsprintfp_o___stdio_common_vswprintf_o__callnewh_o__cexit_o__configthreadlocale_o__configure_wide_argv_o__crt_atexit_o__errno_o__exit_o__get_initial_wide_environment=_o__initialize_onexit_table>_o__initialize_wide_environment@_o__invalid_parameter_noinfo_noreturnQ_o__register_onexit_functionZ_o__seh_filter_exe\_o__set_app_type__o__set_fmodeb_o__set_new_mode_o__wcsicmp_o__wcsnicmp _o__wfsopen3_o__wtoim_o_exitu_o_fclosev_o_feofw_o_ferrorx_o_fflush}_o_fgetws_o_fputs_o_fputwc_o_fread_o_free_o_ftell_o_fwrite_o_isalnum_o_iswalnum_o_iswalpha_o_iswdigit_o_iswspace_o_iswxdigit_o_malloc_o_memcpy_s_o_realloc_o_setlocale6_o_terminate>_o_towlowerG_o_wcscpy_sV_o_wcstoulW_o_wcstoull __current_exception!__current_exception_contextmemset_CxxThrowExceptionapi-ms-win-crt-private-l1-1-0.dllapi-ms-win-crt-string-l1-1-0.dll8LocaleNameToLCIDGetFileAttributesW,SetFileAttributesWDeleteFileWWideCharToMultiByteIsValidCodePageIsTextUnicodeGetModuleFileNameWGetFileVersionInfoSizeExWGetFileVersionInfoExW VerQueryValueWGetLastErrorGetEnvironmentVariableWSearchPathWFindFirstFileExW)FindNextFileWFindCloseXCoInitializeExCoUninitializeLCompareStringOrdinal&CoCreateInstanceRtlCaptureContextRtlLookupFunctionEntryRtlVirtualUnwindUnhandledExceptionFilterwSetUnhandledExceptionFilterGetCurrentProcessTerminateProcessIsProcessorFeaturePresentQueryPerformanceCounterGetCurrentProcessIdGetCurrentThreadId`GetSystemTimeAsFileTimeInitializeSListHeadIsDebuggerPresentGetModuleHandleWKERNEL32.dllADVAPI32.dllVERSION.dllOLEAUT32.dllOLE32.dll)BCryptOpenAlgorithmProviderBCryptCloseAlgorithmProviderBCryptCreateHashBCryptDestroyHash%BCryptHashDataBCryptFinishHashbcrypt.dllSizeofResourceHeapFreeyCreateFileWUnmapViewOfFileMFreeResource<LockResource<CloseHandle2FindResourceExW,LoadResourceHeapAllocGetFileSize,GetProcessHeapvCreateFileMappingW>MapViewOfFile<SetLastErrorEnterCriticalSection#LeaveCriticalSectionInitializeCriticalSectionDeleteCriticalSectionIFreeLibrary)LoadLibraryExWTraceMessage1LocalFreeReadFileGetFileSizeExaConvertStringSecurityDescriptorToSecurityDescriptorW0SetFilePointer SetEndOfFileEFormatMessageWLoadStringW1SetFilePointerExDFormatMessageAUSER32.dll#BCryptGetPropertyCreateXmlWriterOutputWithEncodingCodePageCreateXmlReaderInputWithEncodingCodePageCreateXmlWriterCreateXmlReaderXmlLite.dllwcscmpbmemcmpcmemcpydmemmove@ @(K@K@P @HP @HP @@.?AVexception@std@@@.?AUWin32Exception@@@.?AVbad_array_new_length@std@@@.?AVbad_alloc@std@@@.?AVlength_error@std@@@.?AVlogic_error@std@@@.?AVout_of_range@std@@@.?AVEvtException@@@.?AVManparseException@@@.?AVtype_info@@2-+] fFFPwk X EL \V\s`hoxLT,$T,<W !U!p!!!" "["h"$0$P$$D&&&&&>'D'''''D( L((()()[))))3*<****+m+t+, ,+,4,|, ---..4.(/x0/0\01,12D222!3P333)4045596@666^;d;s<|<2=8=@BHBBlC#D ,DLD$TDeDlDDDEEFGGGH HP PUUVVVWuW|WAXHXXXoYxYZZ[[[[[[]]``yccfxf4k\Ddl,4 xZH`8ihpMT5W`QXv | %,u|;hD@HKxT|x 5<HP@=hwrx(3L70@&, T/06788K0KSSW`WYYaahhiirrlt|w'x0xxxfl d0w x(0t|š̡dlzH8@ȤdHl28ڨMT5<Ȱ&(, I P(0,l@H8@P)0,9@H$yH$$,4:@gp7@LPTAH$Pz% |, S \ 6 \ C8Lrxp$6<s| T   O!X!!!" """7#@#3%<%%&,&g&p&&@'((h)p)+\+ , ,b,@b,v,T|,,,- -m- t---/d$/4|4 6l4688888959@99:>:D:; ;;;$<,<<<==???@Y@`@@@bAhAAA]BdBBBDx DF FG8 GIL $IJp J KKK4KK4K=L4DLL4LM4M{M4MM4M[N4dNN4NNNEO4LOlP tP T TV8 V)X0X8Z@Z=\( D\^  ^b`@h`aac`cf fgXgi iikHpkmmoPo1rp8rt@t&w,wyy]|d|~~AHltqx͆Ԇqx͇ԇ/8ٍΑԑŒ̒؛( ¬ Ȭg p/L8LLȲL\\ \\ ٻX x ļ n tU \@ ^0dipd0l.4    X`;`D*`0( +4k|tv|  " (P X0 5 <h T 9h @h jh pT h h &( ,8 H _4 h\- @ a h\. x@  +   @-     % , I P m t    bh"(zZ`BH Y`=Dnt%,"($LT jp?H]d  >!P!!!" "F#L###$$.% 4%i%p%K&h T&' '( (((+h" +,($ ,B-H-. D.[0, d0u3' |36& 6C8L8Q;% X;=# $=?(" $?? ?@P# @AAGx HHHGIPIIJJ, JLh LN0 NLPTPRP RV  WW W[X, [^( _a' afX% $fi* i$m,mmm|nns suH! ux! xyh y zz=|X) D|W~! `~- 4? HD LC L    ltkt l `   8 @| Ę~ șךH  2  ˦ Ԧ y  -  h p X  E` Li pV \1 8M T8 dl Ľ\ 1 8  CLw  ( 3L <8 >Dl J P    , $p+ ( a' h@& HY" `A$* HW) `( ellh$ t$ Q! X@  `&  Htp | h $t |. l/ <1  x# "!0!!!#d0 #c# 2 l###$# $%D %'''8 ') ),4 ,-$-8/H @/k0 t02H 28 89p 9*= 0=z=== == => >e> l>> > ? ?@@X H@MB TBBB"D(DH* HLPLQMXMMMyNNZP`PPPQQORXRbSt) hS W WxW WWWZ Z^H ^b be e)h 0h k kLn Tnpx p{s sv v~xP xDh L Ȅ ; D@ ĉkt#,}+4MT9Pmtϐ3 ؐWp3 02PV\z|#<v| ʔД 7@a$*QW~8X~||ҙҙ %IOshyxtߝ(Qp ̞& ,V(\  Ɵ8>D~ ؠ ޠBH¡ȡB H¢PȢpB0H £`ȣ H0Hp pDդ ۤh / 5\ b(  H  7=ntߦ@{)/VXǫ0 ߫0Wo8 3 3 3 0NT8. ݭL. ݭL. ,S}Ѯ׮LsyЯ֯ű˱.FH/ в\/ в\/ 1@0 T0 ݳT0 ~1 ~1 ȴ1 ;1 ;],1 ],1 2 2 62 Nx5_w` ׷x CIo( 0Vƹ( (@Xp  ( 8 H X h x        0 l 4   J0 f  `  `  Z 4VS_VERSION_INFO e e?StringFileInfo040904B0LCompanyNameMicrosoft CorporationZFileDescriptionWindows Message Compilern'FileVersion10.0.26100.7705 (WinBuild.160101.0800).InternalNamemc.exe.LegalCopyright Microsoft Corporation. All rights reserved.6OriginalFilenamemc.exej%ProductNameMicrosoft Windows Operating SystemDProductVersion10.0.26100.7705DVarFileInfo$Translation Not found : '%1'.+MessageId not found in string table : '%1'.%Duplicate string Id specified : '%1'.9For Provider '%1' attribute resourceFileName is required.8For Provider '%1' attribute messageFileName is required.SProvider '%1', parameter file name cannot be specified without a message file name.)Duplicate provider name specified : '%1'.0Duplicate provider GUID '%1' in provider : '%2'.+Duplicate provider symbol specified : '%1'.UInvalid value %1!u!(0x%1!x!) specified for level '%2'. Values 0 thru 15 are reserved.!Duplicate level name used : '%1'.:Duplicate level value %1!u!(0x%1!x!) used in level : '%2'.#Duplicate level symbol used : '%1'.JInvalid value %1!u!(0x%1!x!) specified for task '%2'. Value 0 is reserved. Duplicate task name used : '%1'.JMap not allowed for template with TId '%1', since it is a filter template."Duplicate Filter Name used : '%1'.OFor channel '%1', value of attribute 'access' is not a valid SDDL string: '%2'.IA <message> element has reference to a non-existent <string> entry: '%1'.BTwo <message> entries are referring the same <string> entry: '%1'.AFor Template with TId '%1', only one <binary> element is allowed.mFor event '%1', with Id %2!u!(0x%2!x!), attribute 'message' is required, since it logged to an Admin Channel.For event '%1', with Id %2!u!(0x%2!x!), level must be specified and it should be one of Critical, Error, Warning, or Informational, since it is logged to an Admin Channel.1Two <message> entries have the same symbol: '%1'.EThe instrumentation node is either missing or in the wrong namespace.7For Map '%1', duplicate value %2!u!(0x%2!x!) specified.5For Pattern Map '%1', duplicate value '%2' specified.For template '%1', invalid Custom Xml specified. Custom Xml must have a top-level element and it should be in its own namespace. Also, the value of property inserts should not be greater than the number of top-level properties in the template : %2.The <events> node is either missing or in the wrong namespace. The <events> node must be present under <instrumentation> node and should be in the following namespace: 'http://schemas.microsoft.com/win/2004/08/events'.dFor property '%1', inType must be one of UInt8, UInt16, UInt32, or HexInt32, since map is specified.7Missing Attribute 'id' on one of the <string> elements.6For String with Id '%1', attribute 'value' is missing.Two providers have defined a channel with duplicate name : '%1'. A given channel name can only be defined by one provider, other providers should use <importChannel> element to refer an existing channel.Two or more events logging to legacy 'System', 'Security' or 'Application' channels are referencing the same message string '%1'. Give each such event a unique message string.String '%1' is given Id %2!u!(0x%2!x!) in a .mc file. Change the Id of this string to be the same as that of the event referencing this string, since the event is logging to 'System', 'Security' or 'Application' channel.String '%1' is explicitly assigned Id %2!u!(0x%2!x!) using a <message> element. Change the Id of this string to be the same as that of the event referencing this string, since the event is logging to 'System', 'Security' or 'Application' channel.tFor event '%1', with Id %2!u!(0x%2!x!), since Opcode '%3' is local to Task '%4', event must reference the Task '%4'.nFor event '%1', with Id %2!u!(0x%2!x!), Opcode '%3' is local to Task '%4', but event is referencing Task '%5'.For event '%1', with Id %2!u!(0x%2!x!), Opcode '%3' is global, and its value collides with that of local Opcode '%4' of the Task '%5' that the event is referencing.String '%1' contains an insert sequence and is referenced by a <%2> element. Insert sequences are not supported in <%2> strings.mString '%1' in the string table for locale '%2' does not exist in the string table for all the other locales.hInvalid Provider Name: %1. When controlGuid is specified, provider name must end with the provider guid.zFor event '%1', with Id %2!u!(0x%2!x!), the 'EventLogClassic' keyword cannot be used together with 'name' or 'attributes'.sFor property '%1', property '%2' referenced by attribute count must have inType UInt8, UInt16, UInt32, or HexInt32.[For property '%1', property '%2' referenced by attribute count cannot have attribute count.tFor property '%1', property '%2' referenced by attribute length must have inType UInt8, UInt16, UInt32, or HexInt32.]For property '%1', property '%2' referenced by attribute length cannot have attribute length.For event '%1', with Id %2!u!(0x%2!x!), a property insert in the event message is referencing a non-existent property. Event only has %3!u! properties: '%4'.BLength of Channel Name must be between 1 and 256 characters: '%1'.Invalid Channel Name: %1. Following characters are not allowed in a channel name: ascii value <31, double quote, '>','<','&','|','\',''',':','*', and '?'.CLength of Provider Name must be between 1 and 256 characters: '%1'.Invalid Provider Name: %1. Following characters are not allowed in a Provider name: ascii value <31, double quote, '>','<','&','|','\',''',':','*', and '?'.8Duplicate task value %1!u!(0x%1!x!) used in task : '%2'."Duplicate task symbol used : '%1'.-Duplicate event guid '%1' used for task '%2'.cInvalid value %1!u!(0x%1!x!) specified for opcode '%2'. Opcode values should be between 10 and 239."Duplicate opcode name used : '%1'.<Duplicate opcode value %1!u!(0x%1!x!) used in opcode : '%2'.$Duplicate opcode symbol used : '%1'.wInvalid value %1!u!(0x%1!x!) specified for channel '%2'. Values for user-defined channels should be between 16 and 255.]Channel '%1' is the 9th channel for this provider. Only 8 channels allowed for one provider./Duplicate channel Id '%1' used in channel '%2'.GDuplicate channel name used : '%1'. Channel names are case-insensitive.<Duplicate channel value %1!u!(0x%1!x!) used in channel '%2'.4Duplicate channel symbol '%1' used for channel '%2'.@Duplicate property name : '%1' specified within template - '%2'.MFor property '%1', property '%2' referenced by attribute count was not found.OFor property '%1', property '%2' referenced by attribute length was not found..KFor property '%1', property '%2' referenced by attribute count is a struct.LFor property '%1', property '%2' referenced by attribute length is a struct.DFor property '%1', with inType win:Binary, length must be specified.>For property '%1', length is not allowed for the given inType.dFor event '%1', with Id %2!u!(0x%2!x!), too many keywords specified. Maximum keywords allowed is 48.LFor event '%1', Id %2!u!(0x%2!x!) was specified which is bigger than USHORT.FTwo events have the same Id %1!u!(0x%1!x!) and Version %2!u!(0x%2!x!).#Duplicate event symbol used : '%1'.jFor event '%1', with Id %2!u!(0x%2!x!), win:EventlogClassic keyword is not allowed with any other keyword.IFor event '%1', with Id %2!u!(0x%2!x!), version attribute is not allowed.IFor event '%1', with Id %2!u!(0x%2!x!), channel attribute is not allowed.tFor template '%1', invalid tags specified. Tags is a 28-bit value, i.e. it must be less than 268435456 (0x10000000).tFor property '%1', invalid tags specified. Tags is a 28-bit value, i.e. it must be less than 268435456 (0x10000000).HFor event '%1', with Id %2!u!(0x%2!x!), opcode attribute is not allowed.RFor keyword '%1', 'mask' attribute is invalid. One and only one bit should be set.TFor keyword '%1', with mask 0x%2!I64x!, mask bit can only be one of the low 48 bits."Duplicate keyword name used: '%1'.7Duplicate keyword mask 0x%1!I64x! used in keyword '%2'.3Duplicate keyword symbol '%1' used in keyword '%2'. Duplicate template Id '%1' used. Required element <%1> not found.(Required element <%1> or <%2> not found.PUnsupported XML encoding specified (HR=0x%2!X!). Falling back to code page 1252. Required attribute '%1' not set."XML load error 0x%1!X! - failed %2,OutType : '%1' is invalid for InType : '%2'.Duplicate map name used: '%1'.2Only one bit may be set in bit map : '%1' 0x%2!x!.Automatic string Id generation logic can only support 16 event providers. Beyond that, string Ids must be explicitly assigned using <message> entries.Duplicate message ID was specified - 0x%1!x!. This can happen when an auto-generated messageId conflicts with those explicitly specified using a <messageTable> or a .mc file.$Duplicate Filter Symbol used : '%1'.GTwo Filters have the same Id:%1!u!(0x%1!x!) and Version:%2!u!(0x%2!x!).OUserData not allowed for template with TId '%1', since it is a filter template.^Struct not allowed for property '%1' of template with TId '%2', since it is a filter template.]Array not allowed for property '%1' of template with TId '%2', since it is a filter template. (08@HPX`hpxȠРؠ (08@HPX`hpxȡСء 0@HXhxȢآ(8HXhxȣأ(8HXhxФ 8H`pإ(8P`xȦئ(@Phxȧ0@XhШ 0HXpЩ 0@P`pЪ 0@P`p @PpЬ0@P`pЭ 0@P`pЮ 0@P`pЯ 0@P`pР 0@P`pС 0@P`pآ 8Phȣ(@XpФ0H`xإ 8Phئ0@PXh8HX`pȨ(8P`pЩ0@Phxت 0HXhȫث(8H`pЬ(@P`xЭ 0@XhxȮخ 8HXpȯl(8P`pР0@P`pС 0@P` @PpУ0@P`pФ 0@P`pХ 0@P`pЦ 0@P`pЧ 0@P`p @PpЩ0@`pЪ 0P`pЫ 0HX`hpPȢТآ (08@HPX`hpxУأP (HPXؠ(PxȡPD   BX)0)G *H )80)410  `He0\ +7N0L0 +70 010  `He F!H]i>PO 003Hߡw0  *H  01 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 240808213623Z 350623220401Z0_1 0 UUS10U Microsoft Corporation100.U'Microsoft Windows Code Signing PCA 20240"0  *H 0 }k}'v*.4+mT dh(e;9_R]F?\z^z]i_0Oio=NAW}`H?uIG W,֕oQFl`vmNdBP {9 tP܍b_k;3 9b77LAS53=4"] \zcمayL]5:{zc0 AZosXPDK'9nn8 Q8ejuNRxFnhϴٲVPl:9L%,3UN`?;}OJOF v aB %fNg+^$Ne~http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0  *H  C_?锌;\hT41L Epj 3!ΘA~L"0))?E)κE'TXٖTx*:Қj;: 7oSn>Ą|$.9`qҬ1i jcG᨞7_ eN/kцoLyNi(eF5g [q݌ZI}!?2KeMԦGc:sQI!!w\yMxJ*g4?#~v̋Z9PXGdMrlq1gB0')‚*E]lߥNtX׏1A=| m5߈!9#0&8d4;qy!=NQOQV~崀y.c~xDɻۣ 1~`m~iˈLH}UK4.'5 rw>]T*Dd)Uw003nS0  *H  0_1 0 UUS10U Microsoft Corporation100.U'Microsoft Windows Code Signing PCA 20240 250508182454Z 260506182454Z0t1 0 UUS10U Washington10URedmond10U Microsoft Corporation10UMicrosoft Corporation0"0  *H 0 & ^K E#ESӑq&ao+L*䜥| \at(Bf-BE,9$ snuq hmQ(ΙOC_tAn/a5wh1ƇQ;ipD(F@)Q`ʶ^^zr!0'Ch[y8N)V@)&29bC#5c ްjMp$P"@7u(}Y/s)9E WY+4G_cEK`ν)Mɏ f <Vuu*Q٣n"`}VW^C t%=7 ԅ; to0<:0810U Microsoft Corporation10U 230865+5045810U#0׌4ګe0jUc0a0_][Yhttp://www.microsoft.com/pkiops/crl/Microsoft%20Windows%20Code%20Signing%20PCA%202024.crl0w+k0i0g+0[http://www.microsoft.com/pkiops/certs/Microsoft%20Windows%20Code%20Signing%20PCA%202024.crt0  *H  ~͑8{^1"N-0ỗQpޚ har~<>O͐y7^U]dNpB$m]9jC94up# /8}iM*.ȷwH-Ums8ȵ+! ==(- ӱi]IW~:l7|U"wǻD +,$W%|E"C#v2Hv ΁L͵NkmFfU-xd@ nIRw^LMLD'=R_7 E.1+ȑb)(˟%|k@m"Nc=`U? M]2(ح ArD /Kjf񴮟Φl*ͭ)%Cy#]+;HzǽGn;6?|`p0YU'(f Z,[iqeT][QJa{LI2]$&UX"Kfdʗ);100v0_1 0 UUS10U Microsoft Corporation100.U'Microsoft Windows Code Signing PCA 20243nS0  `He0 *H  1  +70/ *H  1" ~[:l-#m|&8F0Z +7 1L0J$"Microsoft Windows" http://www.microsoft.com/windows0  *H *z9Չ. /Ӧ90=k@,X |D8NCvzrD/aꥦ 08,1B|s+9]IKǪB  ,H@2'Bދu=옓5`Ml`B@yz4 J}7MBM9cRgLGd7 s JrK|2.AjAi|A:,"M;oQ9mQw<.;m5D5$=cq&$+s*[̖g0o| 1r.=@g,CLIXF`jEAX~p nĠ)}Qߛ T9Ў JIC(Ҩ:yl}yҩm*yXR|veM80v1KQ<mW IJ7Xnˡoަ[ tHTc,l3DLvȅA^iU|4g0 +710| *H m0i10  `He0R *H  A=09 +Y 010  `He $l "jf"e {GIg<Cios20260126222241.057Z0Ѥ01 0 UUS10U Washington10URedmond10U Microsoft Corporation1%0#U Microsoft America Operations1'0%U nShield TSS ESN:F002-05E0-D9471%0#UMicrosoft Time-Stamp Service0 03 DYyt.+vqusBfO8t5dF]PTwO)kn73g[c%Qݒr%Fk3r)\[G(]{iZ>oZCZZ67F0Ee7,xv( Ҳ.&^95~t R"낉!eGXRGLҡ`lo43,bʥT'O. wJ{ 7/A~4tW+kjC}|$oM8ΣZ_tv|YEBˣsV SH`z4ܱ>TA=R:h8ǽ"+č*Rzn3x6A XhtOxc.>3c|UTc;)7!T*W4U(;iJ@Xք:V3Wwߗxs rS "te vwpUI0E0UtzZ6ȝhKղ0U#0]^b]eS5r0_UX0V0TRPNhttp://www.microsoft.com/pkiops/crl/Microsoft%20Time-Stamp%20PCA%202010(1).crl0l+`0^0\+0Phttp://www.microsoft.com/pkiops/certs/Microsoft%20Time-Stamp%20PCA%202010(1).crt0 U00U% 0 +0U0  *H  8b|MT Q~K?[b @_jgN:EfmR8##l@@̛SʊDuiz}<ψ ;&*g%BƎ_i &'[ϨS}g14=]g#0q0Y3kI0  *H  01 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 210930182225Z 300930183225Z0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100"0  *H 0 Lr! y$yՂҩlNu5WlJ⽹>`3\OfSqZ~JZ6gF# w2`}jRDFkvPDq\Q17 8n&S|9azĪri65&dژ;{3[~Rb%j]SVMݼ㑏9,Qpi 6-p15(㴇$ɏ~TUmh;Fz)7EFn20\O,b͹⍈䖬Jq[g`= s}AFu_4 }~ٞE߶r/}_۪~66L+nQsM7t4G|?Lۯ^s=CN39LBh.QFѽjZasg^(v3rק  co 6d[!]_0tعP a65Gk\RQ]%PzlrRą<7?xE^ڏriƮ{>j.00 +70# +7*RdĚhttp://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0  *H  U}*,g1$[rKo\>NGdx=139q6?dl|u9m1lѡ"fg:SMݘx6.Vi {jo)n?Hum m#TxSu$Wݟ=heV(U'$@]='@8)üTB  jBRu6as.,k{n?, x鑲[It 쑀=J>f;O2ٖtLrou04zP X@1Q{p( 6ںL 4$5g+ 挙"'B=%tt[jў>~13}{8pDѐȫ::bpcSMmqjU3XpfM050Ѥ01 0 UUS10U Washington10URedmond10U Microsoft Corporation1%0#U Microsoft America Operations1'0%U nShield TSS ESN:F002-05E0-D9471%0#UMicrosoft Time-Stamp Service# 0+հigJ:o^޴0~0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100  *H  "#0"20260126173152Z20260127173152Z0t0: +Y 1,0*0 "#000 #u06 +Y 1(0&0  +Y  0 00  *H  ZaiDaÄs"+~w 8Oʺ]'_ u6 Ae)O3ʡQZ/[0sX13갱vrGuTgkZt3KҸll|9nT5obT@q@[&Ԍ̙zHF @'МD%u jכ529^aGO+8۫Mel/e" Jf.<|Ozp1 0 00|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20103