ELF          >            @                @ 8  @                                 a      a                                                                 y               p                         y                                                          $       $                    q     q     q     @       @                    (r     (r     (r                          Std   q     q     q     @       @              Ptd   ``     ``     ``     ,      ,             Qtd                                                  Rtd   y               p      p                      GNU DwɠG?4l7tHHm HtH         5ʈ %̈ @ h    fh   fh   fh   fh   fh   fh   fh   rfh   bfh	   Rfh
   Bfh   2fh   "fh   fh   fh   fh   fh   fh   fh   fh   fh   fh   fh   rfh   bfh   Rfh   Bfh   2fh   "fh   fh   fh   fh    fh!   fh"   fh#   fh$   fh%   fh&   fh'   rfh(   bfh)   Rfh*   Bfh+   2fh,   "fh-   fh.   fh/   fh0   fh1   fh2   fh3   fh4   fh5   fh6   fh7   rfh8   bfh9   Rfh:   Bfh;   2fh<   "fh=   fh>   fh?   fh@   fhA   fhB   fhC   fhD   fhE   fhF   fhG   rfhH   bfhI   RfhJ   BfhK   2fhL   "fhM   fhN   fhO   fhP   fhQ   fhR   fhS   fhT   fhU   fhV   fhW   rfhX   bfhY   RfhZ   Bfh[   2fh\   "fh]   fh^   fh_   f%Ƃ fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  %~ fD  %v fD  %n fD  %f fD  %^ fD  %V fD  %N fD  %F fD  %> fD  %6 fD  %. fD  %& fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  %ށ fD  %ց fD  %΁ fD  %Ɓ fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  %~ fD  %v fD  %n fD  %f fD  %^ fD  %V fD  %N fD  %F fD  %> fD  %6 fD  %. fD  %& fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  %ހ fD  %ր fD  %΀ fD  %ƀ fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  %~ fD  %v fD  %n fD  %f fD  %^ fD  %V fD  %N fD  %F fD  %> fD  %6 fD  %. fD  %& fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  % fD  HN   H5  H=5  HN   H5  H=  HkN )   H5'  H=g  HlN .   H5  H=`  HN U
  H5  H=ٸ  D  H=Y HR H9tH. Ht	        H=) H5" H)HH?HHHtH HtfD      =  u+UH=  HtH=ny yd ]     wf.     f.     f.     f     uH~ H H~ H D  HG(Htw H~     H~ G     =wHÐff.     Hu~ G    =wHÐff.      fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD   fD  UHAVAUATSHtpLnMtgIIL@ H[Ht@HLH8uI9t)HSHCHBHtHPLkHC    I]I^H[A\A]A^] 1H[A\A]A^]fUHAWAVAUATISH(HuHUfMd$L;eteIT$HtI$LjE1HEf.     LsM9rHEK.HL<I7HtH}tyHtLkfD  E1H(L[A\A]A^A_]ff.     IHTIH1H      N_L_L9trLH=)J fff.     ff.     ff.     ff.     ff.     HHƃ@47@rBI9uOKA Lf     UHH   HG   uHwz H5H  H81]@ H;!{ H;{ nLOL9EL9   H9H|  H  AHDH]z H:HHH55  1V1fH9H6  He  AHDH!z H9@ H9H  H=  AHDHy HH5O  H9H11- 1ff.     ff.     HT IHL9uH9~9H)IHr9΃HD2    r1H:    9rH]f.     t     H UHATISHHWH  HBH   HƄt*f.     H|HDuHH/  HDLH=  1HHttI|$(Ht<xIHtPHHHxtUA$x	A$t\HHH[A\]D  H2z     xtO1HH[A\]D  HHUHUfD  LHUHUfD  H5T  $H1         UHATSH  HW HwdH%(   H]HHHHCt9HHH=  1iHUdH+%(   u%H  [A\]fD  H0H=ǰ  17 UHATSH  HW HwdH%(   H]HHHHCt9HHH=z  1HUdH+%(   uH  [A\]fD  H8f     UHAWIAVISHbHu]Cw-IOI9N@ǃH1[A^@A_]nfD  HAv wH[A^A_]    H1[A^A_] U   1HSHHLEH5^  H(dH%(   HU1HE    1҅tYHc{ H}HHtDHEH=$v HU؅uJC     =wxEuHUHHU@ HEdH+%(   u%H]H     C    =vЉ'    UHSH@H   dH%(   HE1HG  E:   HhHHxH<u ǅ`4   HEH/v HEH$HEHق HEH~HEH  H@H`ǅpB   E8   EC   E@   E   E    HE    HǅH0   ǅP   HXH= HHt@HtHH5ӭ  \tHEdH+%(   uDHH]Ë=w߃H=  H] HHt =wUHAWAVATSH0Lg(dH%(   H]H tCMtA$xA$a  HEdH+%(     H0H[A\A^A_]fHKH  HA H.  HpIH  HUHuHEH}HMHE    HE    HE    HE@ ~  H=g L{HMH  HMHH  @     1fInLH@(    EHE@1Hux#uHHE@HEff.     Hw  HUHuHEH}HE      Hu    L HAH   Ht1fD  ff.     H|HDȄuHH/  HDHH5^     1ZH=3 HP Hܪ      I~H5Er H9thCIFH5(r I~HPH9tHUIFHU@ uTI~HfD  H	*     IFHPfD  LHUHuH}Gf1@ HMHMH, H    UH HATISHHt[HSH9tHzH5  uVID$(HC(I\$(=wHp w[A\]    H f.     Hp H5  H81fD  UHH   dH%(   HUH9 HtHEdH+%(   2  H@ H)  HpE4   HEHHEHEHEHo EB   HEHxp HEHe  HpHEEF   E:   E8   E    HE    Hǅx(   E    HEH=| HHtDHt/H5ۨ  HhHhu=w H1 @ H=H  Hh]HhHH Ht =wbfUHATSLgHyI9t$I|$H5`  tH[A\] H{wH[A\]{ff.     UHAVAUATSHdH%(   HE1H  H;=bn HI  L%W~ IM    HCI9   HxH5      H5~ H   HHH   x   L%} M   HCI9tVHxH5  }tBMpH} I\@ H8L]H   H[(H   HCLcI9uM&1HUdH+%(      H[A\A]A^]D  HL%9} MRsH$} I>@ H=  HHH| HHfD  ;Htab    H    M@ H@E    H2HuLI}}ff.     UHAVAUATSHH   IIHtMLv MtGI~(Ht>HH   LhL`@     H@(    HH[A\A]A^] E1H={ H   hHHtLhL`@     H@(    MtMfM   IvL1IHm  H5{ H}  HL)  xH  LMHYk =9HH[A\A]A^]    {H,{ H/@ 1IH   @HHtxIFHULH8  HUIƋx   MtGH5z H   HL   AxAuLff.     AE AE Lf.     A$xA$uL    E1     Hh H=  Hy HhD  I~M_    H H=D  OHy HUH5  HAVAUATSU-vy L0I^  Hx    1D  IދP(   L` H@     MtsI<$HtxN  I|$Htx#  I|$Htx   I|$Htx   LHI;]_H=x Htx   H=x Hx     Htx   H=[x HXx     Htx   H=[x H(x     HUx     Htx   H$x     [A\A]A^] c)fD  SfD  CfD  3fD  #fD  4fD  LfD  o ff.     UHAWAVAUATSHHPw H  H=  HHIHt81HIAxAtHL[A\A]A^A_]Lj1H=  IbH  Hw  LLGIIHt?11L0IHt#HLHA$xA$  MZLL  HJH5  H]H:1HUL,MMM  Aބ   MA     ff.     EZIEtA|uH  M9u.  D  ff.     ff.     M9tAqI@ t3f.     2@ uYff.     ff.     L9t3H t@8u,IYHLL9tbL9t]AqI     @8tEtfAZMJބHH9H]HUHRL9    H)LH)AIM9H]7MEIAE1#Ht HeL"    UHSH(HGdH%(   H]H   t:HuH¸HtH1HUdH+%(   u~H]f.     HH&t Ht1HuHMHE    u<HUHMH    D  HMH}H}HMHHs Hus]fff.     HtwUHHSHHF   t69HHuTWHH   BH]fD  ~H5  HH]1    1D  ɐff.     H  HHHhwHy/ HcH>    UI   L  K   J   1HHWH=q xXHq Zq  fD  fo3 H}q .   )fq fD  Hmq     f)zq )cq vq q  H.q D  fo2 )q fHq )7q Jq  )	q )q %q f.     foX2 Hp d.  )p afo(2 Hsive.   )p f1Hp Hp )p Hp p  )p p     fo1 Horted.  )Op D  fo1 Horted.  )/p D  fo02 H%p ped.)p f     fo1 )o Hlable.  ;ffo1 Ho ted.)o afo1 Hxists.  )o ffoh1 Horted.  )o ffo81 Hmall.   )go ffo0 [ fo0 HMo ed. )6o fo8/  fo/  fox/ Ho ror.)n fo0 Hn .   )n qfo/ Hn ven.)n Qfo/ Hn ady.)n 1fo/ Hsmatch. )wn ffoX. Handle.  )Wn ffoH/ # fo(/ Hserted. )'n {ffo. Hn n.  )n fo.  fo. )m fo. )m f)m )m m x@ fo- Hm fer.)m 1fo(. c fo- H}m y.  )fm fo- Hiven.   )Gm ffoh- Hr given.)'m {ffo8-  fo, + fox-  fo, Hl ul. )l qUHAWIAVAUATSHH   IH tuHlII} tlE111ff.     IUH=  41HLA\$HI$HI;]rIHu%M7H[A\A]A^A_]Ð1IIHtH;W] tEHC   tXLHMtAxAuHL[A\A]A^A_]c xuHKsfD  1yHIHxtIH@ ff.     UHAWAVAUATSHHG      IIH   1fHI9tGHL|H@   uH[ H5  H8E1HL[A\A]A^A_]@    IH   LIFIH   A   E1I^@ LLHMC'IL9ufD  HQ[ H5S  H82d   SIHtH@        L`>HZ H5  H8 HZ H5  H8LfD  HtUHHHuHuHD  H[ H=w        UHAVSHdH%(   HE1HE    H   HF   ttHHHu:HIHeZ HLHxHuHH$HEHUdH+%(   u=H[A^]     &H5  H1 o@ ff.     UHAWAVAUATSHHuH%  IHRHEH   E1E1I~ t        &HH  IFKdE1L$ff.     C4<H=  1LHIHIuH}DHEeMM;frHEHHtZH;Y tKHC      LuHLMt7Ax0Au(H}H[A\A]A^A_]ydHEHMHH[A\A]A^A_]12HEHlHX H5b  H8QHX H5  H86uH1HMHHHxtHEHHdfUHAWAVAUATSHHG     IIHIHL<RIIM9   1MQHI9tGHLH@   uH(W H5B  H8	1HH[A\A]A^A_]D      HH       LpH@    I   H@    E1M~E1ff.     LL%H}C7IM9ut HV H5  H8bTD  HaV H5  H8B4D  L`HCIHmHV H5¢  H8
