Built motion from commit (unavailable).|2.5.12
[motion2.git] / server / api / squareReportDetail / squareReportDetail.controller.js
index b075254..f4897d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213c=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','limit','set','Content-Range','apply','reject','destroy','then','end','error','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','count','include','findAll','catch','find','create','body','params','describe','html-pdf','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0xa2dc92,_0x1f6588){var _0x236a0f=function(_0x447de8){while(--_0x447de8){_0xa2dc92['push'](_0xa2dc92['shift']());}};_0x236a0f(++_0x1f6588);}(_0x213c,0xc4));var _0xc213=function(_0x4352c2,_0xc226f5){_0x4352c2=_0x4352c2-0x0;var _0x3bcf30=_0x213c[_0x4352c2];return _0x3bcf30;};'use strict';var pdf=require(_0xc213('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xc213('0x1'));var zipdir=require(_0xc213('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc213('0x3'));var moment=require(_0xc213('0x4'));var BPromise=require(_0xc213('0x5'));var Mustache=require(_0xc213('0x6'));var util=require(_0xc213('0x7'));var path=require(_0xc213('0x8'));var sox=require(_0xc213('0x9'));var csv=require('to-csv');var ejs=require(_0xc213('0xa'));var fs=require('fs');var _=require(_0xc213('0xb'));var squel=require(_0xc213('0xc'));var crypto=require(_0xc213('0xd'));var jsforce=require(_0xc213('0xe'));var deskjs=require(_0xc213('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc213('0x10'));var Redis=require(_0xc213('0x11'));var authService=require(_0xc213('0x12'));var qs=require(_0xc213('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc213('0x14'));var logger=require(_0xc213('0x15'))('api');var utils=require(_0xc213('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc213('0x17'));var db=require(_0xc213('0x18'))['db'];function respondWithStatusCode(_0x11c662,_0x4bb139){_0x4bb139=_0x4bb139||0xcc;return function(_0x268154){if(_0x268154){return _0x11c662['sendStatus'](_0x4bb139);}return _0x11c662['status'](_0x4bb139)['end']();};}function respondWithResult(_0x44893d,_0x3dc4e0){_0x3dc4e0=_0x3dc4e0||0xc8;return function(_0x472dd4){if(_0x472dd4){return _0x44893d[_0xc213('0x19')](_0x3dc4e0)[_0xc213('0x1a')](_0x472dd4);}};}function respondWithFilteredResult(_0x5ab266,_0x3e5cd1){return function(_0x31117b){if(_0x31117b){var _0x36f294=_0x31117b['count'],_0x485f09=_0x3e5cd1['offset'],_0x1e706b=_0x3e5cd1[_0xc213('0x1b')]+_0x3e5cd1[_0xc213('0x1c')],_0x161722;if(_0x1e706b>=_0x36f294){_0x1e706b=_0x36f294;_0x161722=0xc8;}else{_0x161722=0xce;}_0x5ab266[_0xc213('0x19')](_0x161722);return _0x5ab266[_0xc213('0x1d')](_0xc213('0x1e'),_0x485f09+'-'+_0x1e706b+'/'+_0x36f294)[_0xc213('0x1a')](_0x31117b);}return null;};}function patchUpdates(_0x514ac4){return function(_0x1afb4c){try{jsonpatch[_0xc213('0x1f')](_0x1afb4c,_0x514ac4,!![]);}catch(_0x2a139e){return BPromise[_0xc213('0x20')](_0x2a139e);}return _0x1afb4c['save']();};}function saveUpdates(_0x315f94,_0x3198b5){return function(_0x431f98){if(_0x431f98){return _0x431f98['update'](_0x315f94)['then'](function(_0xa1ae0){return _0xa1ae0;});}return null;};}function removeEntity(_0x1f759d,_0xcbac83){return function(_0x5e9cb4){if(_0x5e9cb4){return _0x5e9cb4[_0xc213('0x21')]()[_0xc213('0x22')](function(){_0x1f759d['status'](0xcc)[_0xc213('0x23')]();});}};}function handleEntityNotFound(_0x3232bc,_0x816535){return function(_0x112a56){if(!_0x112a56){_0x3232bc['sendStatus'](0x194);}return _0x112a56;};}function handleError(_0x544483,_0x223ebc){_0x223ebc=_0x223ebc||0x1f4;return function(_0x57bf57){logger[_0xc213('0x24')](_0x57bf57['stack']);if(_0x57bf57[_0xc213('0x25')]){delete _0x57bf57['name'];}_0x544483[_0xc213('0x19')](_0x223ebc)[_0xc213('0x26')](_0x57bf57);};}exports[_0xc213('0x27')]=function(_0x3cef48,_0x4b038b){var _0x53d8f4={},_0x2fcb4e={},_0x47fd0e={'count':0x0,'rows':[]};var _0x16aa6f=_[_0xc213('0x28')](db[_0xc213('0x29')][_0xc213('0x2a')],function(_0xb35e4){return{'name':_0xb35e4[_0xc213('0x2b')],'type':_0xb35e4['type'][_0xc213('0x2c')]};});_0x2fcb4e['model']=_[_0xc213('0x28')](_0x16aa6f,_0xc213('0x25'));_0x2fcb4e[_0xc213('0x2d')]=_[_0xc213('0x2e')](_0x3cef48[_0xc213('0x2d')]);_0x2fcb4e[_0xc213('0x2f')]=_['intersection'](_0x2fcb4e[_0xc213('0x30')],_0x2fcb4e[_0xc213('0x2d')]);_0x53d8f4[_0xc213('0x31')]=_[_0xc213('0x32')](_0x2fcb4e[_0xc213('0x30')],qs['fields'](_0x3cef48[_0xc213('0x2d')][_0xc213('0x33')]));_0x53d8f4[_0xc213('0x31')]=_0x53d8f4[_0xc213('0x31')][_0xc213('0x34')]?_0x53d8f4[_0xc213('0x31')]:_0x2fcb4e[_0xc213('0x30')];if(!_0x3cef48[_0xc213('0x2d')][_0xc213('0x35')](_0xc213('0x36'))){_0x53d8f4[_0xc213('0x1c')]=qs[_0xc213('0x1c')](_0x3cef48[_0xc213('0x2d')]['limit']);_0x53d8f4[_0xc213('0x1b')]=qs['offset'](_0x3cef48[_0xc213('0x2d')]['offset']);}_0x53d8f4['order']=qs[_0xc213('0x37')](_0x3cef48[_0xc213('0x2d')]['sort']);_0x53d8f4[_0xc213('0x38')]=qs[_0xc213('0x2f')](_[_0xc213('0x39')](_0x3cef48[_0xc213('0x2d')],_0x2fcb4e[_0xc213('0x2f')]),_0x16aa6f);if(_0x3cef48[_0xc213('0x2d')][_0xc213('0x3a')]){_0x53d8f4[_0xc213('0x38')]=_[_0xc213('0x3b')](_0x53d8f4[_0xc213('0x38')],{'$or':_[_0xc213('0x28')](_0x16aa6f,function(_0x248f3d){if(_0x248f3d[_0xc213('0x3c')]!==_0xc213('0x3d')){var _0x5da311={};_0x5da311[_0x248f3d[_0xc213('0x25')]]={'$like':'%'+_0x3cef48['query']['filter']+'%'};return _0x5da311;}})});}_0x53d8f4=_[_0xc213('0x3b')]({},_0x53d8f4,_0x3cef48[_0xc213('0x3e')]);var _0x2a29b9={'where':_0x53d8f4[_0xc213('0x38')]};return db['SquareDetailsReport'][_0xc213('0x3f')](_0x2a29b9)[_0xc213('0x22')](function(_0x344ff6){_0x47fd0e['count']=_0x344ff6;if(_0x3cef48['query']['includeAll']){_0x53d8f4[_0xc213('0x40')]=[{'all':!![]}];}return db[_0xc213('0x29')][_0xc213('0x41')](_0x53d8f4);})[_0xc213('0x22')](function(_0x1a45d1){_0x47fd0e['rows']=_0x1a45d1;return _0x47fd0e;})[_0xc213('0x22')](respondWithFilteredResult(_0x4b038b,_0x53d8f4))[_0xc213('0x42')](handleError(_0x4b038b,null));};exports['show']=function(_0x186ec1,_0x52658a){var _0x407c23={'raw':!![],'where':{'id':_0x186ec1['params']['id']}},_0x44fe08={};_0x44fe08[_0xc213('0x30')]=_[_0xc213('0x2e')](db[_0xc213('0x29')][_0xc213('0x2a')]);_0x44fe08['query']=_[_0xc213('0x2e')](_0x186ec1['query']);_0x44fe08[_0xc213('0x2f')]=_[_0xc213('0x32')](_0x44fe08[_0xc213('0x30')],_0x44fe08['query']);_0x407c23[_0xc213('0x31')]=_[_0xc213('0x32')](_0x44fe08[_0xc213('0x30')],qs[_0xc213('0x33')](_0x186ec1[_0xc213('0x2d')]['fields']));_0x407c23[_0xc213('0x31')]=_0x407c23[_0xc213('0x31')][_0xc213('0x34')]?_0x407c23['attributes']:_0x44fe08['model'];if(_0x186ec1[_0xc213('0x2d')]['includeAll']){_0x407c23[_0xc213('0x40')]=[{'all':!![]}];}_0x407c23=_[_0xc213('0x3b')]({},_0x407c23,_0x186ec1[_0xc213('0x3e')]);return db[_0xc213('0x29')][_0xc213('0x43')](_0x407c23)[_0xc213('0x22')](handleEntityNotFound(_0x52658a,null))[_0xc213('0x22')](respondWithResult(_0x52658a,null))['catch'](handleError(_0x52658a,null));};exports[_0xc213('0x44')]=function(_0x2b8e6d,_0x39b267){return db[_0xc213('0x29')]['create'](_0x2b8e6d[_0xc213('0x45')],{})[_0xc213('0x22')](respondWithResult(_0x39b267,0xc9))[_0xc213('0x42')](handleError(_0x39b267,null));};exports['update']=function(_0x167b38,_0x534acd){if(_0x167b38['body']['id']){delete _0x167b38[_0xc213('0x45')]['id'];}return db[_0xc213('0x29')]['find']({'where':{'id':_0x167b38[_0xc213('0x46')]['id']}})[_0xc213('0x22')](handleEntityNotFound(_0x534acd,null))[_0xc213('0x22')](saveUpdates(_0x167b38['body'],null))['then'](respondWithResult(_0x534acd,null))[_0xc213('0x42')](handleError(_0x534acd,null));};exports[_0xc213('0x21')]=function(_0x88f2af,_0x17f368){return db['SquareDetailsReport'][_0xc213('0x43')]({'where':{'id':_0x88f2af['params']['id']}})[_0xc213('0x22')](handleEntityNotFound(_0x17f368,null))[_0xc213('0x22')](removeEntity(_0x17f368,null))[_0xc213('0x42')](handleError(_0x17f368,null));};exports[_0xc213('0x47')]=function(_0x5d8f5e,_0x23b9a5){return db['SquareDetailsReport'][_0xc213('0x47')]()[_0xc213('0x22')](respondWithResult(_0x23b9a5,null))[_0xc213('0x42')](handleError(_0x23b9a5,null));};
\ No newline at end of file
+var _0xc8b4=['include','findAll','rows','show','params','length','includeAll','find','catch','create','body','destroy','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','set','json','reject','then','error','name','send','index','map','rawAttributes','fieldName','type','key','keys','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','SquareDetailsReport','count'];(function(_0x1f8438,_0x949ab){var _0x7a0260=function(_0x7ce368){while(--_0x7ce368){_0x1f8438['push'](_0x1f8438['shift']());}};_0x7a0260(++_0x949ab);}(_0xc8b4,0x13d));var _0x4c8b=function(_0x4efe2e,_0x3a32d9){_0x4efe2e=_0x4efe2e-0x0;var _0x12a419=_0xc8b4[_0x4efe2e];return _0x12a419;};'use strict';var pdf=require(_0x4c8b('0x0'));var emlformat=require(_0x4c8b('0x1'));var rimraf=require(_0x4c8b('0x2'));var zipdir=require(_0x4c8b('0x3'));var jsonpatch=require(_0x4c8b('0x4'));var rp=require(_0x4c8b('0x5'));var moment=require(_0x4c8b('0x6'));var BPromise=require(_0x4c8b('0x7'));var Mustache=require('mustache');var util=require(_0x4c8b('0x8'));var path=require(_0x4c8b('0x9'));var sox=require('sox');var csv=require(_0x4c8b('0xa'));var ejs=require(_0x4c8b('0xb'));var fs=require('fs');var _=require(_0x4c8b('0xc'));var squel=require('squel');var crypto=require(_0x4c8b('0xd'));var jsforce=require(_0x4c8b('0xe'));var deskjs=require(_0x4c8b('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4c8b('0x10'));var Redis=require(_0x4c8b('0x11'));var authService=require(_0x4c8b('0x12'));var qs=require(_0x4c8b('0x13'));var as=require(_0x4c8b('0x14'));var hardwareService=require(_0x4c8b('0x15'));var logger=require('../../config/logger')(_0x4c8b('0x16'));var utils=require(_0x4c8b('0x17'));var config=require(_0x4c8b('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x4c8b('0x19'))['db'];function respondWithStatusCode(_0x399a45,_0x11b0cb){_0x11b0cb=_0x11b0cb||0xcc;return function(_0x2bc62b){if(_0x2bc62b){return _0x399a45[_0x4c8b('0x1a')](_0x11b0cb);}return _0x399a45[_0x4c8b('0x1b')](_0x11b0cb)[_0x4c8b('0x1c')]();};}function respondWithResult(_0x276a28,_0x2d6abb){_0x2d6abb=_0x2d6abb||0xc8;return function(_0x4816c8){if(_0x4816c8){return _0x276a28[_0x4c8b('0x1b')](_0x2d6abb)['json'](_0x4816c8);}};}function respondWithFilteredResult(_0x3d67b5,_0x790a59){return function(_0x4aba85){if(_0x4aba85){var _0x20db7f=_0x4aba85['count'],_0x324405=_0x790a59[_0x4c8b('0x1d')],_0x4721ab=_0x790a59[_0x4c8b('0x1d')]+_0x790a59[_0x4c8b('0x1e')],_0x212de0;if(_0x4721ab>=_0x20db7f){_0x4721ab=_0x20db7f;_0x212de0=0xc8;}else{_0x212de0=0xce;}_0x3d67b5['status'](_0x212de0);return _0x3d67b5[_0x4c8b('0x1f')]('Content-Range',_0x324405+'-'+_0x4721ab+'/'+_0x20db7f)[_0x4c8b('0x20')](_0x4aba85);}return null;};}function patchUpdates(_0x502fdf){return function(_0x4992e2){try{jsonpatch['apply'](_0x4992e2,_0x502fdf,!![]);}catch(_0x2b44ab){return BPromise[_0x4c8b('0x21')](_0x2b44ab);}return _0x4992e2['save']();};}function saveUpdates(_0x599748,_0x46a85c){return function(_0x35b14b){if(_0x35b14b){return _0x35b14b['update'](_0x599748)[_0x4c8b('0x22')](function(_0x5936b1){return _0x5936b1;});}return null;};}function removeEntity(_0x328797,_0x57fb29){return function(_0xf7208f){if(_0xf7208f){return _0xf7208f['destroy']()['then'](function(){_0x328797['status'](0xcc)[_0x4c8b('0x1c')]();});}};}function handleEntityNotFound(_0x12f467,_0x5b5f55){return function(_0x2a9c4b){if(!_0x2a9c4b){_0x12f467['sendStatus'](0x194);}return _0x2a9c4b;};}function handleError(_0x5c09d6,_0x4ce7af){_0x4ce7af=_0x4ce7af||0x1f4;return function(_0x5ba3ba){logger[_0x4c8b('0x23')](_0x5ba3ba['stack']);if(_0x5ba3ba[_0x4c8b('0x24')]){delete _0x5ba3ba['name'];}_0x5c09d6['status'](_0x4ce7af)[_0x4c8b('0x25')](_0x5ba3ba);};}exports[_0x4c8b('0x26')]=function(_0x512f90,_0x3f09e4){var _0xc5f3da={},_0x43f952={},_0x221701={'count':0x0,'rows':[]};var _0x214ddc=_[_0x4c8b('0x27')](db['SquareDetailsReport'][_0x4c8b('0x28')],function(_0x3eae5a){return{'name':_0x3eae5a[_0x4c8b('0x29')],'type':_0x3eae5a[_0x4c8b('0x2a')][_0x4c8b('0x2b')]};});_0x43f952['model']=_['map'](_0x214ddc,_0x4c8b('0x24'));_0x43f952['query']=_[_0x4c8b('0x2c')](_0x512f90['query']);_0x43f952['filters']=_[_0x4c8b('0x2d')](_0x43f952[_0x4c8b('0x2e')],_0x43f952[_0x4c8b('0x2f')]);_0xc5f3da[_0x4c8b('0x30')]=_['intersection'](_0x43f952[_0x4c8b('0x2e')],qs[_0x4c8b('0x31')](_0x512f90[_0x4c8b('0x2f')][_0x4c8b('0x31')]));_0xc5f3da[_0x4c8b('0x30')]=_0xc5f3da[_0x4c8b('0x30')]['length']?_0xc5f3da['attributes']:_0x43f952[_0x4c8b('0x2e')];if(!_0x512f90[_0x4c8b('0x2f')][_0x4c8b('0x32')](_0x4c8b('0x33'))){_0xc5f3da[_0x4c8b('0x1e')]=qs['limit'](_0x512f90[_0x4c8b('0x2f')][_0x4c8b('0x1e')]);_0xc5f3da['offset']=qs['offset'](_0x512f90[_0x4c8b('0x2f')]['offset']);}_0xc5f3da[_0x4c8b('0x34')]=qs['sort'](_0x512f90['query'][_0x4c8b('0x35')]);_0xc5f3da['where']=qs[_0x4c8b('0x36')](_[_0x4c8b('0x37')](_0x512f90[_0x4c8b('0x2f')],_0x43f952[_0x4c8b('0x36')]),_0x214ddc);if(_0x512f90[_0x4c8b('0x2f')][_0x4c8b('0x38')]){_0xc5f3da[_0x4c8b('0x39')]=_[_0x4c8b('0x3a')](_0xc5f3da['where'],{'$or':_[_0x4c8b('0x27')](_0x214ddc,function(_0x1a951e){if(_0x1a951e[_0x4c8b('0x2a')]!==_0x4c8b('0x3b')){var _0x3fb8c7={};_0x3fb8c7[_0x1a951e[_0x4c8b('0x24')]]={'$like':'%'+_0x512f90['query']['filter']+'%'};return _0x3fb8c7;}})});}_0xc5f3da=_['merge']({},_0xc5f3da,_0x512f90[_0x4c8b('0x3c')]);var _0x3423e6={'where':_0xc5f3da[_0x4c8b('0x39')]};return db[_0x4c8b('0x3d')][_0x4c8b('0x3e')](_0x3423e6)[_0x4c8b('0x22')](function(_0x2d48ee){_0x221701[_0x4c8b('0x3e')]=_0x2d48ee;if(_0x512f90[_0x4c8b('0x2f')]['includeAll']){_0xc5f3da[_0x4c8b('0x3f')]=[{'all':!![]}];}return db[_0x4c8b('0x3d')][_0x4c8b('0x40')](_0xc5f3da);})[_0x4c8b('0x22')](function(_0x1859a4){_0x221701[_0x4c8b('0x41')]=_0x1859a4;return _0x221701;})[_0x4c8b('0x22')](respondWithFilteredResult(_0x3f09e4,_0xc5f3da))['catch'](handleError(_0x3f09e4,null));};exports[_0x4c8b('0x42')]=function(_0x552a1e,_0x333300){var _0x5f0702={'raw':!![],'where':{'id':_0x552a1e[_0x4c8b('0x43')]['id']}},_0x34ca7d={};_0x34ca7d[_0x4c8b('0x2e')]=_[_0x4c8b('0x2c')](db[_0x4c8b('0x3d')][_0x4c8b('0x28')]);_0x34ca7d[_0x4c8b('0x2f')]=_['keys'](_0x552a1e[_0x4c8b('0x2f')]);_0x34ca7d[_0x4c8b('0x36')]=_[_0x4c8b('0x2d')](_0x34ca7d[_0x4c8b('0x2e')],_0x34ca7d['query']);_0x5f0702[_0x4c8b('0x30')]=_[_0x4c8b('0x2d')](_0x34ca7d[_0x4c8b('0x2e')],qs[_0x4c8b('0x31')](_0x552a1e['query']['fields']));_0x5f0702[_0x4c8b('0x30')]=_0x5f0702['attributes'][_0x4c8b('0x44')]?_0x5f0702[_0x4c8b('0x30')]:_0x34ca7d['model'];if(_0x552a1e[_0x4c8b('0x2f')][_0x4c8b('0x45')]){_0x5f0702[_0x4c8b('0x3f')]=[{'all':!![]}];}_0x5f0702=_[_0x4c8b('0x3a')]({},_0x5f0702,_0x552a1e['options']);return db['SquareDetailsReport'][_0x4c8b('0x46')](_0x5f0702)[_0x4c8b('0x22')](handleEntityNotFound(_0x333300,null))['then'](respondWithResult(_0x333300,null))[_0x4c8b('0x47')](handleError(_0x333300,null));};exports[_0x4c8b('0x48')]=function(_0x51098f,_0x1e804e){return db['SquareDetailsReport'][_0x4c8b('0x48')](_0x51098f[_0x4c8b('0x49')],{})[_0x4c8b('0x22')](respondWithResult(_0x1e804e,0xc9))[_0x4c8b('0x47')](handleError(_0x1e804e,null));};exports['update']=function(_0x47119,_0x191508){if(_0x47119['body']['id']){delete _0x47119[_0x4c8b('0x49')]['id'];}return db[_0x4c8b('0x3d')][_0x4c8b('0x46')]({'where':{'id':_0x47119[_0x4c8b('0x43')]['id']}})[_0x4c8b('0x22')](handleEntityNotFound(_0x191508,null))[_0x4c8b('0x22')](saveUpdates(_0x47119[_0x4c8b('0x49')],null))[_0x4c8b('0x22')](respondWithResult(_0x191508,null))['catch'](handleError(_0x191508,null));};exports[_0x4c8b('0x4a')]=function(_0x50729d,_0x5790a3){return db['SquareDetailsReport'][_0x4c8b('0x46')]({'where':{'id':_0x50729d[_0x4c8b('0x43')]['id']}})[_0x4c8b('0x22')](handleEntityNotFound(_0x5790a3,null))[_0x4c8b('0x22')](removeEntity(_0x5790a3,null))[_0x4c8b('0x47')](handleError(_0x5790a3,null));};exports[_0x4c8b('0x4b')]=function(_0x356453,_0x486135){return db['SquareDetailsReport'][_0x4c8b('0x4b')]()[_0x4c8b('0x22')](respondWithResult(_0x486135,null))[_0x4c8b('0x47')](handleError(_0x486135,null));};
\ No newline at end of file