Built motion from commit (unavailable).|2.5.31
[motion2.git] / server / api / intServicenowField / intServicenowField.controller.js
index a361690..e3562e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ef1=['util','ejs','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','count','offset','limit','json','apply','reject','update','then','error','name','send','map','ServicenowField','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','include','findAll','rows','catch','show','length','includeAll','find','create','body','params','destroy','html-pdf','eml-format','fast-json-patch','moment','bluebird'];(function(_0x3050b5,_0x182c6a){var _0x37cceb=function(_0x49b797){while(--_0x49b797){_0x3050b5['push'](_0x3050b5['shift']());}};_0x37cceb(++_0x182c6a);}(_0x3ef1,0x187));var _0x13ef=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x3ef1[_0x1d9aa0];return _0x226868;};'use strict';var pdf=require(_0x13ef('0x0'));var emlformat=require(_0x13ef('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x13ef('0x2'));var rp=require('request-promise');var moment=require(_0x13ef('0x3'));var BPromise=require(_0x13ef('0x4'));var Mustache=require('mustache');var util=require(_0x13ef('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x13ef('0x6'));var fs=require('fs');var _=require('lodash');var squel=require(_0x13ef('0x7'));var crypto=require('crypto');var jsforce=require(_0x13ef('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x13ef('0x9'));var querystring=require('querystring');var Papa=require(_0x13ef('0xa'));var Redis=require(_0x13ef('0xb'));var authService=require(_0x13ef('0xc'));var qs=require(_0x13ef('0xd'));var as=require(_0x13ef('0xe'));var hardwareService=require(_0x13ef('0xf'));var logger=require(_0x13ef('0x10'))('api');var utils=require(_0x13ef('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x13ef('0x12'));var db=require(_0x13ef('0x13'))['db'];function respondWithStatusCode(_0x330c20,_0x5e6039){_0x5e6039=_0x5e6039||0xcc;return function(_0x27c292){if(_0x27c292){return _0x330c20[_0x13ef('0x14')](_0x5e6039);}return _0x330c20[_0x13ef('0x15')](_0x5e6039)[_0x13ef('0x16')]();};}function respondWithResult(_0x5692d1,_0x2b4869){_0x2b4869=_0x2b4869||0xc8;return function(_0x1476d9){if(_0x1476d9){return _0x5692d1[_0x13ef('0x15')](_0x2b4869)['json'](_0x1476d9);}};}function respondWithFilteredResult(_0x4610c9,_0x1eb9cb){return function(_0x56ecc0){if(_0x56ecc0){var _0xce6c80=_0x56ecc0[_0x13ef('0x17')],_0x2e98b9=_0x1eb9cb[_0x13ef('0x18')],_0x2b3a84=_0x1eb9cb[_0x13ef('0x18')]+_0x1eb9cb[_0x13ef('0x19')],_0x364452;if(_0x2b3a84>=_0xce6c80){_0x2b3a84=_0xce6c80;_0x364452=0xc8;}else{_0x364452=0xce;}_0x4610c9[_0x13ef('0x15')](_0x364452);return _0x4610c9['set']('Content-Range',_0x2e98b9+'-'+_0x2b3a84+'/'+_0xce6c80)[_0x13ef('0x1a')](_0x56ecc0);}return null;};}function patchUpdates(_0xb2e142){return function(_0x494c50){try{jsonpatch[_0x13ef('0x1b')](_0x494c50,_0xb2e142,!![]);}catch(_0x5a8ae4){return BPromise[_0x13ef('0x1c')](_0x5a8ae4);}return _0x494c50['save']();};}function saveUpdates(_0x64e7a,_0x1be6c8){return function(_0x15e24f){if(_0x15e24f){return _0x15e24f[_0x13ef('0x1d')](_0x64e7a)[_0x13ef('0x1e')](function(_0x5d6c67){return _0x5d6c67;});}return null;};}function removeEntity(_0x12f010,_0x117b98){return function(_0x34d51a){if(_0x34d51a){return _0x34d51a['destroy']()[_0x13ef('0x1e')](function(){_0x12f010['status'](0xcc)[_0x13ef('0x16')]();});}};}function handleEntityNotFound(_0x162921,_0x3e7e28){return function(_0xbfe6c8){if(!_0xbfe6c8){_0x162921[_0x13ef('0x14')](0x194);}return _0xbfe6c8;};}function handleError(_0x394987,_0x5d7cbd){_0x5d7cbd=_0x5d7cbd||0x1f4;return function(_0x33035e){logger[_0x13ef('0x1f')](_0x33035e['stack']);if(_0x33035e['name']){delete _0x33035e[_0x13ef('0x20')];}_0x394987[_0x13ef('0x15')](_0x5d7cbd)[_0x13ef('0x21')](_0x33035e);};}exports['index']=function(_0x2c0da7,_0x1ad9a4){var _0x8064cd={},_0x48a761={},_0x7d5e36={'count':0x0,'rows':[]};var _0xed819b=_[_0x13ef('0x22')](db[_0x13ef('0x23')][_0x13ef('0x24')],function(_0x49b312){return{'name':_0x49b312[_0x13ef('0x25')],'type':_0x49b312[_0x13ef('0x26')]['key']};});_0x48a761[_0x13ef('0x27')]=_[_0x13ef('0x22')](_0xed819b,_0x13ef('0x20'));_0x48a761[_0x13ef('0x28')]=_[_0x13ef('0x29')](_0x2c0da7[_0x13ef('0x28')]);_0x48a761[_0x13ef('0x2a')]=_[_0x13ef('0x2b')](_0x48a761['model'],_0x48a761[_0x13ef('0x28')]);_0x8064cd[_0x13ef('0x2c')]=_[_0x13ef('0x2b')](_0x48a761[_0x13ef('0x27')],qs[_0x13ef('0x2d')](_0x2c0da7[_0x13ef('0x28')][_0x13ef('0x2d')]));_0x8064cd['attributes']=_0x8064cd[_0x13ef('0x2c')]['length']?_0x8064cd['attributes']:_0x48a761[_0x13ef('0x27')];if(!_0x2c0da7[_0x13ef('0x28')][_0x13ef('0x2e')](_0x13ef('0x2f'))){_0x8064cd['limit']=qs[_0x13ef('0x19')](_0x2c0da7[_0x13ef('0x28')][_0x13ef('0x19')]);_0x8064cd['offset']=qs[_0x13ef('0x18')](_0x2c0da7[_0x13ef('0x28')]['offset']);}_0x8064cd[_0x13ef('0x30')]=qs[_0x13ef('0x31')](_0x2c0da7['query'][_0x13ef('0x31')]);_0x8064cd[_0x13ef('0x32')]=qs['filters'](_[_0x13ef('0x33')](_0x2c0da7[_0x13ef('0x28')],_0x48a761[_0x13ef('0x2a')]),_0xed819b);if(_0x2c0da7['query'][_0x13ef('0x34')]){_0x8064cd[_0x13ef('0x32')]=_['merge'](_0x8064cd[_0x13ef('0x32')],{'$or':_[_0x13ef('0x22')](_0xed819b,function(_0x3d6aea){if(_0x3d6aea[_0x13ef('0x26')]!=='VIRTUAL'){var _0x189710={};_0x189710[_0x3d6aea['name']]={'$like':'%'+_0x2c0da7[_0x13ef('0x28')][_0x13ef('0x34')]+'%'};return _0x189710;}})});}_0x8064cd=_['merge']({},_0x8064cd,_0x2c0da7[_0x13ef('0x35')]);var _0x5225d3={'where':_0x8064cd[_0x13ef('0x32')]};return db['ServicenowField'][_0x13ef('0x17')](_0x5225d3)[_0x13ef('0x1e')](function(_0x4f6a3d){_0x7d5e36[_0x13ef('0x17')]=_0x4f6a3d;if(_0x2c0da7[_0x13ef('0x28')]['includeAll']){_0x8064cd[_0x13ef('0x36')]=[{'all':!![]}];}return db[_0x13ef('0x23')][_0x13ef('0x37')](_0x8064cd);})[_0x13ef('0x1e')](function(_0x6581e3){_0x7d5e36[_0x13ef('0x38')]=_0x6581e3;return _0x7d5e36;})[_0x13ef('0x1e')](respondWithFilteredResult(_0x1ad9a4,_0x8064cd))[_0x13ef('0x39')](handleError(_0x1ad9a4,null));};exports[_0x13ef('0x3a')]=function(_0x141c40,_0x169345){var _0x14cc2a={'raw':!![],'where':{'id':_0x141c40['params']['id']}},_0x539c34={};_0x539c34[_0x13ef('0x27')]=_[_0x13ef('0x29')](db[_0x13ef('0x23')][_0x13ef('0x24')]);_0x539c34[_0x13ef('0x28')]=_[_0x13ef('0x29')](_0x141c40['query']);_0x539c34[_0x13ef('0x2a')]=_[_0x13ef('0x2b')](_0x539c34[_0x13ef('0x27')],_0x539c34[_0x13ef('0x28')]);_0x14cc2a[_0x13ef('0x2c')]=_[_0x13ef('0x2b')](_0x539c34[_0x13ef('0x27')],qs[_0x13ef('0x2d')](_0x141c40[_0x13ef('0x28')]['fields']));_0x14cc2a['attributes']=_0x14cc2a[_0x13ef('0x2c')][_0x13ef('0x3b')]?_0x14cc2a[_0x13ef('0x2c')]:_0x539c34[_0x13ef('0x27')];if(_0x141c40['query'][_0x13ef('0x3c')]){_0x14cc2a[_0x13ef('0x36')]=[{'all':!![]}];}_0x14cc2a=_['merge']({},_0x14cc2a,_0x141c40[_0x13ef('0x35')]);return db['ServicenowField'][_0x13ef('0x3d')](_0x14cc2a)[_0x13ef('0x1e')](handleEntityNotFound(_0x169345,null))[_0x13ef('0x1e')](respondWithResult(_0x169345,null))[_0x13ef('0x39')](handleError(_0x169345,null));};exports[_0x13ef('0x3e')]=function(_0x1b03f7,_0x41a9d7){return db[_0x13ef('0x23')][_0x13ef('0x3e')](_0x1b03f7[_0x13ef('0x3f')],{})[_0x13ef('0x1e')](respondWithResult(_0x41a9d7,0xc9))[_0x13ef('0x39')](handleError(_0x41a9d7,null));};exports['update']=function(_0x417ce6,_0x15f2f6){if(_0x417ce6[_0x13ef('0x3f')]['id']){delete _0x417ce6[_0x13ef('0x3f')]['id'];}return db[_0x13ef('0x23')][_0x13ef('0x3d')]({'where':{'id':_0x417ce6[_0x13ef('0x40')]['id']}})[_0x13ef('0x1e')](handleEntityNotFound(_0x15f2f6,null))[_0x13ef('0x1e')](saveUpdates(_0x417ce6[_0x13ef('0x3f')],null))[_0x13ef('0x1e')](respondWithResult(_0x15f2f6,null))[_0x13ef('0x39')](handleError(_0x15f2f6,null));};exports[_0x13ef('0x41')]=function(_0x2aa401,_0x137a74){return db[_0x13ef('0x23')][_0x13ef('0x3d')]({'where':{'id':_0x2aa401[_0x13ef('0x40')]['id']}})[_0x13ef('0x1e')](handleEntityNotFound(_0x137a74,null))[_0x13ef('0x1e')](removeEntity(_0x137a74,null))['catch'](handleError(_0x137a74,null));};
\ No newline at end of file
+var _0x4bf3=['ServicenowField','rawAttributes','fieldName','type','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','error','name','send','index','map'];(function(_0x2eeb56,_0x231565){var _0x1a252b=function(_0xff4b70){while(--_0xff4b70){_0x2eeb56['push'](_0x2eeb56['shift']());}};_0x1a252b(++_0x231565);}(_0x4bf3,0xb6));var _0x34bf=function(_0x426b98,_0x2f4631){_0x426b98=_0x426b98-0x0;var _0x4bd64c=_0x4bf3[_0x426b98];return _0x4bd64c;};'use strict';var emlformat=require(_0x34bf('0x0'));var rimraf=require(_0x34bf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x34bf('0x2'));var rp=require(_0x34bf('0x3'));var moment=require(_0x34bf('0x4'));var BPromise=require(_0x34bf('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x34bf('0x6'));var sox=require(_0x34bf('0x7'));var csv=require(_0x34bf('0x8'));var ejs=require(_0x34bf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x34bf('0xa'));var crypto=require(_0x34bf('0xb'));var jsforce=require(_0x34bf('0xc'));var deskjs=require(_0x34bf('0xd'));var toCsv=require(_0x34bf('0x8'));var querystring=require('querystring');var Papa=require(_0x34bf('0xe'));var Redis=require(_0x34bf('0xf'));var authService=require(_0x34bf('0x10'));var qs=require(_0x34bf('0x11'));var as=require(_0x34bf('0x12'));var hardwareService=require(_0x34bf('0x13'));var logger=require('../../config/logger')(_0x34bf('0x14'));var utils=require(_0x34bf('0x15'));var config=require(_0x34bf('0x16'));var licenseUtil=require(_0x34bf('0x17'));var db=require(_0x34bf('0x18'))['db'];function respondWithStatusCode(_0x53f1da,_0x3bb4b2){_0x3bb4b2=_0x3bb4b2||0xcc;return function(_0xb4f39d){if(_0xb4f39d){return _0x53f1da[_0x34bf('0x19')](_0x3bb4b2);}return _0x53f1da[_0x34bf('0x1a')](_0x3bb4b2)['end']();};}function respondWithResult(_0x44a641,_0x3d6d4d){_0x3d6d4d=_0x3d6d4d||0xc8;return function(_0x32e46a){if(_0x32e46a){return _0x44a641['status'](_0x3d6d4d)[_0x34bf('0x1b')](_0x32e46a);}};}function respondWithFilteredResult(_0x3d5557,_0x437697){return function(_0x35f05b){if(_0x35f05b){var _0x3033aa=typeof _0x437697['offset']===_0x34bf('0x1c')&&typeof _0x437697[_0x34bf('0x1d')]==='undefined';var _0x140991=_0x35f05b[_0x34bf('0x1e')];var _0x37bf8f=_0x3033aa?0x0:_0x437697[_0x34bf('0x1f')];var _0xd33cbe=_0x3033aa?_0x35f05b[_0x34bf('0x1e')]:_0x437697[_0x34bf('0x1f')]+_0x437697['limit'];var _0x156868;if(_0xd33cbe>=_0x140991){_0xd33cbe=_0x140991;_0x156868=0xc8;}else{_0x156868=0xce;}_0x3d5557['status'](_0x156868);return _0x3d5557[_0x34bf('0x20')]('Content-Range',_0x37bf8f+'-'+_0xd33cbe+'/'+_0x140991)[_0x34bf('0x1b')](_0x35f05b);}return null;};}function patchUpdates(_0xab1830){return function(_0xda4a94){try{jsonpatch[_0x34bf('0x21')](_0xda4a94,_0xab1830,!![]);}catch(_0x2f1170){return BPromise['reject'](_0x2f1170);}return _0xda4a94[_0x34bf('0x22')]();};}function saveUpdates(_0x30d588,_0x2b7baa){return function(_0x200338){if(_0x200338){return _0x200338[_0x34bf('0x23')](_0x30d588)[_0x34bf('0x24')](function(_0x12617c){return _0x12617c;});}return null;};}function removeEntity(_0xd1aa83,_0x2f8147){return function(_0x3379ce){if(_0x3379ce){return _0x3379ce[_0x34bf('0x25')]()[_0x34bf('0x24')](function(){_0xd1aa83['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x256532,_0x508362){return function(_0x59e429){if(!_0x59e429){_0x256532[_0x34bf('0x19')](0x194);}return _0x59e429;};}function handleError(_0x4b7424,_0x1a6cc3){_0x1a6cc3=_0x1a6cc3||0x1f4;return function(_0x153af0){logger[_0x34bf('0x26')](_0x153af0['stack']);if(_0x153af0[_0x34bf('0x27')]){delete _0x153af0[_0x34bf('0x27')];}_0x4b7424['status'](_0x1a6cc3)[_0x34bf('0x28')](_0x153af0);};}exports[_0x34bf('0x29')]=function(_0x2aa7f6,_0x13fd18){var _0x46e130={},_0x5d3f42={},_0x4d2532={'count':0x0,'rows':[]};var _0xdd46a5=_[_0x34bf('0x2a')](db[_0x34bf('0x2b')][_0x34bf('0x2c')],function(_0x48bc72){return{'name':_0x48bc72[_0x34bf('0x2d')],'type':_0x48bc72[_0x34bf('0x2e')]['key']};});_0x5d3f42[_0x34bf('0x2f')]=_[_0x34bf('0x2a')](_0xdd46a5,_0x34bf('0x27'));_0x5d3f42[_0x34bf('0x30')]=_['keys'](_0x2aa7f6['query']);_0x5d3f42['filters']=_[_0x34bf('0x31')](_0x5d3f42['model'],_0x5d3f42[_0x34bf('0x30')]);_0x46e130[_0x34bf('0x32')]=_[_0x34bf('0x31')](_0x5d3f42[_0x34bf('0x2f')],qs['fields'](_0x2aa7f6[_0x34bf('0x30')]['fields']));_0x46e130[_0x34bf('0x32')]=_0x46e130[_0x34bf('0x32')][_0x34bf('0x33')]?_0x46e130[_0x34bf('0x32')]:_0x5d3f42[_0x34bf('0x2f')];if(!_0x2aa7f6[_0x34bf('0x30')][_0x34bf('0x34')](_0x34bf('0x35'))){_0x46e130[_0x34bf('0x1d')]=qs[_0x34bf('0x1d')](_0x2aa7f6[_0x34bf('0x30')]['limit']);_0x46e130['offset']=qs[_0x34bf('0x1f')](_0x2aa7f6[_0x34bf('0x30')][_0x34bf('0x1f')]);}_0x46e130[_0x34bf('0x36')]=qs[_0x34bf('0x37')](_0x2aa7f6[_0x34bf('0x30')]['sort']);_0x46e130[_0x34bf('0x38')]=qs['filters'](_[_0x34bf('0x39')](_0x2aa7f6[_0x34bf('0x30')],_0x5d3f42[_0x34bf('0x3a')]),_0xdd46a5);if(_0x2aa7f6[_0x34bf('0x30')][_0x34bf('0x3b')]){_0x46e130[_0x34bf('0x38')]=_['merge'](_0x46e130['where'],{'$or':_[_0x34bf('0x2a')](_0xdd46a5,function(_0x2706f4){if(_0x2706f4[_0x34bf('0x2e')]!==_0x34bf('0x3c')){var _0x56e8c6={};_0x56e8c6[_0x2706f4[_0x34bf('0x27')]]={'$like':'%'+_0x2aa7f6[_0x34bf('0x30')][_0x34bf('0x3b')]+'%'};return _0x56e8c6;}})});}_0x46e130=_[_0x34bf('0x3d')]({},_0x46e130,_0x2aa7f6[_0x34bf('0x3e')]);var _0x5b42c9={'where':_0x46e130[_0x34bf('0x38')]};return db[_0x34bf('0x2b')][_0x34bf('0x1e')](_0x5b42c9)[_0x34bf('0x24')](function(_0x25edd1){_0x4d2532[_0x34bf('0x1e')]=_0x25edd1;if(_0x2aa7f6[_0x34bf('0x30')][_0x34bf('0x3f')]){_0x46e130[_0x34bf('0x40')]=[{'all':!![]}];}return db['ServicenowField'][_0x34bf('0x41')](_0x46e130);})[_0x34bf('0x24')](function(_0x2e6e78){_0x4d2532[_0x34bf('0x42')]=_0x2e6e78;return _0x4d2532;})[_0x34bf('0x24')](respondWithFilteredResult(_0x13fd18,_0x46e130))[_0x34bf('0x43')](handleError(_0x13fd18,null));};exports[_0x34bf('0x44')]=function(_0x161a22,_0x3ad50d){var _0x111cda={'raw':!![],'where':{'id':_0x161a22[_0x34bf('0x45')]['id']}},_0x123271={};_0x123271[_0x34bf('0x2f')]=_[_0x34bf('0x46')](db[_0x34bf('0x2b')][_0x34bf('0x2c')]);_0x123271[_0x34bf('0x30')]=_[_0x34bf('0x46')](_0x161a22[_0x34bf('0x30')]);_0x123271[_0x34bf('0x3a')]=_[_0x34bf('0x31')](_0x123271[_0x34bf('0x2f')],_0x123271[_0x34bf('0x30')]);_0x111cda[_0x34bf('0x32')]=_[_0x34bf('0x31')](_0x123271[_0x34bf('0x2f')],qs['fields'](_0x161a22[_0x34bf('0x30')][_0x34bf('0x47')]));_0x111cda[_0x34bf('0x32')]=_0x111cda[_0x34bf('0x32')][_0x34bf('0x33')]?_0x111cda[_0x34bf('0x32')]:_0x123271[_0x34bf('0x2f')];if(_0x161a22[_0x34bf('0x30')][_0x34bf('0x3f')]){_0x111cda['include']=[{'all':!![]}];}_0x111cda=_[_0x34bf('0x3d')]({},_0x111cda,_0x161a22['options']);return db[_0x34bf('0x2b')][_0x34bf('0x48')](_0x111cda)[_0x34bf('0x24')](handleEntityNotFound(_0x3ad50d,null))[_0x34bf('0x24')](respondWithResult(_0x3ad50d,null))[_0x34bf('0x43')](handleError(_0x3ad50d,null));};exports['create']=function(_0x25f1ef,_0x59cf5e){return db[_0x34bf('0x2b')][_0x34bf('0x49')](_0x25f1ef[_0x34bf('0x4a')],{})['then'](respondWithResult(_0x59cf5e,0xc9))[_0x34bf('0x43')](handleError(_0x59cf5e,null));};exports[_0x34bf('0x23')]=function(_0x32f49c,_0x39dd55){if(_0x32f49c[_0x34bf('0x4a')]['id']){delete _0x32f49c['body']['id'];}return db[_0x34bf('0x2b')][_0x34bf('0x48')]({'where':{'id':_0x32f49c[_0x34bf('0x45')]['id']}})['then'](handleEntityNotFound(_0x39dd55,null))['then'](saveUpdates(_0x32f49c['body'],null))['then'](respondWithResult(_0x39dd55,null))[_0x34bf('0x43')](handleError(_0x39dd55,null));};exports[_0x34bf('0x25')]=function(_0x13f632,_0x4dd9b1){return db[_0x34bf('0x2b')]['find']({'where':{'id':_0x13f632[_0x34bf('0x45')]['id']}})[_0x34bf('0x24')](handleEntityNotFound(_0x4dd9b1,null))[_0x34bf('0x24')](removeEntity(_0x4dd9b1,null))[_0x34bf('0x43')](handleError(_0x4dd9b1,null));};
\ No newline at end of file