HBHU H5  H8fH t{UHAWIAVE1AUE1ATSHff.     IGJ(Nd( H5  1H   &L9u
   IIM;wrH[A\A]A^A_]f     UHAWAVAUATSH8HuH  IHc"HEAD$   E1 ff.        KRHHEI$H<HEI$H|[HEI$HHx H!v
H@     1E1II$HHx  t- B|8(LLIHsI$HL;x rH]HU1HtHU   HcL   HSH}LHI E9t$HEHHtVH;rT tGHC   t{LuHLMt7Ax0Au(H}H8[A\A]A^A_]yy*HEHMHH8[A\A]A^A_]1HEtuH:1qHMHHHxtHEHSHff.     UHAWAVAUATSH8HG     IE1IHuDB  f   HH@      HH   IM9  LL8HH@     HHtH~HuH1HH@   mHfR H5  H8GE1H8L[A\A]A^A_]fH9R H5b  H8     HR H5  H8        HH@   HQ H5|  H8p       IH`  DhK\ HHHEIHV  H}HH1tJ<    HEIGHJ  1M   fD  HH   HHEHPHMHHU-HUHMHHuHHU  H}HHHHHHMHAxA   LuȾ   LHHULHBH   HI9(HL1HHEH  H5  H]IHHtHEE1L,LIUI9uH}GL?f.     L7 HO H5Z  H8~D  H}Ⱦ   HjHPIHEIvHx(HUHEHULHP D  HyO H5{  H8ZHNO H5  H8?	H3O H5ܛ  H8$HO H5  H8	LAHN H5  H8H}LUHATISHII$HHt]H;O tDHB   toHHHt;x5u.HH[A\]*f.     yf.     I$H[A\] uH    1HUHuI$H-HUxtI$\ HfD  HG   tf.     UHM H5  H8H1]fHt_UHHAVSHHt7HEH}IH8M LHHH[A^] H1[A^]D  1D  Ht_UHHAVSHHt7HE&H}IHL LHkHH[A^]k H1[A^]D  1D  Ht_UHHAVSH4Ht7HEH}IH(M LHHH[A^] H1[A^]D  1D  UHATISHI$HHt]H;L tDHB   toHH,Ht;x5u.HH[A\]f.     yf.     I$H[A\] uHq    1HUHuI$HHUxtI$\ H(fD  HG   t:f.     UHHK H59  H8H&1]fHt_UHHAVSHHt7HEH}IHK LH[HH[A^][ H1[A^]D  1D  UH   H5L  HAWAVLEATSHPdH%(   HU1Һ   E    HE    HE    HA  H}XIH,  H}HG      IH  H}HH     IHE  HEIIA    M  HsJ H0HHEHSHKPHI LE1IXZLLH}HuHEH{Ht;   H}Ht}   HECD  H5W  H@ ff.     H}HtB}t,1HUdH+%(      He[A\A^A_]f.     H}D  ItA     HH H0f     H	I H0H}/fH [,ff.     UHATISHI$HHt]H;H tDHB   toHHHt;x5u.HH[A\]f.     yf.     I$H[A\] uHa    1HUHuI$HHUxtI$\ HfD  HG   t*f.     UH8G H5  H8HH]fff.     UH   H5  HAWAVLEATSH`dH%(   HU1Һ   E    HE    HE    H   H}HH   H}SIH   1HMLIHF HE  HHE    HuH}H   LHEH}H}HuHEQH}HtC}   HE H}Ht"}tT1HUdH+%(   uaH`[A\A^A_]fD  HEHtEHH`E LHHMX    H}迿D  H}诿qE $ff.     UH      H5  HAWAVATSH0dL%(   LELECH   H}IH   H}IHtsH}HHtbHKHSLIHE LLI(L0H{HtHEξHE;uHHE蹾HE 1HUdH+%(   uH0[A\A^A_]-fff.     UH   H5  HAWAVLEAUATSHXdH%(   HU1Һ   E    HE    HE    H   H}IH   H}IH   H}kHH     IHLLIHEHEHSHE  HKA  PHzC LIXZ˽LӾH}HuHErH{Htd;twH}HtQ}tSHED  H}Ht2}t$1HUdH+%(   u@He[A\A]A^A_]@ H}D  H}D  H|vfD  UH   H5e}  HAWAVLEAUATSHxdH%(   HU1Һ   HE    HE    ǅ|    eH  H}HH   H}H|HuD|   H}Lu跿IH   H}衿H   HhۿLMLELIHB LHHhLHHH}HuHEH}HuA   t]HE1    HYA H5ڏ  H8:A   u	H}h1HUdH+%(   u!Hx[A\A]A^A_]     L8ѻUH      H5{  HAVSH0dL%(   LELEHtjH}蹾HHtYH}hHtJHE詾HHuIH@ LHHEdH+%(   u.H0H[A^]ܻ@ HEdH+%(   uH01[A^]	f     UH      H5{  HAVSH0dL%(   LELEHtjH}HHtYH}蘽HtJHEٽHHuIH @ LHHEdH+%(   u.H0H[A^]@ HEdH+%(   uH01[A^]9f     UHAVSH0dH%(   HE1HE    HtuHHtgHE.HM11IH,? H}LHkHsH}HuHE肽HEHUdH+%(   uH0[A^]fD  1臹    UH   H5y  HAWAVLEATSH0dH%(   HU1Һ   HE    H0  H}׼HH  H}IH  H}茻IH   +IcL$I<$Iǅ~BH4HGHHtH!0HG`H9tD  H!0H!pPH   H9uH= HLHLHH1"HuLHEAD$~'f     ID$H<Ht蝷HA9\$I<$Ht脷I|$HtuLmHE	    1HUdH+%(   uH0[A\A^A_]ݷfff.     UH   H5x  HAWAVLEATSHPdH%(   HU1Һ   HE    H   H}觺HH   H}RIHtyH}@IHtgH}.HtXHEoHMLELIH< LHLH觶H请H}HuHE螶HE
     1HUdH+%(   uHP[A\A^A_]轶fff.     H   UHSHHHHtf詹HHHt~H;<    HA      HHHU葷HUHtKxEu>H]HfD  H; =wHHuff.     HH]    H> t
f     Hi; H=w    xuHHU臵HU롐1HUHM豴HuHH¶HMHUxtHD  HHU4HHU     UHAVATSHhdH%(   HE1HE    E    HE    E    H	  H!IH-   $   HE   IHEHH     HE$   HE    HEH  HHu  HUVHHJ: IHMLELHXZLHH}HuHEԴH}HuH}HuڳHuH}}HuHtH}H7  H9 H   H}HtG}   HEHUdH+%(     He[A\A^] HuHt?H}HtfH8 Ht(H9       H=s  Hط     H}Ht²EtR1z H}觲efH蘲fD  H19       H=vs  Hp H}_1     HuHtH}H4     H(H}H G觲    UHAVAUATSHG   tdI   ǴHH   LHKL`L蟴HCIHtGL˵LLHݴH[A\A]A^]ÐHI7 H5yr  1H8(H[A\A]A^]H7 H5ޅ  H8H6 H5Pr  1H8f.     HtHWHtH5;r     1[     UHAWAVAUATSHLoHuM2  A}  w  LE11    ;A|IL? uQIA}  tILE1E1 ff.     H(DLAHHްA\IL; uHEHHtbH;[6 tIHC      LHMt?Ax8Au0HL[A\A]A^A_]c y*f.     HEL0H[A\A]A^A_]f.     uH!    1QIKf     19HMHHHGxtHEH6fD  1H蹯    UHAWAVSHHdH%(   HE1HE    E    H  H@HH   迲1HUHIH4 HE    HE    HE    HuH}H   LHEԮH}ۯHuH}HE蚯HuHtH}HD  H4 H   }   HEHUdH+%(   (  HH[A^A_]fD  HuHt7H}Ht~H3 Ht H4       H= o  H}~   1f軰HEH   HH3 HUHfD  H}藭JfH舭fD  H!4       H=n  H`	 H}O1     HuH]H}H@ H}i褭 Zf.     UHAWAVAUATSH(HG     IIH  1E1    H@MdHCI9tVHHLرHP   uHD2 H5m  H8%HE    HEH([A\A]A^A_]f.        &HEH  L}ID$HEA   IG    HHEH@    f     HخIGIH.  LeE1J    LPHHEMtL9HIBHt
HL)H9HBI)II9   ILLʰHk  H5k  HDHtHHE胯HLHL茮HMf[H蛫NfD  H0 H5j  H8身D  L   H5  Lw   躭HEHt;HE    H@    Hc0 H5}  H8TH}苪!H?0 H5|  H80ff.     UH   H5k  HAWAVLEAUATSHhdH%(   HU1Һ   E    HE     HG  H}NIH2  H}	HH  踭Ls1HMIH/ HE    LHE    LHE    HuH}H*  LHxéHxǪHuH}HE膪HsHt=H{H(  H/ Ht"H/       H=bj  H"f;g  HuHt>H}H   H. Ht#H/       H=j  Hӭ }   HE0HuHtH}H   H[. H   }tZ1HUdH+%(      Hh[A\A]A^A_]fD  SHEH   HH4. LLHM H}/D  H  H; H.       H=(i  HK Hا}<@ H}迧f.     H訧> @ UHAUATSHLoA}  tBLE1 ff.     HH5h     1說HҧA\IL; uH
   [A\A]]. ff.      fD  UH   H5mh  HAWAVLEAUATSHXdH%(   HU1Һ   HE    E    HE    E    葱H   H}ߪHH   H}HUHuDe   H}HUHuLmMMuWLuHLLI蝧LHbHjA      }   uVLHEHEDfH+ H5z  H8蚦A   uLɥ}   uH}跥    1HUdH+%(   uTHX[A\A]A^A_]HY+ H5:z  H8:A   uH}hfD  LHETHE>fD   fD  UH   H5f  HAWAVLEATSH@dH%(   HU1Һ   E    HE    үH   H} HH   H}HUHu#DeuSLu肨HLI4LHɤHѥA   tPHUdH+%(   uSH@[A\A^A_]@ H!* H5y  H8A   u	H}01@ LHEHE豤 fD  UH   H5e  HAWAVLEATSH@dH%(   HU1Һ   E    HE    袮H   H}HH   H}HUHuDeuSLuRHLIdLH虣H衤A   tPHUdH+%(   uSH@[A\A^A_]@ H( H5x  H8ңA   u	H} 1@ LHEHE聣 fD  UH   H5d  HAWAVLEAUATSHXdH%(   HU1Һ   HE    E    HE    E    aH   H}详HH   H}HUHuDe   H}HUHuLmMMuWLuHLLI]LH2H:A      }   uVLHEȡHEDfH' H5w  H8jA   uL虡}   uH}臡    1HUdH+%(   uTHX[A\A]A^A_]H)' H5w  H8
