Built motion from commit e0fa946e.|2.6.5
[motion2.git] / server / api / smsTransferReport / smsTransferReport.controller.js
index 3388ba6..7ccc116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d2=['filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','options','find','create','update','body','destroy','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','then','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick'];(function(_0x59f67c,_0x2330d3){var _0x2b8d8=function(_0x4570ca){while(--_0x4570ca){_0x59f67c['push'](_0x59f67c['shift']());}};_0x2b8d8(++_0x2330d3);}(_0x36d2,0xa2));var _0x236d=function(_0x277107,_0x3420dc){_0x277107=_0x277107-0x0;var _0x1da046=_0x36d2[_0x277107];return _0x1da046;};'use strict';var emlformat=require(_0x236d('0x0'));var rimraf=require(_0x236d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x236d('0x2'));var moment=require(_0x236d('0x3'));var BPromise=require(_0x236d('0x4'));var Mustache=require(_0x236d('0x5'));var util=require('util');var path=require(_0x236d('0x6'));var sox=require(_0x236d('0x7'));var csv=require(_0x236d('0x8'));var ejs=require(_0x236d('0x9'));var fs=require('fs');var fs_extra=require(_0x236d('0xa'));var _=require(_0x236d('0xb'));var squel=require(_0x236d('0xc'));var crypto=require('crypto');var jsforce=require(_0x236d('0xd'));var deskjs=require(_0x236d('0xe'));var toCsv=require(_0x236d('0x8'));var querystring=require(_0x236d('0xf'));var Papa=require(_0x236d('0x10'));var Redis=require(_0x236d('0x11'));var authService=require(_0x236d('0x12'));var qs=require(_0x236d('0x13'));var as=require(_0x236d('0x14'));var hardwareService=require(_0x236d('0x15'));var logger=require(_0x236d('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x236d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x236d('0x18'))['db'];function respondWithStatusCode(_0x232ec9,_0x2969f1){_0x2969f1=_0x2969f1||0xcc;return function(_0x1859d7){if(_0x1859d7){return _0x232ec9[_0x236d('0x19')](_0x2969f1);}return _0x232ec9[_0x236d('0x1a')](_0x2969f1)['end']();};}function respondWithResult(_0x417ee7,_0x23935a){_0x23935a=_0x23935a||0xc8;return function(_0x2c9580){if(_0x2c9580){return _0x417ee7[_0x236d('0x1a')](_0x23935a)[_0x236d('0x1b')](_0x2c9580);}};}function respondWithFilteredResult(_0x30ba50,_0x11cc7f){return function(_0x1ac2f0){if(_0x1ac2f0){var _0x41727e=typeof _0x11cc7f[_0x236d('0x1c')]===_0x236d('0x1d')&&typeof _0x11cc7f[_0x236d('0x1e')]===_0x236d('0x1d');var _0x285ead=_0x1ac2f0[_0x236d('0x1f')];var _0x3e06b9=_0x41727e?0x0:_0x11cc7f[_0x236d('0x1c')];var _0x59c80e=_0x41727e?_0x1ac2f0[_0x236d('0x1f')]:_0x11cc7f[_0x236d('0x1c')]+_0x11cc7f['limit'];var _0xe396cc;if(_0x59c80e>=_0x285ead){_0x59c80e=_0x285ead;_0xe396cc=0xc8;}else{_0xe396cc=0xce;}_0x30ba50[_0x236d('0x1a')](_0xe396cc);return _0x30ba50[_0x236d('0x20')]('Content-Range',_0x3e06b9+'-'+_0x59c80e+'/'+_0x285ead)[_0x236d('0x1b')](_0x1ac2f0);}return null;};}function patchUpdates(_0x4e2570){return function(_0x2256bf){try{jsonpatch[_0x236d('0x21')](_0x2256bf,_0x4e2570,!![]);}catch(_0x222c9){return BPromise[_0x236d('0x22')](_0x222c9);}return _0x2256bf['save']();};}function saveUpdates(_0x2a899d,_0x541945){return function(_0x2ca2c6){if(_0x2ca2c6){return _0x2ca2c6['update'](_0x2a899d)[_0x236d('0x23')](function(_0x1fce61){return _0x1fce61;});}return null;};}function removeEntity(_0x2abdd1,_0x33e934){return function(_0x581baf){if(_0x581baf){return _0x581baf['destroy']()[_0x236d('0x23')](function(){_0x2abdd1[_0x236d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfb1c89,_0xa4663e){return function(_0x3b6708){if(!_0x3b6708){_0xfb1c89[_0x236d('0x19')](0x194);}return _0x3b6708;};}function handleError(_0x16547f,_0x529964){_0x529964=_0x529964||0x1f4;return function(_0x5ac4af){logger['error'](_0x5ac4af['stack']);if(_0x5ac4af['name']){delete _0x5ac4af[_0x236d('0x24')];}_0x16547f[_0x236d('0x1a')](_0x529964)[_0x236d('0x25')](_0x5ac4af);};}exports['index']=function(_0x50e7ab,_0x23c5c9){var _0x1e75a2={},_0x4fe897={},_0x4a3845={'count':0x0,'rows':[]};var _0x4283bb=_[_0x236d('0x26')](db[_0x236d('0x27')][_0x236d('0x28')],function(_0x2abec5){return{'name':_0x2abec5[_0x236d('0x29')],'type':_0x2abec5[_0x236d('0x2a')][_0x236d('0x2b')]};});_0x4fe897[_0x236d('0x2c')]=_[_0x236d('0x26')](_0x4283bb,_0x236d('0x24'));_0x4fe897[_0x236d('0x2d')]=_[_0x236d('0x2e')](_0x50e7ab[_0x236d('0x2d')]);_0x4fe897[_0x236d('0x2f')]=_[_0x236d('0x30')](_0x4fe897[_0x236d('0x2c')],_0x4fe897[_0x236d('0x2d')]);_0x1e75a2[_0x236d('0x31')]=_[_0x236d('0x30')](_0x4fe897[_0x236d('0x2c')],qs['fields'](_0x50e7ab[_0x236d('0x2d')][_0x236d('0x32')]));_0x1e75a2['attributes']=_0x1e75a2['attributes'][_0x236d('0x33')]?_0x1e75a2[_0x236d('0x31')]:_0x4fe897['model'];if(!_0x50e7ab[_0x236d('0x2d')]['hasOwnProperty'](_0x236d('0x34'))){_0x1e75a2[_0x236d('0x1e')]=qs['limit'](_0x50e7ab['query'][_0x236d('0x1e')]);_0x1e75a2[_0x236d('0x1c')]=qs[_0x236d('0x1c')](_0x50e7ab[_0x236d('0x2d')][_0x236d('0x1c')]);}_0x1e75a2[_0x236d('0x35')]=qs[_0x236d('0x36')](_0x50e7ab[_0x236d('0x2d')]['sort']);_0x1e75a2[_0x236d('0x37')]=qs[_0x236d('0x2f')](_[_0x236d('0x38')](_0x50e7ab[_0x236d('0x2d')],_0x4fe897[_0x236d('0x2f')]),_0x4283bb);if(_0x50e7ab[_0x236d('0x2d')][_0x236d('0x39')]){_0x1e75a2[_0x236d('0x37')]=_[_0x236d('0x3a')](_0x1e75a2['where'],{'$or':_['map'](_0x4283bb,function(_0x30b1e6){if(_0x30b1e6[_0x236d('0x2a')]!==_0x236d('0x3b')){var _0x23414c={};_0x23414c[_0x30b1e6['name']]={'$like':'%'+_0x50e7ab[_0x236d('0x2d')][_0x236d('0x39')]+'%'};return _0x23414c;}})});}_0x1e75a2=_[_0x236d('0x3a')]({},_0x1e75a2,_0x50e7ab['options']);var _0x98c594={'where':_0x1e75a2['where']};return db['SmsTransferReport']['count'](_0x98c594)['then'](function(_0x50363d){_0x4a3845[_0x236d('0x1f')]=_0x50363d;if(_0x50e7ab['query'][_0x236d('0x3c')]){_0x1e75a2[_0x236d('0x3d')]=[{'all':!![]}];}return db['SmsTransferReport'][_0x236d('0x3e')](_0x1e75a2);})[_0x236d('0x23')](function(_0x530996){_0x4a3845[_0x236d('0x3f')]=_0x530996;return _0x4a3845;})[_0x236d('0x23')](respondWithFilteredResult(_0x23c5c9,_0x1e75a2))[_0x236d('0x40')](handleError(_0x23c5c9,null));};exports['show']=function(_0x4cae1c,_0x44bd92){var _0xf108e6={'raw':!![],'where':{'id':_0x4cae1c[_0x236d('0x41')]['id']}},_0x529941={};_0x529941[_0x236d('0x2c')]=_[_0x236d('0x2e')](db[_0x236d('0x27')][_0x236d('0x28')]);_0x529941[_0x236d('0x2d')]=_['keys'](_0x4cae1c[_0x236d('0x2d')]);_0x529941['filters']=_['intersection'](_0x529941[_0x236d('0x2c')],_0x529941[_0x236d('0x2d')]);_0xf108e6[_0x236d('0x31')]=_[_0x236d('0x30')](_0x529941['model'],qs[_0x236d('0x32')](_0x4cae1c['query'][_0x236d('0x32')]));_0xf108e6[_0x236d('0x31')]=_0xf108e6[_0x236d('0x31')][_0x236d('0x33')]?_0xf108e6[_0x236d('0x31')]:_0x529941[_0x236d('0x2c')];if(_0x4cae1c[_0x236d('0x2d')][_0x236d('0x3c')]){_0xf108e6[_0x236d('0x3d')]=[{'all':!![]}];}_0xf108e6=_[_0x236d('0x3a')]({},_0xf108e6,_0x4cae1c[_0x236d('0x42')]);return db[_0x236d('0x27')][_0x236d('0x43')](_0xf108e6)[_0x236d('0x23')](handleEntityNotFound(_0x44bd92,null))[_0x236d('0x23')](respondWithResult(_0x44bd92,null))[_0x236d('0x40')](handleError(_0x44bd92,null));};exports[_0x236d('0x44')]=function(_0x22a843,_0x32ab44){return db[_0x236d('0x27')][_0x236d('0x44')](_0x22a843['body'],{})[_0x236d('0x23')](respondWithResult(_0x32ab44,0xc9))[_0x236d('0x40')](handleError(_0x32ab44,null));};exports[_0x236d('0x45')]=function(_0x3b4c97,_0x4cc58f){if(_0x3b4c97[_0x236d('0x46')]['id']){delete _0x3b4c97[_0x236d('0x46')]['id'];}return db[_0x236d('0x27')]['find']({'where':{'id':_0x3b4c97[_0x236d('0x41')]['id']}})[_0x236d('0x23')](handleEntityNotFound(_0x4cc58f,null))['then'](saveUpdates(_0x3b4c97[_0x236d('0x46')],null))[_0x236d('0x23')](respondWithResult(_0x4cc58f,null))[_0x236d('0x40')](handleError(_0x4cc58f,null));};exports[_0x236d('0x47')]=function(_0x34fb44,_0x21c687){return db['SmsTransferReport']['find']({'where':{'id':_0x34fb44['params']['id']}})['then'](handleEntityNotFound(_0x21c687,null))['then'](removeEntity(_0x21c687,null))[_0x236d('0x40')](handleError(_0x21c687,null));};exports[_0x236d('0x48')]=function(_0x5d5799,_0x8f5205){return db['SmsTransferReport'][_0x236d('0x48')]()[_0x236d('0x23')](respondWithResult(_0x8f5205,null))[_0x236d('0x40')](handleError(_0x8f5205,null));};
\ No newline at end of file
+var _0xe88d=['describe','eml-format','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','filter','where','merge','VIRTUAL','SmsTransferReport','includeAll','include','findAll','rows','catch','show','params','options','find','create','body'];(function(_0x22c000,_0x2f8519){var _0x194bcd=function(_0x52e4a6){while(--_0x52e4a6){_0x22c000['push'](_0x22c000['shift']());}};_0x194bcd(++_0x2f8519);}(_0xe88d,0x173));var _0xde88=function(_0x57645b,_0x25f73a){_0x57645b=_0x57645b-0x0;var _0xe82f00=_0xe88d[_0x57645b];return _0xe82f00;};'use strict';var emlformat=require(_0xde88('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xde88('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xde88('0x2'));var moment=require(_0xde88('0x3'));var BPromise=require(_0xde88('0x4'));var Mustache=require('mustache');var util=require(_0xde88('0x5'));var path=require(_0xde88('0x6'));var sox=require('sox');var csv=require(_0xde88('0x7'));var ejs=require(_0xde88('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xde88('0x9'));var squel=require(_0xde88('0xa'));var crypto=require(_0xde88('0xb'));var jsforce=require(_0xde88('0xc'));var deskjs=require(_0xde88('0xd'));var toCsv=require(_0xde88('0x7'));var querystring=require(_0xde88('0xe'));var Papa=require(_0xde88('0xf'));var Redis=require(_0xde88('0x10'));var authService=require(_0xde88('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xde88('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xde88('0x13'))(_0xde88('0x14'));var utils=require(_0xde88('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xde88('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2fb2e3,_0x334e1c){_0x334e1c=_0x334e1c||0xcc;return function(_0x30bf7d){if(_0x30bf7d){return _0x2fb2e3[_0xde88('0x17')](_0x334e1c);}return _0x2fb2e3[_0xde88('0x18')](_0x334e1c)[_0xde88('0x19')]();};}function respondWithResult(_0x58c0d1,_0x59565b){_0x59565b=_0x59565b||0xc8;return function(_0x83a42f){if(_0x83a42f){return _0x58c0d1['status'](_0x59565b)[_0xde88('0x1a')](_0x83a42f);}};}function respondWithFilteredResult(_0x583340,_0x500565){return function(_0x5982c3){if(_0x5982c3){var _0x17254e=typeof _0x500565[_0xde88('0x1b')]===_0xde88('0x1c')&&typeof _0x500565['limit']===_0xde88('0x1c');var _0x15503e=_0x5982c3[_0xde88('0x1d')];var _0x1db1b9=_0x17254e?0x0:_0x500565['offset'];var _0x3c764a=_0x17254e?_0x5982c3[_0xde88('0x1d')]:_0x500565[_0xde88('0x1b')]+_0x500565['limit'];var _0x5c07b2;if(_0x3c764a>=_0x15503e){_0x3c764a=_0x15503e;_0x5c07b2=0xc8;}else{_0x5c07b2=0xce;}_0x583340[_0xde88('0x18')](_0x5c07b2);return _0x583340[_0xde88('0x1e')](_0xde88('0x1f'),_0x1db1b9+'-'+_0x3c764a+'/'+_0x15503e)['json'](_0x5982c3);}return null;};}function patchUpdates(_0x4eaf1e){return function(_0x59a909){try{jsonpatch[_0xde88('0x20')](_0x59a909,_0x4eaf1e,!![]);}catch(_0x300ca8){return BPromise[_0xde88('0x21')](_0x300ca8);}return _0x59a909[_0xde88('0x22')]();};}function saveUpdates(_0x4f16c0,_0x46757f){return function(_0x1b5fbb){if(_0x1b5fbb){return _0x1b5fbb[_0xde88('0x23')](_0x4f16c0)[_0xde88('0x24')](function(_0x1b0487){return _0x1b0487;});}return null;};}function removeEntity(_0x55d755,_0x57b1a2){return function(_0x316cc0){if(_0x316cc0){return _0x316cc0[_0xde88('0x25')]()['then'](function(){_0x55d755['status'](0xcc)[_0xde88('0x19')]();});}};}function handleEntityNotFound(_0x1f1d74,_0x23088b){return function(_0x4e4985){if(!_0x4e4985){_0x1f1d74[_0xde88('0x17')](0x194);}return _0x4e4985;};}function handleError(_0xfbb07f,_0x21372a){_0x21372a=_0x21372a||0x1f4;return function(_0x402034){logger['error'](_0x402034[_0xde88('0x26')]);if(_0x402034[_0xde88('0x27')]){delete _0x402034['name'];}_0xfbb07f[_0xde88('0x18')](_0x21372a)[_0xde88('0x28')](_0x402034);};}exports['index']=function(_0x156978,_0x32cebe){var _0x223ffa={},_0x387dee={},_0x4c3a14={'count':0x0,'rows':[]};var _0x47b670=_['map'](db['SmsTransferReport'][_0xde88('0x29')],function(_0x77aab4){return{'name':_0x77aab4[_0xde88('0x2a')],'type':_0x77aab4[_0xde88('0x2b')]['key']};});_0x387dee[_0xde88('0x2c')]=_[_0xde88('0x2d')](_0x47b670,_0xde88('0x27'));_0x387dee['query']=_[_0xde88('0x2e')](_0x156978[_0xde88('0x2f')]);_0x387dee[_0xde88('0x30')]=_[_0xde88('0x31')](_0x387dee[_0xde88('0x2c')],_0x387dee['query']);_0x223ffa[_0xde88('0x32')]=_[_0xde88('0x31')](_0x387dee['model'],qs['fields'](_0x156978[_0xde88('0x2f')][_0xde88('0x33')]));_0x223ffa[_0xde88('0x32')]=_0x223ffa['attributes'][_0xde88('0x34')]?_0x223ffa[_0xde88('0x32')]:_0x387dee['model'];if(!_0x156978[_0xde88('0x2f')][_0xde88('0x35')]('nolimit')){_0x223ffa[_0xde88('0x36')]=qs[_0xde88('0x36')](_0x156978['query'][_0xde88('0x36')]);_0x223ffa[_0xde88('0x1b')]=qs[_0xde88('0x1b')](_0x156978['query']['offset']);}_0x223ffa[_0xde88('0x37')]=qs[_0xde88('0x38')](_0x156978['query'][_0xde88('0x38')]);_0x223ffa['where']=qs[_0xde88('0x30')](_['pick'](_0x156978[_0xde88('0x2f')],_0x387dee[_0xde88('0x30')]),_0x47b670);if(_0x156978[_0xde88('0x2f')][_0xde88('0x39')]){_0x223ffa[_0xde88('0x3a')]=_[_0xde88('0x3b')](_0x223ffa['where'],{'$or':_[_0xde88('0x2d')](_0x47b670,function(_0x3c9ca1){if(_0x3c9ca1[_0xde88('0x2b')]!==_0xde88('0x3c')){var _0x5f5b51={};_0x5f5b51[_0x3c9ca1[_0xde88('0x27')]]={'$like':'%'+_0x156978[_0xde88('0x2f')][_0xde88('0x39')]+'%'};return _0x5f5b51;}})});}_0x223ffa=_[_0xde88('0x3b')]({},_0x223ffa,_0x156978['options']);var _0x3bcd80={'where':_0x223ffa['where']};return db[_0xde88('0x3d')]['count'](_0x3bcd80)[_0xde88('0x24')](function(_0x1619c9){_0x4c3a14[_0xde88('0x1d')]=_0x1619c9;if(_0x156978['query'][_0xde88('0x3e')]){_0x223ffa[_0xde88('0x3f')]=[{'all':!![]}];}return db[_0xde88('0x3d')][_0xde88('0x40')](_0x223ffa);})[_0xde88('0x24')](function(_0x1fb719){_0x4c3a14[_0xde88('0x41')]=_0x1fb719;return _0x4c3a14;})[_0xde88('0x24')](respondWithFilteredResult(_0x32cebe,_0x223ffa))[_0xde88('0x42')](handleError(_0x32cebe,null));};exports[_0xde88('0x43')]=function(_0x6c8c5b,_0x4f5aa2){var _0x79a2dc={'raw':!![],'where':{'id':_0x6c8c5b[_0xde88('0x44')]['id']}},_0x180bc4={};_0x180bc4['model']=_[_0xde88('0x2e')](db[_0xde88('0x3d')][_0xde88('0x29')]);_0x180bc4['query']=_[_0xde88('0x2e')](_0x6c8c5b[_0xde88('0x2f')]);_0x180bc4['filters']=_[_0xde88('0x31')](_0x180bc4['model'],_0x180bc4[_0xde88('0x2f')]);_0x79a2dc[_0xde88('0x32')]=_[_0xde88('0x31')](_0x180bc4[_0xde88('0x2c')],qs[_0xde88('0x33')](_0x6c8c5b[_0xde88('0x2f')]['fields']));_0x79a2dc[_0xde88('0x32')]=_0x79a2dc[_0xde88('0x32')][_0xde88('0x34')]?_0x79a2dc[_0xde88('0x32')]:_0x180bc4[_0xde88('0x2c')];if(_0x6c8c5b[_0xde88('0x2f')][_0xde88('0x3e')]){_0x79a2dc[_0xde88('0x3f')]=[{'all':!![]}];}_0x79a2dc=_[_0xde88('0x3b')]({},_0x79a2dc,_0x6c8c5b[_0xde88('0x45')]);return db[_0xde88('0x3d')][_0xde88('0x46')](_0x79a2dc)['then'](handleEntityNotFound(_0x4f5aa2,null))[_0xde88('0x24')](respondWithResult(_0x4f5aa2,null))[_0xde88('0x42')](handleError(_0x4f5aa2,null));};exports['create']=function(_0x30bc0f,_0x194c69){return db[_0xde88('0x3d')][_0xde88('0x47')](_0x30bc0f['body'],{})[_0xde88('0x24')](respondWithResult(_0x194c69,0xc9))['catch'](handleError(_0x194c69,null));};exports[_0xde88('0x23')]=function(_0x5ed6e0,_0x311dc3){if(_0x5ed6e0[_0xde88('0x48')]['id']){delete _0x5ed6e0[_0xde88('0x48')]['id'];}return db[_0xde88('0x3d')][_0xde88('0x46')]({'where':{'id':_0x5ed6e0['params']['id']}})[_0xde88('0x24')](handleEntityNotFound(_0x311dc3,null))[_0xde88('0x24')](saveUpdates(_0x5ed6e0['body'],null))['then'](respondWithResult(_0x311dc3,null))[_0xde88('0x42')](handleError(_0x311dc3,null));};exports[_0xde88('0x25')]=function(_0x501afb,_0x15ec39){return db[_0xde88('0x3d')][_0xde88('0x46')]({'where':{'id':_0x501afb['params']['id']}})[_0xde88('0x24')](handleEntityNotFound(_0x15ec39,null))[_0xde88('0x24')](removeEntity(_0x15ec39,null))[_0xde88('0x42')](handleError(_0x15ec39,null));};exports[_0xde88('0x49')]=function(_0x2d056a,_0x5fdec4){return db[_0xde88('0x3d')][_0xde88('0x49')]()[_0xde88('0x24')](respondWithResult(_0x5fdec4,null))['catch'](handleError(_0x5fdec4,null));};
\ No newline at end of file