diff --git a/chebai/preprocessing/bin/protein_token_3_gram/tokens.txt b/chebai/preprocessing/bin/protein_token_3_gram/tokens.txt new file mode 100644 index 00000000..69dca126 --- /dev/null +++ b/chebai/preprocessing/bin/protein_token_3_gram/tokens.txt @@ -0,0 +1,8000 @@ +MAT +ATP +TPG +PGA +GAS +ASS +SSA +SAR +ARD +RDE +DEF +EFV +FVY +VYM +YMA +MAK +AKL +KLA +LAE +AEQ +EQA +QAE +AER +ERY +RYE +YEE +EEM +EMV +MVE +VEF +EFM +FME +MEK +EKV +KVA +VAK +AKA +KAV +AVD +VDK +DKD +KDE +DEL +ELT +LTV +TVE +VEE +EER +ERN +RNL +NLL +LLS +LSV +SVA +VAY +AYK +YKN +KNV +NVI +VIG +IGA +GAR +ARR +RRA +RAS +ASW +SWR +WRI +RII +IIS +ISS +SSI +SIE +IEQ +EQK +QKE +KEE +EES +ESR +SRG +RGN +GND +NDD +DDH +DHV +HVS +VSL +SLI +LIR +IRD +RDY +DYR +YRS +RSK +SKI +KIE +IET +ETE +TEL +ELS +LSD +SDI +DIC +ICD +CDG +DGI +GIL +ILK +LKL +KLL +LLD +LDT +DTI +TIL +ILV +LVP +VPA +PAA +AAA +AAS +ASG +SGD +GDS +DSK +SKV +KVF +VFY +FYL +YLK +LKM +KMK +MKG +KGD +GDY +DYH +YHR +HRY +RYL +YLA +AEF +EFK +FKS +KSG +SGQ +GQE +QER +ERK +RKD +KDA +DAA +AAE +AEH +EHT +HTL +TLT +LTA +TAY +YKA +KAA +AAQ +AQD +QDI +DIA +IAN +ANS +NSE +SEL +ELA +LAP +APT +PTH +THP +HPI +PIR +IRL +RLG +LGL +GLA +LAL +ALN +LNF +NFS +FSV +SVF +FYY +YYE +YEI +EIL +ILN +LNS +NSP +SPD +PDR +DRA +RAC +ACN +CNL +NLA +LAK +AKQ +KQA +QAF +AFD +FDE +DEA +EAI +AIA +IAE +AEL +ELD +DTL +TLG +LGE +GEE +ESY +SYK +YKD +KDS +DST +STL +TLI +LIM +IMQ +MQL +QLL +LLR +LRD +RDN +DNL +NLT +LTL +TLW +LWT +WTS +TSD +SDM +DMQ +MQD +QDD +DDV +DVA +VAD +ADD +DDI +DIK +IKE +KEA +EAA +AAP +APA +AAK +AKP +KPA +PAD +ADE +DEQ +EQQ +QQS +MSD +SDT +DTV +EEL +ELV +LVQ +VQR +QRA +RAK +RYD +YDD +DDM +DMA +MAA +AAM +AMK +MKK +KKV +KVT +VTE +TEQ +EQG +QGQ +QEL +LSN +SNE +NEE +NVV +VVG +VGA +RRS +RSS +SSW +WRV +RVI +VIS +QKT +KTE +TEG +EGS +GSE +SEK +EKK +KKQ +KQQ +QQL +QLA +AKE +KEY +EYR +YRV +RVK +VKV +KVE +VEQ +EQE +ELN +LND +NDI +ICQ +CQD +QDV +DVL +VLK +LDE +EFL +FLI +LIV +IVK +VKA +KAG +AGA +GAA +AES +ESK +DYY +YYR +YRY +AEV +EVA +VAS +ASE +SED +EDR +RAA +AAV +AVV +VVE +VEK +EKS +KSQ +SQK +QKA +KAY +AYQ +YQE +QEA +EAL +ALD +LDI +IAK +AKD +KDK +DKM +KMQ +MQP +QPT +LNT +NTP +TPE +PEH +EHA +HAC +ACQ +CQL +FDD +DDA +DAI +TLN +LNE +NED +EDS +DSY +SDV +DVG +GAE +AED +EDQ +DQE +QEQ +QEG +EGN +GNQ +NQE +EAG +AGN +MAS +ASA +SAE +LSR +SRE +REE +EEN +ENV +NVY +AKT +KTV +TVD +VDS +DSE +SEE +EEG +EGR +GRG +GNE +DRV +RVT +VTL +LIK +IKD +KDY +YRG +RGK +GKI +LTK +TKI +KIC +LLE +LET +ETH +THL +HLV +VPS +PSS +SST +STA +TAP +APE +PES +FKT +KTG +TGA +AEN +ENT +NTM +TMV +MVA +IAL +ALA +ACS +CSL +SLA +AIS +ISE +TLS +LSE +DIS +EDP +DPA +PAE +AEE +EEI +EIR +IRE +REA +EAP +APK +PKR +KRD +RDS +DSS +SSE +SEG +EGQ +LES +ESH +SHL +LLH +LHD +HDN +PKH +KHD +HDL +DLS +MST +STR +TRE +VDV +DVE +SVE +SKG +KGN +EDH +HVA +VAI +AII +IIK +IES +ESE +LSK +LNV +NVL +VLE +LEA +EAH +AHL +HLI +LIP +IPS +PSA +SAS +ASP +SPA +FKA +RKE +EST +TLV +LVA +YKS +KSA +ASD +IAT +ATA +TAE +DMT +MTD +TDE +AGD +GDE +DEI +EIK +EAS +ASK +SKP +KPD +PDG +DGA +MAE +RED +EDC +DCV +CVF +VFL +FLS +SKL +EQS +QSE +SER +YDE +DEM +MVQ +VQY +QYM +YMK +MKQ +KQV +QVA +VAA +AAL +NTE +IGS +GSR +SRR +IIT +ITS +TSL +SLE +LEQ +KEQ +QAK +AKG +NDK +DKH +KHV +HVE +VEI +EII +IKG +KGY +GYR +YRA +AKI +IED +EDE +AKY +KYC +YCD +CDD +LKV +KVI +VIK +KEN +ENL +LLP +LPN +PNA +NAS +AST +STS +TSE +SES +FYK +YKK +KKM +KME +MEG +EGD +RYY +YYA +YAE +EFT +FTV +VDE +DEK +EKR +KRQ +RQE +QEV +ADK +DKS +KSL +LAA +AAY +AYT +YTE +TEA +EAT +ATE +TEI +EIS +ISN +SNA +NAD +ADL +DLA +EIM +IMN +MND +NDA +DAD +DKA +KAC +DDS +DSI +SIA +KLD +DEV +EVP +VPE +ESS +SSY +DTA +TAD +DEE +AAT +ATL +LGR +GRD +RDQ +DQY +QYV +YVY +VQF +QFM +MEQ +EQL +QLV +LVT +VTG +GAT +TPA +GSL +SLR +LRA +AAW +AWR +RIV +IVS +VSS +SRK +RKN +KND +NDE +DEH +EHV +SLV +LVK +VKD +VES +LSS +SSV +SVC +VCS +CSG +SGI +LDS +DSH +SAG +RYM +DER +RKT +KTA +TAA +EDT +DTM +TML +MLA +LAY +IAA +AAD +ADM +MAP +NSS +SSD +SDK +CNM +NMA +AFE +FEE +EEA +MQE +EQM +QMD +MDE +ATT +TTL +SRD +LVS +VSG +SGA +PAG +AGE +GEL +KNE +EEH +VET +SIC +ICS +ILR +LRL +RLL +SAT +TAS +TMI +MIA +IAY +VAV +AVA +EKA +CSM +SMA +MTM +TMD +MDK +KSE +VQK +KAK +MKA +AVT +QGH +GHE +HEL +TER +RNE +NEK +QQM +QMG +MGK +GKE +YRE +REK +EKI +IEA +EAE +ELQ +LQD +ICN +CND +NDV +LEL +ELL +LDK +DKY +KYL +YLI +IPN +NAT +ATQ +TQP +QPE +DYF +YFR +FRY +YLS +SEV +GDN +DNK +NKQ +KQT +QTT +TTV +TVS +VSN +SNS +NSQ +SQQ +QQA +QAY +EAF +FEI +ISK +SKK +KKE +KEM +EMQ +SPE +PEK +TAF +SEN +ENQ +NQG +QGD +DEG +GDA +DAG +GEG +EGE +GEN +LIL +LNA +TQA +SGE +ENK +CSD +ATH +THA +HAE +MTE +ERE +REN +ENN +NNV +VYK +VEA +EAM +ASM +SMD +MDV +VEL +TSI +NKG +KGA +EEK +EKL +KLE +LEM +EMI +MIK +IKT +KTY +TYR +RGQ +GQV +QVE +EKE +KEL +ELR +RDI +DIL +LEK +EKH +KHL +IPC +PCA +CAT +ATS +TSG +GES +YYK +YKM +EFA +FAT +ATG +TGS +GSD +SDR +DRK +ENS +NSL +LIA +IAM +AMN +NDL +DLP +LPP +PPT +ACR +CRL +RLA +AAF +MQA +EEV +EVD +VDP +DPN +NAG +GDG +DGE +GEP +EPK +PKE +EQI +QIQ +IQD +VED +DQD +DVS +MDD +DDR +DRE +EDL +DLV +LVY +VYQ +YQA +ESM +SMK +VAG +AGM +GMD +KGG +GGE +GED +EDK +DKL +KLK +KMI +MIR +REY +YRQ +RQM +QMV +ELK +KLI +LIC +ICC +CCD +CDI +ILD +LDV +VLD +IPA +AAN +ANT +NTG +TGE +TGN +NDR +AMT +ELP +MQG +EEQ +EQN +QNK +NKE +ALQ +DEN +MGD +GDR +REQ +LLQ +LQR +RAR +ARL +SAM +NEP +EPL +PLS +DRN +KTM +TMA +MAD +ADG +DGN +KKL +KVK +AYR +IEK +ELE +ETV +TVC +VCN +VLS +LSL +SLL +DKF +KFL +IKN +KNC +NCN +NDF +DFQ +FQY +QYE +YES +GEK +KKN +KNS +NSV +SVV +SEA +YKE +SKE +QMQ +EIQ +IQN +QNA +NAP +PEQ +QAC +ACL +CLL +LLA +SDQ +DQQ +QQD +QDE +VLA +ALL +KEH +EHM +HMQ +MVD +VDR +KAR +MKN +NVT +KTS +TSA +SAD +KKI +IEM +MVR +VRA +RAY +EAV +AVC +VCQ +LDN +DNY +NYL +NCS +CSE +SET +ETQ +TQY +VAT +KRA +RAT +ATV +TVV +AYS +YSE +AHE +HEI +LNY +NYS +YSV +ACH +CHL +HLA +DDD +DDG +DGG +GNN +MER +ERA +ASL +LIQ +IQK +YED +EDM +AFM +FMK +MKS +SAV +AVE +EKG +KGE +LSC +SCE +CEE +VGG +GGQ +GQR +RVL +QKS +KSN +KGP +GPE +PEV +EVK +VKE +LRG +RGV +GVC +VCD +CDT +TVL +VLG +GLL +GAG +DAE +SRV +RVF +TGD +GDD +DDK +DKK +KKR +KRI +IID +IDS +DSA +ARS +RSA +SAY +AMD +MDI +EMP +MPP +PTN +TNP +NPI +VFH +FHY +HYE +EIA +PEE +ISL +KTT +TTF +TFD +AMA +DLH +LHT +WTA +ADS +EGG +GEA +EEP +EPQ +PQS +EKT +ELI +ATC +TCM +CMK +QGA +GGR +GRR +SAW +KTD +TDT +DTS +KLQ +LQL +QLI +LRS +RSI +ICT +CTT +ANA +ATN +NPE +VAC +ACG +CGD +RKQ +QTI +TID +IDN +DNS +SQG +GAY +FDI +LNN +NNP +PEL +LAC +ACT +CTL +TLA +SDS +EEC +ECD +CDA +AEG +EGA +TIE +IEN +STV +DKE +MAQ +AQA +QAM +KSV +SVT +TET +ETG +TGV +GVE +ARK +LAR +ARE +RER +ERV +RVE +LRE +REI +EIC +ICY +CYE +YEV +EVL +IPK +PKA +KAS +ASN +SNP +DAR +ARN +RNT +NTV +VVD +VDD +DSQ +SQT +QTA +YQD +QDA +DAF +KGK +GKM +PDK +DTQ +TQG +AEP +PQE +GGD +DKN +NEL +AAC +ACM +RVV +VVS +AEK +QMA +MAR +EKF +ASQ +SQA +AAG +KKG +KGI +GIV +IVD +VDQ +DQS +QSQ +AEA +SQP +MPA +PAS +ASR +DSV +SVY +VYL +VEN +ENM +NMK +SSG +EAK +NES +ESQ +SQV +VAL +ALI +ICE +CED +EDI +ILS +SVL +SDH +DHL +LIT +SAQ +AQT +QTG +FAI +KRK +EAY +DAV +DLE +ETL +WTD +TDL +TEE +QQQ +QSS +SSQ +QAP +AQP +PTE +EGK +GKA +KAD +ADQ +MTR +VAE +NEN +ENH +NHV +HVK +VKK +KIK +EYK +YKC +KCK +CKV +LTD +TDI +ILE +LEV +GNP +NPR +PRK +SSL +IAV +DVH +VHN +HNM +NME +EKN +KNQ +NQD +QDG +DGD +DDQ +DQN +QNE +EPG +PGM +AFT +FTR +EDY +DYV +YVF +VFM +FMA +AQL +QLN +ENA +NAE +ETM +TMR +MRK +RKI +KIS +ISG +SGM +GME +KER +IGP +GPR +PRR +KEK +KGR +GRQ +RQK +QKP +KPN +NAK +AKR +RIE +QIR +IRV +RVY +VYR +QKI +LQE +EQF +QFV +FVP +VPR +PRS +RST +STN +TNA +ADA +DAK +AKV +AEY +EYS +YSS +KIA +IAG +AGS +GSA +SAL +NAY +AYN +YNS +NSA +SAF +ISQ +QLP +ILA +LAS +ACE +CEL +RKA +KAF +FDA +AAI +AIT +ITD +DLD +KLT +LTE +NLN +LNL +NLW +LWV +WVT +VTD +TDS +DDN +DNA +NEA +ALS +VLN +DNF +NFL +NCG +CGE +GET +TQH +QHE +HES +KSY +SYS +DDE +MVS +VSQ +QVV +VVA +EKP +KPQ +PQL +KKA +AGC +GCN +CNS +NSH +SHG +HGQ +GQD +QDS +SYF +YFL +FLG +LGW +GWQ +WQE +QEY +EYE +YEK +KNP +NPF +PFD +FDP +DPV +PVS +NPS +PSG +GII +IIQ +IQM +MGL +NQL +QLS +LSF +SFD +FDL +DLL +LEE +EEW +EWL +WLE +NPH +PHA +HAL +ALG +GLR +LRR +RRE +REG +GGG +GGA +ASV +VFR +FRE +REL +ALF +LFQ +FQD +QDY +YHG +HGL +GLP +LPA +PAF +AFK +FKN +KNA +NAL +ARF +RFM +FMS +MSE +SEQ +EQR +QRG +RGY +GYK +YKV +KVV +VVF +VFD +DPS +PSN +SNI +NIV +IVL +VLT +TAG +SAN +ANE +ALM +LMF +MFC +FCL +CLA +LAD +ADH +DHG +HGD +AFL +IPT +PTP +TPY +PYY +YYP +YPG +PGF +GFD +FDR +DRD +RDL +DLK +LKW +KWR +WRT +RTG +AEI +EIV +IVP +VPV +PVH +VHC +HCA +CAS +ANG +NGF +GFR +FRV +VTR +TRP +RPA +PAL +LDD +DAY +YRR +RAQ +AQK +QKR +KRR +RRL +RLR +LRV +VKG +KGV +GVL +VLI +ITN +NPL +PLG +LGT +GTA +SPR +PRA +RAD +ETI +TIV +VDF +DFV +FVA +GIH +IHL +LIS +ISD +SDE +EIY +IYA +YAG +AGT +AFA +FAE +EPP +PPA +AGF +GFV +FVS +VSA +ALE +EVV +AGR +RDG +GAD +ADV +VSD +RVH +VHV +HVV +VVY +VYS +YSL +SLS +SKD +KDL +DLG +LPG +RVG +GAI +AIY +IYS +YSA +NAA +SAA +ATK +TKM +KMS +MSS +SSF +SFG +FGL +GLV +QTQ +QYL +YLL +LLG +LGD +RDF +DFT +TRS +RSY +SYV +YVA +NKR +RRI +RIK +ERH +RHD +HDQ +DQL +LVD +VDG +DGL +EIG +IGI +GIG +IGC +GCL +CLP +LPS +AGL +GLF +LFC +FCW +CWV +WVD +VDM +DMS +MSH +HLM +LMR +MRS +RSR +SRS +RSF +SFA +FAG +GEM +EME +MEL +ELW +LWK +WKK +VFE +FEV +EVG +VGL +GLN +LNI +NIS +ISP +SPG +PGS +GSS +SSC +SCH +CHC +HCR +CRE +REP +PGW +GWF +WFR +RVC +VCF +CFA +FAN +ANM +NMS +MSA +SAK +KTL +TLD +VAM +AMQ +MQR +QRL +SFV +FVD +TGG +ALR +AVP +PVR +VRS +RSV +SVS +VSC +SCP +CPL +PLA +LAI +AIK +IKW +KWA +WAL +RLT +LTP +TPS +PSI +IAD +ADR +KAE +MAY +YQG +QGI +GID +IDL +LST +STK +TKA +HGE +YFD +FDG +DGW +GWK +WKA +AYD +YDT +DTN +DLR +LRH +RHN +HNR +NRG +RGG +GGV +GVI +VIQ +SLD +LDL +DLI +LIE +IEE +EWS +WSK +SKN +KNH +NHP +HPE +PEA +ASI +CTP +PEG +EGV +GVS +SQF +QFK +FKR +RIA +ANF +NFQ +LPE +PEF +EFR +FRK +KAM +AQF +FMG +MGQ +QVR +VRG +GGK +KAT +ATF +DPD +VVM +VMS +MSG +SGG +GAQ +AQE +QET +LAF +AFC +LAN +ANP +NPG +PGE +FLV +VPT +YPA +RDC +DCC +CCW +CWR +WRS +RSG +GIK +IKL +LPI +PIE +IEC +ECH +CHS +HSF +SFN +FND +DFR +FRL +TKE +ALV +YDG +RRQ +RQG +GIS +ISV +SVK +ILI +GTI +TIT +TDR +RDT +LAM +AML +LAT +TFA +TEH +EHR +HRV +VHL +LVC +CDE +GSV +VFA +PEY +EYV +YVS +VSI +EVI +VIE +IER +ERD +RDV +DVP +VPW +PWC +WCN +CNR +NRD +LIH +IHV +KDF +DFG +VGI +IIY +YSY +SYN +YND +AAR +RRM +RMS +QYF +FLA +ARM +RML +MLS +EEF +EFI +FIG +IGR +GRF +RFL +FLQ +QES +SKC +KCR +RLV +VAR +ARH +RHE +HER +ERF +RFT +FTS +SGL +REV +CLR +GNA +LFS +FSW +SWM +WMD +MDL +MLR +LWR +VIV +IVH +VHQ +HQV +QVK +VKL +KLN +NVS +VSP +PGT +GTS +TSF +SFH +FHC +VCH +CHA +HAN +NMD +DET +TME +MEV +GRI +RIH +IHD +HDF +FVR +VRQ +RQH +QHQ +HQQ +QQR +QRR +RRV +ERW +RWA +WAA +ANR +NRQ +RQL +QLR +RLS +SLP +LPH +PHH +HHH +HHL +HLS +LSP +PAH +SSP +SPL +SPQ +QSP +SPM +PMV +KQL +TKV +VTS +TSN +SNG +NGH +GHG +GWE +WEE +EEY +NPY +PYD +NPN +PNG +NGM +GMI +MIQ +QLC +LCF +CFD +ESW +SWL +WLT +TKN +NPD +PDA +SLK +LKR +KRN +RNG +NGQ +GQS +QSI +SIF +IFR +HGM +GMP +MPE +FKK +MEE +IRG +GNR +NRV +VTF +DPK +PKK +KIV +GST +NET +TLM +PGD +FLL +LPT +VPI +PIH +IHC +HCS +CSS +SSS +SSN +GFQ +FQI +QIT +ITE +TES +ESA +LQQ +YQQ +QAQ +QKL +VLV +VTN +TAL +ALT +LTR +TRR +LLV +DFI +FIT +TSK +KNI +NIH +YSG +SGT +GTM +TMF +MFG +FGF +GFE +FEQ +QFI +FIS +SVM +VMD +LKD +LED +DTE +TEV +EVS +VSK +SKR +KRV +YSN +SND +MIV +LSA +KKF +KFT +TSQ +SQY +YLE +NQK +KRL +RLK +LKS +KSR +SRQ +RQR +GLE +AGI +GIT +ITC +TCL +RSN +DMR +MRH +RHL +HLL +TNT +NTF +TFE +FEA +DLW +IVY +VYN +YNV +NVK +HCT +CTE +TEP +ALK +LKT +KTF +TFV +FVE +STD +TDC +DCG +CGR +GRM +RMI +MIS +ISR +SSH +SHE +ERL +LRK +RKK +KKT +SNW +NWV +WVF +RVS +VSW +SWT +RVP +VPD +PDE +VAF +TEK +KQD +QDL +DLN +IAS +DGH +AYE +ENP +PFH +FHP +PID +IDR +DRP +RPD +DGV +LCG +GDL +DLM +RKW +KWV +WVL +LKH +KHP +CTS +GVN +VNQ +NQF +QFS +FSD +IAI +AIF +IFQ +FRQ +RQA +QAV +AKF +KFM +KTR +TRN +RNN +NNK +NKV +VKF +KFD +DRI +IVM +GAH +HET +TVA +DGF +GFL +LRW +RWR +VNL +NLV +PVT +VTC +TCH +HSS +GFK +FKI +KIT +ITV +YEN +NAR +RKS +NIP +IPV +PVK +KGL +GTT +LDR +REC +ECL +CLK +LVN +VNF +NFT +FTN +TND +DKG +YAA +TFG +FGQ +SEF +EIE +DCN +IHI +HIV +KDM +DMG +PGL +VVQ +VQI +QIA +IAR +RKM +QHL +AKM +KML +FIR +RES +KLR +RHA +EIT +ITT +TTG +TGL +GLD +LDG +GLG +LGI +IGW +GWL +WLK +LKA +LFL +FLW +LWM +LRN +LLK +TAT +FDS +PGG +GGS +GSF +HCH +CHE +HEP +MDH +DHK +HKT +MET +ETA +LER +ERI +RIR +VFT +SQL +QLE +EEE +EET +ETK +TKP +KPM +PMA +TTM +TMM +MMA +AKK +KKK +KKC +KCW +CWQ +WQS +QSN +SNL +NLR +SFS +DTR +RRF +RFD +GFF +FFS +FSP +SPH +PHS +HSP +SPV +PVP +VPP +PPS +PSP +PLV +LVR +RKV +NAH +AHG +NGI +ETW +TWL +WLA +AKN +GLK +LKK +KKD +KDG +DGQ +IFK +FKE +KAL +PSK +MLT +GTV +TVF +VFG +VSV +KNL +NLE +LEN +VHI +MVV +TST +STY +TYL +YLD +LKI +KIR +IRQ +QKK +KLV +VYD +YDV +DVK +MKR +LKE +YVE +DSR +SKS +KSS +SHD +HDR +IKS +RKR +KRT +RTV +MHG +HGS +GSG +SGH +GHS +HSL +SLT +LTG +GAP +APH +PHQ +HQI +QIP +IPP +PPP +PPR +PRT +RTQ +GQQ +TAN +ANQ +DKI +KID +IDP +DPF +FHN +HNK +KRG +RGT +TSR +LRI +RIN +INN +NNS +SSR +SRY +RYN +NVD +VQL +KDT +NEQ +EQP +QPA +LVI +VQC +QCQ +CQH +QHV +HVF +FDF +DFY +FYD +YDP +PVA +VAQ +QLK +LKC +CKE +KEI +IKR +LID +IDH +DHI +HIT +TKG +AIV +IVE +TIY +IYP +PAV +AVI +IKM +KMV +NIF +VLP +PSE +ENC +NCE +CEF +EFD +DPE +EED +DEP +EPT +PTL +TLE +SWP +WPH +PHL +HLQ +VYE +YEL +ELF +FLR +LRF +FLE +ESP +PDF +FQA +QAS +SIG +IGK +GKK +KKY +KYI +YID +IDQ +DQR +QRF +RFV +FVL +DLF +LFD +DPR +PRE +DFL +FLK +VLH +LHR +HRI +RIY +IYG +YGK +GKF +RAF +AFI +IRK +RKH +KHI +HIN +NNM +NMF +MFL +YET +ETD +DSF +FNG +NGV +GVG +VGE +LEI +ILG +LGS +GSI +SII +IIN +ING +GFA +FAL +ALP +LPL +PLK +LKQ +KQE +QEH +EHK +HKV +KVL +VLL +PLH +LHK +HKP +KPK +PKC +KCL +CLS +SLY +LYH +YHA +HAQ +AYC +YCV +CVV +FIE +EKD +TPQ +PQV +QVF +LKF +KFW +FWP +WPR +RTC +TCS +SSK +KEV +EVM +VMF +GEV +EVE +DII +IIE +IEP +EPE +KII +DPL +PLF +LFR +AKC +KCV +CVS +PHF +HFQ +FQV +RAL +ALY +LYF +YFW +FWN +WNN +NNE +NEY +EYI +YIL +TSS +LVM +VMP +MPI +PIM +IMF +MFP +FPA +LYR +YRI +RIS +EHW +HWN +WNQ +NQT +IVA +TFM +MEM +EMN +MNG +NGK +GKL +KLF +LTS +TYK +YKG +GER +EKQ +KQR +QRE +KDR +RDA +AFW +FWK +MEA +LNP +NPP +EVT +VTP +PSL +SLF +LFP +FPE +TDY +DYL +DGP +GPN +PNM +NMT +MTP +TPL +PLP +LPV +AGG +GDK +KSP +SPS +PSV +VVK +KKS +STG +ETT +TTT +TTP +PAK +TKL +KLP +STP +TPT +PTS +TSP +GLS +PPD +DKV +KVD +GFS +FSR +RSL +ARP +RPR +RSH +SHS +QFR +RYQ +YQS +SNQ +NQQ +QQE +PLL +KDV +ELH +LHE +RKL +LAQ +AQC +QCG +CGV +GVM +MFD +FLD +LDC +CVA +LKG +VKR +LVE +VEC +ECV +CVG +VGS +TRG +EPV +PVY +VYP +YPD +PDI +IIR +IRM +SVN +VNI +FRT +RTL +TLP +EPN +PNL +LEP +EPS +PSW +YEF +EFF +FFL +FQP +QPS +KRY +RYV +YVD +DQK +QKF +KFV +VLM +LML +MLL +EYL +KTI +ILH +VYG +AYI +YIR +KQC +QCN +CNH +NHI +HIF +IFL +RFI +FIY +IYE +LEH +EHF +HFN +GVA +HKQ +KQF +QFL +VRV +IPL +LHS +HSV +VKS +FHA +DAT +HVI +VIR +RGL +LKY +KYW +YWP +WPK +PKT +KTC +TCT +CTQ +TQK +DVI +PSQ +FVK +VKI +KIQ +IQE +QEP +LFK +FKQ +ARC +RCV +EDN +DNC +NCH +CHT +HTV +AVF +FGT +GTL +TLY +LYQ +YQV +QVS +LIY +IYN +ASY +YKL +QQK +KAQ +ERQ +WRG +RLQ +LQG +QGT +GTQ +GAK +APV +PRP +RPT +MPY +PYK +KEP +PPK +PKV +KCT +CTA +TAK +KPS +SGK +GKD +EAQ +QPQ +PQP +PQA +AQS +QPP +SNK +KRP +RPS +NST +TPP +PTQ +TQL +IKY +KYS +GGP +GPQ +PQI +QIV +ERR +RQS +SRF +RFN +FNL +NLS +KNR +NRE +LQK +DSP +SPT +TQE +LFI +FIQ +LRQ +RQC +QCC +CCV +CVL +VLF +SDP +SDL +KFK +RAG +NEM +VEY +YIT +ITH +THS +HSR +DVV +VVT +YPE +VTM +MFS +NLF +NPT +PTG +AWP +QPN +PNI +NIA +IRR +RQI +QIN +INH +IFY +FYR +YRF +EHH +HHN +HNG +GIA +HKM +KMF +VYH +YHP +HPQ +KES +PVI +IVG +KTH +SPK +FLN +EFS +FSK +KVM +VME +MEP +LYY +YYW +YWN +YIM +IMS +MSL +SDN +ARV +YRN +RNS +NSK +KSH +SHW +WNK +NKT +TIH +IHG +GLI +YNA +LFM +MNQ +DDC +DCT +TQQ +QQY +QYK +KQK +QKG +RFR +FRM +RMK +MKE +EMW +MWQ +WQK +RLN +NPQ +PQY +QYP +YPM +PMF +MFR +FRA +RAP +APP +PPL +PPV +YSM +SME +ETP +PTA +DIQ +IQL +AVQ +VQM +QML +MLK +KDI +IKK +RRK +LPQ +PQD +DVY +VYT +YTI +TIK +IKA +AHK +HKR +RAE +FLT +SQE +MMR +MRG +RGF +RLI +STT +TTS +KKP +HGT +TTH +GSK +KST +TTE +GKQ +KQS +QSG +SGS +SVP +QGK +GKH +KHH +HHS +SKT +KTK +TKT +VSR +TKK +RKG +KGQ +QSK +SKQ +QQP +SQS +QKQ +KQG +QGS +AIM +MNP +TPV +PVL +TVT +VTK +TKD +KDD +DHA +HAH +AHP +HPT +TLL +LGA +GAV +AVS +SPI +PIS +TAV +ENG +NGN +GNS +NSN +SNN +NNN +NMN +MNI +NIN +INT +NTS +SNT +NTQ +TQD +DAN +ANH +NHA +HAS +SID +IDI +DIP +IPR +SFE +FER +RLP +PTK +PDT +DTD +KTP +PQR +QRH +RHS +RFE +FEP +PSR +RYT +YTP +PLT +PNF +NFN +FNE +NEV +RIP +FIA +DQC +CNT +DFN +NDP +PSF +IQG +KRS +IEF +TNR +NRF +FTY +TYT +YTN +TNE +EMY +MYA +YAH +AHV +VVN +VNM +MFK +KIN +INL +FRP +RPI +PIP +PVN +VNP +NPV +PVG +VGD +GDI +DIY +IYD +DED +VNE +LAW +PHM +AVY +FNH +NHQ +KQY +QYI +QDF +FIL +DIR +DCL +TLH +SFI +RSM +SMN +MNN +NNI +LQF +KFN +VRI +RIL +KVR +VRC +RCL +YCI +CIV +IVQ +KDP +LLT +VMG +LRY +RYW +PKI +INS +NEI +DIF +IFE +PLE +LEF +FIK +IKV +VEV +VPL +LFV +FVQ +KCI +CIS +LSY +SYW +EYF +NLC +LCI +CIE +VIL +ILP +PII +IIF +IFP +LYE +NGE +SIS +DPY +PYM +YML +MLV +QAI +AIN +NSG +GSW +SWN +WNR +NRA +RAI +AIH +IHA +HAM +MAF +KIF +ETN +VLY +CNA +LYL +KET +QRK +KVQ +ENW +NWS +YVK +VKN +NND +KDQ +QYT +NSF +FNT +NTA +NNT +NTL +ENE +END +NDC +DCD +CDS +SEI +IKQ +KQI +QIF +IFG +FGK +LPR +RKP +SHN +HND +NDS +DSN +VNS +NSY +SYY +YYI +YIP +PNS +NGA +GAN +NGT +TVI +VIA +IAP +APS +SNR +NRT +RTN +TNQ +NQV +QVN +VNG +GVY +YEA +SFR +FRD +KLS +LSM +SMC +MCC +RQT +QTL +VDY +DYI +YIA +VST +SDA +QEI +RTF +TFP +FPS +NHE +KIL +DVD +EPA +PAW +LQV +LLL +PMT +TDA +RYI +DHS +FMV +MVH +VHR +HRP +RPF +PFI +KAI +FIF +FET +KHN +HKL +IRA +RPK +KCA +AYH +YHQ +SYC +DFK +FKL +ADT +WPV +TNS +QAA +EFQ +FQR +QRC +RCM +CMV +MVP +CLN +SHF +LWN +NDH +HIR +IRN +NLI +ITQ +TQN +QNH +NHK +VIM +IMP +PIV +IVF +VFP +PAM +AME +NTR +RGH +GHW +NQA +VQS +QSL +NVR +VRK +VMA +AET +TDQ +DQI +QIL +ILF +DEC +KFQ +FQE +QED +EAN +KRE +ATW +TWK +WKL +AVL +PRF +RFS +FSS +TGK +GKT +LTC +TCN +CNK +NKA +SRM +RMV +VDA +NGP +GPF +PFQ +QPV +PVV +VVL +LHI +QEK +KWK +WKE +SEM +THN +NRN +RNV +VIT +EPI +PIY +VVH +VHM +HMF +MFA +FAV +AVN +VLQ +HKI +MAL +KIM +IME +THW +QQF +EAW +AWV +WVK +KAN +YTV +TVY +YSQ +STM +TMS +MSI +SIP +TDG +GPL +LFE +FED +EDV +DVQ +TVK +AHQ +HQA +QKD +RPL +QDP +DPH +PHT +HTK +AHC +CRA +SQD +DGR +MSV +ATD +TDD +DAL +LYP +YPI +PIA +IDE +DVT +TLR +NSI +SIR +STI +TIA +LGV +VER +ERT +RTR +IQF +LVL +QLG +LGN +GNF +FTP +LVG +GPD +PDH +HVH +HCL +VVR +VRD +RDK +ESL +KHS +HFV +VPM +PML +GDW +DWF +WFT +SRT +RTS +SAC +CGL +YPR +PRV +PAI +KSM +SMF +TLC +LCR +CRD +RDD +DDT +DTP +TPM +VRR +KLG +GEF +FAK +FEK +IEG +EGL +GLH +LHV +HVD +EQD +SVR +VRL +SAI +IAF +AFG +ANK +NKK +PIL +IEL +KSW +RVR +VRY +YMV +IEI +QNV +DMD +MDT +DTT +NMY +MYT +TNL +EVR +RCA +CAA +TQR +QEF +NLP +PED +DKR +RQN +QNI +NII +IIC +LLN +NVA +LAG +AGV +IMG +APL +PLI +LIG +EQT +QTV +VSE +IYM +YMQ +NDQ +DQT +QTP +KVN +EDG +DGK +GKW +FMP +MPL +LGQ +FFD +PLC +LCL +LNW +NWL +TDH +VFS +FSI +IMK +LTQ +KFG +FGG +GQW +QWA +WAS +TNI +VPK +PKM +MQK +TNY +YLQ +QRM +RMT +MTC +CLF +MTQ +EDD +VPN +PNV +VRF +FNA +AKS +RIG +GKN +PST +VKP +KPL +LGK +DSD +SDF +DFD +FDV +DVR +RYF +YFS +FSE +SLG +SVD +DSL +LKN +SIK +RSE +IPF +PFL +FAM +AMY +MYL +LRT +EHS +HSA +EIH +VVP +TLQ +VCY +CYP +VTQ +RAN +NFR +KLC +LCQ +NKL +TEY +KSD +NFV +LAV +EAC +ACV +IAQ +VEH +EHL +QCA +VDL +DLQ +AVG +VGP +PEI +ITR +TRV +RVD +AFQ +DFC +FCA +CAN +ANL +NLD +QVQ +QII +IIL +SIL +LPY +PYV +YVR +PNP +PHV +SVI +MLG +YQT +ECP +CPE +CVN +VND +GIQ +IQQ +LSQ +SKW +IEY +EYM +YMP +AGQ +GQL +FDQ +GLC +LCM +CMG +MGW +WLN +HVY +VYA +YAI +AIR +LNM +QFG +FGA +APW +PWA +WAE +IIP +IPM +PMI +MIL +MSR +SRN +RNK +NKN +KNY +YLH +HRM +EVC +VCG +CGT +GTD +DIT +TTK +PTV +ADP +VAN +ANV +FNV +SPF +VID +IDA +DAQ +AQV +KPT +NTD +TDV +VKH +KHF +HFA +FAA +LPF +GTF +TFT +FTT +YVH +ISH +HEH +PSD +AHF +AVK +RQY +FRN +LCS +SDD +DNV +FSN +MPT +FTE +ITK +FQN +QNL +NLM +LMK +MKD +KDC +DCE +CEA +ASH +SHK +KEF +EFC +FCE +CEN +ADC +DCR +MSQ +SQI +LPC +PCI +CIK +NQH +KDN +DNT +NTI +IEH +GIR +EDA +AKW +SLC +CMA +MAW +AWL +WLV +VDH +NLK +KEW +EWA +WAH +AHA +HAT +ATI +TII +AMS +GDP +PNY +MTT +TLF +FCI +CIN +INV +CGQ +TKH +KHM +HML +MLP +VLR +LRM +RMA +MAG +SLQ +KIG +GPI +LQS +KPI +QDQ +VKY +KYF +YFA +FAQ +TTA +YPL +LLM +LMD +HDD +LGP +PER +EVF +VPY +PYI +YIG +IGG +QYA +YAT +ILL +VRE +SLN +QLF +ADW +WFS +KVS +IVR +NIL +MVK +RAV +VGK +NLG +EDW +DWD +WDY +YIS +FQK +IND +NDN +DNQ +VDC +CLI +ISI +KFF +FFN +DES +SHT +HTQ +IGD +DRF +VQP +QPF +LCE +DNE +NEG +GDV +SGF +LNK +NKI +VQN +TVR +NKD +DQV +QVI +VIN +NNF +FLP +NML +EFP +FPD +PDV +IIA +GIE +DVN +VNW +NWR +VRM +MAI +IPI +LGM +GMQ +MQF +QFF +DLC +LSW +WLW +LWD +WDT +YSI +VNN +NNL +EIF +FGS +SDW +DWC +WCR +SRL +ENF +FTI +LTT +GVP +NIR +IRF +SYA +YAV +KYD +YDA +KNT +LQT +AEC +ECQ +CQE +MVM +SQN +QNQ +NQP +AND +FDM +EGP +ETF +PVD +INW +NWK +WKF +FNQ +GNI +NID +VHT +HTE +EAD +ISC +SCV +CVE +FSH +HDG +GEY +GRV +VVI +VIF +QRD +GKY +KYV +GVR +EYN +YST +STF +TFQ +FQS +QSH +FDY +EID +INQ +NQI +IRW +RWL +NFI +DKT +KLW +WKI +DAW +AWN +WNL +NRI +FRG +RGR +GRL +LQI +SIV +PME +YGN +AHT +HTY +TYH +YHV +HVN +NSD +TFL +DDL +RVN +ESF +FNI +VDI +IKP +PAN +ITA +EFH +TQC +CNW +NWF +WFV +KGS +RLC +LCD +CDM +MRD +RDR +ALC +AYA +YAK +DPQ +QSR +SFF +KFS +NGR +GRY +TRD +YLT +KVW +VWD +WDL +MES +PVE +ETY +TYP +YPV +HNY +YLR +RTK +LCA +CAL +IFD +FDK +KFE +FEC +CDW +DWS +WSG +HIL +ILT +GSY +SYH +YHN +HNL +FRS +YAR +ARG +NNQ +KTW +TWE +WEA +EAR +RPQ +EPH +HSQ +FVV +QLQ +QFD +HTA +TAW +AWH +WHP +HPK +PKD +DNI +TNN +NLY +LYI +YIF +IFS +MGR +GRW +RWG +WGR +PDP +PQM +MQT +FMR +MRQ +SIT +IGN +GNM +MLN +TAI +INI +SWC +WCF +CFS +FSQ +QIK +GAL +ADI +EFN +NHD +RDP +SKA +RRG +RGE +INK +WLQ +QKN +VHF +HFL +WKV +KSF +GGY +GYN +YNT +NTK +NGL +PQN +VTA +VKQ +RRT +YHI +LWH +WHL +HLE +NQS +QSY +YNI +TNM +TEC +ECN +CNV +NVF +VFV +KGT +TIR +CDR +DRH +HSK +QFE +PEN +NRS +SGR +YMI +LSI +LHM +HME +VHE +HEY +DCI +CIF +ECC +CWN +WNG +SIM +IMT +MTG +YNN +NFF +FFR +LKP +KPR +KVC +VCT +CTG +GKR +CLD +LDF +FNK +ENI +QDK +DID +IDT +TRK +SFL +RDH +HSY +IST +NHT +HTG +QVH +HRR +WLP +PQQ +QQN +AYF +RPE +EGY +YNL +PAT +LRP +RPM +PMD +LMV +TPR +SDY +DYE +TYM +YMS +WNF +NFE +QSF +HPH +HHC +HCN +MRA +RHT +TKF +FFE +HSG +MEN +ENR +NRP +RPV +TYQ +VHD +HDY +CVW +VWN +NGS +RMF +TKR +AIL +VCV +DFS +HPS +MRF +RFC +FCV +AWF +WFF +FFP +FPN +NTT +TTR +VFW +FWD +WDA +AFS +SNF +FTG +TGC +GCH +CHH +HHG +GQN +GLY +YFQ +RFG +FGY +GYI +IPE +PET +TFS +FSG +SGN +FTD +DDF +ELY +QTN +TNF +LDA +LTI +TIQ +IQH +QHI +IVI +VIP +PRC +RCG +CGN +SLM +LMH +HGG +EVN +RTH +HLH +LHA +HAV +YTL +FPG +EPR +PRW +RWP +PRN +RNR +NRR +RRD +DLT +LTY +TYA +YAF +PKN +SRA +FGR +RWS +WSD +FTL +FST +ITI +TIG +IGF +GFY +FYT +YTG +GDH +EPF +LAH +HAF +SPP +KFH +FHL +HLD +WVV +ESV +AVH +IGH +GHL +LGH +ESI +IMY +MYP +YPT +PTI +LTN +VEG +EGI +IQY +YLY +LYG +YGA +KHQ +HQR +DTG +GGF +FSA +RID +IDG +DGS +TVG +VLW +LWF +WFL +MGS +PLR +KPG +TSW +WNS +VRT +TQV +EYG +YGC +GCF +CFE +KGH +LNG +GNK +NKP +KPE +EYD +GFT +EGM +GMG +MGV +VGR +RIT +LMW +MWP +WPE +CET +SYG +KRM +KMM +MMV +MVF +FES +FGM +HFD +SFC +CES +LHF +HFM +MRY +QPG +PGK +GRS +RSP +SLH +HKD +KSI +IVN +NQN +QND +EFE +GEW +EWI +WIL +ADN +DNH +GDC +DCF +CFM +AWS +WSN +RLH +QAR +FSF +SFP +FPK +EHP +HPL +LLF +LFN +FNP +PFE +YCF +CFT +FTK +KEG +CDL +PAQ +PFR +FRI +QGP +ERP +RQQ +QQC +QCS +CSQ +SQR +QRI +RIQ +QGE +NQC +QCR +CRS +RSQ +SQM +QSC +SCC +CCQ +LQN +NVE +EQC +CQC +MPG +GWS +WSC +SCL +CLV +FVG +VGQ +VQE +QTK +MLE +LEG +AQY +CQG +VIH +IHT +IDV +VSH +SHV +HVL +PRQ +IYC +YCS +CST +AGP +HEE +HHE +STW +TWS +AYP +YPY +PYS +YSK +KNG +NGG +GGT +HTC +TCA +PMY +MYI +YIY +YGE +ERS +VMI +KNK +VYV +YVG +VGN +GNV +VAW +AWA +AHI +NVQ +VQG +GQF +QFY +TPH +HQS +SYD +LNC +NCT +EWG +WGL +RLD +SWS +WSL +LLY +LYW +YWL +VSF +PFY +FYN +YNY +NYR +YRP +RPP +PPF +PFN +FNC +SKF +FTF +FSY +AQR +LGY +GYV +YVP +SWE +SEW +WIG +IGT +EQH +QHR +HRE +RET +DTK +TKS +GGL +AFR +QNR +TAC +ACI +CII +DVF +FGV +GVT +VTH +THR +MNV +NVN +VNV +CVQ +VQA +PVF +VFI +IYT +YTS +IEV +QNG +NTW +TWP +WPT +PYP +NGW +GWN +NGD +GDT +LYT +YTC +PTY +TYI +SIN +INE +NNG +SVG +TVN +KAP +YDN +NYI +EFG +SRW +LMY +MYW +YWI +SYQ +YQP +FNR +NRH +YKP +PLY +LYS +YSW +VEW +EWV +WVG +RHK +HKE +TLK +KSK +KTQ +YRT +KHK +VTV +RGD +DIV +QGM +GMS +VII +IIH +DAC +TFH +FHT +MVN +VNR +KNN +KRH +SIQ +NYT +WGF +GFC +MVT +VTI +TIS +ISY +GYE +YEP +QVP +YLV +GGC +GCG +CGF +GEH +EHI +LEW +EWE +WEP +PRL +LHL +TGP +GPV +PVQ +VQV +QVT +AIQ +QAH +HEV +GSH +IHK +VQT +TGT +GTR +TRL +SSM +GHP +HPF +PYE +IHR +HRH +RHP +HPY +YPC +PCS +CSK +GRK +RLF +AIP +EHG +HGR +AWM +WMH +MHI +LMG +MGG +QVY +VYF +YFC +FCY +CYD +YDK +SPY +SYE +EDF +FNM +MEF +SPC +PCG +GTH +PYW +WLL +LQW +QWL +PYT +TNK +RHF +HFG +ART +RTI +IHW +HWV +WVQ +RMG +DAS +ELG +VTT +DRG +WVR +DVC +VCA +TIF +IFH +ELM +DEY +QRS +NVG +GTE +TEN +HAG +GVQ +YTD +DLY +AQN +GVD +DGM +GML +CAI +IRP +GIW +IWG +WGN +GNG +GDQ +QTM +GHV +HGF +GFI +AAH +DGT +APG +PGQ +GQA +YFI +FIN +PIN +INM +MFE +FEF +FAR +QRW +KMR +MRI +SGP +GPA +AVR +VRW +RWV +WVM +VMT +TGW +WQR +HFR +FRF +GFP +PAP +RLY +NYF +LFT +TTQ +QAL +YYV +QMK +ARA +MMK +QLH +RMR +GRT +RTP +RLE +AHN +HNI +LQA +CLQ +PLM +LMA +SFK +LDP +PDS +SMG +EMS +MSC +SCA +ARI +FEM +EMT +MTL +LQP +QPL +HKK +DWN +WNT +QAT +QGL +LGG +GSP +HSH +HTT +MAN +YHF +FVT +KED +YAN +ANY +IQA +QAD +ADY +NHG +PSM +SMT +MTA +THF +HFP +FPR +YGV +GRE +CVM +VMM +MML +GMK +FCS +SYL +PEP +LMT +MTF +LYD +DDW +DWM +WMR +CSR +PPE +YLM +MKF +VNK +NKM +KMT +LLW +LWP +WPP +DQA +QLD +IQV +VGV +GVV +IQS +QSA +DIN +INF +QDT +DRL +RTE +PAR +PTM +TMP +PPQ +PPG +GTP +TVP +PGP +NPA +QVD +SGV +QPR +HNV +NVH +VHK +TAM +PLN +LNR +NRL +HTH +THM +HMA +QCK +CKD +HFS +YFT +FTH +HRK +NHS +APF +PFS +QEE +MTS +ALH +HDV +QEN +FNN +GIF +APQ +QQV +MTV +LPK +PKP +PTD +VGT +PCP +CPA +SNM +NMP +DQG +TED +GGH +HPP +PRG +EMH +MHW +HWP +PMK +AIG +LTM +AGY +GYL +KWP +WPL +FVI +KRC +CVY +VYY +YYF +YFK +PQG +GAF +FSL +LSG +SGY +YNR +RVM +VMR +FPF +PFK +HIS +KKH +KHR +HRT +RTW +TWF +WMA +GHF +HFH +FHE +HEK +PLD +SFY +FYG +TDN +YEH +EHD +EPD +PGR +MHP +PAY +YPP +DMP +MPR +RAH +AHS +SFT +GPG +KHG +LPD +LCP +CPR +EPC +DPP +KPP +PPC +PCF +CFR +EPW +PWT +WTP +PGH +HGA +GAC +IMA +RNC +NCD +CDK +RGP +GPP +SEP +PKF +AMP +VAP +APR +RQP +KVP +FVN +VNT +ESC +CEV +LYC +CIR +GKV +LVV +VVW +WDE +ETS +VRN +RNY +RIF +KFY +GSM +SMV +EHY +HYH +YHT +THV +PSH +SHQ +PYG +YGY +GYT +IQI +QIE +EIN +TFR +GNC +NCI +RPY +AQI +CQK +HAA +MSN +HEW +EWQ +WQF +FDN +NAW +AWQ +QEM +EML +LNH +QKV +MDA +DCH +EHQ +FRR +NKS +SRP +PYF +YFE +QVC +TYS +DIH +HRQ +GDF +DFP +FPT +PGV +FQL +EKC +KCD +CDY +DYP +YPS +GSQ +QMS +ACD +DYD +VRP +DVW +VWE +WEH +EHE +LDH +LMM +QQT +STE +QRP +RHC +HCD +CDV +TSC +HHQ +HQL +NHL +TPI +PIK +VSM +SMR +MRE +DRS +RRR +PRI +LNQ +QST +INR +ARQ +KFR +KPY +YWE +RVA +RQF +QRV +LVH +ARY +AMG +FEL +KYY +YVQ +KMA +IHE +MGP +RGC +TSV +DSC +SCS +CSN +TQS +QSV +GPT +MPD +PDQ +DQF +QFP +RPG +GMM +MMF +FPV +SEC +ECS +PEC +ECE +ERG +ANN +NNR +NRM +LQC +QIG +ISA +REH +HKA +LQM +GKS +TRM +GCD +GVK +YHS +HSN +WDD +YGD +HAD +IGE +IFN +FNS +QLW +WMV +VDN +FQT +QTE +YWS +WSE +LGF +LHG +HGY +FEH +HFK +FKD +DQM +QFT +FTA +NDT +QTR +VFN +AFP +KFA +AYL +YRW +RWH +WHS +SYI +TPD +FHS +QCL +CLW +WRW +RWW +WWK +WGC +GCP +LTF +TFI +IRH +RHR +EFY +IDM +DMV +VKT +DMY +MYD +DTF +KRW +RWD +WDP +MVL +EMA +QGR +AEW +WIA +TGY +PTF +FEN +GHR +QPI +PFP +FPH +HHI +ILQ +IDF +NDY +DYA +YAC +CSI +TRC +RCY +CYK +ASC +SCT +SCY +CYM +STQ +MIE +NWE +WEF +PDN +DNN +NNA +API +KHA +AFN +LHH +HHF +HFY +YRD +DGY +GYS +LDY +QFA +SVQ +VQQ +CVK +AQW +QWI +SCI +DNP +DMI +YMR +LIN +CLG +GSC +SCN +DFA +CGY +GYA +IVC +CFW +HSD +GQK +III +GGI +RGA +YER +GLQ +GPH +PHG +HGW +GWR +WRM +SWG +LDQ +IVV +YLP +FQQ +QQH +QHY +HYG +YGG +HRS +RSD +KLH +LHN +DIE +IHS +DAP +AEM +EMK +IGY +HFI +QRY +RTA +DWG +YNH +NHC +CDP +QDR +WRN +NNW +NWW +WWQ +WQM +HAP +PLQ +LQY +AVM +MAM +MED +LFA +GNL +LDW +DWE +RRP +RCS +SRI +IQT +RFW +FWG +WGE +WHV +EGT +TAR +WFI +YAD +DWL +LWG +WGY +GYD +HIA +MPQ +EWR +WRY +RYA +YAL +NWQ +WQP +PPY +YDW +WSW +WML +IPD +CNP +PGC +GCV +CVD +QGV +QLY +YIC +ICF +CFP +LPM +MTI +TIP +IPG +MKT +QTF +PGI +RWT +RGW +WQA +PDD +DDY +RFP +GMT +RRY +RWK +WKP +KPW +PWR +HIW +IWY +WYT +EGW +QPD +RIC +ICV +LFF +FFA +FAP +RNA +NPW +PWN +AGK +LYM +FQH +QHF +NAV +VEM +MYQ +YQR +QRN +RNF +TMH +MHS +RFH +KHY +HYS +YSF +TRW +RWE +FYS +GPM +PMR +MRT +TGH +NWI +WIV +IRT +TGR +TTD +DSG +SDG +QYY +FWI +WII +FLY +YDL +ACW +CWA +WAP +LFG +IWI +WIP +NYD +YDQ +GYM +CVR +RGM +GMA +AYV +SKM +GIP +IPY +PYR +RAM +KYA +YPH +PHI +HIE +RTM +MDP +MRP +PGN +HSM +SML +GIM +IML +YPW +DRR +MWC +VQD +QRQ +QQI +INA +RNQ +EMR +YLN +PTR +NPC +QYG +DAH +AHR +HRA +QAW +GRA +AHH +HGC +GCS +SRH +GVH +VHG +AWI +ASF +QNP +NPM +PMG +LMP +VYW +YWK +WKG +RRW +KIW +IWR +WRA +EYA +GGN +DRY +YYG +FYA +YAM +AMR +MRL +RLW +WPG +GEI +GTK +FAF +MVG +GKP +MFY +FYM +YMT +TGQ +VVV +GMV +HQG +PHY +GVW +VWI +PNN +RKY +HAI +IIG +DTY +PEM +LCW +WVP +VPG +PGY +YSD +VEP +KPF +PDL +PMN +MNM +NMV +VMQ +MQQ +HPR +KVG +TWG +WGK +VGM +IGL +LYV +GIY +IYV +RHG +HGV +EHN +HNE +QMR +MRV +KYQ +PIT +TEW +EWT +WTV +LME +AWW +WWG +WGP +PWF +WFA +IIV +KRF +FMN +MNE +SMP +HHM +HMY +MYG +GQY +YGQ +GQG +WLI +LIF +QYR +IFA +KWL +ESG +DFH +FHR +HRG +YDR +DPT +IKH +HGP +RTD +LYA +PVM +MGH +GHT +TVQ +RTY +HGI +KHT +HTP +KMC +MCW +GRP +AYG +MKV +TMW +MWA +WAK +HEA +CGG +LVF +RYR +WLD +NAF +VGH +SAP +QAG +QDW +DWT +YTA +AQG +GLT +TTI +SIW +IWL +RQD +NIE +PDY +RMD +INP +DIG +GRC +CTK +DRM +MIG +QNF +NFA +PRY +MHA +FEG +AIW +IWS +WSM +GPS +ATR +RRN +VPQ +TSH +CSP +DNG +SFM +FMI +MIF +DCP +CPP +AQH +QHC +CRK +RCR +AFF +FFC +FCP +PPN +AIE +AID +GNT +FYP +AMV +SYR +QDM +MIC +CYN +YNQ +PTT +GQC +QCY +DHR +GCA +CAC +ACP +CPN +CCS +KCN +YKT +TCP +LCY +MFM +GCI +CID +CPK +YVC +VCC +CCN +DRC +RCN +VCL +KCY +CYV +TQT +QTC +CEK +EKY +VSY +YFH +FHD +YEC +ECT +CHR +GPY +PYN +NVC +LCN +MGE +THT +HTI +HTS +HLN +KFI +ITY +EIP +NAN +LII +DFF +FCN +TSM +TYF +LLC +LCT +CTF +FLH +HHP +LHQ +HQT +FPL +PMS +LFY +YRK +KTN +TNV +YKH +NMR +YGP +LSH +PHD +HDT +HEC +FLC +CFG +AQQ +SGC +GCR +CRF +LWL +EMD +EGF +VGF +TWV +PQK +HDA +THC +HCG +CGW +WSS +GWP +MPM +IYI +HLP +RPC +PCL +NNH +HIY +YTY +TIM +IMI +FVF +MGA +YLG +ACF +CFV +VIC +ICI +EGC +CIH +IHF +HDI +QSD +PKG +VML +LTH +THK +HKG +YMH +HSE +LMC +MCV +LFH +FHI +QFC +KYK +PFV +PPI +TVM +IKF +KFP +QGY +GYG +YGM +AMC +MCL +MKI +QIM +TRT +IDK +WLH +DND +FIV +KGF +HPN +AFV +YKR +VFF +FFV +PKS +TKQ +PNH +QIY +NSR +IQP +QPK +IVT +CHV +CLH +QAN +NEH +YIH +DVM +MLC +LCV +IQR +RYK +WLY +IDD +TFY +FID +SPN +VVC +TTN +EMM +TGM +MSK +SHR +HRN +GEQ +FIC +CTV +MFH +YGL +YGS +MHE +HEM +MMS +SMH +MHT +VLC +KYP +TGI +RYG +YGT +GQI +GPK +PKQ +GYF +WLR +CYI +IFV +GYQ +FPM +YVV +APY +IKI +MDS +HAR +PNT +HVT +VNH +HPD +NIK +ESD +FHV +TFW +WPD +PDM +DMK +KYN +TWY +IHQ +SHP +EYP +YPK +PKL +IRS +RSC +CSA +LMS +PHK +KPV +VCI +FGW +WFH +FDT +KYG +INC +NCA +CAV +FCK +CKK +FKV +DYS +TRI +RKF +FLM +MEC +ECR +CRN +PRD +PPM +HLR +GHQ +HQP +DYC +YCT +PCH +MIT +DPI +PIQ +QMP +EVY +RGS +SNV +NVP +PSC +TPF +RKC +CVP +QFQ +MDR +KCP +CPH +PHR +YTK +YDS +EKW +KWH +WHA +KDH +HRL +REF +FGD +FGE +RND +SYT +PEW +EWF +TGF +CNG +NEF +VPC +SMI +RWF +PHE +QNS +GNY +MLQ +PFM +GDM +TMK +MSP +GQP +GLM +VFQ +TRA +PIG +FQG +GMR +TAQ +AQM +NFY +FYQ +GFG +DRT +KMY +MYE +NRY +VPH +HVP +LHP +HPG +VHP +PQH +SHA +HMH +KWF +WFG +LEY +DYK +APM +PMH +NPK +QTS +THQ +MPH +SHC +HCV +SDC +CVT +KQP +QPM +MNA +GWV +LFW +FWL +WLG +QKW +KWW +WWH +WHT +HKN +QTD +QID +NFG +TPN +NSW +SWF +VDT +EFW +WQN +NIT +LLI +GTN +ESN +NRW +RWC +WCS +CSW +YQL +QLM +MLF +MLW +DPG +RHW +HWD +WDQ +NER +HEG +FPY +PYA +QMN +MNL +KLY +FAD +TKC +KCH +QKH +YKI +NDM +MVI +SHI +HIQ +ECK +CKY +KYE +RQV +KLM +MKL +YVT +VKM +DHY +HYA +DME +VFC +CIT +PIF +IFF +FFF +KIP +WFK +KSC +SCK +CKG +CAY +CKS +LQH +QHP +PWV +WVE +MRM +MLH +SHM +NSM +QGN +GYY +YYD +KGW +RYP +YSP +PND +ITP +IFC +NAC +QVL +NKW +KWT +WTL +TCD +LCC +CCT +HLC +YWA +WAI +TDP +IDY +YVN +LTW +CTI +AFY +FYI +YGR +TRH +RNW +WRL +EVH +TPC +CAP +IIM +MGT +ILC +CWL +PFF +FFI +PFC +CHM +HMP +VIY +YAY +YFN +IKC +CKF +KFC +FCR +CRQ +WNI +WRR +RRC +RCP +CPV +YQI +FGN +CVI +IFI +ITW +TWI +CRI +ILM +DTC +VHH +HHY +HYV +LHC +HCK +CKP +ETC +IQC +HNC +IYQ +LPW +PWK +ITL +TMY +CDF +DFW +WLS +TCC +IMH +MHL +TPK +LVW +VWV +FFW +FWR +WRQ +PNK +VCW +FII +PIC +ICK +CWF +FHM +FNW +YTM +AFH +FHK +RFK +FKC +PNQ +GAW +AWD +YTT +TWN +DIW +IWV +WVS +AGH +GHA +AMI +AVW +TAH +QIS +STC +TCG +CGA +ILY +ITG +ICW +ICR +SCW +CWI +WIH +IHP +HPA +FFT +FTW +TNC +EKM +MLI +ICM +CMT +YIV +DRW +EVW +VWL +CTC +NAI +LMI +TVW +VWT +WTI +ISM +SQC +QCT +QHD +HDH +IYH +YQK +FAS +CKL +TFC +TEF +IRI +DHP +SIY +ADF +IRC +MPS +NWT +CEG +KNW +WSA +MAV +DML +MPV +WIY +IYL +IHH +VFK +FIP +IMV +SIH +TMQ +MQS +ACK +FLF +VMW +WCP +CPF +NIM +CNE +FVW +YIQ +CQY +KQH +QHS +LMQ +DCS +MEI +PTC +NRK +QVG +CTD +FVH +LHW +HWA +FVM +AMW +WLF +NQY +QYN +TCV +DFM +FML +VTY +MLD +MRR +CNQ +CNY +KIY +IYF +RNP +FFK +GIN +EQV +SEH +CDH +TVH +VHW +IWP +PHN +TCE +HRD +NDG +RTT +VNA +VGY +NYQ +KCS +YFG +MFQ +NWA +VMV +DWP +CPI +PIW +CIA +NYP +PHP +ITF +SNH +IMM +MMI +MII +KVY +SYP +TMG +SMQ +CGP +GPC +PCD +ANI +RLM +SWV +TRY +THI +LGC +NCK +CKQ +VHS +VWQ +FKF +QNW +NWP +WPA +HNA +YDY +YVW +VWP +YLC +PVW +WIS +IVW +VWA +IGV +TTC +TYC +YCL +CLT +YVL +HGH +KCC +CCK +CKR +IMW +IYR +SNY +LRC +NYK +NIY +YRH +HTN +MQV +TFN +FQF +NCC +CCC +APN +CGK +SKY +RCD +GKG +HNS +RDW +DWR +WRK +TTY +YIW +WYR +QFW +FWT +QWN +WNP +VRH +RHQ +EVQ +QNY +YNF +NFP +QNC +SLW +WEL +FYV +YFV +VCM +PLW +QLT +MGN +GNH +MCG +ETR +LWS +WSV +SVW +VWH +WHY +QYW +YWT +VYI +FSM +NYY +IAW +CSH +HMG +DFE +WSI +IWQ +WQY +CIP +IPQ +HST +QWT +GVF +PDW +MAH +HVG +IWH +LWA +WAC +CIL +DTH +THH +YHL +QKY +KYH +YHK +YNW +WTK +VHA +VWY +WYQ +WND +IWA +APD +ENY +TFK +HDK +QFN +RRH +PNC +NCR +HFF +TIC +HDE +VWS +WSQ +YLF +ALW +WGG +TRQ +QYH +CVH +SMW +MWY +RNH +QTY +WQL +GCT +APC +CAE +FWF +WFQ +LCH +CHF +WSR +GGW +TIN +DQH +QHG +PFT +ISF +WDN +NWN +KEC +DKP +FYF +YFP +DSM +WEI +MSM +YII +MMN +PMP +RCC +CCP +CPT +SGW +GWT +NCP +CPG +GQH +IWN +WNC +NCY +CYS +YSR +HTF +HHA +RPW +PWH +WHN +HNQ +VQW +ECG +SMS +ANW +RAW +SFQ +QIH +HHR +REW +YEQ +CRP +FKM +GQM +WTR +ICL +MVW +ISW +IRY +LDM +RNI +QTH +THG +YVI +VPF +DAM +CWD +WDR +DRQ +MPF +PFG +CCI +AIC +CQP +GCW +WVI +QGW +NIG +CSV +AYY +STH +MGC +CFC +CLC +DYT +QVW +YIN +GQT +QWE +WES +QCH +CHP +VCR +WAY +EMF +MFI +TWC +WCV +FCF +SRC +RCH +HLT +TFF +IWF +WFY +NHN +PQT +QDN +TNH +FAW +RWQ +LWI +IAC +WNV +RHM +MEY +EYT +NVM +TWA +GWG +CQV +PSY +IYK +DTW +TWR +WRE +CSC +SCD +IWK +WKS +NYN +KNF +PNR +SQH +WFP +SWD +WDI +AWG +WVA +VMC +GWH +WHE +YCR +GMF +MFF +VTW +CDC +GYC +YCN +TMN +PCV +HCP +CCL +TQI +FCC +CLE +PRH +WST +MMD +YGH +SWA +PTW +TWD +INY +NYG +NCL +KWI +WIF +FGH +GKC +KCM +GWA +WAQ +FMY +MYY +YYQ +AKH +HKF +ECA +KHE +ICG +GMH +CTR +DHH +HNW +MIH +HPV +WMP +RVQ +DHC +GHD +AWE +WET +CHI +HIG +NTY +QNN +GAM +HLY +GWM +WMI +TCI +RYS +HNT +NQW +QWS +DPW +YSC +MPK +EWK +YAQ +AYW +MLY +CAR +KYM +YME +EYQ +MTN +NHY +ATM +FFQ +RPH +QMF +YGI +IFT +MMP +TDF +CHN +EWY +HSI +NFM +FMD +MDF +FKG +NKH +YMD +YDI +MCP +QYQ +TIW +VAH +HEF +FPI +YPF +HGN +SCR +NMG +MIN +HTD +MFW +WNH +MCI +WEN +SVH +CRV +KMD +FQM +QMI +HDS +CHG +WAV +PKW +PQW +QWP +TSY +QWR +TCR +SEY +SHY +HYQ +SFW +FWA +WAM +GFN +VMK +DYW +YWY +WYS +HWQ +WQT +VMH +MHF +PKY +VKW +WWS +HMM +MMT +MTY +KWD +TKW +KWS +HPM +MKP +KPH +HNH +QHA +MVY +YYT +EYY +WDF +GYH +WVY +YGF +GFH +HDP +NEW +WYE +YKY +YIE +EWN +GTG +YAS +CSY +GMN +RIW +IMD +TYE +DHF +HIK +PCC +CCE +CEW +GHY +DIM +TDK +KWN +QGF +GFM +ATY +TYG +YGW +MWR +NKF +WTG +PYL +YQN +QNT +RGI +GHI +HID +REM +YRC +QYS +DYG +CRY +GWD +GMC +MCA +CAF +EMC +MCK +DMM +MID +MFV +VGC +FGP +KAW +HLK +DWV +KYR +WTC +TCF +DSW +GTW +WVH +TNW +ICA +CAK +HIM +YCA +MLM +FRW +WGI +QFH +FHH +HHT +SCF +CFL +NHH +IDW +DWA +WAR +ARW +WHF +FWV +NTN +KKW +SAH +CGS +VWF +LWW +WWR +WRP +HRF +SHH +HGK +NYE +YEG +FSC +NAM +MKM +KMG +IGM +TWT +WTM +SWQ +WQD +PMM +FPP +FIH +HHD +RFA +NQM +CIG +IGQ +YSH +IIW +IPW +PWY +WYL +HKY +LWE +WEG +YDF +FGI +KGM +HSC +GTC +WPF +WWL +HQD +WGD +FKP +NYV +YMM +WGH +HQF +GGM +YDM +QGG +QDC +CDN +FDC +EQY +MQM +GYP +WLM +FEW +FAY +HLG +DGC +HLF +AHD +GFW +FWW +YTH +THY +HYK +TQF +FMH +DMF +YFF +VWG +WGV +TEM +RMP +FNF +RHY +HYC +YCE +MQI +FFG +YCK +CKH +YYN +PPH +CPS +GHH +KQN +FTC +GCK +CRG +QHH +QYC +MGM +DPM +MGI +EPY +QCM +CMQ +NIC +EYC +CRT +YPN +TRF +RDM +WPY +LYK +MNC +NCV +SCQ +CQA +GHN +HNN +AMF +LYN +NIW +ECF +FAC +ACA +RHV +EWM +WME +FEY +DDP +TMT +MTW +IPH +CNI +NIQ +NVW +VWK +DHE +RWN +FCT +PCW +DMW +YWF +FHG +YMG +DHW +HWK +VCK +SWK +RFF +CAG +MFT +VMY +MYN +PRM +RMC +CPM +THD +CKI +FWQ +WQV +MDY +RME +WGA +AYM +YYL +FFM +KNM +YCP +CPD +WDG +HNF +MGY +LEC +CLY +SWI +NLQ +GSN +PQC +QCV +PNW +IYY +NMI +EGH +HIP +WQG +MWS +HII +YNG +RMH +WKR +RHI +YNK +HQE +RWM +DHT +WEV +KCE +IWT +YRL +KCG +WSP +KGC +CKA +HDM +MPN +DKC +DNR +LCK +YRM +RFQ +FMM +WMS +QIW +HVC +NWD +MDG +FIW +DPC +HED +KWQ +WQQ +PVC +HLW +TYN +GHK +EWD +WDS +PHC +HCI +CIQ +IWD +WDV +AWC +IDC +DCA +CRR +WPM +QYD +HYR +HCW +CWS +WHI +WRD +KMP +VIW +AWK +WKH +HYP +FFY +QCI +CIY +FAH +NWG +FYE +TDW +DWK +CEP +HMV +DKW +YFY +VDW +HKS +MQH +FDH +CCM +MMM +DYN +WKQ +WCL +IHN +NNY +NYH +VNY +HTR +MNR +DMH +MHY +GTY +IFM +QRT +GCE +CEI +YEM +RMM +YTR +YAP +YMN +WGQ +WNM +GHM +WQI +NFD +WEY +FKY +HYD +HVW +AMM +RMY +QWV +MMQ +MSF +HFE +WER +HQM +VQH +YPQ +PQF +GHC +HMN +MNT +FFH +MMH +FIM +MIY +IYW +YWH +FMC +MCS +DWY +WYA +MWK +CMR +HYN +GWI +WIW +KWC +PWQ +RYC +THE +YQF +ERM +EWP +SWY +WYN +WKY +WEC +ECM +CME +RVW +VWC +WCK +RFY +NHM +KHC +GWC +HRW +RWI +WIK +FRC +HIH +RCW +CWP +CGI +FVC +VMN +KDW +AMH +MHQ +NQR +TCY +CYT +YTQ +HHV +AHY +QSM +LMN +FMT +MTH +GRN +NMQ +NGY +AWT +FCG +NMH +MHM +YCQ +NWC +CKT +VCE +HWH +NLH +VWW +PCR +RWY +WYF +YCM +QVM +QHT +HVR +RMN +QPW +FRH +HQK +YKF +MQN +KWE +TYV +HMR +ICH +KYT +TDM +CEY +CVC +PAC +NFK +KCF +YNC +QSW +WEW +WPW +YQH +NFH +MSY +YNP +DQP +HKH +MTK +KAH +VKC +YKW +GWW +WWP +MWG +VYC +YCG +HSW +WNE +CFI +CLM +CHK +RCQ +TCQ +PFA +NNC +QGC +MNY +NYM +KQM +QME +NCF +PDC +WAN +RPN +VCP +WIN +PPW +PWL +CRH +PWD +SYM +FGC +YIK +VNC +YTF +SNC +QHM +MEH +CQT +ITM +EYH +CQF +DYM +SMM +QMH +CYA +MAC +WVN +WAT +FWM +WMT +CCG +CYG +WAF +EPM +MVC +HWG +ELC +RCI +WQH +FWH +QWQ +AGW +NWY +WYC +CRW +CQS +LIW +CAQ +QMW +MWT +CER +ERC +VGW +IAH +NAQ +WIM +MKC +FQC +MWE +TQM +YHW +HWS +NYA +WMM +MMW +MWN +WNW +NWM +YEY +PCQ +HFW +FNY +NHR +NSC +TNG +HVM +HQW +EYW +IWE +HCE +PYH +YHD +YKQ +SWH +HAY +QMY +KIH +WFN +CSF +RCE +YCH +GRH +YNE +HQN +QPH +HYL +MHV +WIT +SCG +SPW +FHF +CIW +WAG +CTW +YAW +RHH +NFW +MNK +GEC +AHM +CYY +HEQ +MWV +IMR +FCD +HQC +CYF +MHC +PMC +HQY +WTH +QKC +HRC +HYF +CYL +HKC +WPS +WDC +FMQ +QHK +CFK +NEC +DNM +CQM +QMT +MDN +DCK +WDW +LHY +TKY +FPC +MDM +QWF +MDW +DWW +WWE +GLW +TWM +MSW +WEQ +WKN +PMQ +WAW +WMQ +DCY +CYR +CFH +HMS +IWW +WWI +PFW +WVC +ACY +MNS +CGC +GCM +TYY +YYS +MIM +MKW +HMI +FWE +MKH +MEW +SMY +MYH +HYI +CKN +NMM +RIM +SKH +YEW +CQR +RYH +HTM +WKT +KMN +FKH +TCK +WYI +HNP +NGC +MRN +FHW +EIW +KVH +WFE +YCY +AHW +TYW +YWR +WNA +EMG +CFF +HYT +FHQ +NKY +HHK +PCE +FCM +CMY +DHM +QQW +QWY +WYM +MRW +FPQ +MME +MYR +LWQ +GWY +WYD +HPW +YWD +CAH +EQW +QWK +WSH +NMC +PNE +FYH +QKM +HWE +WHD +RQW +SWW +WWA +MYS +KQW +WWT +CPQ +WIE +ACC +CCH +WEK +GMY +HFT +WTY +MMG +WTN +YYM +NTH +YCC +CCF +DYQ +WEM +WGT +NHF +CMS +WGS +MIW +YQM +IHM +QDH +TWQ +CAD +GNW +NWH +YYH +YYY +YFM +TPW +WED +MCR +YNM +WWD +MYV +YWM +SCM +CMM +NRC +RCT +CTN +YHM +QWC +WCT +TTW +TWW +WWY +WMG +YYC +WID +YVM +WIR +FYC +FWS +FYW +WTW +RCF +QQG +HMD +HEN +CKM +MKY +HCF +SQW +TYD +GIC +FQW +IFW +YQY +CCY +WAD +WSF +MYK +NDW +MIP +QWG +TCW +CWW +YLW +TQW +IHY +MQC +QCD +WTQ +MWW +VWM +WMK +GMW +MQW +NCQ +CQI +MRC +PWP +WTF +HVQ +HMC +DWQ +ILW +PWS +YHH +CPC +YHE +HAK +RNM +CEH +CMF +QHN +QCE +MDQ +DHQ +YTW +WLC +MCF +WFC +CFQ +YCW +CWE +MPW +WYK +MGF +FTM +CWK +HWF +PCT +MHN +HKW +WYV +DCW +CYQ +CAW +HWC +HWR +RSW +PYC +FKW +WFW +FMF +YMY +DCM +YDH +LWY +WKD +WRF +DKQ +QEC +WTE +CEM +GCY +MNH +CEQ +HYY +PYQ +QIC +GPW +PWW +MCD +WHR +NYW +QWM +CQQ +YHC +FCH +CHQ +QCF +NFC +PCN +PWG +CMI +CTM +QCP +WWN +TMC +CYW +EHC +CCR +FTQ +CNF +FDW +DWI +PWM +YWG +KMH +PWE +KWG +WGM +WHM +WPQ +CHY +VWR +WRH +CYC +AWY +DHN +CIC +CPW +ICP +QWD +CQW +CTY +WRC +WYW +MWL +CGH +HPC +PCY +EWH +QNM +PCM +QMM +WMY +WPN +WCE +HQH +CNN +CMW +PCK +QWH +NTC +HIC +CMC +MCQ +KHW +KCQ +MHK +CWG +HMT +WFM +IWC +CML +HWT +MHR +DQW +IQW +WVW +WPC +WHG +WYH +IEW +VHY +YQW +WDH +CHD +QPY +WKC +YDC +NHW +WDM +QPC +CKW +KWY +NCM +CQN +MYF +YMW +MMC +KMW +MWI +MHD +ECI +CMD +WCI +CGM +GCQ +MCE +WWF +WTT +HDC +FCQ +DMN +PWI +RMQ +WGW +WYP +MYM +HCC +CDQ +MNW +CMP +RCK +MWD +FPW +QTW +WNY +MCT +MHH +IWM +CFY +HYW +PHW +HWW +CFN +MWF +HCM +MWH +GYW +HAW +DWH +YWV +NMW +QEW +CNC +WDK +NKC +GCC +MPC +MCN +CCA +KWM +MCM +HWL +WSY +CKC +WMF +CWY +HCQ +WCA +HMK +DHD +YHY +DNW +WCD +WPI +WFD +WHW +WHC +HCY +WHQ +IMC +KPC +YMC +CRC +MCY +ECY +MCH +HWI +DCQ +PMW +LWC +CRM +DMC +MNF +HWY +YWW +YWC +WYY +EWC +FWC +FWY +WMN +WWV +EWW +WCM +CAM +WKM +WHH +YMF +WCQ +WIQ +MFN +ANC +ECW +WCG +CIM +WQC +CMH +MYC +CTH +HHW +QWW +WIC +CPY +MDC +NYC +CMN +WHK +MMY +DEW +QHW +WQW +CEC +TWH +HFC +WKW +HWM +MQY +HDW +WYG +CWM +CYH +HYM +QMC +QCW +NCW +YQC +FMW +WMC +WWW +HMW +RMW +CHW +WCW +HTW +CWC +WCY +YWQ +WMW +CWT +CWH +MWM +WWC +WCC +WCH +WWM diff --git a/chebai/preprocessing/datasets/go_uniprot.py b/chebai/preprocessing/datasets/go_uniprot.py index dba9940e..a2c4ae54 100644 --- a/chebai/preprocessing/datasets/go_uniprot.py +++ b/chebai/preprocessing/datasets/go_uniprot.py @@ -8,9 +8,15 @@ # https://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/docs/keywlist.txt # https://www.uniprot.org/uniprotkb -__all__ = ["GOUniProtOver250", "GOUniProtOver50"] +__all__ = [ + "GOUniProtOver250", + "GOUniProtOver50", + "EXPERIMENTAL_EVIDENCE_CODES", + "AMBIGUOUS_AMINO_ACIDS", +] import gzip +import itertools import os import shutil from abc import ABC, abstractmethod @@ -24,11 +30,24 @@ import requests import torch from Bio import SwissProt -from torch.utils.data import DataLoader from chebai.preprocessing import reader as dr from chebai.preprocessing.datasets.base import _DynamicDataset +EXPERIMENTAL_EVIDENCE_CODES = { + "EXP", + "IDA", + "IPI", + "IMP", + "IGI", + "IEP", + "TAS", + "IC", +} + +# https://github.com/bio-ontology-research-group/deepgo/blob/d97447a05c108127fee97982fd2c57929b2cf7eb/aaindex.py#L8 +AMBIGUOUS_AMINO_ACIDS = {"B", "O", "J", "U", "X", "Z", "*"} + class _GOUniProtDataExtractor(_DynamicDataset, ABC): """ @@ -73,13 +92,20 @@ class _GOUniProtDataExtractor(_DynamicDataset, ABC): def __init__(self, **kwargs): self.go_branch: str = self._get_go_branch(**kwargs) - super(_GOUniProtDataExtractor, self).__init__(**kwargs) self.max_sequence_length: int = int(kwargs.get("max_sequence_length", 1002)) assert ( self.max_sequence_length >= 1 ), "Max sequence length should be greater than or equal to 1." + super(_GOUniProtDataExtractor, self).__init__(**kwargs) + + if self.reader.n_gram is not None: + assert self.max_sequence_length >= self.reader.n_gram, ( + f"max_sequence_length ({self.max_sequence_length}) must be greater than " + f"or equal to n_gram ({self.reader.n_gram})." + ) + @classmethod def _get_go_branch(cls, **kwargs) -> str: """ @@ -333,7 +359,20 @@ def _graph_to_raw_dataset(self, g: nx.DiGraph) -> pd.DataFrame: print(f"Processing graph") data_df = self._get_swiss_to_go_mapping() - + # add ancestors to go ids + data_df["go_ids"] = data_df["go_ids"].apply( + lambda go_ids: sorted( + set( + itertools.chain.from_iterable( + [ + [go_id] + list(g.predecessors(go_id)) + for go_id in go_ids + if go_id in g.nodes + ] + ) + ) + ) + ) # Initialize the GO term labels/columns to False selected_classes = self.select_classes(g, data_df=data_df) new_label_columns = pd.DataFrame( @@ -391,26 +430,13 @@ def _get_swiss_to_go_mapping(self) -> pd.DataFrame: ) ) - EXPERIMENTAL_EVIDENCE_CODES = { - "EXP", - "IDA", - "IPI", - "IMP", - "IGI", - "IEP", - "TAS", - "IC", - } - # https://github.com/bio-ontology-research-group/deepgo/blob/d97447a05c108127fee97982fd2c57929b2cf7eb/aaindex.py#L8 - AMBIGUOUS_AMINO_ACIDS = {"B", "O", "J", "U", "X", "Z", "*"} - for record in swiss_data: if record.data_class != "Reviewed": # To consider only manually-annotated swiss data continue - if not record.sequence: - # Consider protein with only sequence representation + if not record.sequence or len(record.sequence) > self.max_sequence_length: + # Consider protein with only sequence representation and seq. length not greater than max seq. length continue if any(aa in AMBIGUOUS_AMINO_ACIDS for aa in record.sequence): @@ -531,29 +557,6 @@ def _get_data_splits(self) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: return df_train, df_val, df_test - # ------------------------------ Phase: DataLoaders ----------------------------------- - def dataloader(self, kind: str, **kwargs) -> DataLoader: - """ - Returns a DataLoader object with truncated sequences for the specified kind of data (train, val, or test). - - This method overrides the dataloader method from the superclass. After fetching the dataset from the - superclass, it truncates the 'features' of each data instance to a maximum length specified by - `self.max_sequence_length`. - - Args: - kind (str): The kind of data to load (e.g., 'train', 'val', 'test'). - **kwargs: Additional keyword arguments passed to the superclass dataloader method. - - Returns: - DataLoader: A DataLoader object with the truncated sequences. - """ - dataloader = super().dataloader(kind, **kwargs) - - # Truncate the 'features' to max_sequence_length for each instance - for instance in dataloader.dataset: - instance["features"] = instance["features"][: self.max_sequence_length] - return dataloader - # ------------------------------ Phase: Raw Properties ----------------------------------- @property def base_dir(self) -> str: @@ -565,16 +568,6 @@ def base_dir(self) -> str: """ return os.path.join("data", f"GO_UniProt") - @property - def identifier(self) -> tuple: - """Identifier for the dataset.""" - # overriding identifier instead of reader.name to keep same tokens.txt file, but different processed_dir folder - if not isinstance(self.reader, dr.ProteinDataReader): - raise ValueError("Need Protein DataReader for identifier") - if self.reader.n_gram is not None: - return (f"{self.reader.name()}_{self.reader.n_gram}_gram",) - return (self.reader.name(),) - @property def raw_file_names_dict(self) -> dict: """ @@ -611,13 +604,16 @@ def _name(self) -> str: """ Returns the name of the dataset. + 'max_sequence_length' in the name indicates that proteins with sequence lengths exceeding are ignored + in the dataset. + Returns: str: The dataset name, formatted with the current threshold value and/or given go_branch. """ if self.go_branch != self._ALL_GO_BRANCHES: - return f"GO{self.THRESHOLD}_{self.go_branch}" + return f"GO{self.THRESHOLD}_{self.go_branch}_{self.max_sequence_length}" - return f"GO{self.THRESHOLD}" + return f"GO{self.THRESHOLD}_{self.max_sequence_length}" def select_classes( self, g: nx.DiGraph, *args: Any, **kwargs: Dict[str, Any] @@ -665,20 +661,8 @@ def select_classes( # https://github.com/bio-ontology-research-group/deepgo/blob/master/get_functions.py#L59-L77 go_term_annot: Dict[int, int] = {} for idx, row in data_df.iterrows(): - # Set will contain go terms associated with the protein, along with all the ancestors of those - # associated go terms - associated_go_ids_with_ancestors = set() - - # Collect all ancestors of the GO terms associated with this protein - for go_id in row["go_ids"]: - if go_id in g.nodes: - associated_go_ids_with_ancestors.add(go_id) - associated_go_ids_with_ancestors.update( - g.predecessors(go_id) - ) # Add all predecessors (ancestors) of go_id - # Count the annotations for each go_id **`per protein`** - for go_id in associated_go_ids_with_ancestors: + for go_id in row["go_ids"]: if go_id not in go_term_annot: go_term_annot[go_id] = 0 go_term_annot[go_id] += 1 diff --git a/chebai/preprocessing/datasets/protein_pretraining.py b/chebai/preprocessing/datasets/protein_pretraining.py new file mode 100644 index 00000000..8550db2b --- /dev/null +++ b/chebai/preprocessing/datasets/protein_pretraining.py @@ -0,0 +1,279 @@ +__all__ = ["SwissProteinPretrain"] + +import os +from abc import ABC +from collections import OrderedDict +from typing import Any, Dict, Generator, List, Tuple + +import networkx as nx +import pandas as pd +import torch +from Bio import SwissProt +from sklearn.model_selection import train_test_split + +from chebai.preprocessing.datasets.base import _DynamicDataset +from chebai.preprocessing.datasets.go_uniprot import ( + AMBIGUOUS_AMINO_ACIDS, + EXPERIMENTAL_EVIDENCE_CODES, + GOUniProtOver250, +) +from chebai.preprocessing.reader import ProteinDataReader + + +class _ProteinPretrainingData(_DynamicDataset, ABC): + """ + Data module for pretraining protein sequences, specifically designed for Swiss-UniProt data. It includes methods for + data preparation, loading, and dynamic splitting of protein sequences. + The data is parsed and filtered to only select proteins with no associated `valid` Gene Ontology (GO) labels. + A valid GO label is the one which has one of evidence codes defined in `EXPERIMENTAL_EVIDENCE_CODES`. + """ + + _ID_IDX: int = 0 + _DATA_REPRESENTATION_IDX: int = 1 # Index of `sequence` column + + def __init__(self, **kwargs): + """ + Initializes the data module with any GOUniProt extractor class object. + + Args: + **kwargs: Additional arguments for the superclass initialization. + """ + self._go_uniprot_extractor = GOUniProtOver250() + assert self._go_uniprot_extractor.go_branch == GOUniProtOver250._ALL_GO_BRANCHES + + self.max_sequence_length: int = int(kwargs.get("max_sequence_length", 1002)) + assert ( + self.max_sequence_length >= 1 + ), "Max sequence length should be greater than or equal to 1." + + super(_ProteinPretrainingData, self).__init__(**kwargs) + + if self.reader.n_gram is not None: + assert self.max_sequence_length >= self.reader.n_gram, ( + f"max_sequence_length ({self.max_sequence_length}) must be greater than " + f"or equal to n_gram ({self.reader.n_gram})." + ) + + # ------------------------------ Phase: Prepare data ----------------------------------- + def prepare_data(self, *args: Any, **kwargs: Any) -> None: + """ + Prepares the data by downloading and parsing Swiss-Prot data if not already available. Saves the processed data + for further use. + + Args: + *args: Additional positional arguments. + **kwargs: Additional keyword arguments. + """ + processed_name = self.processed_dir_main_file_names_dict["data"] + if not os.path.isfile(os.path.join(self.processed_dir_main, processed_name)): + print("Missing processed data file (`data.pkl` file)") + os.makedirs(self.processed_dir_main, exist_ok=True) + self._download_required_data() + protein_df = self._parse_protein_data_for_pretraining() + self.save_processed(protein_df, processed_name) + + def _extract_class_hierarchy(self, data_path: str) -> nx.DiGraph: + # method not required as no Swiss-UniProt has no ontological data + pass + + def _graph_to_raw_dataset(self, graph: nx.DiGraph) -> pd.DataFrame: + # method not required as no Swiss-UniProt has no ontological data + pass + + def select_classes(self, g: nx.DiGraph, *args, **kwargs) -> List: + # method not required as no Swiss-UniProt has no ontological data + pass + + def _download_required_data(self) -> str: + """ + Downloads the required Swiss-Prot data using the GOUniProt extractor class. + + Returns: + str: Path to the downloaded data. + """ + return self._go_uniprot_extractor._download_swiss_uni_prot_data() + + def _parse_protein_data_for_pretraining(self) -> pd.DataFrame: + """ + Parses the Swiss-Prot data and returns a DataFrame containing Swiss-Prot proteins which does not have any valid + Gene Ontology(GO) label. A valid GO label is the one which has one of the following evidence code + (EXP, IDA, IPI, IMP, IGI, IEP, TAS, IC). + + The DataFrame includes the following columns: + - "swiss_id": The unique identifier for each Swiss-Prot record. + - "sequence": The protein sequence. + + Note: + We ignore proteins with ambiguous amino acid codes (B, O, J, U, X, Z) in their sequence.` + + Returns: + pd.DataFrame: A DataFrame where each row corresponds to a Swiss-Prot record with not associated valid GO. + """ + print("Parsing swiss uniprot raw data....") + + swiss_ids, sequences = [], [] + + swiss_data = SwissProt.parse( + open( + os.path.join( + self._go_uniprot_extractor.raw_dir, + self._go_uniprot_extractor.raw_file_names_dict["SwissUniProt"], + ), + "r", + ) + ) + + for record in swiss_data: + if record.data_class != "Reviewed": + # To consider only manually-annotated swiss data + continue + + if not record.sequence: + # Consider protein with only sequence representation + continue + + if len(record.sequence) > self.max_sequence_length: + # Consider protein with only sequence length not greater than max seq. length + continue + + if any(aa in AMBIGUOUS_AMINO_ACIDS for aa in record.sequence): + # Skip proteins with ambiguous amino acid codes + continue + + has_valid_associated_go_label = False + for cross_ref in record.cross_references: + if cross_ref[0] == self._go_uniprot_extractor._GO_DATA_INIT: + + if len(cross_ref) <= 3: + # No evidence code + continue + + # https://github.com/bio-ontology-research-group/deepgo/blob/master/get_functions.py#L63-L66 + evidence_code = cross_ref[3].split(":")[0] + if evidence_code in EXPERIMENTAL_EVIDENCE_CODES: + has_valid_associated_go_label = True + break + + if has_valid_associated_go_label: + # Skip proteins which has at least one associated go label + continue + + swiss_ids.append(record.entry_name) + sequences.append(record.sequence) + + data_dict = OrderedDict( + swiss_id=swiss_ids, # swiss_id column at index 0 + sequence=sequences, # Sequence column at index 1 + ) + + return pd.DataFrame(data_dict) + + # ------------------------------ Phase: Setup data ----------------------------------- + def _load_dict(self, input_file_path: str) -> Generator[Dict[str, Any], None, None]: + """ + Loads data from a pickled file and yields individual dictionaries for each row. + + The pickled file is expected to contain rows with the following structure: + - Data at row index `self._ID_IDX`: ID of go data instance + - Data at row index `self._DATA_REPRESENTATION_IDX`: Sequence representation of protein + + This method is used by `_load_data_from_file` to generate dictionaries that are then + processed and converted into a list of dictionaries containing the features and labels. + + Args: + input_file_path (str): The path to the pickled input file. + + Yields: + Dict[str, Any]: A dictionary containing: + - `features` (str): The sequence data from the file. + - `ident` (Any): The identifier from row index 0. + - `labels`: Set to None + """ + with open(input_file_path, "rb") as input_file: + df = pd.read_pickle(input_file) + for row in df.values: + yield dict( + features=row[self._DATA_REPRESENTATION_IDX], + ident=row[self._ID_IDX], + labels=None, + ) + + # ------------------------------ Phase: Dynamic Splits ----------------------------------- + def _get_data_splits(self) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: + """ + Loads encoded data and generates training, validation, and test splits. + + This method attempts to load encoded data from a file named `data.pt`. It then splits this data into + training, validation, and test sets. + + Raises: + FileNotFoundError: If the `data.pt` file does not exist. Ensure that `prepare_data` and/or + `setup` methods are called to generate the necessary dataset files. + + Returns: + Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: A tuple containing three DataFrames: + - Training set + - Validation set + - Test set + """ + try: + filename = self.processed_file_names_dict["data"] + data_go = torch.load( + os.path.join(self.processed_dir, filename), weights_only=False + ) + except FileNotFoundError: + raise FileNotFoundError( + f"File data.pt doesn't exists. " + f"Please call 'prepare_data' and/or 'setup' methods to generate the dataset files" + ) + + df_go_data = pd.DataFrame(data_go) + train_df_go, df_test = train_test_split( + df_go_data, + train_size=self.train_split, + random_state=self.dynamic_data_split_seed, + ) + + # Get all splits + df_train, df_val = train_test_split( + train_df_go, + train_size=self.train_split, + random_state=self.dynamic_data_split_seed, + ) + + return df_train, df_val, df_test + + # ------------------------------ Phase: Raw Properties ----------------------------------- + @property + def base_dir(self) -> str: + """ + str: The base directory for pretraining data storage. + """ + return os.path.join(self._go_uniprot_extractor.base_dir, "Pretraining") + + @property + def raw_dir(self) -> str: + """Name of the directory where the raw data is stored.""" + return self._go_uniprot_extractor.raw_dir + + +class SwissProteinPretrain(_ProteinPretrainingData): + """ + Data module for Swiss-Prot protein pretraining, inheriting from `_ProteinPretrainingData`. + This class is specifically designed to handle data processing and loading for Swiss-Prot-based protein datasets. + + Attributes: + READER (Type): The data reader class used to load and process protein pretraining data. + """ + + READER = ProteinDataReader + + @property + def _name(self) -> str: + """ + The name identifier for this data module. + + Returns: + str: A string identifier, "SwissProteinPretrain", representing the name of this data module. + """ + return f"Swiss_{self.max_sequence_length}" diff --git a/chebai/preprocessing/reader.py b/chebai/preprocessing/reader.py index 46cd558a..e220e1e4 100644 --- a/chebai/preprocessing/reader.py +++ b/chebai/preprocessing/reader.py @@ -372,14 +372,16 @@ class ProteinDataReader(DataReader): "V", ] - @classmethod - def name(cls) -> str: + def name(self) -> str: """ Returns the name of the data reader. This method identifies the specific type of data reader. Returns: str: The name of the data reader, which is "protein_token". """ + if self.n_gram is not None: + return f"protein_token_{self.n_gram}_gram" + return "protein_token" def __init__(self, *args, n_gram: Optional[int] = None, **kwargs):