A   uH}8fD  LHE$HE>趡fD   fD  UH   H5b  HAWAVLEAUATSHXdH%(   HU1Һ   HE    E    HE    E    葫H   H}ߤHH   H}HUHuDe   H}HUHuLmMMuWLuHLLI譡LHbHjA      }   uVLHEHEDfH% H5jv  H8蚠A   uLɟ}   uH}跟    1HUdH+%(   uTHX[A\A]A^A_]HY% H5u  H8:A   uH}hfD  LHETHE>fD  f=%  uH% f.     UHSH   H=`  HH  H5`  HH%     HT% H輞HtHH`  H5u  1   
H5`  H転H<$ H|HtHH`  H5Fu  1   ʡH5_  H{H|$ H<HtHH^  H5u  1   芡H5^  H;H4$ HHtHH^  H5t  1   JH5^  HH$ H輝HtHH^  H5t  1   
H5_  H軡H# H|HtHH_  H5Ft  1   ʠH5=^  H{H" H<HtHH^  H5t  1   芠H5^  H;H" HHtHHm^  H5s  1   JH5$_  HH" H輜HtHH^  H5s  1   
H5]  H軠H" H|HtHHl]  H5Fs  1   ʟH5^  H{H" H<HtHH^  H5s  1   芟H5^  H;H" HHtHHh^  H5r  1   JH5S\  HH! H輛HtHH-\  H5r  1   
H5^  H軟H! H|H5!\  H蝟HV! H^HtHH[  H5(r  1   謞H5]  H]H  HH5[  H?H  H HtHH[  H5q  1   NH5t[  HH`! HHtHHN[  H5q  1   H5G]  H连H! H5@]  HH覞H  H56]  HH荞H.  HNHtHHG\  H5@q  1   蜝1H]f  H  fD  HtHH\  H5\  1   Y    UHAWAVAUATSHHdH%(   HE1H=/  +  H=/  ,  H=/  +  mH=/  +  H=)  L-) u9  f     I I}  !  M}MtH58\  LɞIHtH
/ tLeMt$
HfD  C0H0tLcL虙LLHu׃;uLC MuHC(H*. H]LEH)HX( L)LI9LMEHK
LdHELHM茛IH HLLH菚ML9I<LC
   H5L[  LH)HHEcHMH]L  HLMLEI9HICL)I1LEG
