@zengenti/contensis-react-base 3.0.0-beta.73 → 3.0.0-beta.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/forms.js CHANGED
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var immer = require('immer');
6
6
  var effects = require('@redux-saga/core/effects');
7
7
  var reselect = require('reselect');
8
- var redux = require('@zengenti/contensis-react-base/redux');
9
8
  var routing = require('@zengenti/contensis-react-base/routing');
10
9
  var React = require('react');
11
10
  var PropTypes = require('prop-types');
@@ -39,32 +38,6 @@ const SET_FORM_ENTRIES = `${ACTION_PREFIX}SET_FORM_ENTRIES`;
39
38
  const SET_SUCCESS_MESSAGE = `${ACTION_PREFIX}SET_SUCCESS_MESSAGE`;
40
39
  const SET_CHECKBOX_VALUE = `${ACTION_PREFIX}SET_CHECKBOX_VALUE`;
41
40
 
42
- const MakeFieldType = field => {
43
- if (!field) return null;
44
-
45
- if (field.dataType === 'string' && field.editor && field.editor.id === 'multiline') {
46
- return 'textarea';
47
- } else if (field.dataType === 'string' && field.editor && field.editor.id === 'list-dropdown') {
48
- return 'dropdown';
49
- } else if (field.editor && field.editor.properties && field.editor.properties.readOnly || field.groupId && field.groupId === 'private') {
50
- return 'hidden';
51
- } else if (field.dataType === 'stringArray' || field.dataType === 'boolean') {
52
- return 'checkbox';
53
- } else if (field.dataType === 'string' && field.validations && field.validations.allowedValues) {
54
- return 'radio';
55
- } else if (field.dataType === 'integer') {
56
- return 'number';
57
- } else if (field.dataType === 'dateTime') {
58
- return 'date';
59
- } else if (field.dataFormat === 'daterange') {
60
- return 'dateRange';
61
- } else if (field.dataFormat === 'entry') {
62
- return 'entryPicker';
63
- } else {
64
- return 'textfield';
65
- }
66
- };
67
-
68
41
  const initialSettings = {
69
42
  recaptcha: {
70
43
  siteKey: null
@@ -91,7 +64,8 @@ const initialFormData = {
91
64
  groups: [],
92
65
  defaultLanguage: null,
93
66
  pagingInfo: initialPagingInfo,
94
- status: initialStatus
67
+ status: initialStatus,
68
+ settings: {}
95
69
  };
96
70
  let initialState = {
97
71
  settings: initialSettings
@@ -113,11 +87,9 @@ var reducer = immer.produce((state, action) => {
113
87
  fields,
114
88
  formId,
115
89
  groups,
116
- defaultLanguage
90
+ defaultLanguage,
91
+ settings
117
92
  } = action || {};
118
- fields.map(field => {
119
- field.type = MakeFieldType(field);
120
- });
121
93
  state[formId].fields = fields;
122
94
  state[formId].formId = formId;
123
95
  state[formId].groups = groups;
@@ -125,6 +97,7 @@ var reducer = immer.produce((state, action) => {
125
97
  state[formId].status.isSubmitting = false;
126
98
  state[formId].status.hasSuccess = false;
127
99
  state[formId].status.hasError = false;
100
+ state[formId].settings = settings;
128
101
  return;
129
102
  }
130
103
 
@@ -272,26 +245,90 @@ var reducer = immer.produce((state, action) => {
272
245
  }
273
246
  }, initialState);
274
247
 
275
- const selectForms = state => redux.getIn(state, ['forms']);
276
- const selectFieldErrors = (state, formId) => redux.getIn(state, ['forms', formId, 'fieldErrors']);
277
- const selectPostData = (state, formId) => redux.getIn(state, ['forms', formId, 'data']);
278
- const selectFormGroups = (state, formId) => redux.getIn(state, [('groups')]);
279
- const selectPagingInfo = (state, formId) => redux.getIn(state, ['forms', formId, 'pagingInfo']);
280
- const selectFormStatus = (state, formId) => redux.getIn(state, ['forms', formId, 'status']);
281
- const selectEntries = (state, formId) => redux.getIn(state, ['forms', formId, 'entries']);
282
- const selectPagedFields = formId => reselect.createSelector([selectForms], form => {
283
- const pagingInfo = redux.getIn(form, [formId, 'pagingInfo']);
284
- const fields = redux.getIn(form, [formId, 'fields']);
285
-
286
- if (fields && fields.length > 0 && pagingInfo && pagingInfo.pageCount > 1) {
287
- return fields.filter(f => f.groupId == pagingInfo.currentPageId);
248
+ const selectForms = state => state.forms;
249
+ const makeSelectPagedFields = formId => reselect.createSelector([selectForms], form => {
250
+ if (form[formId]) {
251
+ const pagingInfo = form[formId].pagingInfo;
252
+ const fields = form[formId].fields;
253
+ if ((fields === null || fields === void 0 ? void 0 : fields.length) > 0 && pagingInfo.pageCount > 1) return fields.filter(f => f.groupId == pagingInfo.currentPageId);else return fields;
288
254
  }
255
+ });
256
+ const makeSelectFormStatus = formId => reselect.createSelector(selectForms, form => {
257
+ var _form$formId;
258
+
259
+ return (_form$formId = form[formId]) === null || _form$formId === void 0 ? void 0 : _form$formId.status;
260
+ });
261
+ const makeSelectPagingInfo = formId => reselect.createSelector(selectForms, form => {
262
+ var _form$formId2;
263
+
264
+ return (_form$formId2 = form[formId]) === null || _form$formId2 === void 0 ? void 0 : _form$formId2.pagingInfo;
265
+ });
266
+ const makeSelectFormSettings = formId => reselect.createSelector(selectForms, form => {
267
+ var _form$formId3;
268
+
269
+ return (_form$formId3 = form[formId]) === null || _form$formId3 === void 0 ? void 0 : _form$formId3.settings;
270
+ });
271
+ const makeSelectFormFieldErrors = formId => reselect.createSelector(selectForms, form => {
272
+ var _form$formId4;
273
+
274
+ return (_form$formId4 = form[formId]) === null || _form$formId4 === void 0 ? void 0 : _form$formId4.fieldErrors;
275
+ });
276
+ const makeSelectFormEntries = formId => reselect.createSelector(selectForms, form => {
277
+ var _form$formId5;
278
+
279
+ return (_form$formId5 = form[formId]) === null || _form$formId5 === void 0 ? void 0 : _form$formId5.entries;
280
+ });
281
+ const makeSelectFormPostData = formId => reselect.createSelector(selectForms, form => {
282
+ var _form$formId6;
283
+
284
+ return (_form$formId6 = form[formId]) === null || _form$formId6 === void 0 ? void 0 : _form$formId6.data;
285
+ });
286
+ const makeSelectIsLoading = formId => reselect.createSelector(selectForms, forms => {
287
+ var _forms$formId;
288
+
289
+ return (_forms$formId = forms[formId]) === null || _forms$formId === void 0 ? void 0 : _forms$formId.status.isLoading;
290
+ });
291
+ const makeSelectHasSuccess = formId => reselect.createSelector(selectForms, forms => {
292
+ var _forms$formId2;
293
+
294
+ return (_forms$formId2 = forms[formId]) === null || _forms$formId2 === void 0 ? void 0 : _forms$formId2.status.hasSuccess;
295
+ });
296
+ const makeSelectFormFields = formId => reselect.createSelector(selectForms, forms => {
297
+ var _forms$formId3;
298
+
299
+ return (_forms$formId3 = forms[formId]) === null || _forms$formId3 === void 0 ? void 0 : _forms$formId3.fields;
300
+ });
301
+ const makeSelectDefaultLang = formId => reselect.createSelector(selectForms, forms => {
302
+ var _forms$formId4;
289
303
 
290
- return fields;
304
+ return (_forms$formId4 = forms[formId]) === null || _forms$formId4 === void 0 ? void 0 : _forms$formId4.defaultLanguage;
291
305
  });
292
- const makeSelectIsLoading = formId => reselect.createSelector(selectForms, forms => redux.getIn(forms, [formId, 'status', 'isLoading']));
293
- const makeSelectFormFields = formId => reselect.createSelector(selectForms, forms => redux.getIn(forms, [formId, 'fields']));
294
- const makeSelectDefaultLang = formId => reselect.createSelector(selectForms, forms => redux.getIn(forms, [formId, 'defaultLanguage']));
306
+ const makeSelectFormSuccessMessage = formId => reselect.createSelector(selectForms, forms => {
307
+ var _forms$formId5;
308
+
309
+ return (_forms$formId5 = forms[formId]) === null || _forms$formId5 === void 0 ? void 0 : _forms$formId5.status.successMessage;
310
+ });
311
+ const makeSelectFormGroup$1 = formId => reselect.createSelector(selectForms, forms => {
312
+ var _forms$formId6;
313
+
314
+ return (_forms$formId6 = forms[formId]) === null || _forms$formId6 === void 0 ? void 0 : _forms$formId6.groups;
315
+ });
316
+ const selectors = {
317
+ selectForms,
318
+ makeSelectPagedFields,
319
+ makeSelectFormStatus,
320
+ makeSelectPagingInfo,
321
+ makeSelectFormSettings,
322
+ makeSelectFormFieldErrors,
323
+ makeSelectFormEntries,
324
+ makeSelectFormPostData,
325
+ makeSelectIsLoading,
326
+ makeSelectHasSuccess,
327
+ makeSelectFormFields,
328
+ makeSelectDefaultLang,
329
+ makeSelectFormSuccessMessage,
330
+ makeSelectFormGroup: makeSelectFormGroup$1
331
+ };
295
332
 
296
333
  const URI = '/forms';
297
334
  const getFormSchema = async formId => {
@@ -341,16 +378,23 @@ const request = async (url, options) => {
341
378
  .catch(error => console.log('error', error));
342
379
  };
343
380
 
381
+ const domains = ['1033edge.com', '11mail.com', '123.com', '123box.net', '123india.com', '123mail.cl', '123qwe.co.uk', '126.com', '150ml.com', '15meg4free.com', '163.com', '1coolplace.com', '1freeemail.com', '1funplace.com', '1internetdrive.com', '1mail.net', '1me.net', '1mum.com', '1musicrow.com', '1netdrive.com', '1nsyncfan.com', '1under.com', '1webave.com', '1webhighway.com', '212.com', '24horas.com', '2911.net', '2bmail.co.uk', '2d2i.com', '2die4.com', '3000.it', '321media.com', '37.com', '3ammagazine.com', '3dmail.com', '3email.com', '3xl.net', '444.net', '4email.com', '4email.net', '4mg.com', '4newyork.com', '4x4man.com', '5iron.com', '5star.com', '88.am', '8848.net', '888.nu', '97rock.com', 'aaamail.zzn.com', 'aamail.net', 'aaronkwok.net', 'abbeyroadlondon.co.uk', 'abcflash.net', 'abdulnour.com', 'aberystwyth.com', 'abolition-now.com', 'about.com', 'academycougars.com', 'acceso.or.cr', 'access4less.net', 'accessgcc.com', 'ace-of-base.com', 'acmecity.com', 'acmemail.net', 'acninc.net', 'adelphia.net', 'adexec.com', 'adfarrow.com', 'adios.net', 'ados.fr', 'advalvas.be', 'aeiou.pt', 'aemail4u.com', 'aeneasmail.com', 'afreeinternet.com', 'africamail.com', 'agoodmail.com', 'ahaa.dk', 'aichi.com', 'aim.com', 'airforce.net', 'airforceemail.com', 'airmail.net', 'airpost.net', 'ajacied.com', 'ak47.hu', 'aknet.kg', 'albawaba.com', 'alex4all.com', 'alexandria.cc', 'algeria.com', 'alhilal.net', 'alibaba.com', 'alice.it', 'aliceadsl.fr', 'alive.cz', 'aliyun.com', 'allmail.net', 'alloymail.com', 'allracing.com', 'allsaintsfan.com', 'alltel.net', 'alskens.dk', 'altavista.com', 'altavista.net', 'altavista.se', 'alternativagratis.com', 'alumnidirector.com', 'alvilag.hu', 'amele.com', 'america.hm', 'ameritech.net', 'amnetsal.com', 'amrer.net', 'amuro.net', 'amuromail.com', 'ananzi.co.za', 'ancestry.com', 'andylau.net', 'anfmail.com', 'angelfan.com', 'angelfire.com', 'animal.net', 'animalhouse.com', 'animalwoman.net', 'anjungcafe.com', 'anote.com', 'another.com', 'anotherwin95.com', 'anti-social.com', 'antisocial.com', 'antongijsen.com', 'antwerpen.com', 'anymoment.com', 'anytimenow.com', 'aol.com', 'aol.it', 'apexmail.com', 'apmail.com', 'apollo.lv', 'approvers.net', 'arabia.com', 'arabtop.net', 'arcademaster.com', 'archaeologist.com', 'arcor.de', 'arcotronics.bg', 'argentina.com', 'aristotle.org', 'army.net', 'arnet.com.ar', 'artlover.com', 'artlover.com.au', 'as-if.com', 'asean-mail.com', 'asheville.com', 'asia-links.com', 'asia.com', 'asiafind.com', 'asianavenue.com', 'asiancityweb.com', 'asiansonly.net', 'asianwired.net', 'asiapoint.net', 'assala.com', 'assamesemail.com', 'astroboymail.com', 'astrolover.com', 'astrosfan.com', 'astrosfan.net', 'asurfer.com', 'athenachu.net', 'atina.cl', 'atl.lv', 'atlanticbb.net', 'atlaswebmail.com', 'atlink.com', 'ato.check.com', 'atozasia.com', 'att.net', 'att.net', 'attbi.com', 'attglobal.net', 'attglobal.net', 'attymail.com', 'au.ru', 'ausi.com', 'austin.rr.com', 'australia.edu', 'australiamail.com', 'austrosearch.net', 'autoescuelanerja.com', 'automotiveauthority.com', 'avh.hu', 'awsom.net', 'axoskate.com', 'ayna.com', 'azimiweb.com', 'bachelorboy.com', 'bachelorgal.com', 'backpackers.com', 'backstreet-boys.com', 'backstreetboysclub.com', 'bagherpour.com', 'bangkok.com', 'bangkok2000.com', 'bannertown.net', 'baptistmail.com', 'baptized.com', 'barcelona.com', 'baseballmail.com', 'basketballmail.com', 'batuta.net', 'baudoinconsulting.com', 'bboy.zzn.com', 'bcpl.net', 'bcvibes.com', 'beeebank.com', 'beenhad.com', 'beep.ru', 'beer.com', 'beethoven.com', 'belice.com', 'belizehome.com', 'bellatlantic.net', 'bellnet.ca', 'bellsouth.net', 'bellsouth.net', 'berkscounty.com', 'berlin.com', 'berlin.de', 'berlinexpo.de', 'bestmail.us', 'bestweb.net', 'bettergolf.net', 'bev.net', 'bharatmail.com', 'bigassweb.com', 'bigblue.net.au', 'bigboab.com', 'bigfoot.com', 'bigfoot.de', 'bigger.com', 'bigmailbox.com', 'bigpond.com', 'bigpond.com.au', 'bigpond.net.au', 'bigramp.com', 'bikemechanics.com', 'bikeracer.com', 'bikeracers.net', 'bikerider.com', 'billsfan.com', 'billsfan.net', 'bimamail.com', 'bimla.net', 'birdowner.net', 'bisons.com', 'bitmail.com', 'bitpage.net', 'bizhosting.com', 'bla-bla.com', 'blackburnmail.com', 'blackplanet.com', 'blacksburg.net', 'blazemail.com', 'blazenet.net', 'bluehyppo.com', 'bluemail.ch', 'bluemail.dk', 'bluesfan.com', 'bluewin.ch', 'blueyonder.co.uk', 'blushmail.com', 'bmlsports.net', 'boardermail.com', 'boatracers.com', 'bol.com.br', 'bolando.com', 'bollywoodz.com', 'bolt.com', 'boltonfans.com', 'bombdiggity.com', 'bonbon.net', 'boom.com', 'bootmail.com', 'bornnaked.com', 'bossofthemoss.com', 'bostonoffice.com', 'bounce.net', 'box.az', 'boxbg.com', 'boxemail.com', 'boxfrog.com', 'boyzoneclub.com', 'bradfordfans.com', 'brasilia.net', 'brazilmail.com.br', 'breathe.com', 'bresnan.net', 'brfree.com.br', 'bright.net', 'britneyclub.com', 'brittonsign.com', 'broadcast.net', 'bt.com', 'btinternet.com', 'btopenworld.co.uk', 'buffymail.com', 'bullsfan.com', 'bullsgame.com', 'bumerang.ro', 'bunko.com', 'buryfans.com', 'business-man.com', 'businessman.net', 'businessweekmail.com', 'busta-rhymes.com', 'busymail.com', 'buyersusa.com', 'bvimailbox.com', 'byteme.com', 'c2i.net', 'c3.hu', 'c4.com', 'cabacabana.com', 'cableone.net', 'caere.it', 'cairomail.com', 'cais.net', 'callnetuk.com', 'callsign.net', 'caltanet.it', 'camidge.com', 'canada-11.com', 'canada.com', 'canadianmail.com', 'canoemail.com', 'canwetalk.com', 'capu.net', 'caramail.com', 'care2.com', 'careerbuildermail.com', 'carioca.net', 'cartestraina.ro', 'casablancaresort.com', 'casino.com', 'catcha.com', 'catholic.org', 'catlover.com', 'catsrule.garfield.com', 'ccnmail.com', 'cd2.com', 'celineclub.com', 'celtic.com', 'centoper.it', 'centralpets.com', 'centrum.cz', 'centrum.sk', 'centurytel.net', 'cfl.rr.com', 'cgac.es', 'chaiyomail.com', 'chance2mail.com', 'chandrasekar.net', 'charm.net', 'charmedmail.com', 'charter.net', 'chat.ru', 'chattown.com', 'chauhanweb.com', 'check.com', 'check1check.com', 'cheerful.com', 'chek.com', 'chello.nl', 'chemist.com', 'chequemail.com', 'cheyenneweb.com', 'chez.com', 'chickmail.com', 'china.net.vg', 'chinalook.com', 'chirk.com', 'chocaholic.com.au', 'christianmail.net', 'churchusa.com', 'cia-agent.com', 'cia.hu', 'ciaoweb.it', 'cicciociccio.com', 'cincinow.net', 'citeweb.net', 'citlink.net', 'city-of-bath.org', 'city-of-birmingham.com', 'city-of-brighton.org', 'city-of-cambridge.com', 'city-of-coventry.com', 'city-of-edinburgh.com', 'city-of-lichfield.com', 'city-of-lincoln.com', 'city-of-liverpool.com', 'city-of-manchester.com', 'city-of-nottingham.com', 'city-of-oxford.com', 'city-of-swansea.com', 'city-of-westminster.com', 'city-of-westminster.net', 'city-of-york.net', 'city2city.com', 'cityofcardiff.net', 'cityoflondon.org', 'claramail.com', 'classicalfan.com', 'classicmail.co.za', 'clerk.com', 'cliffhanger.com', 'close2you.net', 'club-internet.fr', 'club4x4.net', 'clubalfa.com', 'clubbers.net', 'clubducati.com', 'clubhonda.net', 'clubvdo.net', 'cluemail.com', 'cmpmail.com', 'cnnsimail.com', 'codec.ro', 'coder.hu', 'coid.biz', 'coldmail.com', 'collectiblesuperstore.com', 'collegebeat.com', 'collegeclub.com', 'collegemail.com', 'colleges.com', 'columbus.rr.com', 'columbusrr.com', 'columnist.com', 'comcast.net', 'comic.com', 'communityconnect.com', 'comprendemail.com', 'compuserve.com', 'computer-freak.com', 'computermail.net', 'concentric.net', 'conexcol.com', 'conk.com', 'connect4free.net', 'connectbox.com', 'conok.com', 'consultant.com', 'cookiemonster.com', 'cool.br', 'coolgoose.ca', 'coolgoose.com', 'coolkiwi.com', 'coollist.com', 'coolmail.com', 'coolmail.net', 'coolsend.com', 'cooooool.com', 'cooperation.net', 'cooperationtogo.net', 'copacabana.com', 'cornells.com', 'cornerpub.com', 'corporatedirtbag.com', 'correo.terra.com.gt', 'cortinet.com', 'cotas.net', 'counsellor.com', 'countrylover.com', 'covad.net', 'cox.net', 'coxinet.net', 'coxmail.com', 'cpaonline.net', 'cracker.hu', 'crazedanddazed.com', 'crazysexycool.com', 'cristianemail.com', 'critterpost.com', 'croeso.com', 'crosshairs.com', 'crosslink.net', 'crosswinds.net', 'crwmail.com', 'cry4helponline.com', 'cs.com', 'csi.com', 'csinibaba.hu', 'cuemail.com', 'curio-city.com', 'cute-girl.com', 'cuteandcuddly.com', 'cutey.com', 'cww.de', 'cyber-africa.net', 'cyber4all.com', 'cyberbabies.com', 'cybercafemaui.com', 'cyberdude.com', 'cyberforeplay.net', 'cybergal.com', 'cybergrrl.com', 'cyberinbox.com', 'cyberleports.com', 'cybermail.net', 'cybernet.it', 'cyberspace-asia.com', 'cybertrains.org', 'cyclefanz.com', 'cynetcity.com', 'dabsol.net', 'dadacasa.com', 'daha.com', 'dailypioneer.com', 'dallas.theboys.com', 'dangerous-minds.com', 'dansegulvet.com', 'data54.com', 'daum.net', 'davegracey.com', 'dawnsonmail.com', 'dawsonmail.com', 'dazedandconfused.com', 'dbzmail.com', 'dca.net', 'dcemail.com', 'deadlymob.org', 'deal-maker.com', 'dearriba.com', 'death-star.com', 'dejanews.com', 'deliveryman.com', 'deltanet.com', 'deneg.net', 'depechemode.com', 'deseretmail.com', 'desertmail.com', 'desilota.com', 'deskmail.com', 'deskpilot.com', 'destin.com', 'detik.com', 'deutschland-net.com', 'devotedcouples.com', 'dfwatson.com', 'di-ve.com', 'digibel.be', 'diplomats.com', 'direcway.com', 'dirtracer.com', 'discofan.com', 'discovery.com', 'discoverymail.com', 'disinfo.net', 'dmailman.com', 'dmv.com', 'dnsmadeeasy.com', 'doctor.com', 'dog.com', 'doglover.com', 'dogmail.co.uk', 'dogsnob.net', 'doityourself.com', 'doneasy.com', 'donjuan.com', 'dontgotmail.com', 'dontmesswithtexas.com', 'doramail.com', 'dostmail.com', 'dotcom.fr', 'dott.it', 'dplanet.ch', 'dr.com', 'dragoncon.net', 'dragracer.com', 'dropzone.com', 'drotposta.hu', 'dslextreme.com', 'dubaimail.com', 'dublin.com', 'dublin.ie', 'dunlopdriver.com', 'dunloprider.com', 'duno.com', 'dwp.net', 'dygo.com', 'dynamitemail.com', 'e-apollo.lv', 'e-mail.dk', 'e-mail.ru', 'e-mailanywhere.com', 'e-mails.ru', 'e-tapaal.com', 'earthalliance.com', 'earthcam.net', 'earthdome.com', 'earthling.net', 'earthlink.net', 'earthonline.net', 'eastcoast.co.za', 'eastmail.com', 'easy.to', 'easypost.com', 'eatmydirt.com', 'ecardmail.com', 'ecbsolutions.net', 'echina.com', 'ecompare.com', 'edge.net', 'edmail.com', 'ednatx.com', 'edtnmail.com', 'educacao.te.pt', 'educastmail.com', 'ehmail.com', 'eircom.net', 'elsitio.com', 'elvis.com', 'email-london.co.uk', 'email.com', 'email.cz', 'email.ee', 'email.it', 'email.nu', 'email.ro', 'email.ru', 'email.si', 'email.women.com', 'email2me.net', 'emailacc.com', 'emailaccount.com', 'emailchoice.com', 'emailcorner.net', 'emailem.com', 'emailengine.net', 'emailforyou.net', 'emailgroups.net', 'emailpinoy.com', 'emailplanet.com', 'emails.ru', 'emailuser.net', 'emailx.net', 'ematic.com', 'embarqmail.com', 'emumail.com', 'end-war.com', 'enel.net', 'engineer.com', 'england.com', 'england.edu', 'enter.net', 'epatra.com', 'epix.net', 'epost.de', 'eposta.hu', 'eqqu.com', 'eramail.co.za', 'eresmas.com', 'eriga.lv', 'erols.com', 'estranet.it', 'ethos.st', 'etoast.com', 'etrademail.com', 'eudoramail.com', 'europe.com', 'euroseek.com', 'every1.net', 'everyday.com.kh', 'everyone.net', 'examnotes.net', 'excite.co.jp', 'excite.com', 'excite.it', 'execs.com', 'expressasia.com', 'extenda.net', 'extended.com', 'eyou.com', 'ezcybersearch.com', 'ezmail.egine.com', 'ezmail.ru', 'ezrs.com', 'ezy.net', 'f1fans.net', 'facebook.com', 'fan.com', 'fan.theboys.com', 'fansonlymail.com', 'fantasticmail.com', 'farang.net', 'faroweb.com', 'fastem.com', 'fastemail.us', 'fastemailer.com', 'fastermail.com', 'fastimap.com', 'fastmail.fm', 'fastmailbox.net', 'fastmessaging.com', 'fatcock.net', 'fathersrightsne.org', 'fbi-agent.com', 'fbi.hu', 'fcc.net', 'federalcontractors.com', 'felicity.com', 'felicitymail.com', 'femenino.com', 'fetchmail.co.uk', 'fetchmail.com', 'feyenoorder.com', 'ffanet.com', 'fiberia.com', 'fibertel.com.ar', 'filipinolinks.com', 'financemail.net', 'financier.com', 'findmail.com', 'finebody.com', 'finfin.com', 'fire-brigade.com', 'fishburne.org', 'flashcom.net', 'flashemail.com', 'flashmail.com', 'flashmail.net', 'flipcode.com', 'fmail.co.uk', 'fmailbox.com', 'fmgirl.com', 'fmguy.com', 'fnbmail.co.za', 'fnmail.com', 'folkfan.com', 'foodmail.com', 'football.theboys.com', 'footballmail.com', 'for-president.com', 'forfree.at', 'forpresident.com', 'forthnet.gr', 'fortuncity.com', 'fortunecity.com', 'forum.dk', 'foxmail.com', 'free-org.com', 'free.com.pe', 'free.fr', 'freeaccess.nl', 'freeaccount.com', 'freeandsingle.com', 'freedom.usa.com', 'freedomlover.com', 'freegates.be', 'freeghana.com', 'freeler.nl', 'freemail.c3.hu', 'freemail.com.au', 'freemail.com.pk', 'freemail.de', 'freemail.et', 'freemail.gr', 'freemail.hu', 'freemail.it', 'freemail.lt', 'freemail.nl', 'freemail.org.mk', 'freenet.de', 'freenet.kg', 'freeola.com', 'freeola.net', 'freeserve.co.uk', 'freestamp.com', 'freestart.hu', 'freesurf.fr', 'freesurf.nl', 'freeuk.com', 'freeuk.net', 'freeukisp.co.uk', 'freeweb.org', 'freewebemail.com', 'freeyellow.com', 'freezone.co.uk', 'fresnomail.com', 'friends-cafe.com', 'friendsfan.com', 'from-africa.com', 'from-america.com', 'from-argentina.com', 'from-asia.com', 'from-australia.com', 'from-belgium.com', 'from-brazil.com', 'from-canada.com', 'from-china.net', 'from-england.com', 'from-europe.com', 'from-france.net', 'from-germany.net', 'from-holland.com', 'from-israel.com', 'from-italy.net', 'from-japan.net', 'from-korea.com', 'from-mexico.com', 'from-outerspace.com', 'from-russia.com', 'from-spain.net', 'fromalabama.com', 'fromalaska.com', 'fromarizona.com', 'fromarkansas.com', 'fromcalifornia.com', 'fromcolorado.com', 'fromconnecticut.com', 'fromdelaware.com', 'fromflorida.net', 'fromgeorgia.com', 'fromhawaii.net', 'fromidaho.com', 'fromillinois.com', 'fromindiana.com', 'fromiowa.com', 'fromjupiter.com', 'fromkansas.com', 'fromkentucky.com', 'fromlouisiana.com', 'frommaine.net', 'frommaryland.com', 'frommassachusetts.com', 'frommiami.com', 'frommichigan.com', 'fromminnesota.com', 'frommississippi.com', 'frommissouri.com', 'frommontana.com', 'fromnebraska.com', 'fromnevada.com', 'fromnewhampshire.com', 'fromnewjersey.com', 'fromnewmexico.com', 'fromnewyork.net', 'fromnorthcarolina.com', 'fromnorthdakota.com', 'fromohio.com', 'fromoklahoma.com', 'fromoregon.net', 'frompennsylvania.com', 'fromrhodeisland.com', 'fromru.com', 'fromsouthcarolina.com', 'fromsouthdakota.com', 'fromtennessee.com', 'fromtexas.com', 'fromthestates.com', 'fromutah.com', 'fromvermont.com', 'fromvirginia.com', 'fromwashington.com', 'fromwashingtondc.com', 'fromwestvirginia.com', 'fromwisconsin.com', 'fromwyoming.com', 'front.ru', 'frontier.com', 'frontiernet.net', 'frostbyte.uk.net', 'fsmail.net', 'ftml.net', 'fullchannel.net', 'fullmail.com', 'funkfan.com', 'fuorissimo.com', 'furnitureprovider.com', 'fuse.net', 'fut.es', 'fwnb.com', 'fxsmails.com', 'galamb.net', 'galaxy5.com', 'gamebox.net', 'gamegeek.com', 'games.com', 'gamespotmail.com', 'garbage.com', 'gardener.com', 'gateway.net', 'gawab.com', 'gaybrighton.co.uk', 'gaza.net', 'gazeta.pl', 'gazibooks.com', 'gci.net', 'gee-wiz.com', 'geecities.com', 'geek.com', 'geek.hu', 'geeklife.com', 'general-hospital.com', 'geocities.com', 'geologist.com', 'geopia.com', 'gh2000.com', 'ghanamail.com', 'ghostmail.com', 'giantsfan.com', 'giga4u.de', 'gigileung.org', 'givepeaceachance.com', 'glay.org', 'glendale.net', 'globalfree.it', 'globalpagan.com', 'globalsite.com.br', 'globo.com', 'globomail.com', 'gmail.com', 'gmx.at', 'gmx.com', 'gmx.de', 'gmx.fr', 'gmx.li', 'gmx.net', 'gnwmail.com', 'go.com', 'go.ro', 'go.ru', 'go2.com.py', 'go2net.com', 'gocollege.com', 'gocubs.com', 'gofree.co.uk', 'goldenmail.ru', 'goldmail.ru', 'golfemail.com', 'golfmail.be', 'gonavy.net', 'goodstick.com', 'google.com', 'googlemail.com', 'goplay.com', 'gorontalo.net', 'gospelfan.com', 'gothere.uk.com', 'gotmail.com', 'gotomy.com', 'govolsfan.com', 'gportal.hu', 'grabmail.com', 'graffiti.net', 'gramszu.net', 'grapplers.com', 'gratisweb.com', 'grungecafe.com', 'gtemail.net', 'gti.net', 'gtmc.net', 'gua.net', 'guessmail.com', 'guju.net', 'gurlmail.com', 'guy.com', 'guy2.com', 'guyanafriends.com', 'gyorsposta.com', 'gyorsposta.hu', 'hackermail.net', 'hailmail.net', 'hairdresser.net', 'hamptonroads.com', 'handbag.com', 'handleit.com', 'hang-ten.com', 'hanmail.net', 'happemail.com', 'happycounsel.com', 'happypuppy.com', 'hardcorefreak.com', 'hawaii.rr.com', 'hawaiiantel.net', 'headbone.com', 'heartthrob.com', 'heerschap.com', 'heesun.net', 'hehe.com', 'hello.hu', 'hello.net.au', 'hello.to', 'helter-skelter.com', 'hempseed.com', 'herediano.com', 'heremail.com', 'herono1.com', 'hetnet.nl', 'hey.to', 'hhdevel.com', 'highmilton.com', 'highquality.com', 'highveldmail.co.za', 'hiphopfan.com', 'hispavista.com', 'hitthe.net', 'hkg.net', 'hkstarphoto.com', 'hockeymail.com', 'hollywoodkids.com', 'home-email.com', 'home.nl', 'home.no.net', 'home.ro', 'home.se', 'homeart.com', 'homelocator.com', 'homemail.com', 'homestead.com', 'homeworkcentral.com', 'hongkong.com', 'hookup.net', 'hoopsmail.com', 'horrormail.com', 'host-it.com.sg', 'hot-shot.com', 'hot.ee', 'hotbot.com', 'hotbrev.com', 'hotepmail.com', 'hotfire.net', 'hotletter.com', 'hotmail.be', 'hotmail.co.il', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.br', 'hotmail.com.mx', 'hotmail.de', 'hotmail.es', 'hotmail.fr', 'hotmail.it', 'hotmail.kg', 'hotmail.kz', 'hotmail.ru', 'hotpop.com', 'hotpop3.com', 'hotvoice.com', 'housefancom', 'housemail.com', 'hsuchi.net', 'html.tou.com', 'hughes.net', 'hunsa.com', 'hush.com', 'hushmail.com', 'hypernautica.com', 'i-connect.com', 'i-france.com', 'i-mail.com.au', 'i-p.com', 'i-plus.net', 'i.am', 'i12.com', 'iamawoman.com', 'iamwaiting.com', 'iamwasted.com', 'iamyours.com', 'ibm.net', 'icestorm.com', 'icloud.com', 'icmsconsultants.com', 'icq.com', 'icqmail.com', 'icrazy.com', 'id-base.com', 'ididitmyway.com', 'idirect.com', 'iespana.es', 'ifoward.com', 'ig.com.br', 'ignazio.it', 'ignmail.com', 'ihateclowns.com', 'ihwy.com', 'iinet.net.au', 'ijustdontcare.com', 'ilovechocolate.com', 'ilovejesus.com', 'ilovethemovies.com', 'ilovetocollect.net', 'ilse.nl', 'imaginemail.com', 'imail.org', 'imail.ru', 'imailbox.com', 'imel.org', 'imneverwrong.com', 'imposter.co.uk', 'imstressed.com', 'imtoosexy.com', 'in-box.net', 'iname.com', 'inbox.com', 'inbox.net', 'inbox.ru', 'incamail.com', 'incredimail.com', 'indexa.fr', 'india.com', 'indiatimes.com', 'indo-mail.com', 'indocities.com', 'indomail.com', 'indyracers.com', 'info-media.de', 'info66.com', 'infohq.com', 'infomail.es', 'infomart.or.jp', 'infospacemail.com', 'infovia.com.ar', 'inicia.es', 'inmail.sk', 'innocent.com', 'inorbit.com', 'insidebaltimore.net', 'insight.rr.com', 'insurer.com', 'integra.net', 'interaccess.com', 'interburp.com', 'interfree.it', 'interia.pl', 'interlap.com.ar', 'intermail.co.il', 'internet-club.com', 'internet-police.com', 'internetbiz.com', 'internetdrive.com', 'internetegypt.com', 'internetemails.net', 'internetmailing.net', 'internetmci.com', 'investormail.com', 'inwind.it', 'iobox.com', 'iobox.fi', 'iol.it', 'ionet.net', 'iowaemail.com', 'ip3.com', 'iprimus.com.au', 'iqemail.com', 'irangate.net', 'iraqmail.com', 'ireland.com', 'irj.hu', 'isellcars.com', 'islamonline.net', 'isleuthmail.com', 'ismart.net', 'isonfire.com', 'isp9.net', 'itelefonica.com.br', 'itloox.com', 'itmom.com', 'itol.com', 'ivebeenframed.com', 'ivillage.com', 'iwan-fals.com', 'iwmail.com', 'iwon.com', 'izadpanah.com', 'jahoopa.com', 'jakuza.hu', 'japan.com', 'jaydemail.com', 'jazzandjava.com', 'jazzfan.com', 'jazzgame.com', 'jerusalemmail.com', 'jetemail.net', 'jewishmail.com', 'jippii.fi', 'jmail.co.za', 'joinme.com', 'jokes.com', 'jordanmail.com', 'journalist.com', 'jovem.te.pt', 'joymail.com', 'jpopmail.com', 'jubiimail.dk', 'jump.com', 'jumpy.it', 'juniormail.com', 'juno.com', 'justemail.net', 'justicemail.com', 'kaazoo.com', 'kaixo.com', 'kalpoint.com', 'kansascity.com', 'kapoorweb.com', 'karachian.com', 'karachioye.com', 'karbasi.com', 'katamail.com', 'kayafmmail.co.za', 'kbjrmail.com', 'kcks.com', 'keg-party.com', 'keko.com.ar', 'kellychen.com', 'keromail.com', 'keyemail.com', 'kgb.hu', 'khosropour.com', 'kickassmail.com', 'killermail.com', 'kimo.com', 'kinki-kids.com', 'kittymail.com', 'kitznet.at', 'kiwibox.com', 'kiwitown.com', 'kmail.com.au', 'konx.com', 'korea.com', 'kozmail.com', 'krongthip.com', 'krunis.com', 'ksanmail.com', 'ksee24mail.com', 'kube93mail.com', 'kukamail.com', 'kumarweb.com', 'kuwait-mail.com', 'la.com', 'ladymail.cz', 'lagerlouts.com', 'lahoreoye.com', 'lakmail.com', 'lamer.hu', 'land.ru', 'lankamail.com', 'laposte.net', 'latemodels.com', 'latinmail.com', 'latino.com', 'lavabit.com', 'law.com', 'lawyer.com', 'leehom.net', 'legalactions.com', 'legislator.com', 'leonlai.net', 'letsgomets.net', 'letterbox.com', 'levele.com', 'levele.hu', 'lex.bg', 'lexis-nexis-mail.com', 'libero.it', 'liberomail.com', 'lick101.com', 'linkmaster.com', 'linktrader.com', 'linuxfreemail.com', 'linuxmail.org', 'lionsfan.com.au', 'liontrucks.com', 'liquidinformation.net', 'list.ru', 'littleblueroom.com', 'live.be', 'live.ca', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.au', 'live.com.mx', 'live.de', 'live.fr', 'live.it', 'live.nl', 'liverpoolfans.com', 'llandudno.com', 'llangollen.com', 'lmxmail.sk', 'lobbyist.com', 'localbar.com', 'london.com', 'loobie.com', 'looksmart.co.uk', 'looksmart.com', 'looksmart.com.au', 'lopezclub.com', 'louiskoo.com', 'love.com', 'love.cz', 'loveable.com', 'lovelygirl.net', 'lovemail.com', 'lover-boy.com', 'lovergirl.com', 'lovingjesus.com', 'lowandslow.com', 'luso.pt', 'luukku.com', 'lycos.co.uk', 'lycos.com', 'lycos.es', 'lycos.it', 'lycos.ne.jp', 'lycosemail.com', 'lycosmail.com', 'm-a-i-l.com', 'm-hmail.com', 'm4.org', 'mac.com', 'macbox.com', 'macfreak.com', 'machinecandy.com', 'macmail.com', 'madcreations.com', 'madrid.com', 'maffia.hu', 'magicmail.co.za', 'mahmoodweb.com', 'mail-awu.de', 'mail-box.cz', 'mail-center.com', 'mail-central.com', 'mail-page.com', 'mail.austria.com', 'mail.az', 'mail.be', 'mail.bulgaria.com', 'mail.byte.it', 'mail.co.za', 'mail.com', 'mail.ee', 'mail.entrepeneurmag.com', 'mail.freetown.com', 'mail.gr', 'mail.hitthebeach.com', 'mail.kmsp.com', 'mail.md', 'mail.nu', 'mail.org.uk', 'mail.pf', 'mail.pharmacy.com', 'mail.pt', 'mail.r-o-o-t.com', 'mail.ru', 'mail.salu.net', 'mail.sisna.com', 'mail.spaceports.com', 'mail.theboys.com', 'mail.usa.com', 'mail.vasarhely.hu', 'mail15.com', 'mail1st.com', 'mail2007.com', 'mail2aaron.com', 'mail2abby.com', 'mail2abc.com', 'mail2actor.com', 'mail2admiral.com', 'mail2adorable.com', 'mail2adoration.com', 'mail2adore.com', 'mail2adventure.com', 'mail2aeolus.com', 'mail2aether.com', 'mail2affection.com', 'mail2afghanistan.com', 'mail2africa.com', 'mail2agent.com', 'mail2aha.com', 'mail2ahoy.com', 'mail2aim.com', 'mail2air.com', 'mail2airbag.com', 'mail2airforce.com', 'mail2airport.com', 'mail2alabama.com', 'mail2alan.com', 'mail2alaska.com', 'mail2albania.com', 'mail2alcoholic.com', 'mail2alec.com', 'mail2alexa.com', 'mail2algeria.com', 'mail2alicia.com', 'mail2alien.com', 'mail2allan.com', 'mail2allen.com', 'mail2allison.com', 'mail2alpha.com', 'mail2alyssa.com', 'mail2amanda.com', 'mail2amazing.com', 'mail2amber.com', 'mail2america.com', 'mail2american.com', 'mail2andorra.com', 'mail2andrea.com', 'mail2andy.com', 'mail2anesthesiologist.com', 'mail2angela.com', 'mail2angola.com', 'mail2ann.com', 'mail2anna.com', 'mail2anne.com', 'mail2anthony.com', 'mail2anything.com', 'mail2aphrodite.com', 'mail2apollo.com', 'mail2april.com', 'mail2aquarius.com', 'mail2arabia.com', 'mail2arabic.com', 'mail2architect.com', 'mail2ares.com', 'mail2argentina.com', 'mail2aries.com', 'mail2arizona.com', 'mail2arkansas.com', 'mail2armenia.com', 'mail2army.com', 'mail2arnold.com', 'mail2art.com', 'mail2artemus.com', 'mail2arthur.com', 'mail2artist.com', 'mail2ashley.com', 'mail2ask.com', 'mail2astronomer.com', 'mail2athena.com', 'mail2athlete.com', 'mail2atlas.com', 'mail2atom.com', 'mail2attitude.com', 'mail2auction.com', 'mail2aunt.com', 'mail2australia.com', 'mail2austria.com', 'mail2azerbaijan.com', 'mail2baby.com', 'mail2bahamas.com', 'mail2bahrain.com', 'mail2ballerina.com', 'mail2ballplayer.com', 'mail2band.com', 'mail2bangladesh.com', 'mail2bank.com', 'mail2banker.com', 'mail2bankrupt.com', 'mail2baptist.com', 'mail2bar.com', 'mail2barbados.com', 'mail2barbara.com', 'mail2barter.com', 'mail2basketball.com', 'mail2batter.com', 'mail2beach.com', 'mail2beast.com', 'mail2beatles.com', 'mail2beauty.com', 'mail2becky.com', 'mail2beijing.com', 'mail2belgium.com', 'mail2belize.com', 'mail2ben.com', 'mail2bernard.com', 'mail2beth.com', 'mail2betty.com', 'mail2beverly.com', 'mail2beyond.com', 'mail2biker.com', 'mail2bill.com', 'mail2billionaire.com', 'mail2billy.com', 'mail2bio.com', 'mail2biologist.com', 'mail2black.com', 'mail2blackbelt.com', 'mail2blake.com', 'mail2blind.com', 'mail2blonde.com', 'mail2blues.com', 'mail2bob.com', 'mail2bobby.com', 'mail2bolivia.com', 'mail2bombay.com', 'mail2bonn.com', 'mail2bookmark.com', 'mail2boreas.com', 'mail2bosnia.com', 'mail2boston.com', 'mail2botswana.com', 'mail2bradley.com', 'mail2brazil.com', 'mail2breakfast.com', 'mail2brian.com', 'mail2bride.com', 'mail2brittany.com', 'mail2broker.com', 'mail2brook.com', 'mail2bruce.com', 'mail2brunei.com', 'mail2brunette.com', 'mail2brussels.com', 'mail2bryan.com', 'mail2bug.com', 'mail2bulgaria.com', 'mail2business.com', 'mail2buy.com', 'mail2ca.com', 'mail2california.com', 'mail2calvin.com', 'mail2cambodia.com', 'mail2cameroon.com', 'mail2canada.com', 'mail2cancer.com', 'mail2capeverde.com', 'mail2capricorn.com', 'mail2cardinal.com', 'mail2cardiologist.com', 'mail2care.com', 'mail2caroline.com', 'mail2carolyn.com', 'mail2casey.com', 'mail2cat.com', 'mail2caterer.com', 'mail2cathy.com', 'mail2catlover.com', 'mail2catwalk.com', 'mail2cell.com', 'mail2chad.com', 'mail2champaign.com', 'mail2charles.com', 'mail2chef.com', 'mail2chemist.com', 'mail2cherry.com', 'mail2chicago.com', 'mail2chile.com', 'mail2china.com', 'mail2chinese.com', 'mail2chocolate.com', 'mail2christian.com', 'mail2christie.com', 'mail2christmas.com', 'mail2christy.com', 'mail2chuck.com', 'mail2cindy.com', 'mail2clark.com', 'mail2classifieds.com', 'mail2claude.com', 'mail2cliff.com', 'mail2clinic.com', 'mail2clint.com', 'mail2close.com', 'mail2club.com', 'mail2coach.com', 'mail2coastguard.com', 'mail2colin.com', 'mail2college.com', 'mail2colombia.com', 'mail2color.com', 'mail2colorado.com', 'mail2columbia.com', 'mail2comedian.com', 'mail2composer.com', 'mail2computer.com', 'mail2computers.com', 'mail2concert.com', 'mail2congo.com', 'mail2connect.com', 'mail2connecticut.com', 'mail2consultant.com', 'mail2convict.com', 'mail2cook.com', 'mail2cool.com', 'mail2cory.com', 'mail2costarica.com', 'mail2country.com', 'mail2courtney.com', 'mail2cowboy.com', 'mail2cowgirl.com', 'mail2craig.com', 'mail2crave.com', 'mail2crazy.com', 'mail2create.com', 'mail2croatia.com', 'mail2cry.com', 'mail2crystal.com', 'mail2cuba.com', 'mail2culture.com', 'mail2curt.com', 'mail2customs.com', 'mail2cute.com', 'mail2cutey.com', 'mail2cynthia.com', 'mail2cyprus.com', 'mail2czechrepublic.com', 'mail2dad.com', 'mail2dale.com', 'mail2dallas.com', 'mail2dan.com', 'mail2dana.com', 'mail2dance.com', 'mail2dancer.com', 'mail2danielle.com', 'mail2danny.com', 'mail2darlene.com', 'mail2darling.com', 'mail2darren.com', 'mail2daughter.com', 'mail2dave.com', 'mail2dawn.com', 'mail2dc.com', 'mail2dealer.com', 'mail2deanna.com', 'mail2dearest.com', 'mail2debbie.com', 'mail2debby.com', 'mail2deer.com', 'mail2delaware.com', 'mail2delicious.com', 'mail2demeter.com', 'mail2democrat.com', 'mail2denise.com', 'mail2denmark.com', 'mail2dennis.com', 'mail2dentist.com', 'mail2derek.com', 'mail2desert.com', 'mail2devoted.com', 'mail2devotion.com', 'mail2diamond.com', 'mail2diana.com', 'mail2diane.com', 'mail2diehard.com', 'mail2dilemma.com', 'mail2dillon.com', 'mail2dinner.com', 'mail2dinosaur.com', 'mail2dionysos.com', 'mail2diplomat.com', 'mail2director.com', 'mail2dirk.com', 'mail2disco.com', 'mail2dive.com', 'mail2diver.com', 'mail2divorced.com', 'mail2djibouti.com', 'mail2doctor.com', 'mail2doglover.com', 'mail2dominic.com', 'mail2dominica.com', 'mail2dominicanrepublic.com', 'mail2don.com', 'mail2donald.com', 'mail2donna.com', 'mail2doris.com', 'mail2dorothy.com', 'mail2doug.com', 'mail2dough.com', 'mail2douglas.com', 'mail2dow.com', 'mail2downtown.com', 'mail2dream.com', 'mail2dreamer.com', 'mail2dude.com', 'mail2dustin.com', 'mail2dyke.com', 'mail2dylan.com', 'mail2earl.com', 'mail2earth.com', 'mail2eastend.com', 'mail2eat.com', 'mail2economist.com', 'mail2ecuador.com', 'mail2eddie.com', 'mail2edgar.com', 'mail2edwin.com', 'mail2egypt.com', 'mail2electron.com', 'mail2eli.com', 'mail2elizabeth.com', 'mail2ellen.com', 'mail2elliot.com', 'mail2elsalvador.com', 'mail2elvis.com', 'mail2emergency.com', 'mail2emily.com', 'mail2engineer.com', 'mail2english.com', 'mail2environmentalist.com', 'mail2eos.com', 'mail2eric.com', 'mail2erica.com', 'mail2erin.com', 'mail2erinyes.com', 'mail2eris.com', 'mail2eritrea.com', 'mail2ernie.com', 'mail2eros.com', 'mail2estonia.com', 'mail2ethan.com', 'mail2ethiopia.com', 'mail2eu.com', 'mail2europe.com', 'mail2eurus.com', 'mail2eva.com', 'mail2evan.com', 'mail2evelyn.com', 'mail2everything.com', 'mail2exciting.com', 'mail2expert.com', 'mail2fairy.com', 'mail2faith.com', 'mail2fanatic.com', 'mail2fancy.com', 'mail2fantasy.com', 'mail2farm.com', 'mail2farmer.com', 'mail2fashion.com', 'mail2fat.com', 'mail2feeling.com', 'mail2female.com', 'mail2fever.com', 'mail2fighter.com', 'mail2fiji.com', 'mail2filmfestival.com', 'mail2films.com', 'mail2finance.com', 'mail2finland.com', 'mail2fireman.com', 'mail2firm.com', 'mail2fisherman.com', 'mail2flexible.com', 'mail2florence.com', 'mail2florida.com', 'mail2floyd.com', 'mail2fly.com', 'mail2fond.com', 'mail2fondness.com', 'mail2football.com', 'mail2footballfan.com', 'mail2found.com', 'mail2france.com', 'mail2frank.com', 'mail2frankfurt.com', 'mail2franklin.com', 'mail2fred.com', 'mail2freddie.com', 'mail2free.com', 'mail2freedom.com', 'mail2french.com', 'mail2freudian.com', 'mail2friendship.com', 'mail2from.com', 'mail2fun.com', 'mail2gabon.com', 'mail2gabriel.com', 'mail2gail.com', 'mail2galaxy.com', 'mail2gambia.com', 'mail2games.com', 'mail2gary.com', 'mail2gavin.com', 'mail2gemini.com', 'mail2gene.com', 'mail2genes.com', 'mail2geneva.com', 'mail2george.com', 'mail2georgia.com', 'mail2gerald.com', 'mail2german.com', 'mail2germany.com', 'mail2ghana.com', 'mail2gilbert.com', 'mail2gina.com', 'mail2girl.com', 'mail2glen.com', 'mail2gloria.com', 'mail2goddess.com', 'mail2gold.com', 'mail2golfclub.com', 'mail2golfer.com', 'mail2gordon.com', 'mail2government.com', 'mail2grab.com', 'mail2grace.com', 'mail2graham.com', 'mail2grandma.com', 'mail2grandpa.com', 'mail2grant.com', 'mail2greece.com', 'mail2green.com', 'mail2greg.com', 'mail2grenada.com', 'mail2gsm.com', 'mail2guard.com', 'mail2guatemala.com', 'mail2guy.com', 'mail2hades.com', 'mail2haiti.com', 'mail2hal.com', 'mail2handhelds.com', 'mail2hank.com', 'mail2hannah.com', 'mail2harold.com', 'mail2harry.com', 'mail2hawaii.com', 'mail2headhunter.com', 'mail2heal.com', 'mail2heather.com', 'mail2heaven.com', 'mail2hebe.com', 'mail2hecate.com', 'mail2heidi.com', 'mail2helen.com', 'mail2hell.com', 'mail2help.com', 'mail2helpdesk.com', 'mail2henry.com', 'mail2hephaestus.com', 'mail2hera.com', 'mail2hercules.com', 'mail2herman.com', 'mail2hermes.com', 'mail2hespera.com', 'mail2hestia.com', 'mail2highschool.com', 'mail2hindu.com', 'mail2hip.com', 'mail2hiphop.com', 'mail2holland.com', 'mail2holly.com', 'mail2hollywood.com', 'mail2homer.com', 'mail2honduras.com', 'mail2honey.com', 'mail2hongkong.com', 'mail2hope.com', 'mail2horse.com', 'mail2hot.com', 'mail2hotel.com', 'mail2houston.com', 'mail2howard.com', 'mail2hugh.com', 'mail2human.com', 'mail2hungary.com', 'mail2hungry.com', 'mail2hygeia.com', 'mail2hyperspace.com', 'mail2hypnos.com', 'mail2ian.com', 'mail2ice-cream.com', 'mail2iceland.com', 'mail2idaho.com', 'mail2idontknow.com', 'mail2illinois.com', 'mail2imam.com', 'mail2in.com', 'mail2india.com', 'mail2indian.com', 'mail2indiana.com', 'mail2indonesia.com', 'mail2infinity.com', 'mail2intense.com', 'mail2iowa.com', 'mail2iran.com', 'mail2iraq.com', 'mail2ireland.com', 'mail2irene.com', 'mail2iris.com', 'mail2irresistible.com', 'mail2irving.com', 'mail2irwin.com', 'mail2isaac.com', 'mail2israel.com', 'mail2italian.com', 'mail2italy.com', 'mail2jackie.com', 'mail2jacob.com', 'mail2jail.com', 'mail2jaime.com', 'mail2jake.com', 'mail2jamaica.com', 'mail2james.com', 'mail2jamie.com', 'mail2jan.com', 'mail2jane.com', 'mail2janet.com', 'mail2janice.com', 'mail2japan.com', 'mail2japanese.com', 'mail2jasmine.com', 'mail2jason.com', 'mail2java.com', 'mail2jay.com', 'mail2jazz.com', 'mail2jed.com', 'mail2jeffrey.com', 'mail2jennifer.com', 'mail2jenny.com', 'mail2jeremy.com', 'mail2jerry.com', 'mail2jessica.com', 'mail2jessie.com', 'mail2jesus.com', 'mail2jew.com', 'mail2jeweler.com', 'mail2jim.com', 'mail2jimmy.com', 'mail2joan.com', 'mail2joann.com', 'mail2joanna.com', 'mail2jody.com', 'mail2joe.com', 'mail2joel.com', 'mail2joey.com', 'mail2john.com', 'mail2join.com', 'mail2jon.com', 'mail2jonathan.com', 'mail2jones.com', 'mail2jordan.com', 'mail2joseph.com', 'mail2josh.com', 'mail2joy.com', 'mail2juan.com', 'mail2judge.com', 'mail2judy.com', 'mail2juggler.com', 'mail2julian.com', 'mail2julie.com', 'mail2jumbo.com', 'mail2junk.com', 'mail2justin.com', 'mail2justme.com', 'mail2kansas.com', 'mail2karate.com', 'mail2karen.com', 'mail2karl.com', 'mail2karma.com', 'mail2kathleen.com', 'mail2kathy.com', 'mail2katie.com', 'mail2kay.com', 'mail2kazakhstan.com', 'mail2keen.com', 'mail2keith.com', 'mail2kelly.com', 'mail2kelsey.com', 'mail2ken.com', 'mail2kendall.com', 'mail2kennedy.com', 'mail2kenneth.com', 'mail2kenny.com', 'mail2kentucky.com', 'mail2kenya.com', 'mail2kerry.com', 'mail2kevin.com', 'mail2kim.com', 'mail2kimberly.com', 'mail2king.com', 'mail2kirk.com', 'mail2kiss.com', 'mail2kosher.com', 'mail2kristin.com', 'mail2kurt.com', 'mail2kuwait.com', 'mail2kyle.com', 'mail2kyrgyzstan.com', 'mail2la.com', 'mail2lacrosse.com', 'mail2lance.com', 'mail2lao.com', 'mail2larry.com', 'mail2latvia.com', 'mail2laugh.com', 'mail2laura.com', 'mail2lauren.com', 'mail2laurie.com', 'mail2lawrence.com', 'mail2lawyer.com', 'mail2lebanon.com', 'mail2lee.com', 'mail2leo.com', 'mail2leon.com', 'mail2leonard.com', 'mail2leone.com', 'mail2leslie.com', 'mail2letter.com', 'mail2liberia.com', 'mail2libertarian.com', 'mail2libra.com', 'mail2libya.com', 'mail2liechtenstein.com', 'mail2life.com', 'mail2linda.com', 'mail2linux.com', 'mail2lionel.com', 'mail2lipstick.com', 'mail2liquid.com', 'mail2lisa.com', 'mail2lithuania.com', 'mail2litigator.com', 'mail2liz.com', 'mail2lloyd.com', 'mail2lois.com', 'mail2lola.com', 'mail2london.com', 'mail2looking.com', 'mail2lori.com', 'mail2lost.com', 'mail2lou.com', 'mail2louis.com', 'mail2louisiana.com', 'mail2lovable.com', 'mail2love.com', 'mail2lucky.com', 'mail2lucy.com', 'mail2lunch.com', 'mail2lust.com', 'mail2luxembourg.com', 'mail2luxury.com', 'mail2lyle.com', 'mail2lynn.com', 'mail2madagascar.com', 'mail2madison.com', 'mail2madrid.com', 'mail2maggie.com', 'mail2mail4.com', 'mail2maine.com', 'mail2malawi.com', 'mail2malaysia.com', 'mail2maldives.com', 'mail2mali.com', 'mail2malta.com', 'mail2mambo.com', 'mail2man.com', 'mail2mandy.com', 'mail2manhunter.com', 'mail2mankind.com', 'mail2many.com', 'mail2marc.com', 'mail2marcia.com', 'mail2margaret.com', 'mail2margie.com', 'mail2marhaba.com', 'mail2maria.com', 'mail2marilyn.com', 'mail2marines.com', 'mail2mark.com', 'mail2marriage.com', 'mail2married.com', 'mail2marries.com', 'mail2mars.com', 'mail2marsha.com', 'mail2marshallislands.com', 'mail2martha.com', 'mail2martin.com', 'mail2marty.com', 'mail2marvin.com', 'mail2mary.com', 'mail2maryland.com', 'mail2mason.com', 'mail2massachusetts.com', 'mail2matt.com', 'mail2matthew.com', 'mail2maurice.com', 'mail2mauritania.com', 'mail2mauritius.com', 'mail2max.com', 'mail2maxwell.com', 'mail2maybe.com', 'mail2mba.com', 'mail2me4u.com', 'mail2mechanic.com', 'mail2medieval.com', 'mail2megan.com', 'mail2mel.com', 'mail2melanie.com', 'mail2melissa.com', 'mail2melody.com', 'mail2member.com', 'mail2memphis.com', 'mail2methodist.com', 'mail2mexican.com', 'mail2mexico.com', 'mail2mgz.com', 'mail2miami.com', 'mail2michael.com', 'mail2michelle.com', 'mail2michigan.com', 'mail2mike.com', 'mail2milan.com', 'mail2milano.com', 'mail2mildred.com', 'mail2milkyway.com', 'mail2millennium.com', 'mail2millionaire.com', 'mail2milton.com', 'mail2mime.com', 'mail2mindreader.com', 'mail2mini.com', 'mail2minister.com', 'mail2minneapolis.com', 'mail2minnesota.com', 'mail2miracle.com', 'mail2missionary.com', 'mail2mississippi.com', 'mail2missouri.com', 'mail2mitch.com', 'mail2model.com', 'mail2moldova.commail2molly.com', 'mail2mom.com', 'mail2monaco.com', 'mail2money.com', 'mail2mongolia.com', 'mail2monica.com', 'mail2montana.com', 'mail2monty.com', 'mail2moon.com', 'mail2morocco.com', 'mail2morpheus.com', 'mail2mors.com', 'mail2moscow.com', 'mail2moslem.com', 'mail2mouseketeer.com', 'mail2movies.com', 'mail2mozambique.com', 'mail2mp3.com', 'mail2mrright.com', 'mail2msright.com', 'mail2museum.com', 'mail2music.com', 'mail2musician.com', 'mail2muslim.com', 'mail2my.com', 'mail2myboat.com', 'mail2mycar.com', 'mail2mycell.com', 'mail2mygsm.com', 'mail2mylaptop.com', 'mail2mymac.com', 'mail2mypager.com', 'mail2mypalm.com', 'mail2mypc.com', 'mail2myphone.com', 'mail2myplane.com', 'mail2namibia.com', 'mail2nancy.com', 'mail2nasdaq.com', 'mail2nathan.com', 'mail2nauru.com', 'mail2navy.com', 'mail2neal.com', 'mail2nebraska.com', 'mail2ned.com', 'mail2neil.com', 'mail2nelson.com', 'mail2nemesis.com', 'mail2nepal.com', 'mail2netherlands.com', 'mail2network.com', 'mail2nevada.com', 'mail2newhampshire.com', 'mail2newjersey.com', 'mail2newmexico.com', 'mail2newyork.com', 'mail2newzealand.com', 'mail2nicaragua.com', 'mail2nick.com', 'mail2nicole.com', 'mail2niger.com', 'mail2nigeria.com', 'mail2nike.com', 'mail2no.com', 'mail2noah.com', 'mail2noel.com', 'mail2noelle.com', 'mail2normal.com', 'mail2norman.com', 'mail2northamerica.com', 'mail2northcarolina.com', 'mail2northdakota.com', 'mail2northpole.com', 'mail2norway.com', 'mail2notus.com', 'mail2noway.com', 'mail2nowhere.com', 'mail2nuclear.com', 'mail2nun.com', 'mail2ny.com', 'mail2oasis.com', 'mail2oceanographer.com', 'mail2ohio.com', 'mail2ok.com', 'mail2oklahoma.com', 'mail2oliver.com', 'mail2oman.com', 'mail2one.com', 'mail2onfire.com', 'mail2online.com', 'mail2oops.com', 'mail2open.com', 'mail2ophthalmologist.com', 'mail2optometrist.com', 'mail2oregon.com', 'mail2oscars.com', 'mail2oslo.com', 'mail2painter.com', 'mail2pakistan.com', 'mail2palau.com', 'mail2pan.com', 'mail2panama.com', 'mail2paraguay.com', 'mail2paralegal.com', 'mail2paris.com', 'mail2park.com', 'mail2parker.com', 'mail2party.com', 'mail2passion.com', 'mail2pat.com', 'mail2patricia.com', 'mail2patrick.com', 'mail2patty.com', 'mail2paul.com', 'mail2paula.com', 'mail2pay.com', 'mail2peace.com', 'mail2pediatrician.com', 'mail2peggy.com', 'mail2pennsylvania.com', 'mail2perry.com', 'mail2persephone.com', 'mail2persian.com', 'mail2peru.com', 'mail2pete.com', 'mail2peter.com', 'mail2pharmacist.com', 'mail2phil.com', 'mail2philippines.com', 'mail2phoenix.com', 'mail2phonecall.com', 'mail2phyllis.com', 'mail2pickup.com', 'mail2pilot.com', 'mail2pisces.com', 'mail2planet.com', 'mail2platinum.com', 'mail2plato.com', 'mail2pluto.com', 'mail2pm.com', 'mail2podiatrist.com', 'mail2poet.com', 'mail2poland.com', 'mail2policeman.com', 'mail2policewoman.com', 'mail2politician.com', 'mail2pop.com', 'mail2pope.com', 'mail2popular.com', 'mail2portugal.com', 'mail2poseidon.com', 'mail2potatohead.com', 'mail2power.com', 'mail2presbyterian.com', 'mail2president.com', 'mail2priest.com', 'mail2prince.com', 'mail2princess.com', 'mail2producer.com', 'mail2professor.com', 'mail2protect.com', 'mail2psychiatrist.com', 'mail2psycho.com', 'mail2psychologist.com', 'mail2qatar.com', 'mail2queen.com', 'mail2rabbi.com', 'mail2race.com', 'mail2racer.com', 'mail2rachel.com', 'mail2rage.com', 'mail2rainmaker.com', 'mail2ralph.com', 'mail2randy.com', 'mail2rap.com', 'mail2rare.com', 'mail2rave.com', 'mail2ray.com', 'mail2raymond.com', 'mail2realtor.com', 'mail2rebecca.com', 'mail2recruiter.com', 'mail2recycle.com', 'mail2redhead.com', 'mail2reed.com', 'mail2reggie.com', 'mail2register.com', 'mail2rent.com', 'mail2republican.com', 'mail2resort.com', 'mail2rex.com', 'mail2rhodeisland.com', 'mail2rich.com', 'mail2richard.com', 'mail2ricky.com', 'mail2ride.com', 'mail2riley.com', 'mail2rita.com', 'mail2rob.com', 'mail2robert.com', 'mail2roberta.com', 'mail2robin.com', 'mail2rock.com', 'mail2rocker.com', 'mail2rod.com', 'mail2rodney.com', 'mail2romania.com', 'mail2rome.com', 'mail2ron.com', 'mail2ronald.com', 'mail2ronnie.com', 'mail2rose.com', 'mail2rosie.com', 'mail2roy.com', 'mail2rudy.com', 'mail2rugby.com', 'mail2runner.com', 'mail2russell.com', 'mail2russia.com', 'mail2russian.com', 'mail2rusty.com', 'mail2ruth.com', 'mail2rwanda.com', 'mail2ryan.com', 'mail2sa.com', 'mail2sabrina.com', 'mail2safe.com', 'mail2sagittarius.com', 'mail2sail.com', 'mail2sailor.com', 'mail2sal.com', 'mail2salaam.com', 'mail2sam.com', 'mail2samantha.com', 'mail2samoa.com', 'mail2samurai.com', 'mail2sandra.com', 'mail2sandy.com', 'mail2sanfrancisco.com', 'mail2sanmarino.com', 'mail2santa.com', 'mail2sara.com', 'mail2sarah.com', 'mail2sat.com', 'mail2saturn.com', 'mail2saudi.com', 'mail2saudiarabia.com', 'mail2save.com', 'mail2savings.com', 'mail2school.com', 'mail2scientist.com', 'mail2scorpio.com', 'mail2scott.com', 'mail2sean.com', 'mail2search.com', 'mail2seattle.com', 'mail2secretagent.com', 'mail2senate.com', 'mail2senegal.com', 'mail2sensual.com', 'mail2seth.com', 'mail2sevenseas.com', 'mail2sexy.com', 'mail2seychelles.com', 'mail2shane.com', 'mail2sharon.com', 'mail2shawn.com', 'mail2ship.com', 'mail2shirley.com', 'mail2shoot.com', 'mail2shuttle.com', 'mail2sierraleone.com', 'mail2simon.com', 'mail2singapore.com', 'mail2single.com', 'mail2site.com', 'mail2skater.com', 'mail2skier.com', 'mail2sky.com', 'mail2sleek.com', 'mail2slim.com', 'mail2slovakia.com', 'mail2slovenia.com', 'mail2smile.com', 'mail2smith.com', 'mail2smooth.com', 'mail2soccer.com', 'mail2soccerfan.com', 'mail2socialist.com', 'mail2soldier.com', 'mail2somalia.com', 'mail2son.com', 'mail2song.com', 'mail2sos.com', 'mail2sound.com', 'mail2southafrica.com', 'mail2southamerica.com', 'mail2southcarolina.com', 'mail2southdakota.com', 'mail2southkorea.com', 'mail2southpole.com', 'mail2spain.com', 'mail2spanish.com', 'mail2spare.com', 'mail2spectrum.com', 'mail2splash.com', 'mail2sponsor.com', 'mail2sports.com', 'mail2srilanka.com', 'mail2stacy.com', 'mail2stan.com', 'mail2stanley.com', 'mail2star.com', 'mail2state.com', 'mail2stephanie.com', 'mail2steve.com', 'mail2steven.com', 'mail2stewart.com', 'mail2stlouis.com', 'mail2stock.com', 'mail2stockholm.com', 'mail2stockmarket.com', 'mail2storage.com', 'mail2store.com', 'mail2strong.com', 'mail2student.com', 'mail2studio.com', 'mail2studio54.com', 'mail2stuntman.com', 'mail2subscribe.com', 'mail2sudan.com', 'mail2superstar.com', 'mail2surfer.com', 'mail2suriname.com', 'mail2susan.com', 'mail2suzie.com', 'mail2swaziland.com', 'mail2sweden.com', 'mail2sweetheart.com', 'mail2swim.com', 'mail2swimmer.com', 'mail2swiss.com', 'mail2switzerland.com', 'mail2sydney.com', 'mail2sylvia.com', 'mail2syria.com', 'mail2taboo.com', 'mail2taiwan.com', 'mail2tajikistan.com', 'mail2tammy.com', 'mail2tango.com', 'mail2tanya.com', 'mail2tanzania.com', 'mail2tara.com', 'mail2taurus.com', 'mail2taxi.com', 'mail2taxidermist.com', 'mail2taylor.com', 'mail2taz.com', 'mail2teacher.com', 'mail2technician.com', 'mail2ted.com', 'mail2telephone.com', 'mail2teletubbie.com', 'mail2tenderness.com', 'mail2tennessee.com', 'mail2tennis.com', 'mail2tennisfan.com', 'mail2terri.com', 'mail2terry.com', 'mail2test.com', 'mail2texas.com', 'mail2thailand.com', 'mail2therapy.com', 'mail2think.com', 'mail2tickets.com', 'mail2tiffany.com', 'mail2tim.com', 'mail2time.com', 'mail2timothy.com', 'mail2tina.com', 'mail2titanic.com', 'mail2toby.com', 'mail2todd.com', 'mail2togo.com', 'mail2tom.com', 'mail2tommy.com', 'mail2tonga.com', 'mail2tony.com', 'mail2touch.com', 'mail2tourist.com', 'mail2tracey.com', 'mail2tracy.com', 'mail2tramp.com', 'mail2travel.com', 'mail2traveler.com', 'mail2travis.com', 'mail2trekkie.com', 'mail2trex.com', 'mail2triallawyer.com', 'mail2trick.com', 'mail2trillionaire.com', 'mail2troy.com', 'mail2truck.com', 'mail2trump.com', 'mail2try.com', 'mail2tunisia.com', 'mail2turbo.com', 'mail2turkey.com', 'mail2turkmenistan.com', 'mail2tv.com', 'mail2tycoon.com', 'mail2tyler.com', 'mail2u4me.com', 'mail2uae.com', 'mail2uganda.com', 'mail2uk.com', 'mail2ukraine.com', 'mail2uncle.com', 'mail2unsubscribe.com', 'mail2uptown.com', 'mail2uruguay.com', 'mail2usa.com', 'mail2utah.com', 'mail2uzbekistan.com', 'mail2v.com', 'mail2vacation.com', 'mail2valentines.com', 'mail2valerie.com', 'mail2valley.com', 'mail2vamoose.com', 'mail2vanessa.com', 'mail2vanuatu.com', 'mail2venezuela.com', 'mail2venous.com', 'mail2venus.com', 'mail2vermont.com', 'mail2vickie.com', 'mail2victor.com', 'mail2victoria.com', 'mail2vienna.com', 'mail2vietnam.com', 'mail2vince.com', 'mail2virginia.com', 'mail2virgo.com', 'mail2visionary.com', 'mail2vodka.com', 'mail2volleyball.com', 'mail2waiter.com', 'mail2wallstreet.com', 'mail2wally.com', 'mail2walter.com', 'mail2warren.com', 'mail2washington.com', 'mail2wave.com', 'mail2way.com', 'mail2waycool.com', 'mail2wayne.com', 'mail2webmaster.com', 'mail2webtop.com', 'mail2webtv.com', 'mail2weird.com', 'mail2wendell.com', 'mail2wendy.com', 'mail2westend.com', 'mail2westvirginia.com', 'mail2whether.com', 'mail2whip.com', 'mail2white.com', 'mail2whitehouse.com', 'mail2whitney.com', 'mail2why.com', 'mail2wilbur.com', 'mail2wild.com', 'mail2willard.com', 'mail2willie.com', 'mail2wine.com', 'mail2winner.com', 'mail2wired.com', 'mail2wisconsin.com', 'mail2woman.com', 'mail2wonder.com', 'mail2world.com', 'mail2worship.com', 'mail2wow.com', 'mail2www.com', 'mail2wyoming.com', 'mail2xfiles.com', 'mail2xox.com', 'mail2yachtclub.com', 'mail2yahalla.com', 'mail2yemen.com', 'mail2yes.com', 'mail2yugoslavia.com', 'mail2zack.com', 'mail2zambia.com', 'mail2zenith.com', 'mail2zephir.com', 'mail2zeus.com', 'mail2zipper.com', 'mail2zoo.com', 'mail2zoologist.com', 'mail2zurich.com', 'mail3000.com', 'mail333.com', 'mailandftp.com', 'mailandnews.com', 'mailas.com', 'mailasia.com', 'mailbolt.com', 'mailbomb.net', 'mailboom.com', 'mailbox.as', 'mailbox.co.za', 'mailbox.gr', 'mailbox.hu', 'mailbr.com.br', 'mailc.net', 'mailcan.com', 'mailcc.com', 'mailchoose.co', 'mailcity.com', 'mailclub.fr', 'mailclub.net', 'mailexcite.com', 'mailforce.net', 'mailftp.com', 'mailgate.gr', 'mailgenie.net', 'mailhaven.com', 'mailhood.com', 'mailingweb.com', 'mailisent.com', 'mailite.com', 'mailme.dk', 'mailmight.com', 'mailmij.nl', 'mailnew.com', 'mailops.com', 'mailoye.com', 'mailpanda.com', 'mailpost.zzn.com', 'mailpride.com', 'mailpuppy.com', 'mailroom.com', 'mailru.com', 'mailsent.net', 'mailshuttle.com', 'mailstart.com', 'mailstartplus.com', 'mailsurf.com', 'mailtag.com', 'mailto.de', 'mailup.net', 'mailwire.com', 'maktoob.com', 'malayalamtelevision.net', 'manager.de', 'mantrafreenet.com', 'mantramail.com', 'mantraonline.com', 'marchmail.com', 'mariah-carey.ml.org', 'mariahc.com', 'marijuana.nl', 'marketing.lu', 'married-not.com', 'marsattack.com', 'martindalemail.com', 'masrawy.com', 'matmail.com', 'mauimail.com', 'mauritius.com', 'maxleft.com', 'maxmail.co.uk', 'mbox.com.au', 'mchsi.com', 'mciworldcom.net', 'me-mail.hu', 'me.com', 'medical.net.au', 'medione.net', 'medmail.com', 'medscape.com', 'meetingmall.com', 'megago.com', 'megamail.pt', 'megapathdsl.net', 'megapoint.com', 'mehrani.com', 'mehtaweb.com', 'mekhong.com', 'melodymail.com', 'meloo.com', 'members.student.com', 'message.hu', 'messages.to', 'metacrawler.com', 'metalfan.com', 'metta.lk', 'miatadriver.com', 'miesto.sk', 'mighty.co.za', 'miho-nakayama.com', 'mikrotamanet.com', 'millionaireintraining.com', 'milmail.com', 'mindless.com', 'mindspring.com', 'mini-mail.com', 'misery.net', 'mittalweb.com', 'mixmail.com', 'mjfrogmail.com', 'ml1.net', 'mobilbatam.com', 'mochamail.com', 'mohammed.com', 'moldova.cc', 'moldova.com', 'moldovacc.com', 'money.net', 'montevideo.com.uy', 'moonman.com', 'moose-mail.com', 'mortaza.com', 'mosaicfx.com', 'most-wanted.com', 'mostlysunny.com', 'motormania.com', 'movemail.com', 'movieluver.com', 'mp4.it', 'mr-potatohead.com', 'mrpost.com', 'mscold.com', 'msgbox.com', 'msn.com', 'mttestdriver.com', 'mundomail.net', 'munich.com', 'music.com', 'musician.org', 'musicscene.org', 'mybox.it', 'mycabin.com', 'mycampus.com', 'mycity.com', 'mycool.com', 'mydomain.com', 'mydotcomaddress.com', 'myfamily.com', 'mygo.com', 'myiris.com', 'mynamedot.com', 'mynetaddress.com', 'myownemail.com', 'myownfriends.com', 'mypad.com', 'mypersonalemail.com', 'myplace.com', 'myrealbox.com', 'myremarq.com', 'myself.com', 'mystupidjob.com', 'mythirdage.com', 'myway.com', 'myworldmail.com', 'n2.com', 'n2business.com', 'n2mail.com', 'n2software.com', 'nabc.biz', 'nafe.com', 'nagpal.net', 'nakedgreens.com', 'name.com', 'nameplanet.com', 'nandomail.com', 'naplesnews.net', 'naseej.com', 'nate.com', 'nativestar.net', 'nativeweb.net', 'naui.net', 'nauticom.net', 'naver.com', 'navigator.lv', 'navy.org', 'naz.com', 'nchoicemail.com', 'neeva.net', 'nemra1.com', 'nenter.com', 'neo.rr.com', 'nervhq.org', 'net-pager.net', 'net4b.pt', 'net4you.at', 'netbounce.com', 'netbroadcaster.com', 'netby.dk', 'netcenter-vn.net', 'netcom.ca', 'netcom.com', 'netcourrier.com', 'netexecutive.com', 'netexpressway.com', 'netgenie.com', 'netian.com', 'netizen.com.ar', 'netlane.com', 'netlimit.com', 'netmanor.com', 'netmongol.com', 'netnet.com.sg', 'netpiper.com', 'netposta.net', 'netradiomail.com', 'netralink.com', 'netscape.com', 'netscape.net', 'netscapeonline.co.uk', 'netsero.net', 'netspeedway.com', 'netsquare.com', 'netster.com', 'nettaxi.com', 'netzero.com', 'netzero.net', 'neuf.fr', 'newmail.com', 'newmail.net', 'newmail.ru', 'newyork.com', 'nexxmail.com', 'nfmail.com', 'nhmail.com', 'nicebush.com', 'nicegal.com', 'nicholastse.net', 'nicolastse.com', 'nightmail.com', 'nikopage.com', 'nimail.com', 'nirvanafan.com', 'noavar.com', 'norika-fujiwara.com', 'norikomail.com', 'northgates.net', 'nospammail.net', 'ntlworld.com', 'ntscan.com', 'ny.com', 'nyc.com', 'nycmail.com', 'nzoomail.com', 'o-tay.com', 'o2.co.uk', 'oaklandas-fan.com', 'oceanfree.net', 'oddpost.com', 'odmail.com', 'office-email.com', 'officedomain.com', 'offroadwarrior.com', 'oi.com.br', 'oicexchange.com', 'okbank.com', 'okhuman.com', 'okmad.com', 'okmagic.com', 'okname.net', 'okuk.com', 'oldies1041.com', 'oldies104mail.com', 'ole.com', 'olemail.com', 'olg.com', 'olympist.net', 'omaninfo.com', 'onebox.com', 'onenet.com.ar', 'onet.pl', 'oninet.pt', 'online.de', 'online.ie', 'onlinewiz.com', 'onmilwaukee.com', 'onobox.com', 'onvillage.com', 'operafan.com', 'operamail.com', 'optician.com', 'optonline.net', 'optusnet.com.au', 'orange.fr', 'orange.net', 'orbitel.bg', 'orgmail.net', 'osite.com.br', 'oso.com', 'otakumail.com', 'our-computer.com', 'our-office.com', 'our.st', 'ourbrisbane.com', 'ournet.md', 'outel.com', 'outgun.com', 'outlook.com', 'outlook.com.br', 'over-the-rainbow.com', 'ownmail.net', 'ozbytes.net.au', 'ozemail.com.au', 'pacbell.net', 'pacific-re.com', 'packersfan.com', 'pagina.de', 'pagons.org', 'pakistanoye.com', 'palestinemail.com', 'parkjiyoon.com', 'parrot.com', 'parsmail.com', 'partlycloudy.com', 'partynight.at', 'parvazi.com', 'passwordmail.com', 'pathfindermail.com', 'patmedia.net', 'pconnections.net', 'pcpostal.com', 'pcsrock.com', 'peachworld.com', 'pediatrician.com', 'pemail.net', 'penpen.com', 'peoplepc.com', 'peopleweb.com', 'perfectmail.com', 'personal.ro', 'personales.com', 'petml.com', 'pettypool.com', 'pezeshkpour.com', 'phayze.com', 'phreaker.net', 'pickupman.com', 'picusnet.com', 'pigpig.net', 'pinoymail.com', 'pipeline.com', 'piracha.net', 'pisem.net', 'planet-mail.com', 'planet.nl', 'planetaccess.com', 'planetall.com', 'planetarymotion.net', 'planetdirect.com', 'planetearthinter.net', 'planetout.com', 'plasa.com', 'playersodds.com', 'playful.com', 'plusmail.com.br', 'pmail.net', 'pobox.com', 'pobox.hu', 'pobox.sk', 'pochta.ru', 'poczta.fm', 'poetic.com', 'polbox.com', 'policeoffice.com', 'pool-sharks.com', 'poond.com', 'popaccount.com', 'popmail.com', 'popsmail.com', 'popstar.com', 'populus.net', 'portableoffice.com', 'portugalmail.com', 'portugalmail.pt', 'portugalnet.com', 'positive-thinking.com', 'post.com', 'post.cz', 'post.sk', 'posta.net', 'posta.ro', 'postaccesslite.com', 'postafree.com', 'postaweb.com', 'poste.it', 'postinbox.com', 'postino.ch', 'postmark.net', 'postmaster.co.uk', 'postpro.net', 'pousa.com', 'powerfan.com', 'praize.com', 'premiumservice.com', 'presidency.com', 'press.co.jp', 'priest.com', 'primposta.com', 'primposta.hu', 'pro.hu', 'probemail.com', 'prodigy.net', 'prodigy.net.mx', 'progetplus.it', 'programmer.net', 'programozo.hu', 'proinbox.com', 'project2k.com', 'prolaunch.com', 'promessage.com', 'prontomail.com', 'protonmail.com', 'psi.net', 'psv-supporter.com', 'ptd.net', 'public.usa.com', 'publicist.com', 'pulp-fiction.com', 'punkass.com', 'qatarmail.com', 'qis.net', 'qprfans.com', 'qq.com', 'qrio.com', 'quackquack.com', 'quakemail.com', 'qudsmail.com', 'quepasa.com', 'quickwebmail.com', 'quiklinks.com', 'quikmail.com', 'qwest.net', 'qwestoffice.net', 'r-o-o-t.com', 'r7.com', 'raakim.com', 'racedriver.com', 'racefanz.com', 'racingfan.com.au', 'racingmail.com', 'radicalz.com', 'ragingbull.com', 'rambler.ru', 'ranmamail.com', 'rastogi.net', 'ratt-n-roll.com', 'rattle-snake.com', 'ravearena.com', 'ravemail.com', 'razormail.com', 'rccgmail.org', 'rcn.com', 'realemail.net', 'reallyfast.biz', 'realradiomail.com', 'recycler.com', 'rediffmail.com', 'rediffmailpro.com', 'rednecks.com', 'redseven.de', 'redsfans.com', 'reggafan.com', 'registerednurses.com', 'repairman.com', 'reply.hu', 'representative.com', 'rescueteam.com', 'resumemail.com', 'rezai.com', 'richmondhill.com', 'rickymail.com', 'rin.ru', 'riopreto.com.br', 'rn.com', 'roadrunner.com', 'roanokemail.com', 'rock.com', 'rocketmail.com', 'rockfan.com', 'rodrun.com', 'rome.com', 'roosh.com', 'rotfl.com', 'roughnet.com', 'rr.com', 'rrohio.com', 'rsub.com', 'rubyridge.com', 'runbox.com', 'rushpost.com', 'ruttolibero.com', 'rvshop.com', 's-mail.com', 'sabreshockey.com', 'sacbeemail.com', 'safarimail.com', 'safe-mail.net', 'sagra.lu', 'sailormoon.com', 'saintly.com', 'saintmail.net', 'sale-sale-sale.com', 'salehi.net', 'samerica.com', 'samilan.net', 'sammimail.com', 'sanfranmail.com', 'sanook.com', 'sapo.pt', 'sativa.ro.org', 'saudia.com', 'sayhi.net', 'sbcglobal.net', 'scandalmail.com', 'schizo.com', 'schoolemail.com', 'schoolmail.com', 'schoolsucks.com', 'schweiz.org', 'sci.fi', 'science.com.au', 'scientist.com', 'scifianime.com', 'scottishmail.co.uk', 'scubadiving.com', 'seanet.com', 'searchwales.com', 'sebil.com', 'secret-police.com', 'secretservices.net', 'seductive.com', 'seekstoyboy.com', 'seguros.com.br', 'send.hu', 'sendme.cz', 'sent.com', 'sentrismail.com', 'serga.com.ar', 'servemymail.com', 'sesmail.com', 'sexmagnet.com', 'seznam.cz', 'sfr.fr', 'shahweb.net', 'shaniastuff.com', 'sharewaredevelopers.com', 'sharmaweb.com', 'shaw.ca', 'she.com', 'shootmail.com', 'shotgun.hu', 'shuf.com', 'sialkotcity.com', 'sialkotian.com', 'sialkotoye.com', 'sify.com', 'silkroad.net', 'sina.cn', 'sina.com', 'sinamail.com', 'singapore.com', 'singmail.com', 'singnet.com.sg', 'singpost.com', 'skafan.com', 'skim.com', 'skizo.hu', 'sky.com', 'skynet.be', 'slamdunkfan.com', 'slingshot.com', 'slo.net', 'slotter.com', 'smapxsmap.net', 'smileyface.comsmithemail.net', 'smoothmail.com', 'snail-mail.net', 'snail-mail.ney', 'snakemail.com', 'sndt.net', 'sneakemail.com', 'snet.net', 'snip.net', 'sniper.hu', 'snoopymail.com', 'snowboarding.com', 'snowdonia.net', 'socamail.com', 'socceramerica.net', 'soccermail.com', 'soccermomz.com', 'sociologist.com', 'softhome.net', 'sol.dk', 'soldier.hu', 'soon.com', 'soulfoodcookbook.com', 'sp.nl', 'space-bank.com', 'space-man.com', 'space-ship.com', 'space-travel.com', 'space.com', 'spaceart.com', 'spacebank.com', 'spacemart.com', 'spacetowns.com', 'spacewar.com', 'spamex.com', 'spartapiet.com', 'spazmail.com', 'speedemail.net', 'speedpost.net', 'speedrules.com', 'speedrulz.com', 'speedy.com.ar', 'spils.com', 'spinfinder.com', 'sportemail.com', 'sportsmail.com', 'sporttruckdriver.com', 'spray.no', 'spray.se', 'sprintmail.com', 'sprynet.com', 'spymac.com', 'srilankan.net', 'st-davids.net', 'stade.fr', 'stalag13.com', 'stargateradio.com', 'starmail.com', 'starmail.org', 'starmedia.com', 'starplace.com', 'starpower.net', 'starspath.com', 'start.com.au', 'starting-point.com', 'startrekmail.com', 'stealthmail.com', 'stockracer.com', 'stones.com', 'stopdropandroll.com', 'storksite.com', 'stribmail.com', 'strompost.com', 'strongguy.com', 'studentcenter.org', 'subnetwork.com', 'subram.com', 'sudanmail.net', 'suhabi.com', 'suisse.org', 'sukhumvit.net', 'sunpoint.net', 'sunrise-sunset.com', 'sunsgame.com', 'sunumail.sn', 'superdada.com', 'supereva.it', 'supermail.ru', 'surat.com', 'surf3.net', 'surfree.com', 'surfy.net', 'surimail.com', 'survivormail.com', 'swbell.net', 'sweb.cz', 'swiftdesk.com', 'swingeasyhithard.com', 'swingfan.com', 'swipermail.zzn.com', 'swirve.com', 'swissinfo.org', 'swissmail.net', 'switchboardmail.com', 'switzerland.org', 'swva.net', 'sx172.com', 'sympatico.ca', 'syom.com', 'syriamail.com', 't-online.de', 't2mail.com', 'takuyakimura.com', 'talk21.com', 'talkcity.com', 'talktalk.co.uk', 'tamil.com', 'tampabay.rr.com', 'tatanova.com', 'tbwt.com', 'tds.net', 'teamdiscovery.com', 'teamtulsa.net', 'tech4peace.org', 'techemail.com', 'techie.com', 'technisamail.co.za', 'technologist.com', 'techpointer.com', 'techscout.com', 'techseek.com', 'techspot.com', 'teenagedirtbag.com', 'telebot.com', 'telebot.net', 'teleline.es', 'telenet.be', 'telerymd.com', 'teleserve.dynip.com', 'teletu.it', 'telinco.net', 'telkom.net', 'telpage.net', 'telus.net', 'temtulsa.net', 'tenchiclub.com', 'tenderkiss.com', 'tennismail.com', 'terra.cl', 'terra.com', 'terra.com.ar', 'terra.com.br', 'terra.es', 'tfanus.com.er', 'tfz.net', 'thai.com', 'thaimail.com', 'thaimail.net', 'the-african.com', 'the-airforce.com', 'the-aliens.com', 'the-american.com', 'the-animal.com', 'the-army.com', 'the-astronaut.com', 'the-beauty.com', 'the-big-apple.com', 'the-biker.com', 'the-boss.com', 'the-brazilian.com', 'the-canadian.com', 'the-canuck.com', 'the-captain.com', 'the-chinese.com', 'the-country.com', 'the-cowboy.com', 'the-davis-home.com', 'the-dutchman.com', 'the-eagles.com', 'the-englishman.com', 'the-fastest.net', 'the-fool.com', 'the-frenchman.com', 'the-galaxy.net', 'the-genius.com', 'the-gentleman.com', 'the-german.com', 'the-gremlin.com', 'the-hooligan.com', 'the-italian.com', 'the-japanese.com', 'the-lair.com', 'the-madman.com', 'the-mailinglist.com', 'the-marine.com', 'the-master.com', 'the-mexican.com', 'the-ministry.com', 'the-monkey.com', 'the-newsletter.net', 'the-pentagon.com', 'the-police.com', 'the-prayer.com', 'the-professional.com', 'the-quickest.com', 'the-russian.com', 'the-snake.com', 'the-spaceman.com', 'the-stock-market.com', 'the-student.net', 'the-whitehouse.net', 'the-wild-west.com', 'the18th.com', 'thecoolguy.com', 'thecriminals.com', 'thedoghousemail.com', 'thedorm.com', 'theend.hu', 'theglobe.com', 'thegolfcourse.com', 'thegooner.com', 'theheadoffice.com', 'thelanddownunder.com', 'themillionare.net', 'theoffice.net', 'thepokerface.com', 'thepostmaster.net', 'theraces.com', 'theracetrack.com', 'thestreetfighter.com', 'theteebox.com', 'thewatercooler.com', 'thewebpros.co.uk', 'thewizzard.com', 'thewizzkid.com', 'thezhangs.net', 'thirdage.com', 'thisgirl.com', 'thoic.com', 'thundermail.com', 'tidni.com', 'timein.net', 'tin.it', 'tiscali.at', 'tiscali.be', 'tiscali.co.uk', 'tiscali.it', 'tiscali.lu', 'tiscali.se', 'tkcity.com', 'toolsource.com', 'topchat.com', 'topgamers.co.uk', 'topletter.com', 'topmail.com.ar', 'topsurf.com', 'topteam.bg', 'torchmail.com', 'tot.net', 'totalmusic.net', 'toughguy.net', 'tpg.com.au', 'travel.li', 'trialbytrivia.com', 'tritium.net', 'trmailbox.com', 'tropicalstorm.com', 'truckers.com', 'truckerz.com', 'truckracer.com', 'trust-me.com', 'tsamail.co.za', 'ttml.co.in', 'tunisiamail.com', 'turkey.com', 'tvcablenet.be', 'twinstarsmail.com', 'tycoonmail.com', 'typemail.com', 'u2club.com', 'uae.ac', 'uaemail.com', 'ubbi.com', 'ubbi.com.br', 'uboot.com', 'uk2k.com', 'uk2net.com', 'uk7.net', 'uk8.net', 'ukbuilder.com', 'ukcool.com', 'ukdreamcast.com', 'ukmail.org', 'ukmax.com', 'ukr.net', 'uku.co.uk', 'ultapulta.com', 'ultrapostman.com', 'ummah.org', 'umpire.com', 'unbounded.com', 'unforgettable.com', 'uni.de', 'unican.es', 'unihome.com', 'universal.pt', 'uno.ee', 'uno.it', 'unofree.it', 'unomail.com', 'uol.com.ar', 'uol.com.br', 'uol.com.co', 'uol.com.mx', 'uol.com.ve', 'uole.com', 'uole.com.ve', 'uolmail.com', 'uomail.com', 'upf.org', 'ureach.com', 'urgentmail.biz', 'usa.com', 'usa.net', 'usaaccess.net', 'usanetmail.com', 'usermail.com', 'usit.net', 'usma.net', 'usmc.net', 'uswestmail.net', 'uu.net', 'uymail.com', 'uyuyuy.com', 'v-sexi.com', 'vahoo.com', 'varbizmail.com', 'vcmail.com', 'velnet.co.uk', 'velocall.com', 'verizon.net', 'verizonmail.com', 'veryfast.biz', 'veryspeedy.net', 'videotron.ca', 'violinmakers.co.uk', 'vip.gr', 'vipmail.ru', 'virgilio.it', 'virgin.net', 'virginmedia.com', 'virtualactive.com', 'virtualmail.com', 'visitmail.com', 'visitweb.com', 'visto.com', 'visualcities.com', 'vivavelocity.com', 'vivianhsu.net', 'vjmail.com', 'vjtimail.com', 'vlmail.com', 'vnn.vn', 'voila.fr', 'volcanomail.com', 'voo.be', 'vote-democrats.com', 'vote-hillary.com', 'vote-republicans.com', 'vote4gop.org', 'votenet.com', 'vr9.com', 'w3.to', 'wahoye.com', 'wales2000.net', 'wam.co.za', 'wanadoo.co.uk', 'wanadoo.es', 'wanadoo.fr', 'warmmail.com', 'warpmail.net', 'warrior.hu', 'waumail.com', 'wbdet.com', 'wearab.net', 'web-mail.com.ar', 'web-police.com', 'web.de', 'webave.com', 'webcammail.com', 'webcity.ca', 'webdream.com', 'webinbox.com', 'webindia123.com', 'webjump.com', 'webmail.bellsouth.net', 'webmail.co.yu', 'webmail.co.za', 'webmail.hu', 'webmails.com', 'webprogramming.com', 'webstable.net', 'webstation.com', 'websurfer.co.za', 'webtopmail.com', 'weedmail.com', 'weekmail.com', 'weekonline.com', 'wehshee.com', 'welsh-lady.com', 'whale-mail.com', 'whartontx.com', 'wheelweb.com', 'whipmail.com', 'whoever.com', 'whoopymail.com', 'wickedmail.com', 'wideopenwest.com', 'wildmail.com', 'windrivers.net', 'windstream.net', 'wingnutz.com', 'winmail.com.au', 'winning.com', 'witty.com', 'wiz.cc', 'wkbwmail.com', 'woh.rr.com', 'wolf-web.com', 'wombles.com', 'wonder-net.com', 'wongfaye.com', 'wooow.it', 'workmail.com', 'worldemail.com', 'worldmailer.com', 'worldnet.att.net', 'wosaddict.com', 'wouldilie.com', 'wow.com', 'wowgirl.com', 'wowmail.com', 'wowway.com', 'wp.pl', 'wptamail.com', 'wrestlingpages.com', 'wrexham.net', 'writeme.com', 'writemeback.com', 'wrongmail.com', 'wtvhmail.com', 'wwdg.com', 'www.com', 'www2000.net', 'wx88.net', 'wxs.net', 'wyrm.supernews.com', 'x-mail.net', 'x-networks.net', 'x5g.com', 'xmastime.com', 'xmsg.com', 'xoom.com', 'xoommail.com', 'xpressmail.zzn.com', 'xsmail.com', 'xuno.com', 'xzapmail.com', 'ya.ru', 'yada-yada.com', 'yaho.com', 'yahoo.ca', 'yahoo.co.id', 'yahoo.co.in', 'yahoo.co.jp', 'yahoo.co.kr', 'yahoo.co.nz', 'yahoo.co.uk', 'yahoo.com', 'yahoo.com.ar', 'yahoo.com.au', 'yahoo.com.br', 'yahoo.com.cn', 'yahoo.com.hk', 'yahoo.com.is', 'yahoo.com.mx', 'yahoo.com.ph', 'yahoo.com.ru', 'yahoo.com.sg', 'yahoo.de', 'yahoo.dk', 'yahoo.es', 'yahoo.fr', 'yahoo.ie', 'yahoo.in', 'yahoo.it', 'yahoo.jp', 'yahoo.ru', 'yahoo.se', 'yahoofs.com', 'yalla.com', 'yalla.com.lb', 'yalook.com', 'yam.com', 'yandex.com', 'yandex.ru', 'yapost.com', 'yawmail.com', 'yclub.com', 'yebox.com', 'yehaa.com', 'yehey.com', 'yemenmail.com', 'yepmail.net', 'yesbox.net', 'ygm.com', 'yifan.net', 'ymail.com', 'ynnmail.com', 'yogotemail.com', 'yopolis.com', 'youareadork.com', 'youpy.com', 'your-house.com', 'yourinbox.com', 'yourlover.net', 'yourname.ddns.org', 'yourname.freeservers.com', 'yournightmare.com', 'yours.com', 'yourssincerely.com', 'yoursubdomain.findhere.com', 'yoursubdomain.zzn.com', 'yourteacher.net', 'yourwap.com', 'youvegotmail.net', 'yuuhuu.net', 'yyhmail.com', 'zahadum.com', 'zcities.com', 'zdnetmail.com', 'zeeks.com', 'zeepost.nl', 'zensearch.net', 'zhaowei.net', 'zionweb.org', 'zip.net', 'zipido.com', 'ziplink.net', 'ziplip.com', 'zipmail.com', 'zipmail.com.br', 'zipmax.com', 'zmail.ru', 'zoho.com', 'zonnet.nl', 'zoominternet.net', 'zubee.com', 'zuvio.com', 'zuzzurello.com', 'zwallet.com', 'zybermail.com', 'zydecofan.com', 'zzn.com', 'zzom.co.uk'];
382
+
344
383
  const validateInput = (field, value) => {
384
+ var _field$validations, _field$validations$re;
385
+
345
386
  const isRequired = field.validations && field.validations.required;
346
387
  const minLength = field.validations && field.validations.minLength;
347
388
  const maxLength = field.validations && field.validations.maxLength;
348
- const regex = field.validations && field.validations.regex;
389
+ const hasRegex = field !== null && field !== void 0 && (_field$validations = field.validations) !== null && _field$validations !== void 0 && (_field$validations$re = _field$validations.regex) !== null && _field$validations$re !== void 0 && _field$validations$re.pattern ? true : false;
349
390
  const integer = field.dataType === 'integer';
350
391
  const decimal = field.dataType === 'decimal';
392
+ const isBusinessEmail = field.id === 'businessEmail';
351
393
 
352
394
  if (isRequired && !value) {
353
- const errorMessage = isRequired.message ? isRequired.message['en-GB'] : `${field.id} is required`;
395
+ var _isRequired$message, _field$name;
396
+
397
+ const errorMessage = (isRequired === null || isRequired === void 0 ? void 0 : (_isRequired$message = isRequired.message) === null || _isRequired$message === void 0 ? void 0 : _isRequired$message['en-GB']) || `${(_field$name = field.name) === null || _field$name === void 0 ? void 0 : _field$name['en-GB']} is required`;
354
398
  return {
355
399
  fieldId: field.id,
356
400
  groupId: field.groupId,
@@ -375,17 +419,28 @@ const validateInput = (field, value) => {
375
419
  message: errorMessage
376
420
  };
377
421
  }
422
+ /** Check Regex and Business Emails */
378
423
 
379
- if (regex && value.length > 0) {
380
- //Had to make the string raw, as a string ususually is wrapped as '' and Regex couldnt use the regex patter as the string variant
381
- const regexPattern = RegExp(regex.pattern.raw);
382
424
 
383
- if (!regexPattern.test(value)) {
384
- const errorMessage = regex.message ? regex.message['en-GB'] : `${field.id} is invalid`;
425
+ if (hasRegex && (value === null || value === void 0 ? void 0 : value.length) > 0) {
426
+ var _r$message;
427
+
428
+ const r = field.validations.regex;
429
+ const msg = (r === null || r === void 0 ? void 0 : (_r$message = r.message) === null || _r$message === void 0 ? void 0 : _r$message['en-GB']) || `${field.name['en-GB']} is invalid`;
430
+
431
+ if (isValidRegex(field, value) && isBusinessEmail) {
432
+ if (!isBusinessEmailValid(field, value)) {
433
+ return {
434
+ fieldId: field.id,
435
+ groupId: field.groupId,
436
+ message: 'You must enter a business email address.'
437
+ };
438
+ }
439
+ } else if (!isValidRegex(field, value)) {
385
440
  return {
386
441
  fieldId: field.id,
387
442
  groupId: field.groupId,
388
- message: errorMessage
443
+ message: msg
389
444
  };
390
445
  }
391
446
  }
@@ -417,6 +472,45 @@ const validateInput = (field, value) => {
417
472
  }
418
473
  };
419
474
 
475
+ const isValidRegex = (field, value) => {
476
+ const regex = field.validations.regex.pattern;
477
+ const regexPattern = RegExp(regex);
478
+ if (!regexPattern.test(value)) return false;else return true;
479
+ };
480
+
481
+ const isBusinessEmailValid = (field, value) => {
482
+ const domain = value.split('@').pop();
483
+ if (!domains.includes(domain)) return true;else return false;
484
+ };
485
+
486
+ const MakeFieldType = field => {
487
+ var _field$editor, _field$editor$propert;
488
+
489
+ if (!field) return null;
490
+
491
+ if (field.dataType === 'string' && field.editor && field.editor.id === 'multiline') {
492
+ return 'textarea';
493
+ } else if (field.dataType === 'string' && field.editor && field.editor.id === 'list-dropdown') {
494
+ return 'dropdown';
495
+ } else if (field !== null && field !== void 0 && (_field$editor = field.editor) !== null && _field$editor !== void 0 && (_field$editor$propert = _field$editor.properties) !== null && _field$editor$propert !== void 0 && _field$editor$propert.readOnly || (field === null || field === void 0 ? void 0 : field.groupId) === 'private' || (field === null || field === void 0 ? void 0 : field.groupId) === 'settings') {
496
+ return 'hidden';
497
+ } else if (field.dataType === 'stringArray' || field.dataType === 'boolean') {
498
+ return 'checkbox';
499
+ } else if (field.dataType === 'string' && field.validations && field.validations.allowedValues) {
500
+ return 'radio';
501
+ } else if (field.dataType === 'integer') {
502
+ return 'number';
503
+ } else if (field.dataType === 'dateTime') {
504
+ return 'date';
505
+ } else if (field.dataFormat === 'daterange') {
506
+ return 'dateRange';
507
+ } else if (field.dataFormat === 'entry') {
508
+ return 'entryPicker';
509
+ } else {
510
+ return 'textfield';
511
+ }
512
+ };
513
+
420
514
  const formV2Sagas = [effects.takeEvery(SUBMIT_FORM_SUCCESS, formSuccess), effects.takeEvery(SUBMIT_FORM_FOR_VALIDATION, validateForm), effects.takeEvery(SUBMIT_FORM, submitForm$1), effects.takeEvery(SET_FORM_ID, fetchForm), effects.takeLatest(VALIDATE_FIELD, validateField$1), effects.takeEvery(PAGE_FORWARD, togglePage), effects.takeEvery(PAGE_BACK, togglePage), effects.takeEvery(SET_FORM_DATA, getEntryPickerData), effects.takeLatest(SET_FORM_DATA, setDefaultValueFields)];
421
515
 
422
516
  function* validateForm(action) {
@@ -441,7 +535,8 @@ function* validateField$1(action) {
441
535
 
442
536
  function* validateGroupfields(formId, groupId) {
443
537
  const state = yield effects.select();
444
- const postData = selectPostData(state, formId);
538
+ const selectPostData = makeSelectFormPostData(formId);
539
+ const postData = selectPostData(state);
445
540
  const selectFormFields = makeSelectFormFields(formId);
446
541
  const fields = selectFormFields(state);
447
542
  const groupFields = fields.filter(f => f.groupid == groupId);
@@ -465,7 +560,8 @@ function* validateGroupfields(formId, groupId) {
465
560
 
466
561
  function* validateAllfields(formId) {
467
562
  const state = yield effects.select();
468
- const postData = selectPostData(state, formId);
563
+ const selectPostData = makeSelectFormPostData(formId);
564
+ const postData = selectPostData(state);
469
565
  const selectFormFields = makeSelectFormFields(formId);
470
566
  const fields = selectFormFields(state);
471
567
  let newErrors = [];
@@ -490,8 +586,9 @@ function* validateSingleField(formId, fieldId, value) {
490
586
  const state = yield effects.select();
491
587
  const selectFormFields = makeSelectFormFields(formId);
492
588
  const fields = selectFormFields(state);
589
+ const selectFormFieldErrors = makeSelectFormFieldErrors(formId);
590
+ const errors = selectFormFieldErrors(state);
493
591
  const fieldData = fields.find(f => f.id == fieldId);
494
- const errors = selectFieldErrors(state, formId);
495
592
  const newErrors = []; //loop through current errors to remove any of the item we currently edit
496
593
 
497
594
  errors.forEach(error => {
@@ -515,6 +612,7 @@ function* togglePage(action) {
515
612
  pageIndex
516
613
  } = action;
517
614
  const state = yield effects.select();
615
+ const selectFormGroups = makeSelectFormGroup(formId);
518
616
  const formGroups = selectFormGroups(state);
519
617
 
520
618
  if (action.type === PAGE_FORWARD) {
@@ -531,12 +629,16 @@ function* togglePage(action) {
531
629
  }
532
630
 
533
631
  function* fetchForm(action) {
632
+ var _schema$groups;
633
+
534
634
  const formId = action.formId;
535
635
  const schema = yield getFormSchema(formId);
536
- const groups = schema && schema.groups && schema.groups.length > 0 && schema.groups.filter(group => group.id !== 'private');
636
+ const groups = schema === null || schema === void 0 ? void 0 : (_schema$groups = schema.groups) === null || _schema$groups === void 0 ? void 0 : _schema$groups.filter(group => group.id !== 'private');
537
637
 
538
638
  if (formId && schema) {
539
- if (schema.groups && schema.groups.length > 0) {
639
+ var _schema$groups2, _submitButtonText$def;
640
+
641
+ if ((schema === null || schema === void 0 ? void 0 : (_schema$groups2 = schema.groups) === null || _schema$groups2 === void 0 ? void 0 : _schema$groups2.length) > 0) {
540
642
  yield effects.put({
541
643
  type: SET_CURRENT_PAGE,
542
644
  formId: formId,
@@ -546,12 +648,21 @@ function* fetchForm(action) {
546
648
  });
547
649
  }
548
650
 
651
+ const submitButtonText = schema.fields.find(f => f.id === 'submitButtonText');
652
+ const fields = schema === null || schema === void 0 ? void 0 : schema.fields.map(field => {
653
+ return { ...field,
654
+ type: MakeFieldType(field)
655
+ };
656
+ });
549
657
  yield effects.put({
550
658
  type: SET_FORM_DATA,
551
659
  formId: formId,
552
- fields: schema.fields,
660
+ fields,
553
661
  groups: groups,
554
- defaultLanguage: schema.defaultLanguage
662
+ defaultLanguage: schema.defaultLanguage,
663
+ settings: {
664
+ submitButtonText: submitButtonText === null || submitButtonText === void 0 ? void 0 : (_submitButtonText$def = submitButtonText.default) === null || _submitButtonText$def === void 0 ? void 0 : _submitButtonText$def['en-GB']
665
+ }
555
666
  });
556
667
  }
557
668
  }
@@ -563,11 +674,11 @@ function* formSuccess(action) {
563
674
  const redirect = fields.find(f => f.id === 'formSettingsRedirect');
564
675
  const message = fields.find(f => f.id === 'formSettingsMessage');
565
676
 
566
- if (redirect && redirect.default) {
677
+ if (redirect !== null && redirect !== void 0 && redirect.default) {
567
678
  window.location.href = redirect.default['en-GB'];
568
679
  }
569
680
 
570
- if (message && message.default) {
681
+ if (message !== null && message !== void 0 && message.default) {
571
682
  yield effects.put({
572
683
  type: SET_SUCCESS_MESSAGE,
573
684
  message: message.default['en-GB'],
@@ -577,11 +688,17 @@ function* formSuccess(action) {
577
688
  }
578
689
 
579
690
  function* submitForm$1(action) {
691
+ const {
692
+ formId
693
+ } = action || {};
580
694
  const state = yield effects.select();
581
- const errors = selectFieldErrors(state, action.formId);
582
- const canSubmit = errors && errors.length == 0;
695
+ const selectFormFieldErrors = makeSelectFormFieldErrors(formId);
696
+ const errors = selectFormFieldErrors(state);
697
+ const canSubmit = (errors === null || errors === void 0 ? void 0 : errors.length) === 0;
583
698
 
584
699
  if (canSubmit) {
700
+ var _formResObj$sys;
701
+
585
702
  yield effects.put({
586
703
  type: SET_SUBMITTING_FORM,
587
704
  isSubmitting: true,
@@ -595,7 +712,7 @@ function* submitForm$1(action) {
595
712
  };
596
713
  const formResObj = yield postForm(formObj);
597
714
 
598
- if (formResObj && formResObj.sys && formResObj.sys.id) {
715
+ if (formResObj !== null && formResObj !== void 0 && (_formResObj$sys = formResObj.sys) !== null && _formResObj$sys !== void 0 && _formResObj$sys.id) {
599
716
  yield effects.put({
600
717
  type: SUBMIT_FORM_SUCCESS,
601
718
  formId: action.formId
@@ -667,6 +784,58 @@ function* getEntryPickerData(action) {
667
784
  }
668
785
  }
669
786
 
787
+ const action = (type, payload = {}) => ({
788
+ type,
789
+ ...payload
790
+ });
791
+
792
+ const submitForm = formId => action(SUBMIT_FORM_FOR_VALIDATION, {
793
+ formId
794
+ });
795
+ const setFormId = formId => action(SET_FORM_ID, {
796
+ formId
797
+ });
798
+ const setValue = (formId, id, value) => action(SET_FIELD_VALUE, {
799
+ formId,
800
+ id,
801
+ value
802
+ });
803
+ const setCheckboxValue = (formId, id, value, isChecked) => action(SET_CHECKBOX_VALUE, {
804
+ formId,
805
+ id,
806
+ value,
807
+ isChecked
808
+ });
809
+ const setDateRangeValues = (formId, id, dateType, value) => action(SET_DATE_RANGE_VALUES, {
810
+ formId,
811
+ id,
812
+ dateType,
813
+ value
814
+ });
815
+ const validateField = (formId, id, value) => action(VALIDATE_FIELD, {
816
+ formId,
817
+ id,
818
+ value
819
+ });
820
+ const togglePageForward = (formId, pageIndex) => action(PAGE_FORWARD, {
821
+ formId,
822
+ pageIndex
823
+ });
824
+ const togglePageBack = (formId, pageIndex) => action(PAGE_BACK, {
825
+ formId,
826
+ pageIndex
827
+ });
828
+ const actions = {
829
+ submitForm,
830
+ setFormId,
831
+ setValue,
832
+ setCheckboxValue,
833
+ setDateRangeValues,
834
+ validateField,
835
+ togglePageForward,
836
+ togglePageBack
837
+ };
838
+
670
839
  //Brand
671
840
  const open_teal = '#37BFA7'; //Brand dark
672
841
 
@@ -702,7 +871,7 @@ const FormStyled = styled__default["default"].form.withConfig({
702
871
  })(["", ";"], ({
703
872
  useDefaultTheme
704
873
  }) => {
705
- return styled.css(["", ""], useDefaultTheme && styled.css(["> div:not(:first-child){margin-top:16px;}padding:0 16px;.success-message{font-size:18px;margin:0;}.visuallyHidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}label{display:inline-block;.isRequired{color:", ";}}input,textarea,select{display:block;font-family:inherit;background-color:", ";border-radius:3px;border:1px solid ", ";height:40px;padding:8px;margin-top:4px;max-width:320px;width:100%;}textarea{height:200px;resize:none;}"], colors.error, colors.neutrals.base_white, colors.border));
874
+ return styled.css(["", ""], useDefaultTheme && styled.css(["> div:not(:first-child){margin-top:16px;}padding:0 16px;.success-message{font-size:18px;margin:0;}.visuallyHidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}.loading{display:block;margin:24px auto;}label{display:inline-block;.isRequired{color:", ";}}input,textarea,select{display:block;font-family:inherit;background-color:", ";border-radius:3px;border:1px solid ", ";height:40px;padding:8px;margin-top:4px;max-width:320px;width:100%;}textarea{height:200px;resize:none;}"], colors.error, colors.neutrals.base_white, colors.border));
706
875
  });
707
876
 
708
877
  const Label = ({
@@ -1579,8 +1748,7 @@ const FormComposer = ({
1579
1748
  entries,
1580
1749
  setCheckboxValue
1581
1750
  }) => {
1582
- if (!fields || fields.length < 1) return null; //const arrayOfFields = Object.entries(fields).map(f => f[1]);
1583
-
1751
+ if (!fields || fields.length < 1) return null;
1584
1752
  return fields.map((field, idx) => {
1585
1753
  if (!field) return null;
1586
1754
 
@@ -1746,6 +1914,39 @@ FormComposer.propTypes = {
1746
1914
  setCheckboxValue: PropTypes__default["default"].func
1747
1915
  };
1748
1916
 
1917
+ const LoadingSpinner = () => {
1918
+ return /*#__PURE__*/React__default["default"].createElement("svg", {
1919
+ width: "20px",
1920
+ height: "20px",
1921
+ viewBox: "0 0 100 100",
1922
+ preserveAspectRatio: "xMidYMid"
1923
+ }, /*#__PURE__*/React__default["default"].createElement("circle", {
1924
+ cx: "50",
1925
+ cy: "50",
1926
+ fill: "none",
1927
+ stroke: "#ffffff",
1928
+ strokeWidth: "10",
1929
+ r: "35",
1930
+ strokeDasharray: "164.93361431346415 56.97787143782138",
1931
+ style: {
1932
+ animationPlayState: 'running',
1933
+ animationDelay: '0s'
1934
+ },
1935
+ transform: "rotate(311.547 50 50)"
1936
+ }, /*#__PURE__*/React__default["default"].createElement("animateTransform", {
1937
+ attributeName: "transform",
1938
+ type: "rotate",
1939
+ repeatCount: "indefinite",
1940
+ dur: "1s",
1941
+ values: "0 50 50;360 50 50",
1942
+ keyTimes: "0;1",
1943
+ style: {
1944
+ animationPlayState: 'running',
1945
+ animationDelay: '0s'
1946
+ }
1947
+ })));
1948
+ };
1949
+
1749
1950
  const ButtonStyled = styled__default["default"].button.withConfig({
1750
1951
  displayName: "Button__ButtonStyled",
1751
1952
  componentId: "sc-hr2oup-0"
@@ -1753,7 +1954,7 @@ const ButtonStyled = styled__default["default"].button.withConfig({
1753
1954
  theme,
1754
1955
  useDefaultTheme
1755
1956
  }) => {
1756
- return styled.css(["", ""], useDefaultTheme && styled.css(["display:inline-block;cursor:pointer;margin:16px 0 0 0;padding:8px 16px;border-radius:3px;border:1px solid ", ";font-family:inherit;transition:opacity 200ms ease;&:hover{opacity:0.7;}"], theme.colors.border));
1957
+ return styled.css(["", ""], useDefaultTheme && styled.css(["display:inline-flex;align-items:center;justify-content:center;cursor:pointer;margin:16px 0 0 0;padding:8px 16px;border-radius:3px;border:1px solid ", ";font-family:inherit;transition:opacity 200ms ease;&:disabled{opacity:0.7;cursor:not-allowed;border-color:#f0f0f0;background:#f0f0f0;color:#dbdbdb;svg{margin-left:4px;circle{stroke:#dbdbdb;}}}&:hover{opacity:0.7;}"], theme.colors.border));
1757
1958
  });
1758
1959
 
1759
1960
  const Button = ({
@@ -1761,20 +1962,23 @@ const Button = ({
1761
1962
  type,
1762
1963
  text,
1763
1964
  action,
1965
+ loading,
1764
1966
  useDefaultTheme
1765
1967
  }) => {
1766
1968
  return /*#__PURE__*/React__default["default"].createElement(ButtonStyled, {
1767
1969
  className: `${className ? className : ''} btnSubmit`,
1768
1970
  type: type,
1769
1971
  onClick: () => action(),
1972
+ disabled: loading,
1770
1973
  useDefaultTheme: useDefaultTheme
1771
- }, text);
1974
+ }, text, loading && /*#__PURE__*/React__default["default"].createElement(LoadingSpinner, null));
1772
1975
  };
1773
1976
  Button.propTypes = {
1774
1977
  className: PropTypes__default["default"].string,
1775
1978
  type: PropTypes__default["default"].string,
1776
1979
  text: PropTypes__default["default"].string,
1777
1980
  action: PropTypes__default["default"].func,
1981
+ loading: PropTypes__default["default"].bool,
1778
1982
  useDefaultTheme: PropTypes__default["default"].bool
1779
1983
  };
1780
1984
 
@@ -1867,498 +2071,152 @@ const defaultTheme = {
1867
2071
  colors
1868
2072
  };
1869
2073
 
1870
- const divStyles = {
1871
- display: 'flex',
1872
- height: '100vh',
1873
- alignItems: 'center',
1874
- justifyContent: 'center',
1875
- flexDirection: 'Column'
1876
- };
1877
- const svgStyles = {
1878
- width: '80px',
1879
- height: '80px'
1880
- };
1881
- const headingStyles = {
1882
- margin: '0',
1883
- fontSize: '16px'
1884
- };
1885
- const Loading = () => {
1886
- return /*#__PURE__*/React__default["default"].createElement("div", {
1887
- style: divStyles
1888
- }, /*#__PURE__*/React__default["default"].createElement("h3", {
1889
- style: headingStyles
1890
- }, "Loading..."), /*#__PURE__*/React__default["default"].createElement("svg", {
1891
- xmlns: "http://www.w3.org/2000/svg",
1892
- className: "lds-spinner",
1893
- preserveAspectRatio: "xMidYMid",
1894
- viewBox: "0 0 100 100",
1895
- style: svgStyles
1896
- }, /*#__PURE__*/React__default["default"].createElement("rect", {
1897
- width: "6",
1898
- height: "12",
1899
- x: "47",
1900
- y: "24",
1901
- fill: "#DE1C8F",
1902
- rx: "9",
1903
- ry: "5"
1904
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
1905
- attributeName: "opacity",
1906
- begin: "-0.9166666666666666s",
1907
- dur: "1s",
1908
- keyTimes: "0;1",
1909
- repeatCount: "indefinite",
1910
- values: "1;0"
1911
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
1912
- width: "6",
1913
- height: "12",
1914
- x: "47",
1915
- y: "24",
1916
- fill: "#DE1C8F",
1917
- rx: "9",
1918
- ry: "5",
1919
- transform: "rotate(30 50 50)"
1920
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
1921
- attributeName: "opacity",
1922
- begin: "-0.8333333333333334s",
1923
- dur: "1s",
1924
- keyTimes: "0;1",
1925
- repeatCount: "indefinite",
1926
- values: "1;0"
1927
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
1928
- width: "6",
1929
- height: "12",
1930
- x: "47",
1931
- y: "24",
1932
- fill: "#DE1C8F",
1933
- rx: "9",
1934
- ry: "5",
1935
- transform: "rotate(60 50 50)"
1936
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
1937
- attributeName: "opacity",
1938
- begin: "-0.75s",
1939
- dur: "1s",
1940
- keyTimes: "0;1",
1941
- repeatCount: "indefinite",
1942
- values: "1;0"
1943
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
1944
- width: "6",
1945
- height: "12",
1946
- x: "47",
1947
- y: "24",
1948
- fill: "#DE1C8F",
1949
- rx: "9",
1950
- ry: "5",
1951
- transform: "rotate(90 50 50)"
1952
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
1953
- attributeName: "opacity",
1954
- begin: "-0.6666666666666666s",
1955
- dur: "1s",
1956
- keyTimes: "0;1",
1957
- repeatCount: "indefinite",
1958
- values: "1;0"
1959
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
1960
- width: "6",
1961
- height: "12",
1962
- x: "47",
1963
- y: "24",
1964
- fill: "#DE1C8F",
1965
- rx: "9",
1966
- ry: "5",
1967
- transform: "rotate(120 50 50)"
1968
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
1969
- attributeName: "opacity",
1970
- begin: "-0.5833333333333334s",
1971
- dur: "1s",
1972
- keyTimes: "0;1",
1973
- repeatCount: "indefinite",
1974
- values: "1;0"
1975
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
1976
- width: "6",
1977
- height: "12",
1978
- x: "47",
1979
- y: "24",
1980
- fill: "#DE1C8F",
1981
- rx: "9",
1982
- ry: "5",
1983
- transform: "rotate(150 50 50)"
1984
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
1985
- attributeName: "opacity",
1986
- begin: "-0.5s",
1987
- dur: "1s",
1988
- keyTimes: "0;1",
1989
- repeatCount: "indefinite",
1990
- values: "1;0"
1991
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
1992
- width: "6",
1993
- height: "12",
1994
- x: "47",
1995
- y: "24",
1996
- fill: "#DE1C8F",
1997
- rx: "9",
1998
- ry: "5",
1999
- transform: "rotate(180 50 50)"
2000
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
2001
- attributeName: "opacity",
2002
- begin: "-0.4166666666666667s",
2003
- dur: "1s",
2004
- keyTimes: "0;1",
2005
- repeatCount: "indefinite",
2006
- values: "1;0"
2007
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
2008
- width: "6",
2009
- height: "12",
2010
- x: "47",
2011
- y: "24",
2012
- fill: "#DE1C8F",
2013
- rx: "9",
2014
- ry: "5",
2015
- transform: "rotate(210 50 50)"
2016
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
2017
- attributeName: "opacity",
2018
- begin: "-0.3333333333333333s",
2019
- dur: "1s",
2020
- keyTimes: "0;1",
2021
- repeatCount: "indefinite",
2022
- values: "1;0"
2023
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
2024
- width: "6",
2025
- height: "12",
2026
- x: "47",
2027
- y: "24",
2028
- fill: "#DE1C8F",
2029
- rx: "9",
2030
- ry: "5",
2031
- transform: "rotate(240 50 50)"
2032
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
2033
- attributeName: "opacity",
2034
- begin: "-0.25s",
2035
- dur: "1s",
2036
- keyTimes: "0;1",
2037
- repeatCount: "indefinite",
2038
- values: "1;0"
2039
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
2040
- width: "6",
2041
- height: "12",
2042
- x: "47",
2043
- y: "24",
2044
- fill: "#DE1C8F",
2045
- rx: "9",
2046
- ry: "5",
2047
- transform: "rotate(270 50 50)"
2048
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
2049
- attributeName: "opacity",
2050
- begin: "-0.16666666666666666s",
2051
- dur: "1s",
2052
- keyTimes: "0;1",
2053
- repeatCount: "indefinite",
2054
- values: "1;0"
2055
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
2056
- width: "6",
2057
- height: "12",
2058
- x: "47",
2059
- y: "24",
2060
- fill: "#DE1C8F",
2061
- rx: "9",
2062
- ry: "5",
2063
- transform: "rotate(300 50 50)"
2064
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
2065
- attributeName: "opacity",
2066
- begin: "-0.08333333333333333s",
2067
- dur: "1s",
2068
- keyTimes: "0;1",
2069
- repeatCount: "indefinite",
2070
- values: "1;0"
2071
- })), /*#__PURE__*/React__default["default"].createElement("rect", {
2072
- width: "6",
2073
- height: "12",
2074
- x: "47",
2075
- y: "24",
2076
- fill: "#DE1C8F",
2077
- rx: "9",
2078
- ry: "5",
2079
- transform: "rotate(330 50 50)"
2080
- }, /*#__PURE__*/React__default["default"].createElement("animate", {
2081
- attributeName: "opacity",
2082
- begin: "0s",
2083
- dur: "1s",
2084
- keyTimes: "0;1",
2085
- repeatCount: "indefinite",
2086
- values: "1;0"
2087
- }))));
2088
- };
2089
- Loading.propTypes = {};
2090
-
2091
- const Form$1 = ({
2074
+ const Form = ({
2092
2075
  className,
2093
2076
  formId,
2094
- fields,
2095
- formData,
2096
- setFormId,
2097
- setValue,
2098
- validateField,
2099
- defaultLanguage,
2100
- errors,
2101
- pagingInfo,
2102
- togglePageForward,
2103
- togglePageBack,
2104
- submitForm,
2105
- status,
2106
- setDateRangeValues,
2107
- useDefaultTheme,
2108
- entries,
2109
- customSubmit,
2110
- setCheckboxValue
2077
+ useDefaultTheme = true,
2078
+ customSubmit
2111
2079
  }) => {
2112
- React.useEffect(() => {
2113
- setFormId(formId);
2114
- }, [formId, setFormId]); // NF change rule of hooks
2080
+ const dispatch = reactRedux.useDispatch();
2081
+
2082
+ const _setFormId = formId => {
2083
+ dispatch(setFormId(formId));
2084
+ };
2085
+
2086
+ const _setValue = (formId, id, value) => {
2087
+ dispatch(setValue(formId, id, value));
2088
+ };
2089
+
2090
+ const _setCheckboxValue = (formId, id, value, isChecked) => {
2091
+ dispatch(setCheckboxValue(formId, id, value, isChecked));
2092
+ };
2093
+
2094
+ const _setDateRangeValues = (formId, id, dateType, value) => {
2095
+ dispatch(setDateRangeValues(formId, id, dateType, value));
2096
+ };
2097
+
2098
+ const _validateField = (formId, id, value) => {
2099
+ dispatch(validateField(formId, id, value));
2100
+ };
2101
+
2102
+ const _togglePageForward = (formId, pageIndex) => {
2103
+ dispatch(togglePageForward(formId, pageIndex));
2104
+ };
2105
+
2106
+ const _togglePageBack = (formId, pageIndex) => {
2107
+ dispatch(togglePageBack(formId, pageIndex));
2108
+ };
2109
+
2110
+ const _submitForm = formId => {
2111
+ dispatch(submitForm(formId));
2112
+ };
2115
2113
 
2116
- if (!formId) return null;
2117
- let formRender;
2114
+ React.useEffect(() => {
2115
+ if (formId) _setFormId(formId);
2116
+ }, [formId]);
2117
+ const selectFormFields = makeSelectPagedFields(formId);
2118
+ const selectFormStatus = makeSelectFormStatus(formId);
2119
+ const selectPagingInfo = makeSelectPagingInfo(formId);
2120
+ const selectDefaultLang = makeSelectDefaultLang(formId);
2121
+ const selectFormSettings = makeSelectFormSettings(formId);
2122
+ const selectFormFieldErrors = makeSelectFormFieldErrors(formId);
2123
+ const selectFormEntries = makeSelectFormEntries(formId);
2124
+ const selectFormPostData = makeSelectFormPostData(formId);
2125
+ const status = reactRedux.useSelector(selectFormStatus);
2126
+ const fields = reactRedux.useSelector(selectFormFields);
2127
+ const pagingInfo = reactRedux.useSelector(selectPagingInfo);
2128
+ const defaultLanguage = reactRedux.useSelector(selectDefaultLang);
2129
+ const settings = reactRedux.useSelector(selectFormSettings);
2130
+ const errors = reactRedux.useSelector(selectFormFieldErrors);
2131
+ const entries = reactRedux.useSelector(selectFormEntries);
2132
+ const formData = reactRedux.useSelector(selectFormPostData);
2118
2133
 
2119
2134
  if (pagingInfo && pagingInfo.pageCount > 1) {
2120
2135
  const isLastPage = pagingInfo.pageCount == pagingInfo.pageIndex + 1;
2121
- formRender = /*#__PURE__*/React__default["default"].createElement(FormStyled, {
2136
+ return /*#__PURE__*/React__default["default"].createElement(ThemeProvider, {
2137
+ theme: defaultTheme
2138
+ }, /*#__PURE__*/React__default["default"].createElement(FormStyled, {
2122
2139
  className: className,
2123
2140
  id: formId,
2124
2141
  useDefaultTheme: useDefaultTheme
2125
- }, status && status.isLoading || status && status.isSubmitting && /*#__PURE__*/React__default["default"].createElement(Loading, {
2126
- className: "loading"
2127
- }), !status || status && !status.isLoading && !status.isSubmitting && !status.hasSuccess && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, pagingInfo.pageIndex > 0 && /*#__PURE__*/React__default["default"].createElement(Button, {
2142
+ }, !status || status && !status.isLoading && !status.isSubmitting && !status.hasSuccess && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, pagingInfo.pageIndex > 0 && /*#__PURE__*/React__default["default"].createElement(Button, {
2128
2143
  type: "button",
2129
2144
  text: "Go Back",
2130
- action: () => togglePageBack(formId, pagingInfo.pageIndex - 1),
2145
+ action: () => _togglePageBack(formId, pagingInfo.pageIndex - 1),
2131
2146
  useDefaultTheme: useDefaultTheme
2132
2147
  }), /*#__PURE__*/React__default["default"].createElement(FormComposer, {
2133
2148
  fields: fields,
2134
2149
  formData: formData,
2135
2150
  formId: formId,
2136
- setValue: setValue,
2137
- validateField: validateField,
2151
+ setValue: _setValue,
2152
+ validateField: _validateField,
2138
2153
  defaultLanguage: defaultLanguage,
2139
2154
  errors: errors,
2140
2155
  pagingInfo: pagingInfo,
2141
2156
  useDefaultTheme: useDefaultTheme,
2142
2157
  entries: entries,
2143
- setDateRangeValues: setDateRangeValues,
2144
- setCheckboxValue: setCheckboxValue
2158
+ setDateRangeValues: _setDateRangeValues,
2159
+ setCheckboxValue: _setCheckboxValue
2145
2160
  }), !isLastPage && /*#__PURE__*/React__default["default"].createElement(Button, {
2146
2161
  type: "button",
2147
2162
  text: "Next",
2148
- action: () => togglePageForward(formId, pagingInfo.pageIndex + 1),
2163
+ action: () => _togglePageForward(formId, pagingInfo.pageIndex + 1),
2149
2164
  useDefaultTheme: useDefaultTheme
2150
2165
  }), isLastPage && /*#__PURE__*/React__default["default"].createElement(Button, {
2151
- text: "Submit",
2166
+ text: (settings === null || settings === void 0 ? void 0 : settings.submitButtonText) || "Submit",
2152
2167
  type: "button",
2153
2168
  action: () => {
2154
- submitForm(formId);
2169
+ _submitForm(formId);
2170
+
2155
2171
  if (customSubmit) customSubmit();
2156
2172
  },
2157
2173
  useDefaultTheme: useDefaultTheme
2158
2174
  })), status && status.hasSuccess && status.successMessage && /*#__PURE__*/React__default["default"].createElement("p", {
2159
2175
  className: "success-message"
2160
- }, status.successMessage));
2176
+ }, status.successMessage)));
2161
2177
  } else {
2162
- formRender = /*#__PURE__*/React__default["default"].createElement(FormStyled, {
2178
+ return /*#__PURE__*/React__default["default"].createElement(ThemeProvider, {
2179
+ theme: defaultTheme
2180
+ }, /*#__PURE__*/React__default["default"].createElement(FormStyled, {
2163
2181
  className: className,
2164
2182
  id: formId,
2165
2183
  useDefaultTheme: useDefaultTheme
2166
- }, status && status.isLoading || status && status.isSubmitting && /*#__PURE__*/React__default["default"].createElement(Loading, {
2167
- className: "loading"
2168
- }), !status || status && !status.isLoading && !status.isSubmitting && !status.hasSuccess && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(FormComposer, {
2184
+ }, !status || status && !status.isLoading && !status.isSubmitting && !status.hasSuccess && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(FormComposer, {
2169
2185
  fields: fields,
2170
2186
  formId: formId,
2171
- setValue: setValue,
2172
- setDateRangeValues: setDateRangeValues,
2173
- validateField: validateField,
2187
+ setValue: _setValue,
2188
+ setDateRangeValues: _setDateRangeValues,
2189
+ validateField: _validateField,
2174
2190
  defaultLanguage: defaultLanguage,
2175
2191
  errors: errors,
2176
2192
  useDefaultTheme: useDefaultTheme,
2177
2193
  entries: entries,
2178
- setCheckboxValue: setCheckboxValue
2194
+ setCheckboxValue: _setCheckboxValue
2179
2195
  }), /*#__PURE__*/React__default["default"].createElement(Button, {
2180
- text: "Submit",
2196
+ text: (settings === null || settings === void 0 ? void 0 : settings.submitButtonText) || "Submit",
2181
2197
  type: "button",
2182
2198
  action: () => {
2183
- submitForm(formId);
2199
+ _submitForm(formId);
2200
+
2184
2201
  if (customSubmit) customSubmit();
2185
2202
  },
2186
2203
  useDefaultTheme: useDefaultTheme
2187
2204
  })), status && status.hasSuccess && status.successMessage && /*#__PURE__*/React__default["default"].createElement("p", {
2188
2205
  className: "success-message"
2189
- }, status.successMessage));
2206
+ }, status.successMessage)));
2190
2207
  }
2191
-
2192
- return /*#__PURE__*/React__default["default"].createElement(ThemeProvider, {
2193
- theme: defaultTheme
2194
- }, formRender);
2195
2208
  };
2196
2209
 
2197
- Form$1.propTypes = {
2210
+ Form.propTypes = {
2198
2211
  className: PropTypes__default["default"].string,
2199
2212
  formId: PropTypes__default["default"].string,
2200
- fields: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
2201
- formData: PropTypes__default["default"].object,
2202
- entries: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
2203
2213
  useDefaultTheme: PropTypes__default["default"].bool,
2204
- setFormId: PropTypes__default["default"].func,
2205
- setValue: PropTypes__default["default"].func,
2206
- setDateRangeValues: PropTypes__default["default"].func,
2207
- validateField: PropTypes__default["default"].func,
2208
- defaultLanguage: PropTypes__default["default"].string,
2209
- errors: PropTypes__default["default"].array,
2210
- pagingInfo: PropTypes__default["default"].object,
2211
- togglePageForward: PropTypes__default["default"].func,
2212
- togglePageBack: PropTypes__default["default"].func,
2213
- submitForm: PropTypes__default["default"].func,
2214
- customSubmit: PropTypes__default["default"].func,
2215
- status: PropTypes__default["default"].object,
2216
- setCheckboxValue: PropTypes__default["default"].func
2217
- };
2218
-
2219
- const action = (type, payload = {}) => ({
2220
- type,
2221
- ...payload
2222
- });
2223
-
2224
- const submitForm = formId => action(SUBMIT_FORM_FOR_VALIDATION, {
2225
- formId
2226
- });
2227
- const setFormId = formId => action(SET_FORM_ID, {
2228
- formId
2229
- });
2230
- const setValue = (formId, id, value) => action(SET_FIELD_VALUE, {
2231
- formId,
2232
- id,
2233
- value
2234
- });
2235
- const setCheckboxValue = (formId, id, value, isChecked) => action(SET_CHECKBOX_VALUE, {
2236
- formId,
2237
- id,
2238
- value,
2239
- isChecked
2240
- });
2241
- const setDateRangeValues = (formId, id, dateType, value) => action(SET_DATE_RANGE_VALUES, {
2242
- formId,
2243
- id,
2244
- dateType,
2245
- value
2246
- });
2247
- const validateField = (formId, id, value) => action(VALIDATE_FIELD, {
2248
- formId,
2249
- id,
2250
- value
2251
- });
2252
- const togglePageForward = (formId, pageIndex) => action(PAGE_FORWARD, {
2253
- formId,
2254
- pageIndex
2255
- });
2256
- const togglePageBack = (formId, pageIndex) => action(PAGE_BACK, {
2257
- formId,
2258
- pageIndex
2259
- });
2260
-
2261
- const FormContainer = ({
2262
- className,
2263
- formId,
2264
- fields,
2265
- formData,
2266
- setFormId,
2267
- setValue,
2268
- setDateRangeValues,
2269
- validateField,
2270
- defaultLanguage,
2271
- errors,
2272
- pagingInfo,
2273
- togglePageForward,
2274
- togglePageBack,
2275
- submitForm,
2276
- status,
2277
- useDefaultTheme = true,
2278
- entries,
2279
- setCheckboxValue,
2280
- customSubmit
2281
- }) => {
2282
- return /*#__PURE__*/React__default["default"].createElement(Form$1, {
2283
- className: className,
2284
- formId: formId,
2285
- fields: fields,
2286
- setFormId: setFormId,
2287
- setValue: setValue,
2288
- setDateRangeValues: setDateRangeValues,
2289
- validateField: validateField,
2290
- defaultLanguage: defaultLanguage,
2291
- errors: errors,
2292
- pagingInfo: pagingInfo,
2293
- togglePageForward: togglePageForward,
2294
- togglePageBack: togglePageBack,
2295
- submitForm: submitForm,
2296
- status: status,
2297
- useDefaultTheme: useDefaultTheme,
2298
- entries: entries,
2299
- formData: formData,
2300
- setCheckboxValue: setCheckboxValue,
2301
- customSubmit: customSubmit
2302
- });
2303
- };
2304
-
2305
- FormContainer.propTypes = {
2306
- className: PropTypes__default["default"].string,
2307
- formId: PropTypes__default["default"].string,
2308
- fields: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
2309
- formData: PropTypes__default["default"].object,
2310
- entries: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
2311
- setFormId: PropTypes__default["default"].func,
2312
- setDateRangeValues: PropTypes__default["default"].func,
2313
- setValue: PropTypes__default["default"].func,
2314
- useDefaultTheme: PropTypes__default["default"].bool,
2315
- validateField: PropTypes__default["default"].func,
2316
- defaultLanguage: PropTypes__default["default"].string,
2317
- errors: PropTypes__default["default"].array,
2318
- pagingInfo: PropTypes__default["default"].object,
2319
- togglePageForward: PropTypes__default["default"].func,
2320
- togglePageBack: PropTypes__default["default"].func,
2321
- submitForm: PropTypes__default["default"].func,
2322
- status: PropTypes__default["default"].object,
2323
- setCheckboxValue: PropTypes__default["default"].func,
2324
2214
  customSubmit: PropTypes__default["default"].func
2325
2215
  };
2326
2216
 
2327
- const mapStateToProps = (state, props) => {
2328
- const {
2329
- formId
2330
- } = props;
2331
- const selectFormFields = selectPagedFields(formId);
2332
- const selectIsLoading = makeSelectIsLoading(formId);
2333
- const selectDefaultLang = makeSelectDefaultLang(formId);
2334
- return state => ({
2335
- fields: selectFormFields(state),
2336
- loading: selectIsLoading(state),
2337
- defaultLanguage: selectDefaultLang(state),
2338
- errors: selectFieldErrors(state, formId),
2339
- pagingInfo: selectPagingInfo(state, formId),
2340
- status: selectFormStatus(state, formId),
2341
- entries: selectEntries(state, formId),
2342
- formData: selectPostData(state, formId)
2343
- });
2344
- };
2345
-
2346
- const mapDispatchToProps = dispatch => {
2347
- return {
2348
- setFormId: formId => dispatch(setFormId(formId)),
2349
- setValue: (formId, id, value) => dispatch(setValue(formId, id, value)),
2350
- setCheckboxValue: (formId, id, value, isChecked) => dispatch(setCheckboxValue(formId, id, value, isChecked)),
2351
- setDateRangeValues: (formId, id, dateType, value) => dispatch(setDateRangeValues(formId, id, dateType, value)),
2352
- validateField: (formId, id, value) => dispatch(validateField(formId, id, value)),
2353
- togglePageForward: (formId, pageIndex) => dispatch(togglePageForward(formId, pageIndex)),
2354
- togglePageBack: (formId, pageIndex) => dispatch(togglePageBack(formId, pageIndex)),
2355
- submitForm: formId => dispatch(submitForm(formId))
2356
- };
2357
- };
2358
-
2359
- var Form = reactRedux.connect(mapStateToProps, mapDispatchToProps)(FormContainer);
2360
-
2217
+ exports.actions = actions;
2361
2218
  exports["default"] = Form;
2362
2219
  exports.reducer = reducer;
2363
2220
  exports.sagas = formV2Sagas;
2221
+ exports.selectors = selectors;
2364
2222
  //# sourceMappingURL=forms.js.map