Пример #1
0
        public override RelocationResults Relocate(Program program, Address addrLoad)
        {
            EndianImageReader rdr     = new LeImageReader(RawImage, hdrOffset + relocationsOffset);
            ushort            segCode = (ushort)(addrLoad.Selector.Value + (ExeImageLoader.CbPsp >> 4));
            ushort            dx      = 0;

            for (; ;)
            {
                int cx = rdr.ReadLeUInt16();
                if (cx != 0)
                {
                    uint relocBase = ExeImageLoader.CbPsp + dx * 0x10u;
                    do
                    {
                        ushort relocOff = rdr.ReadLeUInt16();
                        ushort seg      = imgU.FixupLeUInt16(relocBase + relocOff, segCode);
                        var    segment  = segmentMap.AddSegment(new ImageSegment(
                                                                    seg.ToString("X4"),
                                                                    Address.SegPtr(seg, 0),
                                                                    imgU,
                                                                    AccessMode.ReadWriteExecute));
                    } while (--cx != 0);
                }
                if (dx == 0xF000)
                {
                    break;
                }
                dx += (ushort)0x1000U;
            }

            this.cs += segCode;
            segmentMap.AddOverlappingSegment(cs.ToString("X4"), imgU, Address.SegPtr(cs, 0), AccessMode.ReadWriteExecute);
            this.ss += segCode;
            var state = arch.CreateProcessorState();

            state.SetRegister(Registers.ds, Constant.Word16(addrLoad.Selector.Value));
            state.SetRegister(Registers.es, Constant.Word16(addrLoad.Selector.Value));
            state.SetRegister(Registers.cs, Constant.Word16(cs));
            state.SetRegister(Registers.ss, Constant.Word16(ss));
            state.SetRegister(Registers.bx, Constant.Word16(0));
            var ep = new ImageSymbol(Address.SegPtr(cs, ip))
            {
                ProcessorState = state
            };
            var entryPoints = new List <ImageSymbol> {
                ep
            };
            var imageSymbols = entryPoints.ToSortedList(e => e.Address, e => e);

            return(new RelocationResults(entryPoints, imageSymbols));
        }
Пример #2
0
        public void ToSortedList()
        {
            IEnumerable <Person> xx = new List <Person>
            {
                new Person {
                    Age = 19, Name = "Daiwei"
                },
                new Person {
                    Age = 18, Name = "Zhao"
                }
            };
            var yy = xx.ToSortedList((item) => item.Age);

            Assert.IsTrue(yy.Count() == 2 && yy.Last().Value.Name == "Daiwei", "转换后 再 distinct ,返回 1");
        }
Пример #3
0
 public override RelocationResults Relocate(Program program, Address addrLoad)
 {
     return(new RelocationResults(
                new List <ImageSymbol>(),
                pltEntries.ToSortedList(e => e.Address)));
 }