_LLMHH9HBH)HDI9HICHH)HH9HBHH)HHWff.     A	LL9HCAAHH)HH9HBH)IIH\AAGI9uHHuLeHPII9rHuHLdMuI I}    H=D& E1̙L-% HI*H=%  H(  1H=i  ;I胙H"(  LMu(  fff.     H@L9&  L9u, L%,    Lu      Mt$ M  ID$(Ml$H HECHIHtWLKHH>)  LLLQMo fHnEAGIt$LHAxAl  AD$0I0t0VID$(I|$ H0褯IHuAD$0I0uLu11H=X  kH HHtHH5X  HzE1ޖH5X  HIHYA$xA$+%     誖H5wX  HIH%A$xA$$     vH5XX  HIHA$xA$$     BH57X  HIH轔A$xA$h$     H5X  HIH艔A$xA$'$     ڕH5W  HIHUA$xA$#  1評H5W  HIH$A$xA$#     uH5W  HIHA$xA$g#     AH5W  HIH輓A$xA$&#     H5sW  HIH舓A$xA$"  1ܔH5SW  HIHWA$xA$"     訔H53W  HIH#A$xA$f"     tH5W  HIHA$xA$%"     @H5V  HIH軒A$xA$!     H5V  HIH臒A$xA$!     ؓH5V  HIHSA$xA$b!      褓H5V  HIHA$xA$!!  @   pH5tV  HIHA$xA$      <H5UV  HIH跑A$xA$      H57V  HIH胑A$xA$^      ԒH5V  HIHOA$xA$      蠒H5U  HIHA$xA$  1oH5U  HIHA$xA$     ;H5U  HIH趐A$xA$]     H5U  HIH肐A$xA$     ӑH5tU  HIHNA$xA$     蟑H5SU  HIHA$xA$     kH52U  HIHA$xA$Y  1:H5U  HIH赏A$xA$  1	H5T  HIH脏A$xA$     ՐH5T  HIHPA$xA$     衐H5T  HIHA$xA$[     mH5T  HIHA$xA$     9H5yT  HIH贎A$xA$     H5RT  HIH耎A$xA$    яH5,T  HIHLA$xA$W   蝏H5T  HIHA$xA$   iH5S  HIHA$xA$   5H5e  HIH谍A$xA$   H5S  HIH|A$xA$S    ͎H5d  HIHHA$xA$  ! 虎H5ZS  HIHA$xA$  " eH5=S  HIHA$xA$  # 1H5S  HIH謌A$xA$O  $ H5S  HIHxA$xA$  % ɍH5R  HIHDA$xA$  & 蕍H5c  HIHA$xA$  1 aH5R  HIH܋A$xA$K  @ -H5^c  HIH訋A$xA$
  B H5Rc  HIHtA$xA$  P ŌH5R  HIH@A$xA$   葌H5c  HIHA$xA$G   ]H5Q  HIH؊A$xA$   )H5Q  HIH褊A$xA$   H5Q  HIHpA$xA$   H5pQ  HIH<A$xA$C   荋H5QQ  HIHA$xA$   YH52Q  HIHԉA$xA$   %H5Q  HIH蠉A$xA$  	 H5P  HIHlA$xA$?  
 轊H5P  HIH8A$xA$   艊H52a  HIHA$xA$   UH5P  HIHЈA$xA$|   	 !H5pP  HIH蜈A$xA$;  	 H5`  HIHhA$xA$  	 蹉H5 P  HIH4A$xA$  	 腉H5P  HIH A$xA$x  	 QH5O  HIḢA$xA$7    H5O  HIH蘇A$xA$   H5O  HIHdA$xA$   赈H5O  HIH0A$xA$t   聈H5|O  HIHA$xA$3   MH5\O  HIHȆA$xA$   H5?O  HIH蔆A$xA$   H5^  HIH`A$xA$p   豇H5^  HIH,A$xA$/   }H5^  HIHA$xA$   IH5^  HIHąA$xA$   H5^  HIH萅A$xA$l   H5^  HIH\A$xA$+   譆H5M  HIH(A$xA$  1|H5M  HIHA$xA$   HH5M  HIHÄA$xA$k   H5M  HIH菄A$xA$*   H5vM  HIH[A$xA$   謅H5YM  HIH'A$xA$   xH5?M  HIHA$xA$g   DH5"M  HIH迃A$xA$&   H5 M  HIH苃A$xA$   ܄H5L  HIHWA$xA$  	 訄H5L  HIH#A$xA$c  
 tH5L  HIHA$xA$"   @H5L  HIH軂A$xA$   H5qL  HIH臂A$xA$   ؃H5RL  HIHSA$xA$_   褃H53L  HIHA$xA$   pH5L  HIHA$xA$   <H5K  HIH跁A$xA$   H5K  HIH胁A$xA$[   ԂH5K  HIHOA$xA$   蠂H5K  HIHA$xA$   lH5{K  HIHA$xA$   8H5]K  HIH賀A$xA$W   H5=K  HIHA$xA$   ЁH5 K  HIHKA$xA$
   蜁H5K  HIHA$xA$
   hH5J  HIHA$xA$S
   4H5J  HIHA$xA$
    H5J  HIH{A$xA$	   ̀H5J  HIHGA$xA$	   蘀H5yJ  HIHA$xA$O	  . dH5]J  HIH~A$xA$	   0H5FJ  HIH~A$xA$  e H5.J  HIHw~A$xA$  f H5J  HIHC~A$xA$K  g H5I  HIH~A$xA$
  h `H5I  HIH}A$xA$  i ,H5I  HIH}A$xA$  j ~H5I  HIHs}A$xA$G  k ~H5I  HIH?}A$xA$  l ~H5aI  HIH}A$xA$  m \~H5AI  HIH|A$xA$  n (~H5I  HIH|A$xA$C  o }H5U  HIHo|A$xA$   }H5H  HIH;|A$xA$    }H5H  HIH|A$xA$  ! X}H5H  HIH{A$xA$?  # $}H5sH  HIH{A$xA$  $ |H5UH  HIHk{A$xA$  % |H58H  HIH7{A$xA$|  & |H5H  HIH{A$xA$;  ' T|H5G  HIHzA$xA$  (  |H5G  HIHzA$xA$  ) {H5G  HIHgzA$xA$x  * {H5G  HIH3zA$xA$7  + {H5mG  HIHyA$xA$  , P{H5QG  HIHyA$xA$  - {H5R  HIHyA$xA$t  / zH5G  HIHcyA$xA$3  0 zH5F  HIH/yA$xA$  1 zH5F  HIHxA$xA$   LzH5A  HIHxA$xA$V   zH5}F  HIHxA$xA$  yH5ZF  HIH_xA$xA$"  H9F     H==F  R{H5:F  HIHxA$xA$   HE     H=F  {H5F  HIHwA$x	A$tWHEdH+%(   
  HHL[A\A]A^A_]D  L  A =wA MrLxLxLxLwLw\LwLw LwLwLwLw>LwLwLrw{Lew:LXwLKwL>wwL1w6L$wLwL
wsLv2LvLvLvoLv.LvLvLvkLv*LvL{vLnvgLav&LTvLGvL:vcL-v"L vLvLv_LuLuLuLu[LuLuLuLuWLuLuLwuLjuSL]uLPuLCuL6uOL)uLuLuLuKLt
LtLtLtGLt	LtLtLtFLtLtLstLftBLYtLLtL?tL2t>L%tLtLt{Ls:LsLsLswLs6LsLsLssLs2LsL|sLosoLbs.LUsLHsL;skL.s*L!sLsLsgLr&LrLrLrcLr"LrLrLr_LrLrLxrLkr[L^rLQrLDrL7rWL*rLrLrLrYLqLqLqLqULqLqLqLqTLqLqLtqLgqPLZqLMqL@qL3qLL&qLqLqLpKLpLpLpLpJLp	Lp@ HPH  LhERL  H  M  H  L%  HMLEHELuH]1D  IEHHEL8M9t,ILL>yHtIW HtHP If     HEL4IHuPufD  HLLxHt:HML99   H8LMxHtIF I Ht2ff.     M9uIGHtLpIFMwIF I HuHEL<HH;]#HMLuHH]H        I pH H/  H,H5@  LHM)sIHtH}HH5q1  jr   ANABLn5fD  H  fInA   H  H  fHnfl)  
~qH ҃H=2  eo~H  TH=+-  GnH  H	H=X-  cqH  L= kH=,  mH HHt =LHȉH5Q?  qHHmLnm   HH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               %   [      	       @  $@C
 $r( 	b%H@"
I   	@ H(  @([       \   ]   ^   `   a       d   g   m       p   q   s   u       v       w   x       z       {       |       ~                             5㿡)_!1|];$jIQb	ubD//*]mPCB?JJqx_SzЧ'ߋ<U\]h0LEM_HN	9'#xqcQ5ir2$O4]ao'G%>Ku
18B`UɒQF=v-k*I                                                                                                                  &
                     	                                                               	                                            <                                                                                    n                                          )                     S                                           U                                                                 y                                                                                                                               ;
                                          ^                                                                	                                                                                                           e                                                                                                                               O                     
                     a                                                               :                     L                     _
                     y                                           1                                          J                                                                                                                                                     :                     o                                          :                     	                                                               ,                     h                     I                                                                                                                               
                     ,                                                                                      W                     =                     F   "                                        	                     y                     |                         0X      )       ;                    0A      >       J    ;      `      e    P4      I       1	                    PW                 (                5                Ȝ                                @@             	    `o      ,      r	    d      
                           2      z                       E	    a      r       u    B             8    @S      h          8            Q                    p1      Q      '                    9            [                	    j      I          `X            N
                 	    `\            '    0                                09                                 C      >       a	    @b      
                       	    @e      
           p7            	    @h      
                                           ؜            _                    М            9    F             j                c    G      C                       	    pf      
        __gmon_start__ _ITM_deregisterTMCloneTable _ITM_registerTMCloneTable __cxa_finalize PyExc_TypeError PyExc_OverflowError _Py_NoneStruct strcmp PyExc_SystemError PyErr_SetString PyLong_Type PyBool_Type PyErr_Format __assert_fail PyLong_FromVoidPtr PyUnicode_FromFormat PyUnicode_Concat _Py_Dealloc __stack_chk_fail PyUnicode_FromString PyErr_Occurred PyBool_FromLong _Py_NotImplementedStruct PyArg_UnpackTuple PyObject_IsTrue PyObject_GenericGetAttr PyType_FromSpec PyModule_AddObject PyImport_AddModule PyObject_Free PyErr_Fetch _PyObject_New PyObject_CallFunctionObjArgs PyErr_Restore __printf_chk PyCFunction_Type PyType_IsSubtype PyErr_WriteUnraisable free PyObject_GetAttr PyErr_Clear PyObject_Call PyObject_SetAttr PyTuple_New PyDict_New PyType_Modified PyCapsule_GetPointer PyDict_GetItem PyCapsule_Import PyCapsule_New PyDict_SetItem PyUnicode_AsUTF8AndSize PyLong_AsLong PyEval_SaveThread PyEval_RestoreThread PyLong_FromLong __snprintf_chk SCardHelper_AppendByteListToPyObject PyList_New Py_BuildValue PyList_SetItem PyList_Append SCardHelper_PyByteListToBYTELIST PyList_Size PyList_GetItem malloc PyExc_MemoryError SCardHelper_OutErrorStringAsPyObject myPcscStringifyError strdup SCardHelper_AppendGuidListToPyObject SCardHelper_PyGuidListToGUIDLIST SCardHelper_PrintGuidList putchar SCardHelper_AppendReaderStateListToPyObject PyTuple_SetItem SCardHelper_PyReaderStateListToREADERSTATELIST PyTuple_GetItem PyTuple_Size __memset_chk PyBytes_AsString strlen __memcpy_chk PyUnicode_AsEncodedString memcpy SCardHelper_AppendSCardContextToPyObject SCardHelper_PyScardContextToSCARDCONTEXT mySCardIsValidContext mySCardCancel mySCardReleaseContext SCardHelper_AppendSCardHandleToPyObject SCardHelper_PyScardHandleToSCARDHANDLE mySCardBeginTransaction PyLong_AsUnsignedLong myg_prgSCardT0Pci mySCardTransmit myg_prgSCardRawPci myg_prgSCardT1Pci SCardHelper_AppendSCardDwordArgToPyObject SCardHelper_PySCardDwordArgToSCARDDWORDARG mySCardGetAttrib mySCardSetAttrib mySCardControl mySCardConnectA mySCardDisconnect mySCardEndTransaction mySCardEstablishContext mySCardGetStatusChangeA mySCardReconnect SCardHelper_AppendStringToPyObject mySCardStatusA mySCardFreeMemory stderr fwrite SCardHelper_PyStringToString __strcpy_chk SCardHelper_PrintString SCardHelper_AppendStringListToPyObject mySCardListReaderGroupsA SCardHelper_PyStringListToStringList mySCardListReadersA SCardHelper_PrintStringList _IntroduceReader _IntroduceReaderGroup _ForgetReaderGroup _AddReaderToGroup _RemoveReaderFromGroup winscard_init dlerror dlopen dlsym PyInit__scard strstr strncmp PyModule_Create2 PyModule_GetDict PyDict_SetItemString PyErr_NewException PyExc_SCardError PyUnicode_DecodeUTF8 libc.so.6 GLIBC_ABI_DT_RELR GLIBC_2.14 GLIBC_2.4 GLIBC_2.2.5 GLIBC_2.34 GLIBC_2.3.4                                                                                                                                                       t
         B    ~
        
     ii   
     ui	   
        
     ti	   
      Ў                   ؎                           \                   
                                      p                                                                             b                               (                   0        |           8        `           @        d           H        $           P        i           X        &           `        '           h                   p                   x        e                   5                                      y                   ;                   =                   r                                      w                   t           ȏ        o           Џ        z           ؏        k                   P                   T                   V                   Z           Ћ                   ؋                                                                                                                           	                                                                     (        m           0                   8                   @                   H                   P        u           X                   `                   h                   p                   x        q                                      v                   n                                                                            ~                                                 Ȍ        h           Ќ                   ،                                                                  !                   "                    #                   %                   s                   (                    )           (        *           0        +           8        ,           @        -           H        .           P        /           X        0           `        1           h        2           p        3           x        4                   6                   x                   ^                   7                   8                   9                   :                   <                              ȍ        >           Ѝ        ?           ؍        @                   }                   A                   B                                       C                   D                   E                   F                    ]           (                   0        f           8        j           @        G           H        H           P        I           X        J           `        K           h        L           p        M           x        N                   O                   Q                   R                   S                   U                   V                   W                   X                   _           Ȏ        Y                            	 wwwwwww.  at least  at most  Py_TYPE(ob) != &PyLong_Type Py_TYPE(ob) != &PyBool_Type unknown <Swig Packed at %s%s> <Swig Packed %s> %s%s swig_runtime_data4 SwigPyObject PyCFunction_Check(func) PyCFunction_Check(func_obj) SwigPyPacked this _p_char Unknown error: %ld, 0x%08lx Expected a list object. Expected a list of bytes. Unable to allocate GUID list Invalid GUID list size. 0x%.2X  Expected a list of tuples. strict ASCII SCardTransmit SCardGetAttrib SCardSetAttrib SCardControl SCardConnect SCardDisconnect SCardEndTransaction SCardGetStatusChange SCardReconnect kaboom!
 Expected a string. Unable to allocate STRING %s  Failed to SCardFreeMemory!
 Expected a list of strings. SCardListReaders SCardIntroduceReader SCardIntroduceReaderGroup SCardForgetReaderGroup SCardAddReaderToGroup SCardRemoveReaderFromGroup libpcsclite.so.1 SCardBeginTransaction SCardCancel SCardEstablishContext SCardListReaderGroups SCardReleaseContext SCardStatus pcsc_stringify_error SCardIsValidContext g_rgSCardT0Pci g_rgSCardT1Pci g_rgSCardRawPci Failed to dlopen %s: %s! swig_ptr:  type_pointer_capsule scard.error SCARD_SCOPE_USER SCARD_SCOPE_TERMINAL SCARD_SCOPE_SYSTEM SCARD_SHARE_SHARED SCARD_SHARE_EXCLUSIVE SCARD_SHARE_DIRECT SCARD_LEAVE_CARD SCARD_RESET_CARD SCARD_UNPOWER_CARD SCARD_EJECT_CARD SCARD_STATE_UNAWARE SCARD_STATE_IGNORE SCARD_STATE_CHANGED SCARD_STATE_UNKNOWN SCARD_STATE_UNAVAILABLE SCARD_STATE_EMPTY SCARD_STATE_PRESENT SCARD_STATE_ATRMATCH SCARD_STATE_EXCLUSIVE SCARD_STATE_INUSE SCARD_STATE_MUTE SCARD_STATE_UNPOWERED SCARD_PROTOCOL_UNSET SCARD_PROTOCOL_T0 SCARD_PROTOCOL_T1 SCARD_PROTOCOL_RAW SCARD_PROTOCOL_T15 SCARD_PROTOCOL_ANY SCARD_PROTOCOL_UNDEFINED SCARD_PROTOCOL_OPTIMAL SCARD_PROTOCOL_Tx SCARD_PROTOCOL_DEFAULT SCARD_PCI_T0 SCARD_PCI_T1 SCARD_PCI_RAW SCARD_ATTR_VENDOR_NAME SCARD_ATTR_VENDOR_IFD_TYPE SCARD_ATTR_VENDOR_IFD_VERSION SCARD_ATTR_CHANNEL_ID SCARD_ATTR_DEFAULT_CLK SCARD_ATTR_MAX_CLK SCARD_ATTR_DEFAULT_DATA_RATE SCARD_ATTR_MAX_DATA_RATE SCARD_ATTR_MAX_IFSD SCARD_ATTR_POWER_MGMT_SUPPORT SCARD_ATTR_CHARACTERISTICS SCARD_ATTR_CURRENT_CLK SCARD_ATTR_CURRENT_F SCARD_ATTR_CURRENT_D SCARD_ATTR_CURRENT_N SCARD_ATTR_CURRENT_W SCARD_ATTR_CURRENT_IFSC SCARD_ATTR_CURRENT_IFSD SCARD_ATTR_CURRENT_BWT SCARD_ATTR_CURRENT_CWT SCARD_ATTR_EXTENDED_BWT SCARD_ATTR_ICC_PRESENCE SCARD_ATTR_CURRENT_IO_STATE SCARD_ATTR_ATR_STRING SCARD_ATTR_ICC_TYPE_PER_ATR SCARD_ATTR_ESC_RESET SCARD_ATTR_ESC_CANCEL SCARD_ATTR_ESC_AUTHREQUEST SCARD_ATTR_MAXINPUT SCARD_ATTR_DEVICE_UNIT SCARD_ATTR_DEVICE_IN_USE SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_S_SUCCESS SCARD_F_INTERNAL_ERROR SCARD_E_CANCELLED SCARD_E_INVALID_HANDLE SCARD_E_INVALID_PARAMETER SCARD_E_INVALID_TARGET SCARD_E_NO_MEMORY SCARD_F_WAITED_TOO_LONG SCARD_E_INSUFFICIENT_BUFFER SCARD_E_UNKNOWN_READER SCARD_E_TIMEOUT SCARD_E_SHARING_VIOLATION SCARD_E_NO_SMARTCARD SCARD_E_UNKNOWN_CARD SCARD_E_CANT_DISPOSE SCARD_E_PROTO_MISMATCH SCARD_E_NOT_READY SCARD_E_INVALID_VALUE SCARD_E_SYSTEM_CANCELLED SCARD_F_COMM_ERROR SCARD_F_UNKNOWN_ERROR SCARD_E_INVALID_ATR SCARD_E_NOT_TRANSACTED SCARD_E_READER_UNAVAILABLE SCARD_E_PCI_TOO_SMALL SCARD_E_READER_UNSUPPORTED SCARD_E_DUPLICATE_READER SCARD_E_CARD_UNSUPPORTED SCARD_E_NO_SERVICE SCARD_E_SERVICE_STOPPED SCARD_E_NO_READERS_AVAILABLE SCARD_E_UNSUPPORTED_FEATURE SCARD_W_UNSUPPORTED_CARD SCARD_W_UNRESPONSIVE_CARD SCARD_W_UNPOWERED_CARD SCARD_W_RESET_CARD SCARD_W_REMOVED_CARD SCARD_W_SECURITY_VIOLATION SCARD_W_WRONG_CHV SCARD_W_CHV_BLOCKED SCARD_W_EOF SCARD_W_CANCELLED_BY_USER SCARD_E_UNEXPECTED SCARD_E_ICC_INSTALLATION SCARD_E_ICC_CREATEORDER SCARD_E_DIR_NOT_FOUND SCARD_E_FILE_NOT_FOUND SCARD_E_NO_DIR SCARD_E_NO_FILE SCARD_E_NO_ACCESS SCARD_E_WRITE_TOO_MANY SCARD_E_BAD_SEEK SCARD_E_INVALID_CHV SCARD_E_UNKNOWN_RES_MNG SCARD_E_NO_SUCH_CERTIFICATE SCARD_E_COMM_DATA_LOST SCARD_E_NO_KEY_CONTAINER SCARD_E_SERVER_TOO_BUSY SCARD_P_SHUTDOWN INFINITE surrogateescape pcsclite resourceManager pcsclite-linux resourceManagerSubType char * _p_StateType StateType *|enum StateType * _p_ShareType ShareType *|enum ShareType * _p_ScopeType ScopeType *|enum ScopeType * _p_STRINGLIST STRINGLIST * _p_STRING STRING * _p_SCARDHANDLE SCARDHANDLE * _p_SCARDDWORDARG SCARDDWORDARG * _p_SCARDCONTEXT SCARDCONTEXT * _p_READERSTATELIST READERSTATELIST * _p_ProtocolType _p_DispositionType _p_BYTELIST BYTELIST * _p_AttributeType _scard SCARD_CTL_CODE SCardGetErrorMessage disown acquire append appends another 'this' object next __repr__ returns object representation %s expected %s%d arguments, got none            UnpackTuple() argument list is not a tuple      /usr/include/python3.14/object.h        %s expected %s%d arguments, got %d      <Swig Object of type '%s' at %p>        swig_runtime_data4.SwigPyObject /usr/include/python3.14/cpython/methodobject.h  swig/python detected a memory leak of type '%s', no destructor found.
  Attempt to append a non SwigPyObject    swig_runtime_data4.SwigPyPacked src/smartcard/scard/scard_wrap.c        swig_runtime_data4.type_pointer_capsule in method 'SCARD_CTL_CODE', argument 1 of type 'long'   Unable to allocate temporary array      in method 'SCardGetErrorMessage', argument 1 of type 'long'     Unable to allocate GUID item list       Expecting two or three items in tuple.  Expected a string as reader name.       Expected an Int as second tuple item.   Expected a list as third tuple item.    Expected a python long as SCARDCONTEXT. Expected a python long as SCARDHANDLE.  in method 'SCardTransmit', argument 2 of type 'unsigned long'   Expected a python integer or long.      in method 'SCardConnect', argument 2 of type 'char *'   Unable to allocate STRING buffer        in method 'SCardIntroduceReader', argument 2 of type 'char *'   in method 'SCardIntroduceReader', argument 3 of type 'char *'   in method 'SCardIntroduceReaderGroup', argument 2 of type 'char *'      in method 'SCardForgetReaderGroup', argument 2 of type 'char *' in method 'SCardAddReaderToGroup', argument 2 of type 'char *'  in method 'SCardAddReaderToGroup', argument 3 of type 'char *'  in method 'SCardRemoveReaderFromGroup', argument 2 of type 'char *'     in method 'SCardRemoveReaderFromGroup', argument 3 of type 'char *'     Failed to load symbol for: %s, %s!
     Failed to load symbol address from %s: %s!      SCARD_ATTR_VENDOR_IFD_SERIAL_NO SCARD_ATTR_ASYNC_PROTOCOL_TYPES SCARD_ATTR_SYNC_PROTOCOL_TYPES  SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE     SCARD_ATTR_USER_AUTH_INPUT_DEVICE       SCARD_ATTR_CURRENT_PROTOCOL_TYPE        SCARD_ATTR_CURRENT_EBC_ENCODING SCARD_ATTR_ICC_INTERFACE_STATUS SCARD_ATTR_DEVICE_FRIENDLY_NAME_A       SCARD_ATTR_DEVICE_SYSTEM_NAME_A SCARD_ATTR_DEVICE_FRIENDLY_NAME_W       SCARD_ATTR_DEVICE_SYSTEM_NAME_W SCARD_ATTR_SUPRESS_T1_IFS_REQUEST       SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_W_CARD_NOT_AUTHENTICATED  SCARD_E_CERTIFICATE_UNAVAILABLE ProtocolType *|enum ProtocolType *      DispositionType *|enum DispositionType *        AttributeType *|enum AttributeType *    
SCardAddReaderToGroup( hcontext,  readername,  groupname) -> SCARDRETCODE

adds a reader to a reader group

Windows only, not supported by PCSC lite wrapper.

example:

>>> from smartcard.scard import *
>>> ... establish context ...
>>> newgroup = 'SCard$MyOwnGroup'
>>> reader = 'SchlumbergerSema Reflex USB v.2 0'
>>> readeralias = 'SchlumbergerSema Reflex USB v.2 0 alias'
>>> hresult = SCardIntroduceReader(hcontext, readeralias, reader])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to introduce reader: ' +
>>>     SCardGetErrorMessage(hresult))
>>>
>>> hresult = SCardAddReaderToGroup(hcontext, readeralias, newgroup)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to add reader to group: ' +
>>>     SCardGetErrorMessage(hresult))
...

     
SCardIntroduceReader( hcontext,  readername,  devicename) -> SCARDRETCODE

