729ac373578763fae63d52cc92e91b79b0eadc58
[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 _0x2410=['YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','Duplicate\x20Contact','CmContact','then','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','inspect','insert','into','cm_hopper','fromQuery','ContactId','select','field','NOW()','scheduledAt','toString','createdAt','updatedAt','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','calleridnum','cm_hopper_final','str','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','get','always','push','VoiceQueueId','onlyIfOpen','sequelize','query','all','CmList','BlackLists','CampaignId','Campaign','cmContact,\x20%s,\x20%s','generalCheckHopper','finally','emit','resume','resolve','contact:csv_','unlinkSync','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','null','undefined','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate'];(function(_0x3ed13f,_0x1f9b18){var _0x72b687=function(_0x49e934){while(--_0x49e934){_0x3ed13f['push'](_0x3ed13f['shift']());}};_0x72b687(++_0x1f9b18);}(_0x2410,0x124));var _0x0241=function(_0x433440,_0x429425){_0x433440=_0x433440-0x0;var _0x2db97e=_0x2410[_0x433440];return _0x2db97e;};'use strict';var BPromise=require(_0x0241('0x0'));var util=require(_0x0241('0x1'));var _=require(_0x0241('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0x0241('0x3'));var Redis=require('ioredis');var db=require(_0x0241('0x4'))['db'];var config=require(_0x0241('0x5'));var logger=require(_0x0241('0x6'))(_0x0241('0x7'));config['redis']=_['defaults'](config[_0x0241('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x0241('0x9'))(new Redis(config[_0x0241('0x8')]));require(_0x0241('0xa'))['register'](socket);try{if(!process[_0x0241('0xb')][0x2]||process[_0x0241('0xb')][0x2]==='undefined'||process[_0x0241('0xb')][0x2]===_0x0241('0xc')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process['argv'][0x2];if(!process[_0x0241('0xb')][0x3]||process['argv'][0x3]===_0x0241('0xd')||process[_0x0241('0xb')][0x3]===_0x0241('0xc')||!process[_0x0241('0xb')][0x4]||process[_0x0241('0xb')][0x4]===_0x0241('0xd')||process[_0x0241('0xb')][0x4]===_0x0241('0xc')){throw new Error(_0x0241('0xe'));}var FIELDS=_[_0x0241('0xf')](process[_0x0241('0xb')][0x3]['split'](','),process[_0x0241('0xb')][0x4][_0x0241('0x10')](','));if(!process[_0x0241('0xb')][0x5]||process['argv'][0x5]===_0x0241('0xd')||process['argv'][0x5]===_0x0241('0xc')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x0241('0xb')][0x5];var COMPANYID=process['argv'][0x6]&&process[_0x0241('0xb')][0x6]!==_0x0241('0xd')&&process[_0x0241('0xb')][0x6]!==_0x0241('0xc')?process[_0x0241('0xb')][0x6]:null;var DUPLICATES=process[_0x0241('0xb')][0x7]&&process[_0x0241('0xb')][0x7]!==_0x0241('0xd')&&process[_0x0241('0xb')][0x7]!==_0x0241('0xc')?process[_0x0241('0xb')][0x7]:null;if(!process[_0x0241('0xb')][0x8]||process[_0x0241('0xb')][0x8]===_0x0241('0xd')||process[_0x0241('0xb')][0x8]===_0x0241('0xc')){throw new Error(_0x0241('0x11'));}var SOCKET_TIMESTAMP=process[_0x0241('0xb')][0x8];}catch(_0x188fd4){logger[_0x0241('0x12')](_0x188fd4);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(_0x4ad047,_0x4ff815,_0x54c4ab,_0x409539){var _0x494838={'message':_0x4ff815};_0x494838[_0x4ad047]=!![];if(_0x54c4ab){_0x494838[_0x0241('0x13')]=_0x54c4ab;}if(_0x409539){_0x494838[_0x0241('0x14')]=_0x409539;}return _0x494838;}function isEmail(_0x117db1){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))*$/[_0x0241('0x15')](_0x117db1);}function checkRow(_0x59ebed,_0x2e1eaf,_0x4e6cf4){return new BPromise(function(_0x5c62c4,_0x52a38c){if(_[_0x0241('0x16')](_0x59ebed)){return _0x52a38c(handleCheckRowError(_0x0241('0x12'),_0x0241('0x17'),null,_0x4e6cf4));}if(_0x59ebed['errors']&&_0x59ebed[_0x0241('0x18')][_0x0241('0x19')]){var _0x2b0054=_[_0x0241('0x1a')](_0x59ebed[_0x0241('0x18')],_0x0241('0x1b'))['join'](';');return _0x52a38c(handleCheckRowError(_0x0241('0x12'),_0x2b0054,null,_0x4e6cf4));}var _0x51eb64={};for(var _0x378558 in FIELDS){if(FIELDS[_0x0241('0x1c')](_0x378558)&&FIELDS[_0x378558]){_0x51eb64[_0x378558]=_0x59ebed[_0x0241('0x1d')][0x0][FIELDS[_0x378558]]||_0x59ebed['data'][0x0]['\ufeff'+FIELDS[_0x378558]];}}if(!_0x51eb64[_0x0241('0x1e')]){return _0x52a38c(handleCheckRowError(_0x0241('0x12'),_0x0241('0x1f'),null,_0x4e6cf4));}if(!_0x51eb64[_0x0241('0x20')]){return _0x52a38c(handleCheckRowError('error',_0x0241('0x21'),null,_0x4e6cf4));}if(_0x51eb64[_0x0241('0x22')]){var _0x4b0595=moment(_0x51eb64['birthDate'],_0x0241('0x23'));if(!_0x4b0595[_0x0241('0x24')]()){return _0x52a38c(handleCheckRowError(_0x0241('0x12'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x4e6cf4));}}if(_0x51eb64[_0x0241('0x25')]){if(!isEmail(_0x51eb64['email'])){return _0x52a38c(handleCheckRowError('error',_0x0241('0x26'),null,_0x4e6cf4));}}_0x51eb64[_0x0241('0x27')]=LISTID;_0x51eb64[_0x0241('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x0241('0x19')]&&_0x2e1eaf){var _0x136a48={};for(var _0x353bfe=0x0,_0x51213b=DUPLICATES[_0x0241('0x19')];_0x353bfe<_0x51213b;_0x353bfe+=0x1){_0x136a48[DUPLICATES[_0x353bfe]]=_0x51eb64[DUPLICATES[_0x353bfe]];}var _0x296a36=_[_0x0241('0x29')](_0x2e1eaf,_0x136a48);if(_0x296a36){return _0x52a38c(handleCheckRowError('duplicate',_0x0241('0x2a'),_0x296a36,_0x4e6cf4));}}return db[_0x0241('0x2b')]['create'](_0x51eb64,{'raw':!![],'hooks':![],'fields':_['keys'](_0x51eb64)})[_0x0241('0x2c')](function(_0x15cd43){if(DUPLICATES&&DUPLICATES[_0x0241('0x19')]&&_0x2e1eaf){_0x2e1eaf['push'](_['pick'](_0x51eb64,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x15cd43['id'];return _0x5c62c4();})[_0x0241('0x2d')](function(_0x4dec2b){return _0x52a38c(handleCheckRowError('error',_0x0241('0x2e')+(_0x4dec2b[_0x0241('0x1b')]||JSON[_0x0241('0x2f')](_0x4dec2b)),null,_0x4e6cf4));});});}function checkHopper(){function _0xdda727(){return function(_0x56ac89){logger[_0x0241('0x12')](_0x0241('0x30'),'checkHopper',util[_0x0241('0x31')](_0x56ac89,{'showHidden':![],'depth':null}));};}var _0x32157a=function(_0x3b9441,_0x2b8755){var _0x4985e7=squel[_0x0241('0x32')]()[_0x0241('0x33')](_0x0241('0x34'))[_0x0241('0x35')]([_0x0241('0x20'),'scheduledAt',_0x0241('0x36'),_0x0241('0x27'),_0x2b8755,'createdAt','updatedAt'],squel[_0x0241('0x37')]()[_0x0241('0x38')]('phone',_0x0241('0x20'))[_0x0241('0x38')](_0x0241('0x39'),_0x0241('0x3a'))[_0x0241('0x38')]('id',_0x0241('0x36'))['field'](LISTID[_0x0241('0x3b')](),_0x0241('0x27'))[_0x0241('0x38')](_0x3b9441['id']['toString'](),_0x2b8755)['field'](_0x0241('0x39'),_0x0241('0x3c'))['field']('NOW()',_0x0241('0x3d'))['from'](_0x0241('0x3e'))[_0x0241('0x3f')]('deletedAt\x20IS\x20NULL')['where'](_0x0241('0x40'),LISTID[_0x0241('0x3b')]())['where'](_0x0241('0x41'))[_0x0241('0x3f')](_0x0241('0x42'),squel['select']()['field']('phone')[_0x0241('0x43')](_0x0241('0x34'))['where'](_0x2b8755+_0x0241('0x44'),_0x3b9441['id'][_0x0241('0x3b')]())))['toString']();return _0x4985e7;};var _0x1f69c2=function(_0x4bf1f3,_0x2797a4){var _0x25d65d=squel['insert']()[_0x0241('0x33')](_0x0241('0x34'))[_0x0241('0x35')](['phone','scheduledAt',_0x0241('0x36'),_0x0241('0x27'),_0x2797a4,_0x0241('0x3c'),_0x0241('0x3d')],squel[_0x0241('0x37')]()[_0x0241('0x38')](_0x0241('0x20'),'phone')[_0x0241('0x38')](_0x0241('0x39'),'scheduledAt')[_0x0241('0x38')]('id',_0x0241('0x36'))[_0x0241('0x38')](LISTID['toString'](),_0x0241('0x27'))[_0x0241('0x38')](_0x4bf1f3['id']['toString'](),_0x2797a4)[_0x0241('0x38')](_0x0241('0x39'),_0x0241('0x3c'))[_0x0241('0x38')]('NOW()','updatedAt')[_0x0241('0x43')](_0x0241('0x3e'))['where'](_0x0241('0x45'))[_0x0241('0x3f')](_0x0241('0x40'),LISTID['toString']())[_0x0241('0x3f')](_0x0241('0x46'),squel['str'](hopperContacts))[_0x0241('0x3f')](_0x0241('0x41'))['where'](_0x0241('0x42'),squel[_0x0241('0x37')]()['field'](_0x0241('0x47'))[_0x0241('0x43')](_0x0241('0x48'))['where'](_0x2797a4+_0x0241('0x44'),_0x4bf1f3['id'][_0x0241('0x3b')]()))['where'](_0x0241('0x42'),squel[_0x0241('0x37')]()['field'](_0x0241('0x20'))[_0x0241('0x43')]('cm_hopper')[_0x0241('0x3f')](_0x2797a4+'\x20=\x20?',_0x4bf1f3['id'][_0x0241('0x3b')]())))[_0x0241('0x3b')]();return _0x25d65d;};function _0x222d94(_0x4579d5,_0x5f1cae){var _0x9c57aa=squel[_0x0241('0x32')]()[_0x0241('0x33')](_0x0241('0x34'))[_0x0241('0x35')]([_0x0241('0x20'),_0x0241('0x3a'),'ContactId',_0x0241('0x27'),_0x5f1cae,_0x0241('0x3c'),_0x0241('0x3d')],squel[_0x0241('0x37')]()[_0x0241('0x38')]('phone',_0x0241('0x20'))[_0x0241('0x38')](_0x0241('0x39'),_0x0241('0x3a'))[_0x0241('0x38')]('id',_0x0241('0x36'))[_0x0241('0x38')](LISTID[_0x0241('0x3b')](),'ListId')['field'](_0x4579d5['id'][_0x0241('0x3b')](),_0x5f1cae)[_0x0241('0x38')](_0x0241('0x39'),_0x0241('0x3c'))[_0x0241('0x38')](_0x0241('0x39'),_0x0241('0x3d'))[_0x0241('0x43')](_0x0241('0x3e'))[_0x0241('0x3f')](_0x0241('0x45'))[_0x0241('0x3f')](_0x0241('0x40'),LISTID[_0x0241('0x3b')]())['where'](_0x0241('0x46'),squel[_0x0241('0x49')](hopperContacts))[_0x0241('0x3f')](_0x0241('0x41')))[_0x0241('0x3b')]();return _0x9c57aa;}function _0x258838(_0x4384ae,_0x515532){var _0x12b7b9=squel['insert']()[_0x0241('0x33')](_0x0241('0x4a'))[_0x0241('0x35')](['phone',_0x0241('0x36'),_0x0241('0x27'),_0x515532,_0x0241('0x3c'),'updatedAt'],squel['select']()[_0x0241('0x38')](_0x0241('0x20'),_0x0241('0x20'))[_0x0241('0x38')]('id',_0x0241('0x36'))[_0x0241('0x38')](LISTID['toString'](),_0x0241('0x27'))[_0x0241('0x38')](_0x4384ae['id']['toString'](),_0x515532)[_0x0241('0x38')](_0x0241('0x39'),'createdAt')['field'](_0x0241('0x39'),'updatedAt')['from']('cm_contacts')[_0x0241('0x3f')](_0x0241('0x45'))[_0x0241('0x3f')](_0x0241('0x40'),LISTID[_0x0241('0x3b')]())[_0x0241('0x3f')](_0x0241('0x46'),squel[_0x0241('0x49')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x0241('0x3b')]();return _0x12b7b9;}return db[_0x0241('0x4b')][_0x0241('0x4c')]({'where':{'type':_0x0241('0x4d')},'attributes':['id',_0x0241('0x4e')],'include':[{'model':db['CmList'],'as':_0x0241('0x4f'),'where':{'id':LISTID}}]})[_0x0241('0x2c')](function(_0x30ea1e){var _0x19e72a=[];if(_0x30ea1e){var _0xbe7d7b;for(var _0x48aaf7=0x0,_0x247869;_0x48aaf7<_0x30ea1e[_0x0241('0x19')];_0x48aaf7+=0x1){_0x247869=_0x30ea1e[_0x48aaf7][_0x0241('0x50')]({'plain':!![]});switch(_0x247869[_0x0241('0x4e')]){case _0x0241('0x51'):_0x19e72a[_0x0241('0x52')](db['sequelize']['query'](_0x1f69c2(_0x247869,_0x0241('0x53')))[_0x0241('0x2c')](function(){})[_0x0241('0x2d')](_0xdda727()));break;case _0x0241('0x54'):_0x19e72a[_0x0241('0x52')](db[_0x0241('0x55')][_0x0241('0x56')](_0x32157a(_0x247869,'VoiceQueueId'))[_0x0241('0x2c')](function(){})[_0x0241('0x2d')](_0xdda727()));break;default:_0x19e72a[_0x0241('0x52')](db[_0x0241('0x55')][_0x0241('0x56')](_0x222d94(_0x247869,_0x0241('0x53')))[_0x0241('0x2c')](function(){})['catch'](_0xdda727()));}}}return _0x19e72a;})[_0x0241('0x57')]()[_0x0241('0x2c')](function(){return db[_0x0241('0x4b')]['findAll']({'where':{'type':_0x0241('0x4d')},'attributes':['id'],'include':[{'model':db[_0x0241('0x58')],'as':_0x0241('0x59'),'where':{'id':LISTID}}]})[_0x0241('0x2c')](function(_0xd830b3){var _0x28fca1=[];if(_0xd830b3){var _0x1a41ad;for(var _0x398469=0x0,_0x4320bd;_0x398469<_0xd830b3[_0x0241('0x19')];_0x398469+=0x1){_0x4320bd=_0xd830b3[_0x398469][_0x0241('0x50')]({'plain':!![]});_0x28fca1[_0x0241('0x52')](db[_0x0241('0x55')][_0x0241('0x56')](_0x258838(_0x4320bd,_0x0241('0x53')))[_0x0241('0x2c')](function(){})[_0x0241('0x2d')](_0xdda727()));}}return _0x28fca1;})['all']();})[_0x0241('0x2c')](function(){return db['Campaign'][_0x0241('0x4c')]({'attributes':['id',_0x0241('0x4e')],'include':[{'model':db['CmList'],'as':_0x0241('0x4f'),'where':{'id':LISTID}}]})[_0x0241('0x2c')](function(_0x48500d){var _0x30dce3=[];if(_0x48500d){for(var _0x3d560f=0x0,_0x3819cc;_0x3d560f<_0x48500d[_0x0241('0x19')];_0x3d560f+=0x1){_0x3819cc=_0x48500d[_0x3d560f][_0x0241('0x50')]({'plain':!![]});switch(_0x3819cc[_0x0241('0x4e')]){case _0x0241('0x51'):_0x30dce3[_0x0241('0x52')](db['sequelize']['query'](_0x1f69c2(_0x3819cc,_0x0241('0x5a')))[_0x0241('0x2c')](function(){})[_0x0241('0x2d')](_0xdda727()));break;case _0x0241('0x54'):_0x30dce3['push'](db[_0x0241('0x55')][_0x0241('0x56')](_0x32157a(_0x3819cc,_0x0241('0x5a')))[_0x0241('0x2c')](function(){})[_0x0241('0x2d')](_0xdda727()));break;default:_0x30dce3[_0x0241('0x52')](db[_0x0241('0x55')]['query'](_0x222d94(_0x3819cc,_0x0241('0x5a')))['then'](function(){})[_0x0241('0x2d')](_0xdda727()));}}}return _0x30dce3;})['all']();})[_0x0241('0x2c')](function(){return db[_0x0241('0x5b')][_0x0241('0x4c')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x0241('0x59'),'where':{'id':LISTID}}]})[_0x0241('0x2c')](function(_0x42f0e3){var _0x3a66ab=[];if(_0x42f0e3){for(var _0x8d4461=0x0,_0x521d15;_0x8d4461<_0x42f0e3[_0x0241('0x19')];_0x8d4461+=0x1){_0x521d15=_0x42f0e3[_0x8d4461][_0x0241('0x50')]({'plain':!![]});_0x3a66ab[_0x0241('0x52')](db['sequelize'][_0x0241('0x56')](_0x258838(_0x521d15,'CampaignId'))[_0x0241('0x2c')](function(){})[_0x0241('0x2d')](_0xdda727()));}}return _0x3a66ab;})[_0x0241('0x57')]();})[_0x0241('0x2d')](function(_0x715957){logger['error'](_0x0241('0x5c'),_0x0241('0x5d'),_0x715957[_0x0241('0x1b')]);});}var processPromises=function(_0x173bbe){return BPromise[_0x0241('0x57')](promises)[_0x0241('0x2c')](function(_0x30f2ef){})[_0x0241('0x2d')](function(_0x2d05e8){logger[_0x0241('0x12')]('Error\x20processing\x20rows\x20block:',JSON[_0x0241('0x2f')](_0x2d05e8));})[_0x0241('0x5e')](function(){socket[_0x0241('0x5f')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x173bbe){return _0x173bbe[_0x0241('0x60')]();}});};var endCsv=function(){return BPromise[_0x0241('0x61')]()[_0x0241('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0x0241('0x2c')](function(){socket[_0x0241('0x5f')](_0x0241('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x0241('0x63')](FILEPATH);}catch(_0x1eac0e){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x0241('0x2f')](_0x1eac0e));}finally{process['exit'](0x0);}});};process['on'](_0x0241('0x64'),function(){logger[_0x0241('0x65')](_0x0241('0x66'));endCsv();});function main(){return BPromise[_0x0241('0x61')]()[_0x0241('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x0241('0x10')](',');return db[_0x0241('0x2b')][_0x0241('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x0241('0x2c')](function(_0x2dc83d){var _0x4b83e7=fs[_0x0241('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x0241('0x68')](_0x4b83e7,{'header':!![],'skipEmptyLines':!![],'step':function(_0xe1a8b5,_0x29c29c){total+=0x1;var _0x4f431a=total;promises[_0x0241('0x52')](checkRow(_0xe1a8b5,_0x2dc83d,_0x4f431a)[_0x0241('0x2c')](function(){success+=0x1;})[_0x0241('0x2d')](function(_0x3ff999){if(_0x3ff999[_0x0241('0x12')]){errors+=0x1;delete _0x3ff999[_0x0241('0x12')];}else if(_0x3ff999['duplicate']){duplicates+=0x1;delete _0x3ff999[_0x0241('0x69')];}rows['push'](_0x3ff999);}));if(total%0xc8===0x0){_0x29c29c[_0x0241('0x6a')]();return processPromises(_0x29c29c);}},'complete':function(){return processPromises()[_0x0241('0x2c')](function(){logger[_0x0241('0x65')](_0x0241('0x6b'));endCsv();});},'error':function(_0x2999c1,_0x34cf70){logger[_0x0241('0x65')]('CSV\x20parse\x20error',JSON['stringify'](_0x2999c1));endCsv();}});})[_0x0241('0x2d')](function(_0x2ffeeb){logger[_0x0241('0x12')](_0x0241('0x6c'),JSON[_0x0241('0x2f')](_0x2ffeeb));});}main();