Пример #4
0
        public void InitDefaultModuleSetup(out Dictionary<ModuleID, ModuleRec> defaultModule,
            out Dictionary<ModuleID, Dictionary<ModuleFeatureID, ModuleFeatureRec>> defaultFeature,
            out Dictionary<ModuleID, Dictionary<ModuleFeatureID, Dictionary<string, string>>> defaultConfig)
        {
            var module = new Dictionary<ModuleID, ModuleRec>();
            var feature = new Dictionary<ModuleID, Dictionary<ModuleFeatureID, ModuleFeatureRec>>();
            var config = new Dictionary<ModuleID, Dictionary<ModuleFeatureID, Dictionary<string, string>>>();

            ModuleID moduleID;
            ModuleFeatureID featureID;

            // ----------------- ACCOUNT ------------------- //
            moduleID = ModuleID.Account;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Accounting",
                Description = "Account settings, vendors configuration etc."
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_IsUnattendedRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_IsInternalTransferEnabled, SP.Const.MOD_Yes);
            //config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_GetBalanceTimeoutSec, GmCore.Proxies.AccountProxy.DefaultGetBalanceTimeoutSec.ToString());

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_IsSDAControlEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_SDACurrency, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_IsSDAAllowNegativeBalanceEnabled, SP.Const.MOD_No);

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_IsSAEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_SACurrency, "EUR");

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_AllowGamblingCountryCodeListOverride, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BASIC_ForbidGamblingCountryCodeListOverride, string.Empty);

            //feature 2
            featureID = ModuleFeatureID.AccountSystemVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "System Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            //feature 3
            featureID = ModuleFeatureID.AccountNetEntVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "NetEnt Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_APIURL, @"https://oddsmatrix-api-test.casinomodule.com/ws-axis/services/CasinoMC");
            //config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_GetBalanceTimeoutSec, GmCore.Proxies.AccountProxy.DefaultGetBalanceTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_MerchantLogin, @"testmerchant");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_MerchantPassword, @"testing");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_IsWithdrawRestrictionsEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_IncludeAffiliateCodeInExtraDetails, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_TrunkateAffiliateCodeInExtraDetails, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_TrunkateAffiliateCodeInExtraDetailsSeparator, @"|");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_FPPConvertionEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_FPPConvertionMinClaimPoints, @"200");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_FPPConvertionType, @"1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_FPPConvertionPoints, @"100");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_FPPConvertionAmount, @"1.00");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_FPPConvertionCurrency, @"EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_IsCasinoModuleProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_CasinoModuleProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_CasinoModuleProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_CasinoModuleProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_CasinoModuleCMSClearSessionCacheURLFormat1, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_CasinoModuleOperatorIsActiveSessionURLFormat2, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_WageredBonus, @"WAGERED_BONUSDISABLED");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_IsProxyV20Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NETENT_UseLimitedDetailsInLoginUserDetailedAPI, SP.Const.MOD_No);
            //feature 4
            featureID = ModuleFeatureID.AccountOddsMatrixVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "OddsMatrix Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_URL, @"http://sportstest3.gammatrix.com:8080");
            //config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_GetBalanceTimeoutSec, GmCore.Proxies.AccountProxy.DefaultGetBalanceTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_MerchantLogin, @"GamMatrix");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_MerchantPassword, @"g0mm1tr1x");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_PlayerFromIdentifier, "09gammatrix");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ODDSMATRIX_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            //feature 5
            featureID = ModuleFeatureID.AccountCakeNetworkVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "CakeNetwork Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_PassCustomerEmailDetails, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_IsBonusCodeAutomaticPassEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_ProxyAllowedIPList, "200.26.205.1-200.26.205.126");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_TournamentFeedKey, @"C2B88A4FC3754E9EBB0CE91641453AEE");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_TournamentFeedURL, @"http://client.ckpnetwork.eu/Feeds/Tournaments.ashx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_IsFtpDownloadEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_FtpServer, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_FtpUserName, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_FtpPassword, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_FtpDownloadFolder, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_FtpTimeoutSec, (60 * 5).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_APIURL, "http://services.qa.ckpnetwork.eu/WSCakeServicesAPI/CakeServices.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_APIPartnerID, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_APIPassword, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_RakebackEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_RakebackStartDate, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_RakebackMinClaimAmount, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_RakebackConvertionType, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CAKENETWORK_RakebackPercentage, @"CONFIGURE ME");
            //feature 6
            featureID = ModuleFeatureID.AccountGutsGamesVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GutsGames Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_APIURL, @"http://200.124.128.133:8005/service.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_APIReportsURL, @"http://200.124.128.133:8005/service.asmx");
            //config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_GetBalanceTimeoutSec, GmCore.Proxies.AccountProxy.DefaultGetBalanceTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_MerchantLogin, @"2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_MerchantPassword, @"retr0rian2012");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GUTSGAMES_ProxyAllowedIPList, string.Empty);
            //feature 7
            featureID = ModuleFeatureID.AccountAffiliateVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Affiliate Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountBlockEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_AFFILIATE_SupportedCurrencies, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_AFFILIATE_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_AFFILIATE_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_AFFILIATE_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_AFFILIATE_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_AFFILIATE_FrenchTerritories, SP.Const.DefaultFrenchTerritoriesList);
            //feature 8
            featureID = ModuleFeatureID.AccountViGVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ViG Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_BaseURL, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_HostSite, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_SupportedLanguages, "EN");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIG_ProxyAllowedIPList, string.Empty);
            //feature 9
            featureID = ModuleFeatureID.AccountOnGameVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "OnGame Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_APIURL, @"http://pokernetwork.ongame.d1.gameop.net/api/operator/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_MerchantLogin, @"297");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_MerchantPassword, @"password");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_FakeIP, @"83.151.156.212");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ONGAME_ProxyAllowedIPList, string.Empty);
            //feature 10
            featureID = ModuleFeatureID.AccountBingoNetworkVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BingoNetwork Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_UserManagerAPIURL, @"http://test.api.nextbingonetwork.com/OperatorApi/UserManager.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_ContentProviderAPIURL, @"http://test.api.nextbingonetwork.com/OperatorApi/ContentProvider.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_PresentationAPIURL, @"http://test.api.nextbingonetwork.com/OperatorApi/Presentation.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_MerchantLogin, @"EMXfdjkhJ001");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_MerchantPassword, @"ksdjhksdj8736kJHS_S");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_SupportedCurrencies, "GBP");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_FakeIP, @"83.151.156.212");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_FakeEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BINGONETWORK_ProxyAllowedIPList, string.Empty);

            //feature 11
            featureID = ModuleFeatureID.AccountMicrogamingVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Microgaming Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_IsPartnerIDKEYEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_CasinoFunURL, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_CasinoRealURL, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_IsCGIInterfaceEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MICROGAMING_IsProxyV20Enabled, SP.Const.MOD_No);

            //feature 12
            featureID = ModuleFeatureID.AccountIGTVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IGT Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_NativeSystemCode, @"EVMX");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_SkinCode, @"EM01");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIHeartbeatURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/admin/heartbeat/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIOpVoidURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/admin/opVoid/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIActiveSessionURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/session/activeSessions/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIActiveSessionV2URL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/session/activeSessions/v2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APITerminateSessionURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/session/terminateSession/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APITerminateSessionV2URL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/session/terminateSession/v2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIGameTransactionDetailURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/game/gameTransactionDetail/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIGameInProgressURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/game/gameInProgress/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIGameInProgressV2URL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/game/gameInProgress/v2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIGameListURL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/game/gameList/v1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIGameListV2URL, @"https://rgs-cust03.lab.wagerworks.com/ws-v2/rest/game/gameList/v2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIUsername, @"ws-client");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APIPassword, @"password");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_IsPartnerIDKEYEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_IsProxyV20Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IGT_SupportedCurrencies, @"EUR,USD,GBP,ARS,AUD,BGN,BRL,CAD,CHF,CNY,CZK,DKK,HKD,HUF,INR,ISK,JPY,MXN,MYR,NOK,NZD,PLN,RMB,RON,SEK,SGD,THB,TWD,UAH,ZAR");
            //feature 13
            featureID = ModuleFeatureID.AccountMergeNetworkVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "MergeNetwork Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_CasinoID, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_IsGamingServiceLiveEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_GamingServiceAPIURL, @"https://soap.staging.mergegaming.com/2.1/clients/service.soap");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_GamingServiceAPITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_GamingServiceMerchantLogin, @"apiuser91");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_MERGENETWORK_GamingServiceMerchantPassword, @"f61efef5");
            //feature 14
            featureID = ModuleFeatureID.AccountCTXMVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "CTXM Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_CasinoURL, @"http://alba2.ctxm.com/whl_lobby/game.do");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_CasinoMerchantID, @"GR88");

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_GameServiceAPIURL, @"http://alba2.ctxm.com/xbase-service/services/GameService");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_GameServiceAPITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_GameServiceMerchantLogin, @"GR88");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_GameServiceMerchantPassword, @"GR88");

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_MarketingServiceAPIURL, @"http://alba2.ctxm.com/xbase-service/services/MarketingService");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_MarketingServiceAPITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_MarketingServiceMerchantLogin, @"GR88");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_MarketingServiceMerchantPassword, @"GR88");

            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_ProxyPassCustomerDetails, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CTXM_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            //feature 15
            featureID = ModuleFeatureID.AccountCasinoWalletVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "CasinoWallet Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_NegativeAccountBalanceEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionExcludeBonusMoney, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionMinClaimPoints, @"200");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionType, @"1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionPoints, @"100");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionAmount, @"1.00");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_FPPConvertionCurrency, @"EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_AutoForfeitCoolPeriod, @"5");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_ManualForfeitCoolPeriod, @"60");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOWALLET_UseupCoolPeriod, @"60");
            //feature 16
            featureID = ModuleFeatureID.AccountPlaynGOVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PlaynGO Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_IsProxyV20Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_IsPartnerIDKEYEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_SupportedCurrencies, "EUR,CZK,DKK,GBP,NOK,PLN,RUB,SEK,USD");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_PromotionalTransactionTypeValue, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_CollectFRBBonusWins, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_APIURL, "https://comstage.playngonetwork.com:33001/CasinoGameTPService");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_APIUser, "emxapi");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_APIPassword, "UwATsTLU1z");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PLAYNGO_APITimeout, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());

            //feature 16
            featureID = ModuleFeatureID.AccountXProGamingVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "XProGaming Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_APIBaseURL, @"http://lcpp.xprogaming.com/api/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_MerchantLogin, "47");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_MerchantPassword, "test");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_MerchantCurrency, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_PassCustomerDetails, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_TokenLifetime, @"30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinEUR, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinPasswordEUR, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinUSD, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinPasswordUSD, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinTRY, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinPasswordTRY, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinGBP, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinPasswordGBP, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinAUD, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_XPROGAMING_SkinPasswordAUD, "");

            //feature 17
            featureID = ModuleFeatureID.AccountENETVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ENET Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_APIURL, @"http://so-pdb1-test.technicalactivity.com/soService.ashx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_MerchantLogin, "16");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_MerchantPassword, "testEveryMatrix589478");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_ProductID, "4");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_FranchiseID, "502813");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ENET_ProxyAllowedIPList, string.Empty);
            //feature 18
            featureID = ModuleFeatureID.AccountIDMVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IDM Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_APIURL, @"http://idmrc2-igsoft.igsoft.com/ws/idmexternalws/externalidmws.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_PokerWebServiceURL, @"https://admin.pokergamingnetwork.com/sgmws/pokerwebservice.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_FranchiseID, @"1002");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_AssociateID, @"10");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_AccessPassword, @"HVvw2It3ka");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IDM_SupportedCurrencies, @"EUR");
            //feature 19
            featureID = ModuleFeatureID.AccountEverleafNetworkVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EverleafNetwork Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVERLEAFNETWORK_PokerWebServiceURL, @"https://showcase.rptest.info/SoapServerMsLatest.php");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVERLEAFNETWORK_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVERLEAFNETWORK_SupportedCurrencies, @"EUR,USD");
            //feature 20
            featureID = ModuleFeatureID.AccountPACasinoVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PlayAdjara Casino Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_APIBaseURL, @"http://lcpp.xprogaming.com/api/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_OperatorID, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_PrivateKey, "test");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_PassCustomerDetails, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACASINO_SupportedLanguages, "GE,EN,RU");
            //feature 21
            featureID = ModuleFeatureID.AccountBuzzSportsVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BuzzSports Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BUZZSPORTS_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BUZZSPORTS_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BUZZSPORTS_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BUZZSPORTS_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BUZZSPORTS_SupportedCurrencies, @"GEL");
            //feature 22
            featureID = ModuleFeatureID.AccountPAClassicVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PlayAdjara Classic Casino Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_APIBaseURL, @"http://lcpp.xprogaming.com/api/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_OperatorID, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_PrivateKey, "test");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_PassCustomerDetails, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PACLASSIC_SupportedLanguages, "GE,EN,RU");
            //feature 23
            featureID = ModuleFeatureID.AccountBetSoftVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BetSoft Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_IsProxyV20Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_IsPartnerIDKEYEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETSOFT_PassKey, string.Empty);

            //feature 24
            featureID = ModuleFeatureID.AccountGreenTubeVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GreenTube Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GREENTUBE_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GREENTUBE_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GREENTUBE_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GREENTUBE_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GREENTUBE_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);

            //feature 25
            featureID = ModuleFeatureID.AccountCasinoKlasVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "KLAS POKER Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_APIURL, "CHANGEME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_OpeningGame_APIURL, "CHANGEME");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_MerchantLogin, "CHANGEME1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_MerchantName, "CHANGEME2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_MerchantPrivateKey, "CHANGEME");
            //config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_MerchantPassword, "testEveryMatrix589478");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_SupportedCurrencies, "TRY");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOKLAS_IsProxyV20Enabled, SP.Const.MOD_No);

            //feature 26
            featureID = ModuleFeatureID.AccountSheriffVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Sheriff Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_ProxySiteID, "testSheriffSiteId");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_ProxySiteCode, "testSheriffCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_APIURL, "http://games.sheriffgaming.com/loader");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_APITimeoutSec, "300");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_SHERIFF_SignatureSalt, "OURSALT");
            //feature 27
            featureID = ModuleFeatureID.AccountCasinoSiegerVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Casino Sieger Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_APIBaseURL, @"http://api.rembrandtcasino.com/index/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_OperatorID, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_PrivateKey, "test");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_PassCustomerDetails, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_CASINOSIEGER_SendFreeSpinWinsInfo, SP.Const.MOD_No);
            //feature 28
            featureID = ModuleFeatureID.AccountNorskeVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Norske Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NORSKE_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NORSKE_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NORSKE_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NORSKE_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NORSKE_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NORSKE_PassKey, string.Empty);
            //feature 29
            featureID = ModuleFeatureID.AccountOMIVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "OMI Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OMI_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OMI_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OMI_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OMI_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OMI_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OMI_PassKey, string.Empty);
            //feature 30
            featureID = ModuleFeatureID.AccountEvolutionGamingVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EvolutionGaming Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_APIBaseURL, @"http://api.rembrandtcasino.com/index/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_APITimeoutSec, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_MerchantUsername, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_MerchantPassword, "test");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EVOLUTIONGAMING_IsProxyV20Enabled, SP.Const.MOD_No);

            //feature 31
            featureID = ModuleFeatureID.AccountNYXVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "NYX Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_IsProxyEnabled, SP.Const.MOD_No);
            //            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_ProxySiteID, "testNYXSiteId");
            //            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_ProxySiteCode, "testNYXCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_APIURL, "http://nogs-gl-stage.nyxinteractive.eu/game/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_APITimeoutSec, "300");
            //            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_SignatureSalt, "OURSALT");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_IsProxyV20Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_NYX_DoubleTxPrevention, SP.Const.MOD_No);

            //feature 32
            featureID = ModuleFeatureID.AccountBallyVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Bally Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_IsProxyEnabled, SP.Const.MOD_No);
            //            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_ProxySiteID, "testBallySiteId");
            //            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_ProxySiteCode, "testBallyCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_APIURL, "http://ec2-174-129-209-148.compute-1.amazonaws.com/JETBRGSApi/rest/rgs/games");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_APIOAuthURL, "http://ec2-174-129-209-148.compute-1.amazonaws.com/BallyOAuthServer2.0.14.0/OAuth/token");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_APIClientID, "JETB");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_APIClientSecret, "15d65a1f-73e1-40ea-8397-5e37623fbc3b");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_APITimeoutSec, "300");
            //            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Bally_SignatureSalt, "OURSALT");

            //feature 33
            featureID = ModuleFeatureID.AccountiSoftBetVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "iSoftBet Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_TokenLifetime, @"30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_SecurityKey, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_ISOFTBET_IsProxyV20Enabled, SP.Const.MOD_No);

            //feature 34
            featureID = ModuleFeatureID.AccountEzugiVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Ezugi Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_OperatoID, "123123");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_NewGamingAPIOperatorID, "");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_SupportedCurrencies, "GBP,USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_LobbyTokenLifetime, "60");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_GameTokenLifetime, "30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EZUGI_IsProxyV20Enabled, SP.Const.MOD_No);

            //feature 35
            featureID = ModuleFeatureID.AccountBetGamesVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BetGames Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_TokenLifetime, @"30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_SecretKey, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETGAMES_PacketTimeout, @"60");

            //feature 36
            featureID = ModuleFeatureID.AccountVivoVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Vivo Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_PassKey, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_GameTokenLifeTime, "30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_WebServiceUrl, "http://www.1vivo.com/flash/");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_VIVO_IsProxyV20Enabled, SP.Const.MOD_No);
            //feature 37
            featureID = ModuleFeatureID.AccountWilliamsVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Williams Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_OperatoID, "123123");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_SupportedCurrencies, "GBP,USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_LobbyTokenLifetime, "60");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_WILLIAMS_GameTokenLifetime, "30");

            //feature 36
            featureID = ModuleFeatureID.AccountGTSVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GTS Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_TokenLifetime, @"30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_UserName, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_Password, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_OperatorKey, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_AuthenticationUserName, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_GTS_AuthenticationPassword, string.Empty);

            //feature 36
            featureID = ModuleFeatureID.AccountOneXTwoGamingVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "1x2Gaming Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OneXTwoGaming_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OneXTwoGaming_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OneXTwoGaming_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OneXTwoGaming_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OneXTwoGaming_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_OneXTwoGaming_GameTokenLifeTime, "30");

            // EGT
            featureID = ModuleFeatureID.AccountEGTVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EGT Vendor"
            });

            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_UserName, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_Password, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_SupportedCurrencies, "GBP,USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_TokenLifetime, "2");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGT_Portal_Code, string.Empty);

            ////feature 51
            featureID = ModuleFeatureID.AccountLegaVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Lega Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_TokenLifetime, @"30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LEGA_IsProxyV20Enabled, SP.Const.MOD_No);

            //EGB
            featureID = ModuleFeatureID.AccountEGBVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EGB Vendor"
            });

            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_CallerId, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_CallerPassword, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_SupportedCurrencies, "GBP,USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_EGB_TokenLifetime, "2");

            //feature 37
            featureID = ModuleFeatureID.AccountBetConstructVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BetConstruct Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_IsProxyV20Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_IsSHA256Enabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_SecurityKey, "test");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_SupportedCurrencies, SP.Const.DefaultSupportedCurrencyList);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_TokenLifetime, "30");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_BETCONSTRUCT_IsBonusesEnabled, SP.Const.MOD_No);

            // Yggdrasil
            featureID = ModuleFeatureID.AccountYggdrasilVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Yggdrasil Vendor"
            });

            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountRegistrationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_IsAutoAccountActiveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_LinkedAccountVendorID, ((int)VendorID.Unknown).ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Yggdrasil_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Yggdrasil_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Yggdrasil_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Yggdrasil_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Yggdrasil_SupportedCurrencies, "GBP,USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_Yggdrasil_TokenLifetime, "2");
            // ------------------------------------------ //

            // ------------------------------------------ //

            // ----------------- CORE ------------------- //
            moduleID = ModuleID.Core;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Core",
                Description = "Provides basic functionality"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_BaseCurrency, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_CmsRequestTimeoutSec, "30");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_FullLogTrace, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_TransProcessTimeoutSec, "1800");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_MaxAmountValue, "1000000");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_BlockRegisterLoginOperation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_AdminUserSingleSession, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_UseKeepAliveSessionURL, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_KeepAliveSessionURL, @"http://jetbull.gammatrix-dev.net:2012/_keep_user_session_alive.ashx");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_CLEAR_SESSION_URL, @"http://jetbull.gammatrix-dev.net/_clear_session_cache.ashx?userid={0}");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_AdminIPRestrictions, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_SoapRequestLoggingEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_SoapResponseLoggingEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_BeanBagPatchEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_BeanBagPatchPostbackUrl, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_MissingGameCodesTrace, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_BASIC_MissingMatchingDebitTrace, SP.Const.MOD_No);

            //feature 2
            featureID = ModuleFeatureID.CoreEmailNotifications;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Email notifications"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILNOTIFICATIONS_FromEmailAddress, String.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILNOTIFICATIONS_FromEmailDisplayName, String.Empty);
            var notificationConfigNameList = new List<string>();
            Util.Enum.GetValues<NotificationType>().ToList().ForEach(item => notificationConfigNameList.Add(SP.NotificationProvider.GetConfigName(item)));
            notificationConfigNameList.ToSortedList().ForEach(item => config[moduleID][featureID].Add(item, String.Empty));

            //feature 3
            featureID = ModuleFeatureID.ResponsysInteractNotifications;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Responsys Interact notifications"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_isProviderEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_MerchantLogin, "testLogin");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_MerchantPassword, "testPassword");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_Url, "https://ws5.responsys.net/webservices/services/ResponsysWSService");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_TimeoutSec, @"120");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_ResendRetryNumber, @"10");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_IsRealTimeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_FolderName, "!MasterData");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_ContactsList, "CONTACTS_LIST");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_RESPONSYSINTERACT_GameInfoList, "Customer_Game_Info");

            //feature 4
            featureID = ModuleFeatureID.EmailVisionNotifications;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "EmailVision notifications"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_IsProviderEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_MerchantLogin, "testLogin");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_MerchantPassword, "testPassword");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_MerchantKey, "testKey");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_SegmentID, "CHANGEME");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_Url, "http://p6apic.emv2.com/apimember/services/MemberService");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_BatchUrl, "http://p6apic.emv2.com/apibatchmember/services/BatchMemberService");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_ExportUrl, "http://p6apic.emv2.com/apiexport/services/ExportService");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_TimeoutSec, @"120");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_EMAILVISION_ResendRetryNumber, @"10");

            //feature 5
            featureID = ModuleFeatureID.KPI;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "KPI"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_KPI_IsFeatureEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_KPI_Level1EmailList, "[email protected],[email protected]");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_KPI_Level2EmailList, "[email protected],[email protected]");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_KPI_Level1ResponseTimeThreshold, @"150");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_KPI_Level2ResponseTimeThreshold, @"250");

            //feature 6
            featureID = ModuleFeatureID.DS;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "DS"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_DS_IsFeatureEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_DS_Host, "10.0.10.82");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_DS_Port, "44200");
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_DS_ReadTimeout, GmCore.Proxies.AccountProxy.DefaultAPITimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_CORE_DS_IsMessageLoggingEnabled, SP.Const.MOD_No);

            // ------------------------------------------ //

            // ----------------- FEE ------------------- //
            moduleID = ModuleID.Fee;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Fee",
                Description = "Transaction fees"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            // ------------------------------------------ //

            // ----------------- LIMIT ------------------- //
            moduleID = ModuleID.Limit;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Limit",
                Description = "Transaction limits"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            // ------------------------------------------ //

            // ----------------- AUTO PROCESSING RULES ------------------- //
            moduleID = ModuleID.AutoProcessingRule;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Auto processing rules",
                Description = "Auto processing rules"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            // ------------------------------------------ //

            // ----------------- PAYCARD ------------------- //
            moduleID = ModuleID.PayCard;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "PayCard",
                Description = "Various pay cards handling"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_HashControlKey1, "_87gBh&^");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_HashControlKey2, "h^#)j010)");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_WithdrawalRequireHoursAfterLastDeposit, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_IsWithdrawalAutomaticApproveEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_GeorgianPaymentsMaxConcurrentRequests, "5");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_Is24HoursWithdrawalLimitEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_24HoursWithdrawalLimitText, "{0} {1} withdrawal limit exceeded please proceed with identity verification process");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_24HoursWithdrawalLimitValue, "2300");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_24HoursWithdrawalLimitCurrency, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_24HoursWithdrawalLimitValueForUK, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_24HoursWithdrawalLimitCurrencyForUK, "GBP");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_24HoursWithdrawalLimitEmailTemplate, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_IsWithdrawalsSendSettlementCaptureID, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_CCRouting_Visa_CardTypes, "VI,VE,VD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_CCRouting_Mastercard_CardTypes, "MC,MA,MD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BASIC_IsMastercardTransactionsSupported, SP.Const.MOD_No);
            //feature 2
            featureID = ModuleFeatureID.PayCardNetellerVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Neteller Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NETELLER_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NETELLER_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NETELLER_MerchantID, "1537");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NETELLER_MerchantPassword, "83465");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NETELLER_MerchantKey, "693487");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NETELLER_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //UiPas
            featureID = ModuleFeatureID.PayCardUiPasVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "UiPas Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_SupportedCurrencies, "USD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_Host, "api.uipas.com");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_UseApiV1, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_ApiV1Url, "https://api.uipas.com/api/");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_ApiV2Url, "https://api.uipas.com/apiv2/");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UiPas_MerchantKey, "");

            //feature 3
            featureID = ModuleFeatureID.PayCardClick2PayVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Click2Pay Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICK2PAY_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICK2PAY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICK2PAY_MerchantID, "0000003158D0C913");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICK2PAY_MerchantProductID, "312432143");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICK2PAY_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //feature 4
            featureID = ModuleFeatureID.PayCardUkashVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Ukash Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_MerchantLogin, "UKASHTESTMERCHANT");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_MerchantPassword, "password123");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_MerchantBrandID, "UKASH10359");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_VoucherChangeEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_VoucherChangeDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_VoucherChangeTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_IsIssueLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_MerchantIssueLogin, "UKASHTESTMERCHANT");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_MerchantIssuePassword, "password123");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_MerchantIssueBrandID, "UKASH10359");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_VoucherIssueEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_VoucherIssueDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_VoucherIssueTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_UKASH_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //feature 5
            featureID = ModuleFeatureID.PayCardClickandBuyVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ClickandBuy Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DepositContentName, "GamMatrix Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DepositContentInfo, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_WithdrawUrlInfo, "GamMatrix Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_WithdrawContentDescription, "GamMatrix Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_PassCustomerBillingDetails, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_PremiumLinkURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_MerchantID, "21457190");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_TmPassword, "EURpOl_92/bbt2==");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_DynKey, "h^g37hg+_JU7h89");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_EasyCollectID, "39077425");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_TxManagerStatusBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_TxManagerPaymentBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_EUR_EmsURL, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_PremiumLinkURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_TmPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_DynKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_EasyCollectID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_TxManagerStatusBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_TxManagerPaymentBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_GBP_EmsURL, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_PremiumLinkURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_TmPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_DynKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_EasyCollectID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_TxManagerStatusBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_TxManagerPaymentBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_USD_EmsURL, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_PremiumLinkURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_TmPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_DynKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_EasyCollectID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_TxManagerStatusBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_TxManagerPaymentBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_NOK_EmsURL, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_PremiumLinkURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_TmPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_DynKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_EasyCollectID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_TxManagerStatusBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_TxManagerPaymentBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_SEK_EmsURL, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_PremiumLinkURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_TmPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_DynKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_EasyCollectID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_TxManagerStatusBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_TxManagerPaymentBindingURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_CLICKANDBUY_DKK_EmsURL, "CONFIGURE ME");

            //feature 6
            featureID = ModuleFeatureID.PayCardMoneybookersVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Moneybookers Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_EUR_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_EUR_MerchantPassword, "o44b55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_EUR_MD5SigSecretWord, "eur1_gr7^*");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_GBP_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_GBP_MerchantPassword, "o44b55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_GBP_MD5SigSecretWord, "gbp1_gr7^*");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_USD_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_USD_MerchantPassword, "o44b55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_USD_MD5SigSecretWord, "usd1_gr7^*");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_NOK_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_NOK_MerchantPassword, "o44b55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_NOK_MD5SigSecretWord, "nok1_gr7^*");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_SEK_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_SEK_MerchantPassword, "o44b55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_SEK_MD5SigSecretWord, "sek1_gr7^*");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DKK_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DKK_MerchantPassword, "o44b55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DKK_MD5SigSecretWord, "dkk1_gr7^*");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_PLN_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_PLN_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_PLN_MD5SigSecretWord, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_CZK_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_CZK_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_CZK_MD5SigSecretWord, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_CAD_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_CAD_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_CAD_MD5SigSecretWord, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_RON_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_RON_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_RON_MD5SigSecretWord, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_AUD_MerchantLogin, "*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_AUD_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_AUD_MD5SigSecretWord, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DepositRecipientDescription, "GamMatrix Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DepositDetailDescription, "GamMatrix Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DepositDetailText, "GamMatrix Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_1TapURL,
                                            "https://www.moneybookers.com/app/ondemand_request.pl");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_1TapNote,
                                "Skrill 1-Tap Deposit");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DepositHideLogin, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_DepositLogoUrl, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_WithdrawEmailSubject, "GamMatrix Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_WithdrawEmailNote, "GamMatrix Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_PassCustomerBillingDetails, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_IsAffiliateProgrammeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_AffiliateProgrammeExtRid, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_RewriteIdentityOnReal, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_1TapURL, "https://www.moneybookers.com/app/ondemand_request.pl");
            //config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_MB_1TapNote, "Skrill 1-Tap Deposit");
            //feature 7
            featureID = ModuleFeatureID.PayCardBankVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Bank Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //feature 8
            featureID = ModuleFeatureID.PayCardPaysafecardVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "paysafecard Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_CreateDispositionUrl, @"https://shops.test.at.paysafecard.com/pscmerchant/CreateDispositionServlet");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_GetDispositionStateUrl, @"https://shops.test.at.paysafecard.com/pscmerchant/GetDispositionStateServlet");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_GetCustomerPanelUrl, @"https://customer.test.at.paysafecard.com/psccustomer/GetCustomerPanelServlet");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_GetSerialNumbersURL, @"https://shops.test.at.paysafecard.com/pscmerchant/GetSerialNumbersServlet");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_DebitURL, @"https://shops.test.at.paysafecard.com/pscmerchant/DebitServlet");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_UserName, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_Password, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_TestSystem, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_ServiceUrl, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_PaymentPanelUrl, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_IsPaymentListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_ListenerUrl, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_PaymentListenerAllowedIPList, @"");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_EUR_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_EUR_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_EUR_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_eur.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_GBP_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_GBP_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_GBP_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_gbp.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_USD_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_USD_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_USD_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_usd.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_NOK_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_NOK_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_NOK_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_nok.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_SEK_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_SEK_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_SEK_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_sek.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_DKK_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_DKK_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_DKK_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_dkk.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_CZK_MerchantID, "1000001882");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_CZK_MerchantBusinessType, @"I");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_CZK_MerchantCertificatePath, @"C:\WORK\_certs\CMS_1000001882_001_oddmatrix_czk.pem");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYSAFECARD_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //feature 9
            featureID = ModuleFeatureID.PayCardEntroPayVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EntroPay Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //feature 10
            featureID = ModuleFeatureID.PayCardPaynetVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Paynet Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //feature 11
            featureID = ModuleFeatureID.PayCardWebMoneyVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "WebMoney Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_WM_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_WM_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_WM_DepositDescription, "GamMatrix Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_WM_SupportedCurrencies, "EUR,USD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_WM_Purse, "E211685006200,Z391212068061");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_WM_SecretKey, @"uh435^8nn39--,8f8un4olf=+8'");
            //feature 12
            featureID = ModuleFeatureID.PayCardVoucherVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Voucher Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //feature 13
            featureID = ModuleFeatureID.PayCardPaymentTrustVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PaymentTrust Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsPayPointProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsSafeChargeProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsDirectPaymentProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsIPSProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsSkrillProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsIchequeProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsSmartPayProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsEProProcessorEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_GatewayDefaultProcessor, "");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsAltGatewayChoiceEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_ResendRetryNumber, "3");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_MerchantUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_DefaultMode, GmCore.PayCards.CCProcessor.CCtx.Sale.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_TestMode, GmCore.PayCards.CCProcessor.CCtx.Auth.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_TestUser, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsActiveCancellationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_IsRGEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_Is3DEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_Force3DMobile, SP.Const.MOD_No);
            //paymnet trust payout new constants
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_UseRefundForPayout, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_Payout_GBP_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_UseOldCodeForPayout, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_Payout_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_Payout_MerchantUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_Payout_MerchantPassword, "CONFIGURE ME");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_EUR_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_USD_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_GBP_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_NOK_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_SEK_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_DKK_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SALE_PLN_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_EUR_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_USD_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_GBP_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_NOK_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_SEK_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_DKK_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_REFUND_PLN_MerchantStoreID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_WithdrawDescription, "Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_BN_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_BN_MerchantUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_BN_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_BN_IsErrorOnBinCheckFail, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_MerchantUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_ProductType, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_MaxRiskAccepted, "55");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_DisableForCountries, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_MobileProfileID, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_RG_DesktopProfileID, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_3D_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_3D_MerchantUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_3D_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_SupportedCardTypes, "VI,VE,VD,MC,MA,MD,SW,SO");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_UnsupportedCountries, "US");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_CreditCards, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYMENTTRUST_DebitCardsForForceRefound, "");

            //feature 14
            featureID = ModuleFeatureID.PayCardQVoucherVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "QVoucher Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_EUR_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_EUR_MerchantSecurityCode, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_EUR_DepositURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_ItemName, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_QVOUCHER_SupportedCurrencies, "EUR");
            //feature 15
            featureID = ModuleFeatureID.PayCardEnvoyVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Envoy Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_MerchantReference, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_MerchantAPIUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_MerchantAPIPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_OneClickGatewayURL, "http://test.envoytransfers.com");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_IsOneClickUserCountryCheckEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_IsPayinListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_PayinListenerAllowedIPList, "213.129.74.111,93.91.29.197");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_IsPayoutListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_PayoutListenerAllowedIPList, "213.129.74.111,93.91.29.197");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ENVOY_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //feature 16
            featureID = ModuleFeatureID.PayCardNLBVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "NLB Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_MerchantCertificatePath, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_GatewayURL, @"https://secureshop-test.firstdata.lv/ecomm/ClientHandler");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_BankServerURL, @"https://secureshop-test.firstdata.lv:8443/ecomm/MerchantHandler");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_TransactionMode, "SMS");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NLB_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            //feature 17
            featureID = ModuleFeatureID.PayCardPayPointVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PayPoint Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_MobileMerchantInstallationID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_MerchantInstallationID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_PayoutMD5SharedKey, "25TUdIh0fG");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_DefaultMode, GmCore.PayCards.CCProcessor.CCtx.Sale.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_TestMode, GmCore.PayCards.CCProcessor.CCtx.Auth.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_TestUser, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_IsActiveCancellationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_IsRGEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_Is3DEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_UseRefundForPayout, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_WithdrawDescription, "Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_SupportedCurrencies, "EUR,GBP,USD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYPOINT_Credorax, SP.Const.MOD_No);
            //feature 18
            featureID = ModuleFeatureID.PayCardIntercashVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Intercash Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_WebServiceUrl, "https://prepaidgate.intercash.com/pprequestc/service1.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_WebServiceMerchantLogin, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_WebServiceMerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_WithdrawDescription, "Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INTERCASH_SupportedCurrencies, "EUR,GBP,USD,SEK");
            //feature 19
            featureID = ModuleFeatureID.PayCardDotpayVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Dotpay Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_MerchantSellerID, "54768");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_PaymentURL, "https://ssl.dotpay.eu/");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_PaymentDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_PaymentPIN, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_PassCHK, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_SupportedCurrencies, "PLN"); //"PLN,EUR,USD,GBP,JPY,CZK,SEK"
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_PaymentListenerAllowedIPList, "195.150.9.37");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAY_PEmailParameter, "");
            //feature 20
            featureID = ModuleFeatureID.PayCardArtemisBank;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Artemis Bank"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //feature 21
            featureID = ModuleFeatureID.PayCardArtemisCard;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Artemis Card"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISCARD_AcceptEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISCARD_AcceptEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISCARD_AcceptEmailTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISCARD_RejectEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISCARD_RejectEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISCARD_RejectEmailTemplate, string.Empty);
            //feature 22
            featureID = ModuleFeatureID.PayCardArtemisSMS;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Artemis SMS"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISSMS_AcceptEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISSMS_AcceptEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISSMS_AcceptEmailTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISSMS_RejectEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISSMS_RejectEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ARTEMISSMS_RejectEmailTemplate, string.Empty);
            //feature 23
            featureID = ModuleFeatureID.PayCardDotpaySMSVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Dotpay SMS"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAYSMS_CheckCodeURL, @"http://dotpay.pl/check_code.php");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAYSMS_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAYSMS_MerchantID, @"22405");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAYSMS_PlayCoins_MerchantID, @"22405");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAYSMS_DepositLimit24h, @"5");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DOTPAYSMS_SupportedCurrencies, "PLN");
            //feature 24
            featureID = ModuleFeatureID.PayCardEcoCardVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EcoCard Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_PaymentProcessorURL, @"https://www.ecocard.com/PrivateArea/WithdrawOnlineTransfer.aspx");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_MerchantAPIServiceURL, @"https://www.ecocard.com/services/MerchantAPI/MerchantAPIService.asmx");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_MerchantAccountNumber, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_PaymentPagePassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_WithdrawDescription, "Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ECOCARD_PaymentListenerAllowedIPList, "213.129.76.104,213.129.76.105,217.21.162.163,217.21.162.164");
            //feature 25
            featureID = ModuleFeatureID.PayCardSafeChargeVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "SafeCharge Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_ResendRetryNumber, "3");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_MerchantLoginID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_MerchantWebSiteID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_DefaultMode, GmCore.PayCards.CCProcessor.CCtx.Sale.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_TestMode, GmCore.PayCards.CCProcessor.CCtx.Auth.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_TestUser, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_IsActiveCancellationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_IsRGEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_Is3DEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_WithdrawDescription, "Withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SAFECHARGE_SupportedCurrencies, "EUR,USD,GBP");
            //feature 26
            featureID = ModuleFeatureID.PayCardOSMPVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "OSMP Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_OSMP_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_OSMP_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_OSMP_PaymentListenerSharedKey, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_OSMP_PaymentListenerAllowedIPList, string.Empty);
            //feature 27
            featureID = ModuleFeatureID.PayCardICEPAYVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ICEPAY Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_ServiceURL, @"https://pay.icepay.eu/basic/");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_MerchantID, "12345");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_SecretCode, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_CC_SupportedCurrencies, "EUR,USD,GBP,AED,ARS,AUD,BGN,BRL,CAD,CHF,CLP,CNY,CZK,DKK,EEK,HKD,HRK,HUF,IDR,ILS,INR,ISK,JPY,KRW,LTL,LVL,MXN,MYR,NOK,NZD,PHP,PLN,RON,RUB,SEK,SGD,SKK,THB,TRY,TWD,UAH,VND,ZAR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_CC_SupportedLanguages, "EN,DE,NL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_CC_SupportedIssuers, "AMEX,MASTER,VISA");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DDEBIT_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DDEBIT_SupportedLanguages, "EN,NL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DDEBIT_SupportedCountries, "NL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DIRECTEBANK_SupportedCurrencies, "EUR,GBP");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DIRECTEBANK_SupportedLanguages, "EN,DE,NL,FR,ES");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_DIRECTEBANK_SupportedCountries, "AT,BE,CH,DE,ES,FR,GB,IT");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_GIROPAY_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_GIROPAY_SupportedLanguages, "DE");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_GIROPAY_SupportedCountries, "DE");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_IDEAL_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_IDEAL_SupportedIssuers, "ABNAMRO,ASNBANK,FRIESLAND,ING,RABOBANK,SNSBANK,SNSREGIOBANK,TRIODOSBANK,VANLANSCHOT");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_MISTERCASH_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_MISTERCASH_SupportedLanguages, "EN,DE,FR,NL,IT,ES,JA");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_MISTERCASH_SupportedCountries, "BE,NL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_PAYPAL_SupportedCurrencies, "EUR,USD,GBP,AUD,CAD,CZK,DKK,HUF,JPY,NOK,NZD,PLN,SGD,SEK,CHF,BRL,HKD,ILS,MYR,MXN,PHP,TWD,THB,TRY");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_PAYSAFECARD_SupportedCurrencies, "EUR,GBP,USD");

            //special mapping for phone
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_PHONE_SupportedCurrencies, "EUR,AUD,EUR,CAD,CZK,EUR,EUR,EUR,EUR,EUR,EUR,PLN,EUR,GBP,USD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_PHONE_SupportedLanguages, "EN,DE,NL,EN,CZ,DE,ES,FR,IT,DE,NL,PL,PT,EN,EN");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_PHONE_SupportedCountries, "AT,AU,BE,CA,CZ,DE,ES,FR,IT,LU,NL,PL,PT,GB,US");

            //special mapping for sms
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_SMS_SupportedCurrencies, "EUR,AUD,EUR,EUR,CZK,DKK,EUR,EUR,EUR,EUR,EUR,NOK,PLN,GBP,SEK,ZAR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_SMS_SupportedLanguages, "EN,NL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_SMS_SupportedCountries, "NL,AU,AT,BE,CZ,DK,EE,FI,FR,DE,LU,NO,PL,GB,SE,ZA");

            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_WIRE_SupportedCurrencies, "EUR,GBP,USD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_WIRE_SupportedLanguages, "EN,DE,FR,NL,ES");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICEPAY_PaymentListenerAllowedIPList, @"194.30.175.0-194.30.175.255,95.211.51.64-95.211.51.95");
            //feature 28
            featureID = ModuleFeatureID.PayCardGeorgianCardVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Georgian Card"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_EPSURL, @"http://pps.intervale.ru/payment/start.wsm");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_RefundURL, @"http://configure.me/intervaleService/Refund");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_GetInfoURL, @"http://configure.me/intervaleService/GetInfo");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_MerchantID, "12345");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_MerchantSecretPassword, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_PaymentPageID, "67890");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_SupportedLanguages, "EN");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_MerchantAccountNumber, "merchantAccNo");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_PaymentListenerAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_IsATMListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMListenerSiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMListenerSiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMListenerAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMCodeExpirationHours, "12");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMCodeMinValue, "100000");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMCodeMaxValue, "999999");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GEORGIANCARD_ATMSecretPassword, string.Empty);
            //feature 29
            featureID = ModuleFeatureID.PayCardTurkeyBank;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Turkey Bank"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //feature 30
            featureID = ModuleFeatureID.PayCardTurkeyCard;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Turkey Card"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYCARD_AcceptEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYCARD_AcceptEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYCARD_AcceptEmailTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYCARD_RejectEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYCARD_RejectEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYCARD_RejectEmailTemplate, string.Empty);
            //feature 31
            featureID = ModuleFeatureID.PayCardTurkeySMS;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Turkey SMS"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYSMS_AcceptEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYSMS_AcceptEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYSMS_AcceptEmailTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYSMS_RejectEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYSMS_RejectEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYSMS_RejectEmailTemplate, string.Empty);
            //feature 32
            featureID = ModuleFeatureID.PayCardTBCVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "TBC Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TBC_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TBC_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TBC_PaymentListenerSharedKey, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TBC_PaymentListenerAllowedIPList, string.Empty);
            //feature 33
            featureID = ModuleFeatureID.PayCardNOVAVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "NOVA Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NOVA_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NOVA_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NOVA_PaymentListenerSharedKey, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_NOVA_PaymentListenerAllowedIPList, string.Empty);
            //feature 34
            featureID = ModuleFeatureID.PayCardLibertyCashDeskVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "LibertyCashDesk Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LIBERTYCASHDESK_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LIBERTYCASHDESK_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LIBERTYCASHDESK_PaymentListenerSiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LIBERTYCASHDESK_PaymentListenerSiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LIBERTYCASHDESK_PaymentListenerAllowedIPList, string.Empty);
            //feature 35
            featureID = ModuleFeatureID.PayCardPayGEVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PayGE Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_MerchantID, @"12345");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_MerchantPassword, @"password");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_DepositURL, @"https://www.pay.ge/pay");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_SupportedCurrencies, "GEL");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PAYGE_PaymentListenerAllowedIPList, string.Empty);
            //feature 36
            featureID = ModuleFeatureID.PayCardToditoCardVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ToditoCard Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_MerchantContractNumber, @"12345");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_MerchantPointOfSale, @"67890");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_Concept, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_IsSSLEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_CertificatePath, @"C:\WORK\_certs\ToditoCardCertificate.cer");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_HTTPS_ServiceURL, @"https://200.23.37.104:3535/appr_tc");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_HTTP_ServiceURL, @"http://200.23.37.104:3434/appr_tc");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TODITOCARD_SupportedCurrencies, "MXN");
            //feature 37
            featureID = ModuleFeatureID.PayCardTurkeyBankWire;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Turkey Bank Wire"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYBANKWIRE_AcceptEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYBANKWIRE_AcceptEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYBANKWIRE_AcceptEmailTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYBANKWIRE_RejectEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYBANKWIRE_RejectEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TURKEYBANKWIRE_RejectEmailTemplate, string.Empty);
            //feature 38
            featureID = ModuleFeatureID.PayCardDirectPaymentVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "DirectPayment Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            //config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);//
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DIRECTPAYMENT_IsPayinListenerEnabled, SP.Const.MOD_Yes);
            //config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_DIRECTPAYMENT_S2SURL, "http://*****:*****@everymatrix.com");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_Withdraw_Account_Pwd, "gabigabi");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PayAnyWay_MerchantID, "82261123");
            config[moduleID][featureID].Add(SP.Const.MOD_ACCOUNT_PayAnyWay_MerchantID_USD, "10040489");
            //config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_MerchantPassword, "83465");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_MerchantKey, "energycasinotest");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_SupportedCurrencies, "EUR,USD");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_IsPayinListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_PayAnyWay_PaymentListenerAllowedIPList, @"98.158.110.60-98.158.110.200");

            ////feature 41
            featureID = ModuleFeatureID.PayCardIPSVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IPS Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_IPSTestParameter, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_ResendRetryNumber, "3");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_MerchantInstallationID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_MerchantKeyIdentifier, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_DefaultMode, GmCore.PayCards.CCProcessor.CCtx.Sale.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_TestMode, GmCore.PayCards.CCProcessor.CCtx.Auth.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_IsActiveCancellationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_IsRGEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_Is3DEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPS_SupportedCurrencies, "EUR,USD,GBP,CAD");

            //feature 42
            featureID = ModuleFeatureID.PayCardIPSTokenVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IPSToken Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_MerchantKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_VoucherIssueEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_VoucherIssueDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPSToken_VoucherIssueTemplate, string.Empty);

            //feature 43
            featureID = ModuleFeatureID.PayCardEnterCashVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EnterCash Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_MerchantReference, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_MerchantAPIUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_MerchantAPIPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_NotificationGatewayURL, "https://www.example.com/");//
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_APIURL, "https://api.test.ecdirect.net/v1/invoke.json");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_IsPayinListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_PayinListenerAllowedIPList, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_IsPayoutListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_PayoutListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_RefCode_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_Button_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_Siru_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_WyWallet_SupportedCurrencies, "EUR,GBP,USD,NOK,SEK,DKK");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_PublicMerchantCertificatePath, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_OurPrivateCertificatePath, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EnterCash_PaymentListenerAllowedIPList, "");

            //feature 44
            featureID = ModuleFeatureID.PayCardSkrillVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Skrill Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_IsPayinListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_PayinListenerAllowedIPList, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_ResendRetryNumber, "3");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_MerchantInstallationID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_MerchantKeyIdentifier, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_MerchantChannelIdentifier, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_MerchantSenderIdentifier, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_DefaultMode, GmCore.PayCards.CCProcessor.CCtx.Sale.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_TestMode, GmCore.PayCards.CCProcessor.CCtx.Auth.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_TestUser, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_IsActiveCancellationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_IsRGEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_Is3DEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_SupportedCurrencies, "EUR,USD,GBP");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_3DMerchantInstallationID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_3DMerchantKeyIdentifier, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_3DMerchantChannelIdentifier, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SKRILL_3DMerchantSenderIdentifier, "CONFIGURE ME");

            //feature 45
            featureID = ModuleFeatureID.PayCardLocalBankVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Local Bank"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            //config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_WithdrawEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_AcceptDepositEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_AcceptDepositEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_AcceptDepositEmailTemplate, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_RejectDepositEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_RejectDepositEmailDisplayName, @"Gammatrix support");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_LocalBank_RejectDepositEmailTemplate, string.Empty);

            //feature 46
            featureID = ModuleFeatureID.PayCardIchequeVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "iCheque Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_PhobosApiUrl, "https://hub1.swiftvoucher.com/Deimos/Test/EveryMatrix/");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_IsPayinListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_S2SURL, "http://dev.gammatrix.com/services/iChequeListener.ashx");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_PayinListenerAllowedIPList, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_ResendRetryNumber, "3");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_SecretWord, "F217DE00A22BHGR543FF");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_DefaultMode, GmCore.PayCards.CCProcessor.CCtx.Sale.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_TestMode, GmCore.PayCards.CCProcessor.CCtx.Auth.GetStringValue());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_IsActiveCancellationEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_IsRGEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_Is3DEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_ICHEQUE_SupportedCurrencies, "EUR,USD,GBP");

            //feature 47
            featureID = ModuleFeatureID.PayCardEutellerVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Euteller Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_PaymentProcessorURL, @"http://payment.euteller.com/");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_MerchantPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_DepositDescription, "Deposit");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_SupportedCurrencies, "EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_IsPaymentListenerEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_PaymentListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EUTELLER_SiteURL, string.Empty);

            //feature 48
            featureID = ModuleFeatureID.PayCardSmartPayVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "SmartPay Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SMARTPAY_APIURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SMARTPAY_APIUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SMARTPAY_APIPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SMARTPAY_SupportedCurrencies, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SMARTPAY_PaymentListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_SMARTPAY_IsRGEnabled, SP.Const.MOD_Yes);

            //feature 49
            featureID = ModuleFeatureID.PayCardBoCashVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BoCash Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BOCASH_APIServiceURL, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BOCASH_MerchantID, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BOCASH_MerchantPassword, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BOCASH_SupportedCurrencies, "TRY,USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_BOCASH_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());

            //feature 50
            featureID = ModuleFeatureID.PayCardEProVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "E-Pro Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_API_3DS_Key, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_API_NON_3DS_Key, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_DirectPaymentURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_OneClickURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_RefundURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_SupportedCurrencies, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_IsPaymentListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_PaymentListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_IsRGEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_EPRO_Is3DEnabled, SP.Const.MOD_Yes);

            //feature 51
            featureID = ModuleFeatureID.PayCardInPayVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "InPay Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_APICreateInvoiceURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_APIWithdrawURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_APIRefundURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_APICountryiesAndBanksURL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_SecretKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_ProcessorID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_SupportedCurrencies, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_IsPaymentListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_PaymentListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_INPAY_CMSNotifListener, "");

            // ------------------------------------------ //

            //feature 52
            featureID = ModuleFeatureID.PayCardTrustlyVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Trustly Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_MerchantAPIUsername, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_MerchantAPIPassword, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_SupportedCurrencies, "USD,EUR");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_PaymentListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_ProtocolVerion, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_Url, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_NotificationUrl, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_CertificatePath, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_TRUSTLY_IsPaymentListenerEnabled, SP.Const.MOD_Yes);

            //feature 53
            featureID = ModuleFeatureID.PayCardIPGVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IPG Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_ProductID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_SESSION_TOKEN_PROVIDER_URL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_CASHIER_URL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_CALLBACK_URL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_SupportedCurrencies, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_IsIPGListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_IPG_IPGListenerAllowedIPList, "");

            //feature 54
            featureID = ModuleFeatureID.PayCardAPXVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "APX Vendor"
            });

            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_AccountID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_SecretKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_Url, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_NotificationUrl, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_SupportedCurrencies, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_IsPaymentListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_PaymentListenerAllowedIPList, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_APX_WithdrawalInPercentageFromDeposit, @"90");

            //feature 55
            featureID = ModuleFeatureID.PayCardGCEVendor;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GCE Vendor"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_Emulation, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_IsLiveModeEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_TimeoutSec, GmPayments.Base.ProviderConfiguration.DefaultTimeoutSec.ToString());
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_MerchantID, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_SecretKey, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_Orders_URL, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_SupportedCurrencies, "CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_Locale, "");
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_IsListenerEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_PAYCARD_GCE_ListenerAllowedIPList, "");

            // ------------------------------------------ //

            // ----------------- USER ------------------- //
            moduleID = ModuleID.User;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "User",
                Description = "User specific functionality",
                IsEnabled = true
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic",
                IsEnabled = true
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_IsUniqueEmailValidationEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_PasswordHashMethod, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_EmailTemplateParseMethod, "1");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_MinPasswordLength, "5");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_MaxPasswordLength, "20");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_MaxUserIdentityImageNumAllowed, "5");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_MaxUserIdentityImageSizeAllowed, (1000 * 1024).ToString());

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingCoolPeriod, "72");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionMax7DaysPeriodNum, "2");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RegistrationEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RegistrationEmailDisplayName, @"Gammatrix support");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_TransactionEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_TransactionEmailDisplayName, @"Gammatrix support");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_SupportEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_SupportEmailDisplayName, @"Gammatrix support");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CardExpiryAndAutoDeactivationEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CardExpiryAndAutoDeactivationEmailDisplayName, @"Gammatrix Support");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CardExpiryAndAutoDeactivationSupportEmail, @"*****@*****.**");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_PageForResetPassword, @"demo1.gammatrix.com");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ImpersonatedLoginRedirectURLFormat1, @"https://{0}/withdraw");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_NON_AUTOBLOCK_USER_IDS, @"");

            // - self exclusion
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate7Days, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion7Days");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate7DaysExpired, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion7DaysExpired");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate30Days, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion30Days");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate30DaysExpired, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion30DaysExpired");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate3Months, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion3Months");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate3MonthsExpired, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion3MonthsExpired");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate6Months, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion6Months");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate6MonthsExpired, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion6MonthsExpired");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate1Year, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion1Year");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplate1YearExpired, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusion1YearExpired");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplatePermanent, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusionPermanent");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSelfExclusionEmailTemplatePemanentExpired, @"http://demo1.gammatrix.com:2012/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fRgSelfExclusionPermanentExpired");
            // - deposit limit
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingDepositLimitEmailTemplateSetup, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitSetup");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingDepositLimitEmailTemplateRemove, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitRemove");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingDepositLimitEmailTemplateUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitUpdate");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingDepositLimitEmailTemplateScheduledUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitScheduledUpdate");

            // - loss limit
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingLossLimitEmailTemplateSetup, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitSetup");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingLossLimitEmailTemplateRemove, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitRemove");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingLossLimitEmailTemplateUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitUpdate");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingLossLimitEmailTemplateScheduledUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitScheduledUpdate");

            // - wagering limit
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingWageringLimitEmailTemplateSetup, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitSetup");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingWageringLimitEmailTemplateRemove, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitRemove");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingWageringLimitEmailTemplateUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitUpdate");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingWageringLimitEmailTemplateScheduledUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitScheduledUpdate");

            // - session limit
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSessionLimitEmailTemplateSetup, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitSetup");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSessionLimitEmailTemplateRemove, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitRemove");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSessionLimitEmailTemplateUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitUpdate");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_ResponsibleGamblingSessionLimitEmailTemplateScheduledUpdate, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/RgDepositLimitScheduledUpdate");

            // - card expiry and autodeactivation
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CardWillExpireEmailTemplate, @"http://jetbull.gammatrix-dev.net/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fCardWillExpireEmailTemplate&culture={0}");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CardWillExpireSupportEmailTemplate, @"http://jetbull.gammatrix-dev.net/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fCardWillExpireSupportEmailTemplate&culture={0}");

            // - registration
            /*
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RegistrationEmailTemplateActivation, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/Activation");
            */
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RegistrationEmailTemplateActivation,
                @"jetbull.gammatrix-dev.net/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fActivation&culture={0}");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RegistrationEmailTemplateActivationReminder, @"http://demo1.gammatrix.com/opsys/getcontent.ashx?path=Email/ActivationReminder");
            // - transaction
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_TransactionEmailRollbackNotification, string.Empty);
            // - password reset
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserSupportEmailTemplatePasswordReset, @"http://demo1.gammatrix.com/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fResetPassword&culture={0}");

            // change email
            /*
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserEmailTemplateChangeEmailOld,
            @"http://jetbull.gammatrix-dev.net/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fChangeEmailNotification&culture={0}");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserEmailTemplateChangeEmailNew,
            @"http://jetbull.gammatrix-dev.net/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fChangeEmail&culture={0}");
            */

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserEmailTemplateChangeEmailNew, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserEmailTemplateChangeEmailOld, string.Empty);

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_EmailActivationLink, string.Empty);

            //user single session key enable
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_IsSingleUserSessionEnabled, SP.Const.MOD_Yes);
            //failed login
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserAllowedFailedLoginAttempts, "5");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserTooManyFailedLoginsMessage, "Your account has been blocked due to too many failed login attempts. Please contact your back-end administrator.");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_DefaultAcceptTCValue, SP.Const.MOD_Yes);

            ////PersonalDetailsSSN
            //config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserPersonalDetailsSSNAPIURL, @"https://www.businesscheck.se/service/dataimport2.asmx/DataImport2Person");
            //config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserPersonalDetailsSSNCustomerLoginName, "test_valdemar3");
            //config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserPersonalDetailsSSNLoginName, "integration1");
            //config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserPersonalDetailsSSNPassword, "HHXYRGUX");
            //config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserPersonalDetailsSSNLanguage, "sv");
            //config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_UserPersonalDetailsSSNPackageName, "person");

            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_TopRightNotifEmailReceivers, "SuperUser,RootUser,Admin,Manager");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_TopRightNotifEmailTemplate, @"http://jetbull.gammatrix-dev.net/_get_metadata.ashx?type=xml&path=%2fMetadata%2fEmail%2fTopRightAssignmentNotification&culture={0}");

            // captcha-related settings
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CaptchaFreeRequests_Email, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RequestsIntervalMinutes_Email, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_CaptchaFreeRequests_CreditCard, "0");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_BASIC_RequestsIntervalMinutes_CreditCard, "0");

            //feature 2
            featureID = ModuleFeatureID.PersonalDetailsSSN;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Personal Details SSN"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_isProviderEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_APIURL, @"https://www.businesscheck.se/service/dataimport2.asmx/DataImport2Person");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_CustomerLoginName, "UPDATEME");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_LoginName, "UPDATEME");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_Password, "UPDATEME");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_Language, "EN");
            config[moduleID][featureID].Add(SP.Const.MOD_USER_PersonalDetailsSSN_PackageName, "person");

            //feature 3
            featureID = ModuleFeatureID.DefaultRoles;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Default roles"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_USER_DefaultRoles_IsEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_USER_DefaultRoles_RolesList, @"");
            // ------------------------------------------ //

            // ----------------- REPORTING -------------- //
            moduleID = ModuleID.Reporting;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Reporting",
                Description = "Reporting functionality"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            // ------------------------------------------ //

            // ----------------- TRANSACTION ------------------- //
            moduleID = ModuleID.Transaction;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Transaction",
                Description = "Transaction processing"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_TRANSACTION_BASIC_SuspendedUserFundsTransferApplicableRoleList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_TRANSACTION_BASIC_PushBalanceNotificationUpdateURL, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_TRANSACTION_BASIC_PushBalanceNotificationCallTimeout, "60");
            config[moduleID][featureID].Add(SP.Const.MOD_TRANSACTION_BASIC_PushBalanceNotificationUpdateEnable, SP.Const.MOD_No);
            // ------------------------------------------ //

            // ----------------- JOB --------------------------- //
            moduleID = ModuleID.Job;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Job",
                Description = "Job processing"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            //feature 2
            featureID = ModuleFeatureID.JobCurrencyRates;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Currency rates loader"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_AdditionalCurrencies, @"GBP");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 * * * *");
            //feature 3
            featureID = ModuleFeatureID.JobOddsMatrixDailyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "OddsMatrix daily reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 9 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_OMDAILYREPORTS_IsPlayerActivityVersion1Enabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_OMDAILYREPORTS_IsPlayerActivityVersion2Enabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_OMDAILYREPORTS_BalanceReportVersion, "1");
            //feature 4
            featureID = ModuleFeatureID.JobOddsMatrixMonthlyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "OddsMatrix monthly reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 10 1 * *");
            //feature 5
            featureID = ModuleFeatureID.JobUpdateUserDetails;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Update user details"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"*/30 * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_UPDATEUSERDETAILS_MaxRetryNumber, @"10");
            //feature 6
            featureID = ModuleFeatureID.JobResponsibleGambling;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Responsible Gambling tasks"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 7
            featureID = ModuleFeatureID.JobAutoLogout;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Auto logout"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_AUTOLOGOUT_InactiveSessionTimeoutMin, @"60");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_AUTOLOGOUT_InactiveLongSessionTimeoutMin, (24 * 60).ToString());
            //feature 8
            featureID = ModuleFeatureID.JobUpdateIP2LocationDb;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Update IP2Location db"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 3 * * *");
            //feature 9
            featureID = ModuleFeatureID.JobNetEntDailyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "NetEnt daily reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 9 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_NETENTDAILYREPORTS_BalanceReportVersion, "0");
            //feature 10
            featureID = ModuleFeatureID.JobDailyFeeds;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Daily feeds"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"50 10 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_DAILYFEEDS_BrandName, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_DAILYFEEDS_AffiliateTagPrefix, @"a_");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_DAILYFEEDS_IncludeUsersWithoutAffTag, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_DAILYFEEDS_IsUploadToIAEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_DAILYFEEDS_CopyToOperatorFolder, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_DAILYFEEDS_CombineDomainsList, string.Empty);
            //feature 11
            featureID = ModuleFeatureID.JobCakeDailyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Cake daily reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 7 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_CAKEDAILYREPORTS_IsPlayerActivityReportEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_CAKEDAILYREPORTS_IsTournamentShortFallsReportEnabled, SP.Const.MOD_Yes);
            //feature 12
            featureID = ModuleFeatureID.JobGutsDailyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Guts daily reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 8 * * *");
            //feature 13
            featureID = ModuleFeatureID.JobAccountActivationReminder;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "User account activation reminder"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ACCOUNTACTIVATIONREMINDER_Days, @"7");
            //feature 14
            featureID = ModuleFeatureID.JobAutoRoles;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Auto roles"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 5 * * *");
            //feature 15
            featureID = ModuleFeatureID.JobSDAUpdate;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "SDA update"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 5 * * *");
            //feature 16
            featureID = ModuleFeatureID.JobCakePrepareRakeBack;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Cake prepare rakeback"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"00 15 2 * *");
            //feature 17
            featureID = ModuleFeatureID.JobAutoTrans;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Auto trans"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 18
            featureID = ModuleFeatureID.JobSAUpdate;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "SA update"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 7 * * *");
            //feature 19
            featureID = ModuleFeatureID.JobOnGameDailyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "OnGame daily reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"10 11 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_APIFeedsEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_SftpFeedsEnabled, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_SftpHost, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_SftpUser, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_SftpIdentityPath, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_SftpIncomingPath, @"CONFIGURE ME");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ONGAMEDAILYREPORTS_GPGPassphrase, @"CONFIGURE ME");
            //feature 20
            featureID = ModuleFeatureID.JobConfigChange;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Config change"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 21
            featureID = ModuleFeatureID.JobVanguardTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Vanguard API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_VANGUARDTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 22
            featureID = ModuleFeatureID.JobAutoJob;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Auto job"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 23
            featureID = ModuleFeatureID.JobAutoUserUpdateStatus;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Auto user update status"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 24
            featureID = ModuleFeatureID.JobVendorAPIManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Vendor API manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"*/2 * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_VENDORAPIMANAGER_DeltaProc, @"10");
            //config[moduleID][featureID].Add(SP.Const.MOD_JOB_VENDORAPIMANAGER_DeltaAvgSec, @"15");
            //feature 25
            featureID = ModuleFeatureID.JobCakeMonthlyReports;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Cake monthly reports"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 1 2 * *");
            //feature 26
            featureID = ModuleFeatureID.JobCTXMTicketManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "CTXM API ticket manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_CTXMTICKETMANAGER_TicketExpirePeriodMin, @"30");
            //feature 27
            featureID = ModuleFeatureID.JobIGTTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IGT API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IGTTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 28
            featureID = ModuleFeatureID.JobCasinoBonusManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Casino bonus manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 29
            featureID = ModuleFeatureID.JobPlaynGOTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "PlaynGO API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_PLAYNGOTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 30
            featureID = ModuleFeatureID.JobEcoCardManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EcoCard payment manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 * * * *");
            //feature 31
            featureID = ModuleFeatureID.JobGeorgianCardCodeManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GeorgianCard code manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 32
            featureID = ModuleFeatureID.JobBuzzSportsTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BuzzSports API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_BUZZSPORTSTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 33
            featureID = ModuleFeatureID.JobBetSoftTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BetSoft API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_BETSOFTTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 34
            featureID = ModuleFeatureID.JobGreenTubeTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GreenTube API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_GREENTUBETOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 35
            featureID = ModuleFeatureID.JobSheriffTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Sheriff API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_SHERIFFTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 36
            featureID = ModuleFeatureID.JobResponsysInteractActionManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ResponsysInteract action manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 37
            featureID = ModuleFeatureID.JobResponsysInteractTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ResponsysInteract API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESPONSYSINTERACTTOKENMANAGER_TokenExpirePeriodMin, @"60");
            //feature 38
            featureID = ModuleFeatureID.JobCasinoFPPPointsUpdate;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "Casino FPP points update"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 39
            featureID = ModuleFeatureID.JobNorskeTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Norske API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_NORSKETOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 40
            featureID = ModuleFeatureID.JobMetroHashManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Metro API hash manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_METROHASHMANAGER_HashExpirePeriodMin, @"60");
            //feature 41
            featureID = ModuleFeatureID.JobOMITokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "OMI API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_OMITOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 42
            featureID = ModuleFeatureID.JobResponsysInteractCustomerGameInfo;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "ResponsysInteract customer game info"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"30 7 * * *");
            //feature 43
            featureID = ModuleFeatureID.JobEvolutionGamingTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "EvolutionGaming API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_EVOLUTIONGAMINGTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 44
            featureID = ModuleFeatureID.JobEmailVisionActionManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "EmailVision action manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 45
            featureID = ModuleFeatureID.JobEmailVisionCustomerInfo;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "EmailVision customer info"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            //feature 46
            featureID = ModuleFeatureID.JobEmailVisionTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
              ModuleID = moduleID,
              ModuleFeatureID = featureID,
              Name = "EmailVision token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_EMAILVISIONTOKENMANAGER_TokenExpirePeriodMin, @"60");
            //feature 47
            featureID = ModuleFeatureID.JobNYXTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "NYX API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_NYXTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 48
            featureID = ModuleFeatureID.JobOrionQueueManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Orion queue manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ORION_isServiceEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ORION_Url, "http://webserver1.bluemesa.mgsops.net/Orion/XmlRpc");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ORION_TimeoutSec, @"120");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ORION_Login, "5031");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ORION_Password, "test");
            //feature 49
            featureID = ModuleFeatureID.JobBallyTokenManager;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Bally API token manager"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_BallyTOKENMANAGER_TokenExpirePeriodMin, @"30");
            //feature 50
            featureID = ModuleFeatureID.JobExpiredCardReminderAutoDeactivationJob;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Card will expire email reminder"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 0 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RunSingleInstance, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RunSingleInstanceTimeout, "160");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RunSingleInstanceRetryInterval, "250");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_CARD_WILL_EXPIRE_EMAIL_REMINDER_Days, @"5");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_CARD_AUTO_DEACTIVATION_Days, @"3");
            //feature 51
            featureID = ModuleFeatureID.JobRemoveRolesForInactiveUsers;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Remove roles for inactive users"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RemInactiveUsersRoles_NrOfDaysOfInactivity, @"90");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RemInactiveUsersRoles_FromEmail, @"*****@*****.**");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RemInactiveUsersRoles_FromDisplayName, @"Support Every Matrix");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RemInactiveUsersRoles_ListOfRecipients, @"[email protected]; [email protected]"); //@"[email protected];[email protected]"
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RemInactiveUsersRoles_EmailSubject, @"List of inactive users that have been removed roles to access back-end");

            //feature 52
            featureID = ModuleFeatureID.JobResetBalance;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Reset users balances"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_EnableResetOnlyForNegativeBalances, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_EnableAlsoResetSuspendedFundsAccountBalance, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_AccountDebitedAndCreditedWhenResettingBalance, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_ListOfUserRolesThatMustHaveBalanceReset, string.Empty);

            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_FromEmail, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_FromDisplayName, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_ListOfRecipients, @"");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RESETBALANCE_EmailSubject, @"starting balance adjustments");

            //feature 53
            featureID = ModuleFeatureID.JobAutoProcessingTransactions;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Auto processing transactions"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"0 0 * * *");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RunSingleInstance, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RunSingleInstanceTimeout, "160");
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_RunSingleInstanceRetryInterval, "250");
            // ------------------------------------------ //

            //feature 56
            featureID = ModuleFeatureID.JobAPXCalculatingTotalDepositWithdraw;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "APX deposits and withdrawals calculating of sums"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");

            //feature 51
            featureID = ModuleFeatureID.JobUkashTransactionEnquiry;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Ukash Transaction Enquiry"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRunnable, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsRecordable, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsBackDateScheduleSupported, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_IsDomainSpecific, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_JOB_ScheduleString, @"* * * * *");
            // ------------------------------------------ //

            // ----------------- BONUS ------------------------- //
            moduleID = ModuleID.Bonus;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Bonus",
                Description = "Bonus"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_BONUS_BASIC_EnableBonusQueueing, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_BONUS_BASIC_EnableStandardBonus, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_BONUS_BASIC_EnableFreeSpinBonus, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_BONUS_BASIC_EnableFreeRoundBonus, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_BONUS_BASIC_EnableMarketingChipBonus, SP.Const.MOD_Yes);
            // ------------------------------------------ //

            // ----------------- SERVICE ------------------------- //
            moduleID = ModuleID.Service;
            feature.Add(moduleID, new Dictionary<ModuleFeatureID, ModuleFeatureRec>());
            config.Add(moduleID, new Dictionary<ModuleFeatureID, Dictionary<string, string>>());
            module.Add(moduleID, new ModuleRec()
            {
                ModuleID = moduleID,
                Name = "Service",
                Description = "Service"
            });
            //feature 1
            featureID = ModuleFeatureID.Basic;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Basic"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BASIC_PublicServiceAPIAllowedIPList, string.Empty);
            //feature 2
            featureID = ModuleFeatureID.ServiceBanaMatrix;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "BanaMatrix"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BANAMATRIX_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BANAMATRIX_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BANAMATRIX_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BANAMATRIX_ProxyAllowedIPList, string.Empty);
            //feature 3
            featureID = ModuleFeatureID.ServiceMobile;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Mobile"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_MOBILE_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_MOBILE_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_MOBILE_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_MOBILE_ProxyAllowedIPList, string.Empty);
            //feature 4
            featureID = ModuleFeatureID.ServiceGR88;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "GR88"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GR88_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GR88_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GR88_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GR88_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GR88_CMSClearSessionCacheURLFormat1, string.Empty);
            //feature 5
            featureID = ModuleFeatureID.ServiceTG;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "TG"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_TG_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_TG_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_TG_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_TG_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_TG_CMSClearSessionCacheURLFormat1, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_TG_OMLogoutCallEnabled, SP.Const.MOD_No);
            //feature 6
            featureID = ModuleFeatureID.ServiceKR;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "KR"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_KR_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_KR_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_KR_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_KR_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_KR_CMSClearSessionCacheURLFormat1, string.Empty);
            //feature 7
            featureID = ModuleFeatureID.ServiceIG;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "IG"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_IG_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_IG_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_IG_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_IG_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_IG_CMSClearSessionCacheURLFormat1, string.Empty);
            //feature 8
            featureID = ModuleFeatureID.ServiceMetro;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Metro"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_CMSClearSessionCacheURLFormat1, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_LoginAttempts, @"5");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_IsSingleUserSession, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_IsLifetimeDepositLimitEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_LifetimeDepositLimitValue, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_LifetimeDepositLimitCurrency, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_SendUserPasswordAsPlainText, SP.Const.MOD_Yes);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_AllowU2VAndV2UApiCalls, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_METRO_UseAuthorizationFlow, SP.Const.MOD_Yes);

            //feature 9
            featureID = ModuleFeatureID.ServiceGutsCom;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Guts"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GUTSCOM_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GUTSCOM_ProxySiteID, "testID");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GUTSCOM_ProxySiteCode, "testCode");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GUTSCOM_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_GUTSCOM_CMSClearSessionCacheURLFormat1, string.Empty);

            //feature 10
            featureID = ModuleFeatureID.ServiceBets4All;
            feature[moduleID].Add(featureID, new ModuleFeatureRec()
            {
                ModuleID = moduleID,
                ModuleFeatureID = featureID,
                Name = "Bets4All"
            });
            config[moduleID].Add(featureID, new Dictionary<string, string>());
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BETS4ALL_IsProxyEnabled, SP.Const.MOD_No);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BETS4ALL_ProxySiteID, "testIDBets4All");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BETS4ALL_ProxySiteCode, "testCodeBets4All");
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BETS4ALL_ProxyAllowedIPList, string.Empty);
            config[moduleID][featureID].Add(SP.Const.MOD_SERVICE_BETS4ALL_CMSClearSessionCacheURLFormat1, string.Empty);
            // ------------------------------------------ //

            //result
            defaultModule = module;
            defaultFeature = feature;
            defaultConfig = config;
        }