Introduces a reader to the smart card subsystem.

Windows only, not supported by PCSC lite wrapper.

>>> from smartcard.scard import *
>>> ...
>>> dummyreader = readers[0] + ' dummy'
>>> hresult = SCardIntroduceReader(hcontext, dummyreader, readers[0])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to introduce reader: ' + dummyreader + ' : '
>>>     + SCardGetErrorMessage(hresult))
...

     
SCardIntroduceReaderGroup( hcontext,  groupname) -> SCARDRETCODE

Introduces a reader group to the smart card subsystem. However, the
reader group is not created until the group is specified when adding
a reader to the smart card database.

Windows only, not supported by PCSC lite wrapper.

>>> from smartcard.scard import *
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> hresult = SCardIntroduceReaderGroup(hcontext, 'SCard$MyOwnGroup')
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to introduce reader group: ' +
>>>     SCardGetErrorMessage(hresult))
>>> hresult = SCardAddReaderToGroup(hcontext, 'SchlumbergerSema Reflex USB v.2 0', 'SCard$MyOwnGroup')
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to add reader to group: ' +
>>>     SCardGetErrorMessage(hresult))

    
SCardForgetReaderGroup( hcontext,  groupname) -> SCARDRETCODE

Removes a previously introduced smart card reader group from the smart
card subsystem. Although this function automatically clears all readers
from the group, it does not affect the existence of the individual readers
in the database.

