Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / components / import / cm / csv.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x0810=['cm_hopper_black','VoiceQueue','findAll','outbound','get','dialCheckDuplicateType','sequelize','query','VoiceQueueId','onlyIfOpen','all','CmList','BlackLists','Campaign','Lists','always','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','SIGINT','info','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','bluebird','util','lodash','squel','../../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','index','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','map','errors','message','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','length','find','duplicate','Duplicate\x20Contact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','cm_hopper','\x20=\x20?','fromQuery','id\x20IN\x20?','str','calleridnum','cm_hopper_final'];(function(_0x3ad4f1,_0x4135b1){var _0xa4be3=function(_0x262629){while(--_0x262629){_0x3ad4f1['push'](_0x3ad4f1['shift']());}};_0xa4be3(++_0x4135b1);}(_0x0810,0xfa));var _0x0081=function(_0x1daacc,_0x4a7eb1){_0x1daacc=_0x1daacc-0x0;var _0x4c6dad=_0x0810[_0x1daacc];return _0x4c6dad;};'use strict';var BPromise=require(_0x0081('0x0'));var util=require(_0x0081('0x1'));var _=require(_0x0081('0x2'));var fs=require('fs');var squel=require(_0x0081('0x3'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0x0081('0x4'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')('api');config[_0x0081('0x5')]=_[_0x0081('0x6')](config['redis'],{'host':_0x0081('0x7'),'port':0x18eb});var socket=require(_0x0081('0x8'))(new Redis(config[_0x0081('0x5')]));require('../../../api/cmContact/cmContact.socket')[_0x0081('0x9')](socket);try{if(!process[_0x0081('0xa')][0x2]||process['argv'][0x2]===_0x0081('0xb')||process[_0x0081('0xa')][0x2]==='null'){throw new Error(_0x0081('0xc'));}var FILEPATH=process['argv'][0x2];if(!process['argv'][0x3]||process['argv'][0x3]===_0x0081('0xb')||process[_0x0081('0xa')][0x3]==='null'||!process[_0x0081('0xa')][0x4]||process[_0x0081('0xa')][0x4]===_0x0081('0xb')||process[_0x0081('0xa')][0x4]===_0x0081('0xd')){throw new Error(_0x0081('0xe'));}var FIELDS=_[_0x0081('0xf')](process[_0x0081('0xa')][0x3][_0x0081('0x10')](','),process[_0x0081('0xa')][0x4]['split'](','));if(!process[_0x0081('0xa')][0x5]||process[_0x0081('0xa')][0x5]===_0x0081('0xb')||process['argv'][0x5]==='null'){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x0081('0xa')][0x6]&&process['argv'][0x6]!==_0x0081('0xb')&&process[_0x0081('0xa')][0x6]!==_0x0081('0xd')?process[_0x0081('0xa')][0x6]:null;var DUPLICATES=process[_0x0081('0xa')][0x7]&&process[_0x0081('0xa')][0x7]!==_0x0081('0xb')&&process[_0x0081('0xa')][0x7]!=='null'?process['argv'][0x7]:null;if(!process['argv'][0x8]||process[_0x0081('0xa')][0x8]==='undefined'||process['argv'][0x8]===_0x0081('0xd')){throw new Error(_0x0081('0x11'));}var SOCKET_TIMESTAMP=process[_0x0081('0xa')][0x8];}catch(_0x3e517a){logger['error'](_0x3e517a);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x4a9109,_0x245f25,_0x16a9c3,_0x42cb82){var _0x5cf0eb={'message':_0x245f25};_0x5cf0eb[_0x4a9109]=!![];if(_0x16a9c3){_0x5cf0eb['contact']=_0x16a9c3;}if(_0x42cb82){_0x5cf0eb[_0x0081('0x12')]=_0x42cb82;}return _0x5cf0eb;}function isEmail(_0x32577d){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x0081('0x13')](_0x32577d);}function checkRow(_0x2dbada,_0x25f0c3,_0x48ed7d){return new BPromise(function(_0x187ab7,_0x31c39e){if(_[_0x0081('0x14')](_0x2dbada)){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x16'),null,_0x48ed7d));}if(_0x2dbada['errors']&&_0x2dbada['errors']['length']){var _0xbeb84c=_[_0x0081('0x17')](_0x2dbada[_0x0081('0x18')],_0x0081('0x19'))[_0x0081('0x1a')](';');return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0xbeb84c,null,_0x48ed7d));}var _0x4e5531={};for(var _0x48a948 in FIELDS){if(FIELDS[_0x0081('0x1b')](_0x48a948)&&FIELDS[_0x48a948]){_0x4e5531[_0x48a948]=_0x2dbada[_0x0081('0x1c')][0x0][FIELDS[_0x48a948]]||_0x2dbada['data'][0x0]['\ufeff'+FIELDS[_0x48a948]];}}if(!_0x4e5531[_0x0081('0x1d')]){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),'firstName\x20not\x20specified!',null,_0x48ed7d));}if(!_0x4e5531[_0x0081('0x1e')]){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x1f'),null,_0x48ed7d));}if(_0x4e5531['birthDate']){var _0x460600=moment(_0x4e5531['birthDate'],_0x0081('0x20'));if(!_0x460600[_0x0081('0x21')]()){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x22'),null,_0x48ed7d));}}if(_0x4e5531[_0x0081('0x23')]){if(!isEmail(_0x4e5531[_0x0081('0x23')])){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x24'),null,_0x48ed7d));}}_0x4e5531[_0x0081('0x25')]=LISTID;_0x4e5531['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x0081('0x26')]&&_0x25f0c3){var _0x898518={};for(var _0x16d221=0x0,_0x37be55=DUPLICATES[_0x0081('0x26')];_0x16d221<_0x37be55;_0x16d221+=0x1){_0x898518[DUPLICATES[_0x16d221]]=_0x4e5531[DUPLICATES[_0x16d221]];}var _0x30d2e1=_[_0x0081('0x27')](_0x25f0c3,_0x898518);if(_0x30d2e1){return _0x31c39e(handleCheckRowError(_0x0081('0x28'),_0x0081('0x29'),_0x30d2e1,_0x48ed7d));}}return db['CmContact'][_0x0081('0x2a')](_0x4e5531,{'raw':!![],'hooks':![],'fields':_[_0x0081('0x2b')](_0x4e5531)})[_0x0081('0x2c')](function(_0x37fbda){if(DUPLICATES&&DUPLICATES[_0x0081('0x26')]&&_0x25f0c3){_0x25f0c3[_0x0081('0x2d')](_[_0x0081('0x2e')](_0x4e5531,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x37fbda['id'];return _0x187ab7();})[_0x0081('0x2f')](function(_0x1bdb27){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x30')+(_0x1bdb27[_0x0081('0x19')]||JSON[_0x0081('0x31')](_0x1bdb27)),null,_0x48ed7d));});});}function checkHopper(){function _0x4a22d9(){return function(_0x156cd8){logger[_0x0081('0x15')](_0x0081('0x32'),_0x0081('0x33'),util[_0x0081('0x34')](_0x156cd8,{'showHidden':![],'depth':null}));};}var _0x4d359c=function(_0x1942de,_0x1ace87){var _0x44b8be=squel[_0x0081('0x35')]()[_0x0081('0x36')]('cm_hopper')['fromQuery']([_0x0081('0x1e'),_0x0081('0x37'),_0x0081('0x38'),'ListId',_0x1ace87,_0x0081('0x39'),_0x0081('0x3a')],squel[_0x0081('0x3b')]()[_0x0081('0x3c')]('phone',_0x0081('0x1e'))[_0x0081('0x3c')](_0x0081('0x3d'),_0x0081('0x37'))[_0x0081('0x3c')]('id',_0x0081('0x38'))[_0x0081('0x3c')](LISTID['toString'](),_0x0081('0x25'))[_0x0081('0x3c')](_0x1942de['id'][_0x0081('0x3e')](),_0x1ace87)[_0x0081('0x3c')](_0x0081('0x3d'),'createdAt')[_0x0081('0x3c')]('NOW()','updatedAt')['from'](_0x0081('0x3f'))['where'](_0x0081('0x40'))[_0x0081('0x41')](_0x0081('0x42'),LISTID['toString']())[_0x0081('0x41')](_0x0081('0x43'))[_0x0081('0x41')](_0x0081('0x44'),squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x1e'))[_0x0081('0x45')](_0x0081('0x46'))['where'](_0x1ace87+_0x0081('0x47'),_0x1942de['id'][_0x0081('0x3e')]())))[_0x0081('0x3e')]();return _0x44b8be;};var _0x1565f1=function(_0x48eeff,_0x50befa){var _0x5a8203=squel[_0x0081('0x35')]()[_0x0081('0x36')](_0x0081('0x46'))[_0x0081('0x48')]([_0x0081('0x1e'),'scheduledAt',_0x0081('0x38'),_0x0081('0x25'),_0x50befa,_0x0081('0x39'),_0x0081('0x3a')],squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x1e'),_0x0081('0x1e'))['field'](_0x0081('0x3d'),_0x0081('0x37'))['field']('id',_0x0081('0x38'))['field'](LISTID[_0x0081('0x3e')](),'ListId')[_0x0081('0x3c')](_0x48eeff['id'][_0x0081('0x3e')](),_0x50befa)[_0x0081('0x3c')]('NOW()',_0x0081('0x39'))[_0x0081('0x3c')]('NOW()',_0x0081('0x3a'))[_0x0081('0x45')](_0x0081('0x3f'))[_0x0081('0x41')](_0x0081('0x40'))[_0x0081('0x41')](_0x0081('0x42'),LISTID[_0x0081('0x3e')]())[_0x0081('0x41')](_0x0081('0x49'),squel[_0x0081('0x4a')](hopperContacts))[_0x0081('0x41')](_0x0081('0x43'))[_0x0081('0x41')](_0x0081('0x44'),squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x4b'))['from'](_0x0081('0x4c'))[_0x0081('0x41')](_0x50befa+_0x0081('0x47'),_0x48eeff['id'][_0x0081('0x3e')]()))[_0x0081('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x1e'))[_0x0081('0x45')]('cm_hopper')[_0x0081('0x41')](_0x50befa+_0x0081('0x47'),_0x48eeff['id'][_0x0081('0x3e')]())))[_0x0081('0x3e')]();return _0x5a8203;};function _0x516ae0(_0x2323a7,_0x4b0be2){var _0x2b1765=squel['insert']()['into'](_0x0081('0x46'))[_0x0081('0x48')]([_0x0081('0x1e'),_0x0081('0x37'),_0x0081('0x38'),'ListId',_0x4b0be2,_0x0081('0x39'),_0x0081('0x3a')],squel['select']()[_0x0081('0x3c')](_0x0081('0x1e'),'phone')['field'](_0x0081('0x3d'),_0x0081('0x37'))['field']('id',_0x0081('0x38'))[_0x0081('0x3c')](LISTID[_0x0081('0x3e')](),'ListId')['field'](_0x2323a7['id'][_0x0081('0x3e')](),_0x4b0be2)[_0x0081('0x3c')]('NOW()','createdAt')[_0x0081('0x3c')](_0x0081('0x3d'),_0x0081('0x3a'))[_0x0081('0x45')](_0x0081('0x3f'))[_0x0081('0x41')](_0x0081('0x40'))[_0x0081('0x41')]('ListId\x20=\x20?',LISTID[_0x0081('0x3e')]())[_0x0081('0x41')](_0x0081('0x49'),squel[_0x0081('0x4a')](hopperContacts))[_0x0081('0x41')](_0x0081('0x43')))[_0x0081('0x3e')]();return _0x2b1765;}function _0x20e3e2(_0x5ca391,_0x29f0f0){var _0x10bdfc=squel[_0x0081('0x35')]()[_0x0081('0x36')](_0x0081('0x4d'))[_0x0081('0x48')]([_0x0081('0x1e'),_0x0081('0x38'),'ListId',_0x29f0f0,'createdAt','updatedAt'],squel['select']()[_0x0081('0x3c')](_0x0081('0x1e'),_0x0081('0x1e'))[_0x0081('0x3c')]('id',_0x0081('0x38'))[_0x0081('0x3c')](LISTID[_0x0081('0x3e')](),'ListId')['field'](_0x5ca391['id'][_0x0081('0x3e')](),_0x29f0f0)[_0x0081('0x3c')](_0x0081('0x3d'),_0x0081('0x39'))[_0x0081('0x3c')](_0x0081('0x3d'),'updatedAt')[_0x0081('0x45')](_0x0081('0x3f'))[_0x0081('0x41')](_0x0081('0x40'))[_0x0081('0x41')](_0x0081('0x42'),LISTID['toString']())[_0x0081('0x41')](_0x0081('0x49'),squel[_0x0081('0x4a')](hopperContacts))[_0x0081('0x41')]('phone\x20IS\x20NOT\x20NULL'))[_0x0081('0x3e')]();return _0x10bdfc;}return db[_0x0081('0x4e')][_0x0081('0x4f')]({'where':{'type':_0x0081('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x0081('0x2c')](function(_0xd4652a){var _0x52e1f3=[];if(_0xd4652a){var _0x7a2e9;for(var _0x58b13b=0x0,_0x4d7133;_0x58b13b<_0xd4652a['length'];_0x58b13b+=0x1){_0x4d7133=_0xd4652a[_0x58b13b][_0x0081('0x51')]({'plain':!![]});switch(_0x4d7133[_0x0081('0x52')]){case'always':_0x52e1f3[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x1565f1(_0x4d7133,_0x0081('0x55')))['then'](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;case _0x0081('0x56'):_0x52e1f3['push'](db['sequelize'][_0x0081('0x54')](_0x4d359c(_0x4d7133,_0x0081('0x55')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;default:_0x52e1f3[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x516ae0(_0x4d7133,'VoiceQueueId'))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));}}}return _0x52e1f3;})[_0x0081('0x57')]()[_0x0081('0x2c')](function(){return db[_0x0081('0x4e')][_0x0081('0x4f')]({'where':{'type':_0x0081('0x50')},'attributes':['id'],'include':[{'model':db[_0x0081('0x58')],'as':_0x0081('0x59'),'where':{'id':LISTID}}]})[_0x0081('0x2c')](function(_0x10e35f){var _0x43da1d=[];if(_0x10e35f){var _0x40399b;for(var _0x2bc690=0x0,_0x2dd510;_0x2bc690<_0x10e35f[_0x0081('0x26')];_0x2bc690+=0x1){_0x2dd510=_0x10e35f[_0x2bc690][_0x0081('0x51')]({'plain':!![]});_0x43da1d[_0x0081('0x2d')](db[_0x0081('0x53')]['query'](_0x20e3e2(_0x2dd510,_0x0081('0x55')))[_0x0081('0x2c')](function(){})['catch'](_0x4a22d9()));}}return _0x43da1d;})['all']();})[_0x0081('0x2c')](function(){return db[_0x0081('0x5a')][_0x0081('0x4f')]({'attributes':['id',_0x0081('0x52')],'include':[{'model':db['CmList'],'as':_0x0081('0x5b'),'where':{'id':LISTID}}]})[_0x0081('0x2c')](function(_0x70e0ad){var _0x3e3fe1=[];if(_0x70e0ad){for(var _0x5c6d20=0x0,_0x31ff9b;_0x5c6d20<_0x70e0ad[_0x0081('0x26')];_0x5c6d20+=0x1){_0x31ff9b=_0x70e0ad[_0x5c6d20][_0x0081('0x51')]({'plain':!![]});switch(_0x31ff9b['dialCheckDuplicateType']){case _0x0081('0x5c'):_0x3e3fe1[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x1565f1(_0x31ff9b,_0x0081('0x5d')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;case _0x0081('0x56'):_0x3e3fe1[_0x0081('0x2d')](db['sequelize'][_0x0081('0x54')](_0x4d359c(_0x31ff9b,_0x0081('0x5d')))['then'](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;default:_0x3e3fe1[_0x0081('0x2d')](db['sequelize'][_0x0081('0x54')](_0x516ae0(_0x31ff9b,_0x0081('0x5d')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));}}}return _0x3e3fe1;})['all']();})['then'](function(){return db[_0x0081('0x5a')][_0x0081('0x4f')]({'attributes':['id'],'include':[{'model':db[_0x0081('0x58')],'as':_0x0081('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x5e0e51){var _0x1ec801=[];if(_0x5e0e51){for(var _0x1acd7e=0x0,_0x2403c7;_0x1acd7e<_0x5e0e51[_0x0081('0x26')];_0x1acd7e+=0x1){_0x2403c7=_0x5e0e51[_0x1acd7e][_0x0081('0x51')]({'plain':!![]});_0x1ec801[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x20e3e2(_0x2403c7,_0x0081('0x5d')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));}}return _0x1ec801;})['all']();})['catch'](function(_0x5518e0){logger['error'](_0x0081('0x5e'),_0x0081('0x5f'),_0x5518e0[_0x0081('0x19')]);});}var processPromises=function(_0x195e6b){return BPromise[_0x0081('0x57')](promises)[_0x0081('0x2c')](function(_0x51ed5){})[_0x0081('0x2f')](function(_0xff357e){logger[_0x0081('0x15')](_0x0081('0x60'),JSON[_0x0081('0x31')](_0xff357e));})[_0x0081('0x61')](function(){socket[_0x0081('0x62')](_0x0081('0x63')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x195e6b){return _0x195e6b['resume']();}});};var endCsv=function(){return BPromise[_0x0081('0x64')]()[_0x0081('0x2c')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x0081('0x62')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x0081('0x65')](FILEPATH);}catch(_0x44e1b0){logger[_0x0081('0x15')]('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x44e1b0));}finally{process['exit'](0x0);}});};process['on'](_0x0081('0x66'),function(){logger[_0x0081('0x67')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x0081('0x10')](',');return db['CmContact'][_0x0081('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x0081('0x2c')](function(_0x17ea98){var _0x25d52a=fs[_0x0081('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x0081('0x69')](_0x25d52a,{'header':!![],'skipEmptyLines':!![],'step':function(_0x555f3d,_0x40b0a5){total+=0x1;var _0x12a6f3=total;promises[_0x0081('0x2d')](checkRow(_0x555f3d,_0x17ea98,_0x12a6f3)[_0x0081('0x2c')](function(){success+=0x1;})[_0x0081('0x2f')](function(_0x155448){if(_0x155448[_0x0081('0x15')]){errors+=0x1;delete _0x155448[_0x0081('0x15')];}else if(_0x155448[_0x0081('0x28')]){duplicates+=0x1;delete _0x155448[_0x0081('0x28')];}rows['push'](_0x155448);}));if(total%0xc8===0x0){_0x40b0a5[_0x0081('0x6a')]();return processPromises(_0x40b0a5);}},'complete':function(){return processPromises()['then'](function(){logger[_0x0081('0x67')](_0x0081('0x6b'));endCsv();});},'error':function(_0x208a0a,_0x4bbba5){logger[_0x0081('0x67')](_0x0081('0x6c'),JSON[_0x0081('0x31')](_0x208a0a));endCsv();}});})[_0x0081('0x2f')](function(_0x34ed15){logger[_0x0081('0x15')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0x0081('0x31')](_0x34ed15));});}main();