Пример #5
0
        public override RelocationResults Relocate(Program program, Address addrLoad)
        {
            ImageReader rdr = new LeImageReader(RawImage, hdrOffset + relocationsOffset);
            ushort segCode = (ushort)(addrLoad.Selector.Value + (ExeImageLoader.CbPsp >> 4));
            ushort dx = 0;
            for (; ; )
            {
                int cx = rdr.ReadLeUInt16();
                if (cx != 0)
                {
                    uint relocBase = ExeImageLoader.CbPsp + dx * 0x10u;
                    do
                    {
                        ushort relocOff = rdr.ReadLeUInt16();
                        ushort seg = imgU.FixupLeUInt16(relocBase + relocOff, segCode);
                        var segment = segmentMap.AddSegment(new ImageSegment(
                            seg.ToString("X4"), 
                            Address.SegPtr(seg, 0),
                            imgU,
                            AccessMode.ReadWriteExecute));
                    } while (--cx != 0);
                }
                if (dx == 0xF000)
                    break;
                dx += (ushort)0x1000U;
            }

            this.cs += segCode;
            segmentMap.AddSegment(Address.SegPtr(cs, 0), cs.ToString("X4"), AccessMode.ReadWriteExecute, 0);
            this.ss += segCode;
            var state = arch.CreateProcessorState();
            state.SetRegister(Registers.ds, Constant.Word16(addrLoad.Selector.Value));
            state.SetRegister(Registers.es, Constant.Word16(addrLoad.Selector.Value));
            state.SetRegister(Registers.cs, Constant.Word16(cs));
            state.SetRegister(Registers.ss, Constant.Word16(ss));
            state.SetRegister(Registers.bx, Constant.Word16(0));
            var ep = new ImageSymbol(Address.SegPtr(cs, ip))
            {
                ProcessorState = state
            };
            var entryPoints = new List<ImageSymbol> { ep };
            var imageSymbols = entryPoints.ToSortedList(e => e.Address, e => e);
            return new RelocationResults(entryPoints, imageSymbols);
        }