Windows only, not supported by PCSC lite wrapper.

>>> from smartcard.scard import *
>>> ... establish context ...
>>> ...
>>> hresult = SCardForgetReaderGroup(hcontext, newgroup)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to forget reader group: ' +
>>>     SCardGetErrorMessage(hresult))
...

 
SCardRemoveReaderFromGroup( hcontext,  readername,  groupname) -> SCARDRETCODE


Removes a reader from an existing reader group.  This function has no
affect on the reader.

Windows only, not supported by PCSC lite wrapper.

>>> from smartcard.scard import *
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> hresult = SCardRemoveReaderFromGroup(hcontext, 'SchlumbergerSema Reflex USB v.2 0', 'SCard$MyOwnGroup')
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise error('Unable to remove reader from group: ' +
>>>     SCardGetErrorMessage(hresult))
...

    
SCardIsValidContext( hcontext) -> SCARDRETCODE

This function determines whether a smart card context handle is still
valid.  After a smart card context handle has been set by
L{SCardEstablishContext()}, it may become not valid if the resource manager
service has been shut down.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # valid context?
>>> hresult = SCardIsValidContext(hcontext)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

  
SCardGetAttrib( hcard,  dwAttrId) -> SCARDRETCODE

This function get an attribute from the IFD Handler.

The possible attributes are::
    ======================================== ======= =======
    Attribute                                Windows  PCSC
                                                      lite
    ======================================== ======= =======
    SCARD_ATTR_ASYNC_PROTOCOL_TYPES                     Y
    SCARD_ATTR_ATR_STRING                       Y       Y
    SCARD_ATTR_CHANNEL_ID                       Y       Y
    SCARD_ATTR_CHARACTERISTICS                  Y       Y
    SCARD_ATTR_CURRENT_BWT                      Y       Y
    SCARD_ATTR_CURRENT_CLK                      Y       Y
    SCARD_ATTR_CURRENT_CWT                      Y       Y
    SCARD_ATTR_CURRENT_D                        Y       Y
    SCARD_ATTR_CURRENT_EBC_ENCODING             Y       Y
    SCARD_ATTR_CURRENT_F                        Y       Y
    SCARD_ATTR_CURRENT_IFSC                     Y       Y
    SCARD_ATTR_CURRENT_IFSD                     Y       Y
    SCARD_ATTR_CURRENT_IO_STATE                 Y       Y
    SCARD_ATTR_CURRENT_N                        Y       Y
    SCARD_ATTR_CURRENT_PROTOCOL_TYPE            Y       Y
    SCARD_ATTR_CURRENT_W                        Y       Y
    SCARD_ATTR_DEFAULT_CLK                      Y       Y
    SCARD_ATTR_DEFAULT_DATA_RATE                Y       Y
    SCARD_ATTR_DEVICE_FRIENDLY_NAME_A           Y       Y
    SCARD_ATTR_DEVICE_FRIENDLY_NAME_W           Y       Y
    SCARD_ATTR_DEVICE_IN_USE                    Y       Y
    SCARD_ATTR_DEVICE_SYSTEM_NAME_A             Y       Y
    SCARD_ATTR_DEVICE_SYSTEM_NAME_W             Y       Y
    SCARD_ATTR_DEVICE_UNIT                      Y       Y
    SCARD_ATTR_ESC_AUTHREQUEST                  Y       Y
    SCARD_ATTR_ESC_CANCEL                       Y       Y
    SCARD_ATTR_ESC_RESET                        Y       Y
    SCARD_ATTR_EXTENDED_BWT                     Y       Y
    SCARD_ATTR_ICC_INTERFACE_STATUS             Y       Y
    SCARD_ATTR_ICC_PRESENCE                     Y       Y
    SCARD_ATTR_ICC_TYPE_PER_ATR                 Y       Y
    SCARD_ATTR_MAXINPUT                         Y       Y
    SCARD_ATTR_MAX_CLK                          Y       Y
    SCARD_ATTR_MAX_DATA_RATE                    Y       Y
    SCARD_ATTR_MAX_IFSD                         Y       Y
    SCARD_ATTR_POWER_MGMT_SUPPORT               Y       Y
    SCARD_ATTR_SUPRESS_T1_IFS_REQUEST           Y       Y
    SCARD_ATTR_SYNC_PROTOCOL_TYPES                      Y
    SCARD_ATTR_USER_AUTH_INPUT_DEVICE           Y       Y
    SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE         Y       Y
    SCARD_ATTR_VENDOR_IFD_SERIAL_NO             Y       Y
    SCARD_ATTR_VENDOR_IFD_TYPE                  Y       Y
    SCARD_ATTR_VENDOR_IFD_VERSION               Y       Y
    SCARD_ATTR_VENDOR_NAME                      Y       Y
    ======================================== ======= =======

Not all the dwAttrId values listed above may be implemented in the IFD
Handler you are using.  And some dwAttrId values not listed here may be
implemented.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # get attribute
>>> hresult, attrib = SCardGetAttrib(hcard, SCARD_ATTR_ATR_STRING)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>> print(attrib)

      
SCardSetAttrib( hcard,  dwAttrId, BYTELIST * ATTRIBUTESIN) -> SCARDRETCODE

This function sets an attribute from the IFD Handler. Not all
attributes are supported by all readers nor can they be set at all
times.

The possible attributes are::
    ======================================== ======= =======
    Attribute                                Windows  PCSC
                                                      lite
    ======================================== ======= =======
    SCARD_ATTR_ASYNC_PROTOCOL_TYPES                     Y
    SCARD_ATTR_ATR_STRING                       Y       Y
    SCARD_ATTR_CHANNEL_ID                       Y       Y
    SCARD_ATTR_CHARACTERISTICS                  Y       Y
    SCARD_ATTR_CURRENT_BWT                      Y       Y
    SCARD_ATTR_CURRENT_CLK                      Y       Y
    SCARD_ATTR_CURRENT_CWT                      Y       Y
    SCARD_ATTR_CURRENT_D                        Y       Y
    SCARD_ATTR_CURRENT_EBC_ENCODING             Y       Y
    SCARD_ATTR_CURRENT_F                        Y       Y
    SCARD_ATTR_CURRENT_IFSC                     Y       Y
    SCARD_ATTR_CURRENT_IFSD                     Y       Y
    SCARD_ATTR_CURRENT_IO_STATE                 Y       Y
    SCARD_ATTR_CURRENT_N                        Y       Y
    SCARD_ATTR_CURRENT_PROTOCOL_TYPE            Y       Y
    SCARD_ATTR_CURRENT_W                        Y       Y
    SCARD_ATTR_DEFAULT_CLK                      Y       Y
    SCARD_ATTR_DEFAULT_DATA_RATE                Y       Y
    SCARD_ATTR_DEVICE_FRIENDLY_NAME_A           Y       Y
    SCARD_ATTR_DEVICE_FRIENDLY_NAME_W           Y       Y
    SCARD_ATTR_DEVICE_IN_USE                    Y       Y
    SCARD_ATTR_DEVICE_SYSTEM_NAME_A             Y       Y
    SCARD_ATTR_DEVICE_SYSTEM_NAME_W             Y       Y
    SCARD_ATTR_DEVICE_UNIT                      Y       Y
    SCARD_ATTR_ESC_AUTHREQUEST                  Y       Y
    SCARD_ATTR_ESC_CANCEL                       Y       Y
    SCARD_ATTR_ESC_RESET                        Y       Y
    SCARD_ATTR_EXTENDED_BWT                     Y       Y
    SCARD_ATTR_ICC_INTERFACE_STATUS             Y       Y
    SCARD_ATTR_ICC_PRESENCE                     Y       Y
    SCARD_ATTR_ICC_TYPE_PER_ATR                 Y       Y
    SCARD_ATTR_MAXINPUT                         Y       Y
    SCARD_ATTR_MAX_CLK                          Y       Y
    SCARD_ATTR_MAX_DATA_RATE                    Y       Y
    SCARD_ATTR_MAX_IFSD                         Y       Y
    SCARD_ATTR_POWER_MGMT_SUPPORT               Y       Y
    SCARD_ATTR_SUPRESS_T1_IFS_REQUEST           Y       Y
    SCARD_ATTR_SYNC_PROTOCOL_TYPES                      Y
    SCARD_ATTR_USER_AUTH_INPUT_DEVICE           Y       Y
    SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE         Y       Y
    SCARD_ATTR_VENDOR_IFD_SERIAL_NO             Y       Y
    SCARD_ATTR_VENDOR_IFD_TYPE                  Y       Y
    SCARD_ATTR_VENDOR_IFD_VERSION               Y       Y
    SCARD_ATTR_VENDOR_NAME                      Y       Y
    ======================================== ======= =======

Not all the dwAttrId values listed above may be implemented in the
IFD Handler you are using.  And some dwAttrId values not listed here
may be implemented.

>>> from smartcard.scard import *
>>> ... establish context and connect to card ...
>>> hresult, attrib = SCardSetAttrib(hcard, SCARD_ATTR_VENDOR_NAME, ['G', 'e', 'm', 'a', 'l', 't', 'o'])
>>> if hresult != SCARD_S_SUCCESS:
>>>      print('Failed to set attribute')
>>> ...

      
SCardControl( hcard,  dwControlCode, byte[] inbuffer) -> SCARDRETCODE

This function sends a control command to the reader connected to by
L{SCardConnect()}.  It returns a result and the control response.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # control
>>> CMD = [0x12, 0x34]
>>> hresult, response = SCardControl(hcard, 42, CMD)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

 
SCardBeginTransaction( hcard) -> SCARDRETCODE

This function establishes a temporary exclusive access mode for doing a
series of commands or transaction.  You might want to use this when you
are selecting a few files and then writing a large file so you can make
sure that another application will not change the current file.

If another application has a lock on this reader or this application is
in SCARD_SHARE_EXCLUSIVE there will be no action taken.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # begin transaction
>>> hresult = SCardBeginTransaction(hcard)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

     
SCardCancel( hcontext) -> SCARDRETCODE

This function cancels all pending blocking requests on the
L{SCardGetStatusChange()} function.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>> ... establish context ...
>>> hresult = SCardCancel(hcard)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
...
     
SCardConnect( hcontext,  readername,  dwShareMode,  dwPreferredProtocols) -> SCARDRETCODE

This function establishes a connection to the friendly name of the reader
specified in readername.  The first connection will power up and
perform a reset on the card.

Value of dwShareMode:
 - SCARD_SHARE_SHARED      This application will allow others to share the reader
 - SCARD_SHARE_EXCLUSIVE   This application will NOT allow others to share the reader
 - SCARD_SHARE_DIRECT      Direct control of the reader, even without a card

SCARD_SHARE_DIRECT can be used before using L{SCardControl()} to
send control commands to the reader even if a card is not present in
the reader.

Value of dwPreferredProtocols:
 - SCARD_PROTOCOL_T0               Use the T=0 protocol
 - SCARD_PROTOCOL_T1               Use the T=1 protocol
 - SCARD_PROTOCOL_RAW              Use with memory type cards

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

        
SCardDisconnect( hcard,  dwDisposition) -> SCARDRETCODE

This function terminates a connection to the connection made through
L{SCardConnect()}.

Value of disposition:
 - SCARD_LEAVE_CARD        Do nothing
 - SCARD_RESET_CARD        Reset the card (warm reset)
 - SCARD_UNPOWER_CARD      Unpower the card (cold reset)
 - SCARD_EJECT_CARD        Eject the card

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # disconnect
>>> hresult = SCardDisconnect(hcard, SCARD_UNPOWER_CARD)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

      
SCardEndTransaction( hcard,  dwDisposition) -> SCARDRETCODE

This function ends a previously begun transaction.  The calling
application must be the owner of the previously begun transaction or an
error will occur.

Value of disposition:
 - SCARD_LEAVE_CARD        Do nothing
 - SCARD_RESET_CARD        Reset the card
 - SCARD_UNPOWER_CARD      Unpower the card
 - SCARD_EJECT_CARD        Eject the card

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # begin transaction
>>> hresult = SCardBeginTransaction(hcard)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # end transaction
>>> hresult = SCardEndTransaction(hcard, SCARD_LEAVE_CARD)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

        
SCardEstablishContext( dwScope) -> SCARDRETCODE

This function creates a communication context to the PC/SC Resource
Manager.  This must be the first PC/SC function called in a PC/SC application.

Value of dwScope:
 - SCARD_SCOPE_USER        Operations performed within the scope of the User
 - SCARD_SCOPE_TERMINAL    Not used
 - SCARD_SCOPE_GLOBAL      Not used
 - SCARD_SCOPE_SYSTEM      Operations performed within the scope of the system

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)

        
SCardGetStatusChange( hcontext,  dwTimeout, tuple[] readerstatelist) -> SCARDRETCODE

This function receives a structure or list of tuples containing reader
states. A READERSTATE hast three fields (readername, state, atr).
It then blocks for a change in state to occur on any of the OR'd
values contained in the current state for a maximum blocking time of
dwTimeout or forever if INFINITE is used.  The new event state will be
contained in state.  A status change might be a card insertion or
removal event, a change in ATR, etc.

Value of state:
 - SCARD_STATE_UNAWARE         The application is unaware of the current state, and would like to know. The use of this value results in an immediate return from state transition monitoring services. This is represented by all bits set to zero
 - SCARD_STATE_IGNORE          This reader should be ignored
 - SCARD_STATE_CHANGED         There is a difference between the state believed by the application, and the state known by the resource manager. When this bit is set, the application may assume a significant state change has occurred on this reader
 - SCARD_STATE_UNKNOWN         The given reader name is not recognized by the resource manager. If this bit is set, then SCARD_STATE_CHANGED and SCARD_STATE_IGNORE will also be set
 - SCARD_STATE_UNAVAILABLE     The actual state of this reader is not available. If this bit is set, then all the following bits are clear
 - SCARD_STATE_EMPTY           There is no card in the reader. If this bit is set, all the following bits will be clear
 - SCARD_STATE_PRESENT         There is a card in the reader
 - SCARD_STATE_ATRMATCH        There is a card in the reader with an ATR matching one of the target cards. If this bit is set, SCARD_STATE_PRESENT will also be set. This bit is only returned on the SCardLocateCards function
 - SCARD_STATE_EXCLUSIVE       The card in the reader is allocated for exclusive use by another application. If this bit is set, SCARD_STATE_PRESENT will also be set
 - SCARD_STATE_INUSE           The card in the reader is in use by one or more other applications, but may be connected to in shared mode. If this bit is set, SCARD_STATE_PRESENT will also be set
 - SCARD_STATE_MUTE            There is an unresponsive card in the reader

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # get status change
>>> readerstates = []
>>> for reader in readers:
>>>     readerstates.append((reader, SCARD_STATE_UNAWARE))
>>>
>>> hresult, newstates = SCardGetStatusChange(hcontext, INFINITE, readerstates)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>> for state in newstates:
>>>     reader, eventstate, atr = state
>>>     print(f'Reader: {reader}:', end='')
>>>     if eventstate & SCARD_STATE_PRESENT:
>>>         print(' Card present')
>>>     if eventstate & SCARD_STATE_EMPTY:
>>>         print(' Reader empty')
>>>
>>> print('insert or remove a card')
>>> # wait for card move
>>> readerstates = newstates
>>> hresult, newstates = SCardGetStatusChange(hcontext, INFINITE, readerstates)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

       
SCardListReaders( hcontext, [] readergroups) -> SCARDRETCODE

This function returns a list of currently available readers on the system.
A list of group can be provided in input to list readers in a given
group only.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>> for reader in readers:
>>>     print(reader)

      
SCardListReaderGroups( hcontext) -> SCARDRETCODE

This function returns a list of currently available reader groups on the
system.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> hresult, readerGroups = SCardListReaderGroups(hcontext)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>> print('PCSC Reader groups:', readerGroups)

     
SCardReconnect( hcard,  dwShareMode,  dwPreferredProtocols,  dwInitialization) -> SCARDRETCODE

This function reestablishes a connection to a reader that was previously
connected to using L{SCardConnect()}.  In a multi application environment it
is possible for an application to reset the card in shared mode.  When
this occurs any other application trying to access certain commands will
be returned the value SCARD_W_RESET_CARD.  When this occurs
L{SCardReconnect()} must be called in order to acknowledge that the card was
reset and allow it to change it's state accordingly.

Value of dwShareMode:
 - SCARD_SHARE_SHARED      This application will allow others to share the reader
 - SCARD_SHARE_EXCLUSIVE   This application will NOT allow others to share the reader

Value of dwPreferredProtocols:
 - SCARD_PROTOCOL_T0               Use the T=0 protocol
 - SCARD_PROTOCOL_T1               Use the T=1 protocol
 - SCARD_PROTOCOL_RAW              Use with memory type cards

dwPreferredProtocols is a bit mask of acceptable protocols for the connection. You can use (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1) if you do not have a preferred protocol.

Value of dwInitialization:
 - SCARD_LEAVE_CARD            Do nothing
 - SCARD_RESET_CARD            Reset the card (warm reset)
 - SCARD_UNPOWER_CARD          Unpower the card (cold reset)
 - SCARD_EJECT_CARD            Eject the card

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # reconnect
>>> hresult, activeProtocol = SCardReconnect(hcard, SCARD_SHARE_EXCLUSIVE, SCARD_PROTOCOL_T0, SCARD_RESET_CARD)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)

      
SCardReleaseContext( hcontext) -> SCARDRETCODE

Release a PC/SC context established by L{SCardEstablishContext()}.

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # release context
>>> hresult = SCardReleaseContext(hcontext)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ReleaseContextException(hresult)

 
SCardStatus( hcard) -> SCARDRETCODE

This function returns the current status of the reader connected to by
hcard.  The reader friendly name is returned, as well as the state,
protocol and ATR.  The state is a DWORD possibly OR'd with the following
values:

Value of pdwState:
 - SCARD_ABSENT        There is no card in the reader
 - SCARD_PRESENT       There is a card in the reader, but it has not been moved into position for use
 - SCARD_SWALLOWED     There is a card in the reader in position for use. The card is not powered
 - SCARD_POWERED       Power is being provided to the card, but the reader driver is unaware of the mode of the card
 - SCARD_NEGOTIABLE    The card has been reset and is awaiting PTS negotiation
 - SCARD_SPECIFIC      The card has been reset and specific communication protocols have been established

Value of pdwProtocol:
 - SCARD_PROTOCOL_T0       Use the T=0 protocol
 - SCARD_PROTOCOL_T1       Use the T=1 protocol

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>> from smartcard.util import toHexString
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # status
>>> hresult, reader, state, protocol, atr = SCardStatus(hcard)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>> print('Reader:', reader)
>>> print('State: 0x%04X' % state)
>>> print('Protocol:', protocol)
>>> print('ATR:', toHexString(atr))

    
SCardTransmit( hcard, unsigned long pioSendPci, byte[] apducommand) -> SCARDRETCODE

This function sends an APDU to the smart card contained in the reader
connected to by L{SCardConnect()}.
It returns a result and the card APDU response.

Value of pioSendPci:
 - SCARD_PCI_T0            Pre-defined T=0 PCI structure
 - SCARD_PCI_T1            Pre-defined T=1 PCI structure

>>> from smartcard.scard import *
>>> from smartcard.pcsc import *
>>> from smartcard.util import toHexString
>>>
>>> # establish context
>>> hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.EstablishContextException(hresult)
>>>
>>> # list readers
>>> hresult, readers = SCardListReaders(hcontext, [])
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.ListReadersException(hresult)
>>>
>>> # connect
>>> hresult, hcard, dwActiveProtocol = SCardConnect(
>>>     hcontext, readers[0], SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>>
>>> # transmit
>>> SELECT = [0xA0, 0xA4, 0x00, 0x00, 0x02]
>>> DF_TELECOM = [0x7F, 0x10]
>>> hresult, response = SCardTransmit(hcard, SCARD_PCI_T0, SELECT + DF_TELECOM)
>>> if hresult != SCARD_S_SUCCESS:
>>>     raise PCSCExceptions.BaseSCardException(hresult)
>>> print(toHexString(response))

     
SCARD_CTL_CODE(long code) -> long

This function returns the value of a control code

>>> from smartcard.scard import *
>>> ...
>>> CM_IOCTL_GET_FEATURE_REQUEST = SCARD_CTL_CODE(3400)
>>> ...

      
SCardGetErrorMessage(long lErrCode) -> ERRORSTRING

This function return a human readable text for the given PC/SC error code.

>>> from smartcard.scard import *
>>> ...
>>> hresult, response = SCardTransmit(hcard, SCARD_PCI_T0, SELECT + DF_TELECOM)
>>> if hresult != SCARD_S_SUCCESS:
>>>     print('Failed to transmit:', SCardGetErrorMessage(hresult))
>>> ...

     releases ownership of the pointer       acquires ownership of the pointer       returns/sets ownership of the pointer   returns the next 'this' object          `P@  p`@ pP@0 `88            SWIG_Python_ConvertPtrAndOwn    PyCFunction_GET_FUNCTION        PyCFunction_GET_SELF    Py_SIZE 0123456789abcdef                Command successfCommand cancelleCannot dispose hInsufficient bufInvalid ATR.    Invalid handle. Invalid parameteInvalid target gInvalid value giNot enough memorRPC transport erInternal error. Unknown error.  Waited too long.Unknown reader specified.       Command timeout.Sharing violatioNo smart card inUnknown card.   Card protocol miSubsystem not reSystem cancelledTransaction failReader is unavaiCard is not suppCard is unresponCard is unpowereCard was reset. Card was removedFeature not suppPCI struct too sReader is unsuppReader already eCard is unsupporService not avaiService was stop;,  d   H  p    ޮH       @  p    а          (   <  0P  @d  Px  `  p            б  ,  @  p  0    p    ж8  L  pt       p    h    0    (  p\    `  @  	  ,	  pd	  	  @	  0	  
  8
  `l
  
  
  
    P    `  P     <  ph  `    `  p   @  p    `    $  P  P         0   X    `         4  `  t           	(   P             zR x  $      @   FJw ?9*3$"       D   (              \             p   )             $             Ԭ$             
             
             
             
             
            ܬ
          $  ج
          8  Ԭ
          L  Ь
          `  ̬
          t  Ȭ
            Ĭ
            
            
            
            
            
             
       ,         ACGq
DM  (   D      ACHH     p         (     (   ACo
E=
K        >           t       ,     pH   ECBH
Fj
F       	       $          ECJ_
G  $   H      ECJ_
G  0   p  \    ECBEDz
K`
HL          EJA
I$     tp   ACO
A   (     )   ECKV
G       >      $   <      EJBD[
H    d  (n   ACt
H(     xU    ECCm
HP   (        ACK;
F            0        ACK]
D
H  (   0     EJG~
D (   \      ACM\
A          ACEL
K0     `    JFEx
K`HH     /   y^bG 4      Q   ECBN
BX
H   (   8  z   ECMv
E   d  XI    JCUF $         ECG
I  0     P   ECM
E_
A(        ECM
F0         LCBEEJ`A 0   @     ECM}
E_
A(   t  `   ECM
C,         ECBHO
O\
D       >    aTH   0     k    JFGv
BAHJF  0   $  (k    JFGv
BAHJF  0   X  dk    JFGv
BAHJF  ,         ECBHO
O\
D       `>    aTH   0     k    JFGv
BAHJF  (   	  d   ERO
K ,   <	       ECBHO
O\
D     l	  C    aTM   (   	     ERO
G (   	  t   EWK
A  ,   	  X   ERQK
E   ,   
     ERQ_
I   ,   D
  H    EWG|
IY
A   ,   t
      EWG|
IY
A   $   
      ECG
G  (   
     EROw
A (   
     ERO
A  4   $  h   NCAk
KpHp   (   \     ECIs
D   0     4    ECGo
Bc
A        )       0        ECM
He
K $     6   ECI
G(   ,     ECM
K,   X     ERQ
G   $     r    ECI\        
       ,        ERQG
A        
       (        ERO
E     4  x
       (   H  t   ERO
E     t  h
       ,     d   ERQG
A        
       ,        ERQG
A   $     I   aCE
G   ,   $  ,   ECM"
F              0      GNU                 	                     |   ~FDO {"type":"rpm","name":"pyscard","version":"2.2.2-3.fc43","architecture":"x86_64","osCpe":"cpe:/o:fedoraproject:fedora:43"}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               P                        t
                          T                                                          o                                     
       
                                        	                           о             @                   	                            o           o    к      o           o          $             #       P       %                                                                                                                                                       0      @      P      `      p                                                                          0      @      P      `      p                                                                          0      @      P      `      p                                                                          0      @      P      `      p                                                                          0      @      P      `      p                                                                          0      @      P      `      p                                                                                                                                                                                                                                                                                                                                                                                                  Swig object holding a C/C++ function pointer                    Swig object holding a C/C++ pointer                                                                                           `                                                                                                                                                                                                                                                     `                                                                                                                                                                                                                                                     `                                                                                                                                                                                                                                                     `                                                                   u                                                      |                                                                                                                                                                                                                                                                                                            (      7                                                      E      V                                                      f      v                                                                                                                                                                                                                                                                                                                                                                             `                     `                     `                                                                                                                                                     `                                                             `                     `                     `                     `                                 f             (            Pb             8             d                           Pe             `      -      Ph                         pA                         H                         I             x           J             H     Y      C             h     o      A             p           L                         N                         N             %     {      O             (+     *      pP             -           ^             ;            Z             >     ?       R             @           PB             I           T             K           `D             S           +             Y           4             Y                                     @,      @      0                                                                          p      `      P      @      0                                  @[     '                    h[     o                   [     /      p             6      T                   [     Y      0             b                                               GA$3a1       a      _scard.cpython-314-x86_64-linux-gnu.so-2.2.2-3.fc43.x86_64.debug    n7zXZ  ִF6!       (o] ?Eh=ڊ2Ng>ĩO?|}(?5j1뺯?Ye4.9Йi.wjp2~
PsXT8ڲr%L"o1T:Baz.7)[iR!!.!QQ߬rc6LSxO]VG Wݚ@0cǅ50n5RD=i9:/:V+3P@IًL[b1,fB5<:Ia.`=#C9#xz`:Tr2/ݹY!TYFj\VHP}9	X&`򘶑q|s%%ENXh:܇Y
\5ui'6mGL@OfgJ ߴcj;÷J0$4KWBgpWr !$2̓,ɛڽ>kUن)=*yEN[H"⢎8"eUQvڽ0m<|yu<1=7(+PP!?61fӍ\t'9(vMczp":Hh[-[^^	6X{ c u[ A?IN7aVa! MXDŹ3n)	7I? (_*X2})YwbxVQs+ɛ18+.TvKe`w	xTm]7rD"6JiZRe괎8r"IdnڏSud7R_HaNe̻~9Y9ˣp&z|Cle@ҔT׌"A>~N,vGRFAlI#]ʋ?]cW>'	ix >".'L
)E$޲|E}3,(lfh?h"we>u2sgҝ>lFb*&x֏0ϖXsFŉrz,#'J?Cxj"5K2+{>()x_벮fUKۑ|\:ʷIM/̭jۉ_2,0+x[,mXV37嗅o2&:޵L!g#QZ'|4)ea_0=j+ uGX}2l<.P:)a+Wpu{dՉ;Xѣ͏KR֙vsPFoDw@iW(Z9@LzԸ537M*t,^!Q80Ò~]|IX:~>H M4佑&u=Z$z(gV~E$fsETA`s_0[u+h(їEÐqli]L7PXXf&I[J]t'B}ޫG0bOZnˢ ,	u\+v#ChcC:@3n((k ѾkxWu %&h
w%2A:ISgsWȄ&ea=Kߨ-19.$,PP@V-y5H<ٗy~agfࠪ|pBz?
ˡ_hњ/chVy4%8~ZY( >,N 6  l\g    YZ .shstrtab .note.gnu.build-id .init .plt.sec .text .fini .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .relr.dyn .rodata .eh_frame_hdr .eh_frame .note.gnu.property .note.package .init_array .fini_array .data.rel.ro .dynamic .got .data .bss .gnu.build.attributes .gnu_debuglink .gnu_debugdata                                                                                              $                                                                                     ~                                                     $              	       	                                   -                           Q              @               3             T      T                                    9   o                                                 C                         8      	                    K                         
                             S   o                                              `   o       к      к      p       	                     o             @      @                                 y      B       о      о       	                                                   P                                                        @                                          ``     ``     ,                                          c     c     T                                          q     q     @                                           (r     (r                                                     y                                                    y                                                    y                                                     y           	                                       {     H                                                                                                                                                                 $                              "                     $     H                              1                     l     8                                                        @                             