@sparrowai/sparrow-mcp 1.1.13 → 1.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/scripts/mcp-test/mcp-client.js +1 -1
  3. package/dist/scripts/test-runner/check-failed-tests.js +1 -1
  4. package/dist/scripts/test-runner/compare-responses.js +1 -1
  5. package/dist/scripts/test-runner/standalone-test-fixed-header.js +1 -1
  6. package/dist/scripts/test-runner/standalone-test.js +1 -1
  7. package/dist/src/config/appConfig.js +1 -1
  8. package/dist/src/config/constants.js +1 -1
  9. package/dist/src/controllers/__tests__/analysis.controller.test.js +1 -1
  10. package/dist/src/controllers/__tests__/sast.controller.test.js +1 -1
  11. package/dist/src/controllers/__tests__/sca.controller.test.js +1 -1
  12. package/dist/src/controllers/__tests__/security.controller.test.js +1 -1
  13. package/dist/src/controllers/__tests__/system.controller.test.js +1 -1
  14. package/dist/src/controllers/analysis.controller.d.ts +24 -1
  15. package/dist/src/controllers/analysis.controller.js +1 -1
  16. package/dist/src/controllers/sast.controller.js +1 -1
  17. package/dist/src/controllers/sca.controller.js +1 -1
  18. package/dist/src/controllers/security.controller.js +1 -1
  19. package/dist/src/controllers/system.controller.js +1 -1
  20. package/dist/src/schemas/tool.schemas.js +1 -1
  21. package/dist/src/server.js +1 -1
  22. package/dist/src/services/__tests__/analysis.remediation.spec.js +1 -1
  23. package/dist/src/services/__tests__/analysis.remediation.test.js +1 -1
  24. package/dist/src/services/__tests__/analysis.service.sca.test.js +1 -1
  25. package/dist/src/services/__tests__/analysis.service.test.js +1 -1
  26. package/dist/src/services/__tests__/checker.service.test.js +1 -1
  27. package/dist/src/services/__tests__/llm.service.test.js +1 -1
  28. package/dist/src/services/__tests__/s3.service.test.js +1 -1
  29. package/dist/src/services/__tests__/sparrow.service.test.js +1 -1
  30. package/dist/src/services/analysis.service.js +1 -1
  31. package/dist/src/services/checker.service.js +1 -1
  32. package/dist/src/services/llm/AnthropicProvider.js +1 -1
  33. package/dist/src/services/llm/BedrockProvider.js +1 -1
  34. package/dist/src/services/llm/GeminiProvider.js +1 -1
  35. package/dist/src/services/llm/LLMFactory.js +1 -1
  36. package/dist/src/services/llm/LLMProvider.js +1 -1
  37. package/dist/src/services/llm/OllamaProvider.js +1 -1
  38. package/dist/src/services/llm/OpenAIProvider.js +1 -1
  39. package/dist/src/services/llm.service.js +1 -1
  40. package/dist/src/services/s3.service.js +1 -1
  41. package/dist/src/services/sparrow.service.js +1 -1
  42. package/dist/src/types/types.d.ts +3 -0
  43. package/dist/src/types/types.js +1 -1
  44. package/dist/src/utils/__tests__/crypto.util.test.js +1 -1
  45. package/dist/src/utils/__tests__/diff.util.test.js +1 -1
  46. package/dist/src/utils/__tests__/fileManager.test.js +1 -1
  47. package/dist/src/utils/__tests__/fileManagerSecure.test.js +1 -1
  48. package/dist/src/utils/__tests__/logger.test.js +1 -1
  49. package/dist/src/utils/crypto.util.js +1 -1
  50. package/dist/src/utils/diff.util.js +1 -1
  51. package/dist/src/utils/fileManager.js +1 -1
  52. package/dist/src/utils/fileManagerSecure.js +1 -1
  53. package/dist/src/utils/logger.js +1 -1
  54. package/package.json +1 -1
@@ -1 +1 @@
1
- const a4_0x38a391=a4_0x2686;(function(_0x1f2b51,_0x593c65){const _0x36dcc1=a4_0x2686,_0x48c562=_0x1f2b51();while(!![]){try{const _0x2ee173=-parseInt(_0x36dcc1(0x1bf))/0x1*(parseInt(_0x36dcc1(0x174))/0x2)+-parseInt(_0x36dcc1(0x2b7))/0x3+parseInt(_0x36dcc1(0x14a))/0x4+parseInt(_0x36dcc1(0x259))/0x5*(-parseInt(_0x36dcc1(0x246))/0x6)+-parseInt(_0x36dcc1(0x2f3))/0x7+parseInt(_0x36dcc1(0x105))/0x8*(-parseInt(_0x36dcc1(0x1f4))/0x9)+parseInt(_0x36dcc1(0x238))/0xa*(parseInt(_0x36dcc1(0x14f))/0xb);if(_0x2ee173===_0x593c65)break;else _0x48c562['push'](_0x48c562['shift']());}catch(_0x3bf567){_0x48c562['push'](_0x48c562['shift']());}}}(a4_0x15a9,0x8387c));const a4_0x1acbf6=(function(){let _0x4c393b=!![];return function(_0x14c672,_0x5301d6){const _0x18053b=_0x4c393b?function(){const _0x481d7c=a4_0x2686;if(_0x5301d6){const _0x1ea27c=_0x5301d6[_0x481d7c(0x206)](_0x14c672,arguments);return _0x5301d6=null,_0x1ea27c;}}:function(){};return _0x4c393b=![],_0x18053b;};}()),a4_0x2dd750=a4_0x1acbf6(this,function(){const _0x215164=a4_0x2686;return a4_0x2dd750['toString']()[_0x215164(0x2c4)](_0x215164(0x1cc)+'+$')['toString']()[_0x215164(0x18b)+'r'](a4_0x2dd750)[_0x215164(0x2c4)]('(((.+)+)+)'+'+$');});a4_0x2dd750();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x17a5b9 from'fs';import a4_0x32ff32 from'path';import{fileURLToPath}from'url';import a4_0x234d87 from'adm-zip';import a4_0x58b6db from'os';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x32ff32[a4_0x38a391(0xbe)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||a4_0x38a391(0x183)+a4_0x38a391(0x140)+'rrowcloud.'+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8,QA_TC_ROOT=a4_0x32ff32['resolve'](process['cwd'](),'test-files'+a4_0x38a391(0x256));function createTempZip(_0x1272c6,_0x59672b){const _0xa292b3=a4_0x38a391,_0x5e3477=new a4_0x234d87();_0x5e3477[_0xa292b3(0x110)+_0xa292b3(0xdc)](_0x1272c6);const _0x2cf74e=a4_0x58b6db['tmpdir'](),_0x4af495=a4_0x32ff32[_0xa292b3(0x128)](_0x2cf74e,_0x59672b);return _0x5e3477[_0xa292b3(0x203)](_0x4af495),_0x4af495;}function getAnalysisLink(_0x310562){const _0x5b1fb5=a4_0x38a391;return SPARROW_BASE_URL+(_0x5b1fb5(0x1b3)+_0x5b1fb5(0x1d1)+'ysis/')+_0x310562;}async function pollUntilComplete(_0x2de49d,_0x5d10e7){const _0x41843f=a4_0x38a391,_0x215db5={};_0x215db5['aivqC']=_0x41843f(0x1f8),_0x215db5[_0x41843f(0x1b8)]=_0x41843f(0xfc)+_0x41843f(0xf4),_0x215db5[_0x41843f(0x2be)]=_0x41843f(0x22e);const _0x33ccfb=_0x215db5;let _0x23e38b=0x0;while(_0x23e38b<MAX_POLL_ATTEMPTS){if(_0x41843f(0x1b0)===_0x41843f(0x1b0)){const _0x5bad12={};_0x5bad12[_0x41843f(0x2d7)]=_0x5d10e7;const _0xac5751=await _0x2de49d[_0x41843f(0x26c)](_0x33ccfb[_0x41843f(0x1fe)],{'name':_0x33ccfb['jEtua'],'arguments':_0x5bad12}),_0x53cf6e=String(_0xac5751[_0x41843f(0x137)][0x0]['text'])[_0x41843f(0x27b)+'e']();if(_0x53cf6e['includes']('COMPLETE')||_0x53cf6e[_0x41843f(0x10f)]('SUCCESS')||_0x53cf6e[_0x41843f(0x10f)]('FAIL')||_0x53cf6e[_0x41843f(0x10f)](_0x33ccfb['TjpGF'])){const _0x58508e={};return _0x58508e[_0x41843f(0x302)]='COMPLETE',_0x58508e['result']=_0xac5751['content'][0x0]['text'],_0x58508e;}await new Promise(_0x900e15=>setTimeout(_0x900e15,POLL_INTERVAL_MS)),_0x23e38b++;}else{if(!_0xda1762)return'\x22\x22';let _0x5611fc=_0x45e1ec;return _0x525bbe?(_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\r\n/g,'\x0a'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\t/g,'\x20')):(_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\r?\n/g,'\x20'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\t/g,'\x20'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\s+/g,'\x20'),_0x5611fc=_0x5611fc['trim']()),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/"/g,'\x22\x22'),'\x22'+_0x5611fc+'\x22';}}throw new Error('Polling\x20ti'+'meout\x20afte'+'r\x20'+_0x23e38b+_0x41843f(0x1f2));}function isErrorResponse(_0xf6646c){const _0x5b74ee=a4_0x38a391;if(_0xf6646c[_0x5b74ee(0x268)]===!![])return!![];if(_0xf6646c['structured'+_0x5b74ee(0x1b2)]?.['error'])return!![];const _0x357be0=_0xf6646c['content']?.[0x0]?.[_0x5b74ee(0x204)]?.[_0x5b74ee(0x114)+'e']()||'';return _0x357be0[_0x5b74ee(0x10f)](_0x5b74ee(0x171))||_0x357be0['includes'](_0x5b74ee(0x1c1));}function escapeTsvField(_0xb4797b,_0x439a96=![]){const _0x5bbfa0=a4_0x38a391;if(!_0xb4797b)return'\x22\x22';let _0x5f35db=_0xb4797b;return _0x439a96?(_0x5f35db=_0x5f35db['replace'](/\r\n/g,'\x0a'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\t/g,'\x20')):(_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\r?\n/g,'\x20'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\t/g,'\x20'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\s+/g,'\x20'),_0x5f35db=_0x5f35db['trim']()),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/"/g,'\x22\x22'),'\x22'+_0x5f35db+'\x22';}function saveTsv(_0x5c173c,_0x5eb1e9){const _0x43fca4=a4_0x38a391,_0x466538={'GtSqS':function(_0x15c9d2,_0x4f5f99){return _0x15c9d2(_0x4f5f99);},'oBKGJ':_0x43fca4(0x179)},_0x5e2b6c=['테스트ID','도구명','테스트분류',_0x43fca4(0x28f),_0x43fca4(0x228),_0x43fca4(0x26a),_0x43fca4(0x29b),_0x43fca4(0x13a),_0x43fca4(0x102),'상태',_0x466538[_0x43fca4(0xbd)],'결과',_0x43fca4(0x1e9),_0x43fca4(0x2ad),'비고'],_0x3c3f12=[_0x5e2b6c[_0x43fca4(0x27a)](_0x3a61db=>escapeTsvField(_0x3a61db))[_0x43fca4(0x128)]('\x09')],_0xb521b0=Object[_0x43fca4(0x1e4)](_0x5c173c)[_0x43fca4(0x1e8)]((_0x2efb16,_0x2227ac)=>{const _0x32d201=_0x43fca4,_0x481671=_0x466538[_0x32d201(0x10b)](parseInt,_0x2efb16[0x0][_0x32d201(0xb7)]('TC','')),_0x1335c3=parseInt(_0x2227ac[0x0][_0x32d201(0xb7)]('TC',''));return _0x481671-_0x1335c3;});for(const [_0x2b8692,_0x36efd1]of _0xb521b0){const _0x29b218=BUILTIN_TESTS[_0x43fca4(0x288)](_0x321987=>_0x321987['id']===_0x2b8692);if(!_0x29b218)continue;let _0x177695=_0x36efd1['status'];_0x36efd1['rationale'][_0x43fca4(0x20f)](_0x43fca4(0x1f5))&&(_0x177695=_0x43fca4(0x1f5));let _0x279ffa=_0x36efd1['rationale'];_0x36efd1[_0x43fca4(0x1ce)]&&(_0x279ffa+=_0x43fca4(0x111)+_0x43fca4(0x296)+'-\x0a'+_0x36efd1[_0x43fca4(0x1ce)]);const _0x55b2dd=[_0x2b8692,_0x29b218[_0x43fca4(0x278)],_0x29b218[_0x43fca4(0x310)],_0x29b218[_0x43fca4(0x2c6)],_0x29b218[_0x43fca4(0x244)+'on']||'',_0x29b218[_0x43fca4(0xb9)],_0x29b218[_0x43fca4(0x1b4)],_0x29b218[_0x43fca4(0x1b7)]||'',_0x29b218[_0x43fca4(0x279)],'완료','Antigravit'+'y',_0x177695,_0x279ffa,_0x36efd1[_0x43fca4(0xba)+'nk']||'',''];_0x3c3f12[_0x43fca4(0x176)](_0x55b2dd[_0x43fca4(0x27a)]((_0x5b980f,_0x39b20f)=>escapeTsvField(_0x5b980f,_0x39b20f===0x5||_0x39b20f===0xc))[_0x43fca4(0x128)]('\x09'));}a4_0x17a5b9[_0x43fca4(0x116)+'ync'](_0x5eb1e9,_0x3c3f12[_0x43fca4(0x128)]('\x0a'),_0x43fca4(0x2fc));}const args=process[a4_0x38a391(0x29c)]['slice'](0x2),customPath=args[0x0],qaTcDir=customPath?a4_0x32ff32[a4_0x38a391(0x261)](process['cwd'](),customPath):a4_0x32ff32[a4_0x38a391(0x261)](__dirname,a4_0x38a391(0x2c0)+a4_0x38a391(0x2fa)+'tc');console['log'](a4_0x38a391(0xe6)+a4_0x38a391(0x15c)+'m:\x20'+qaTcDir);const sastDir=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x2ca)),scaDir=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x248)),sastAllLanguageDir=a4_0x32ff32['resolve'](sastDir,'all_langua'+'ge'),javaFile=a4_0x32ff32['resolve'](sastAllLanguageDir,a4_0x38a391(0x2d4)+a4_0x38a391(0x2b4)),jsFile=a4_0x32ff32[a4_0x38a391(0x261)](sastAllLanguageDir,a4_0x38a391(0x299)+a4_0x38a391(0x1b6)+'s'),safeJavaFile=a4_0x32ff32[a4_0x38a391(0x261)](sastAllLanguageDir,'CommandInj'+a4_0x38a391(0x30d)+a4_0x38a391(0x216)+'x'),javaContent=a4_0x17a5b9['existsSync'](javaFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](javaFile,a4_0x38a391(0x2fc)):'',jsContent=a4_0x17a5b9['existsSync'](jsFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](jsFile,'utf-8'):'',safeJavaContent=a4_0x17a5b9[a4_0x38a391(0x1cf)](safeJavaFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](safeJavaFile,a4_0x38a391(0x2fc)):'',sastTestFolder=sastDir,scaTestFolder=scaDir,packageJsonFile=a4_0x32ff32[a4_0x38a391(0x261)](scaTestFolder,a4_0x38a391(0x1e5)+a4_0x38a391(0x242)),packageJsonContent=a4_0x17a5b9[a4_0x38a391(0x1cf)](packageJsonFile)?a4_0x17a5b9['readFileSy'+'nc'](packageJsonFile,a4_0x38a391(0x2fc)):'',largeZipPath=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x123)+a4_0x38a391(0x2dd)+a4_0x38a391(0x295)),largeFolderPath=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,'big_files/'+a4_0x38a391(0x2b9)),BUILTIN_JAVA_CODE=a4_0x38a391(0x249)+'ss\x20UserCon'+a4_0x38a391(0x1ab)+a4_0x38a391(0x162)+a4_0x38a391(0x2bf)+a4_0x38a391(0x25b)+a4_0x38a391(0xbf)+a4_0x38a391(0xb8)+a4_0x38a391(0x1d3)+a4_0x38a391(0xdb)+'ng\x20query\x20='+'\x20\x22SELECT\x20*'+a4_0x38a391(0x311)+'s\x20WHERE\x20us'+a4_0x38a391(0x10e)+a4_0x38a391(0x138)+'\x20+\x20\x22\x27\x22;\x0a\x20\x20'+a4_0x38a391(0xc1),BUILTIN_JS_CODE=a4_0x38a391(0x25c)+a4_0x38a391(0x2c2)+a4_0x38a391(0x250)+a4_0x38a391(0x301)+a4_0x38a391(0x180)+a4_0x38a391(0x2d9)+a4_0x38a391(0x2eb)+a4_0x38a391(0x27e)+a4_0x38a391(0x1d9)+a4_0x38a391(0x2f1)+a4_0x38a391(0x1fc)+a4_0x38a391(0x12d)+a4_0x38a391(0xe4)+'onst\x20query'+a4_0x38a391(0x284)+a4_0x38a391(0x243)+'ers\x20WHERE\x20'+a4_0x38a391(0x23f)+'rId;\x0a\x20\x20\x20\x20r'+a4_0x38a391(0x227)+a4_0x38a391(0x2de);function extractAnalysisId(_0x2f9874){const _0x4e8d4d=a4_0x38a391;if(_0x2f9874[_0x4e8d4d(0x30c)+'Content']&&_0x2f9874['structured'+_0x4e8d4d(0x1b2)]['analysisId'])return _0x4e8d4d(0x26b)===_0x4e8d4d(0x2ac)?!![]:String(_0x2f9874[_0x4e8d4d(0x30c)+_0x4e8d4d(0x1b2)][_0x4e8d4d(0x2d7)]);const _0x3ff330=_0x2f9874[_0x4e8d4d(0x137)][0x0][_0x4e8d4d(0x204)],_0x511aea=_0x3ff330['match'](/Analysis ID:\s*(\d+)/i)||_0x3ff330['match'](/분석 ID:\s*(\d+)/i);if(!_0x511aea)throw new Error(_0x4e8d4d(0x117)+_0x4e8d4d(0x2db)+_0x4e8d4d(0x1dc)+_0x4e8d4d(0x2c5)+':\x20'+_0x3ff330);return _0x511aea[0x1];}const BUILTIN_TESTS=[{'id':a4_0x38a391(0x144),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':'정상동작','name':'단일\x20Java\x20파일'+'\x20SAST\x20분석\x20성'+'공','procedure':a4_0x38a391(0x2fe)+'tent에\x20Java'+a4_0x38a391(0x1fa)+a4_0x38a391(0x1a3)+'UserContro'+'ller.java\x20'+'입력\x0a3.\x20도구\x20실'+'행','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x118)+a4_0x38a391(0x28a),'data':a4_0x38a391(0x1a6)+a4_0x38a391(0x130)+a4_0x38a391(0xca)+a4_0x38a391(0x308)+'n','priority':'높음','task':async _0x265fff=>{const _0x32ed89=a4_0x38a391,_0x33ab49={'WGPmK':function(_0x5857a4,_0x5f2f39){return _0x5857a4(_0x5f2f39);},'YOHbq':_0x32ed89(0xfc)+_0x32ed89(0x2ae)},_0x5e0932=javaContent||BUILTIN_JAVA_CODE,_0x104ac0={};_0x104ac0[_0x32ed89(0x1a6)+'t']=_0x5e0932,_0x104ac0[_0x32ed89(0x2f9)]=_0x32ed89(0x255)+'.java';const _0x1d559b={};_0x1d559b[_0x32ed89(0x2c6)]=_0x32ed89(0x12b)+_0x32ed89(0x209),_0x1d559b[_0x32ed89(0x1a1)]=_0x104ac0;const _0x49fa4b=await _0x265fff['request'](_0x32ed89(0x1f8),_0x1d559b),_0x277780=_0x33ab49['WGPmK'](extractAnalysisId,_0x49fa4b);await pollUntilComplete(_0x265fff,_0x277780);const _0x294f69={};_0x294f69['analysisId']=_0x277780;const _0x142b87={};_0x142b87[_0x32ed89(0x2c6)]=_0x33ab49[_0x32ed89(0x1f0)],_0x142b87['arguments']=_0x294f69;const _0x28d5b5=await _0x265fff[_0x32ed89(0x26c)]('tools/call',_0x142b87),_0x23f347=_0x28d5b5[_0x32ed89(0x137)][0x0][_0x32ed89(0x204)],_0x369b12=_0x23f347[_0x32ed89(0x275)](/(\d+)\s*vulnerabilities/i),_0x29d3c4=_0x369b12?_0x369b12[0x1]:'0';return{'passed':!![],'rationale':_0x32ed89(0x1d6)+_0x32ed89(0xf6)+'ID\x20'+_0x277780+'\x20완료.\x20'+_0x29d3c4+_0x32ed89(0xbb),'analysisLink':getAnalysisLink(_0x277780),'toolOutput':JSON[_0x32ed89(0x1ad)](_0x49fa4b,null,0x2)};}},{'id':a4_0x38a391(0x2ee),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x258)+'류','procedure':a4_0x38a391(0x2cc)+'_API_KEY\x20미'+a4_0x38a391(0xb6)+'행','expected':a4_0x38a391(0x1c4),'priority':'높음','task':async _0x561ff4=>{const _0x75397e=a4_0x38a391,_0x38a828={};return _0x38a828[_0x75397e(0x1f6)]=!![],_0x38a828['rationale']=_0x75397e(0x2f6)+_0x75397e(0x11f)+_0x75397e(0x240)+_0x75397e(0x113)+_0x75397e(0x163),_0x38a828;}},{'id':a4_0x38a391(0x2a0),'tool':a4_0x38a391(0x12b)+'le_sast','category':'정상동작','name':a4_0x38a391(0x11b)+'\x20JavaScrip'+'t','procedure':'1.\x20JavaScr'+a4_0x38a391(0x18d)+a4_0x38a391(0x2c8)+'Name에\x20.js\x20'+a4_0x38a391(0x21c),'expected':a4_0x38a391(0xc9)+'ysisId\x20반환','data':'fileName:\x20'+a4_0x38a391(0x1c7),'priority':'중간','task':async _0x21be1f=>{const _0x121901=a4_0x38a391,_0x678d2b=jsContent||BUILTIN_JS_CODE,_0x14ac94={};_0x14ac94[_0x121901(0x1a6)+'t']=_0x678d2b,_0x14ac94[_0x121901(0x2f9)]=_0x121901(0x1e2);const _0x5b437d={};_0x5b437d[_0x121901(0x2c6)]=_0x121901(0x12b)+_0x121901(0x209),_0x5b437d[_0x121901(0x1a1)]=_0x14ac94;const _0x513b72=await _0x21be1f[_0x121901(0x26c)](_0x121901(0x1f8),_0x5b437d),_0xdb7a4=extractAnalysisId(_0x513b72);return{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x121901(0x185)+_0x121901(0x236)+_0x121901(0x1a5)+_0xdb7a4+_0x121901(0xe1),'analysisLink':getAnalysisLink(_0xdb7a4),'toolOutput':JSON[_0x121901(0x1ad)](_0x513b72,null,0x2)};}},{'id':'TC004','tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x17e),'procedure':'1.\x20확장자\x20없는\x20'+a4_0x38a391(0x187)+a4_0x38a391(0x303),'expected':'오류\x20메시지\x20반환','priority':'낮음','task':async _0x5c05f4=>{const _0x478790=a4_0x38a391,_0x3c9abb={};_0x3c9abb[_0x478790(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c9abb[_0x478790(0x2f9)]=_0x478790(0x103)+_0x478790(0x1ff);const _0x2e4049={};_0x2e4049[_0x478790(0x2c6)]=_0x478790(0x12b)+_0x478790(0x209),_0x2e4049['arguments']=_0x3c9abb;const _0x130842=await _0x5c05f4[_0x478790(0x26c)]('tools/call',_0x2e4049);if(_0x130842[_0x478790(0x268)]||_0x130842[_0x478790(0x137)]?.[0x0]?.[_0x478790(0x204)]?.[_0x478790(0x10f)](_0x478790(0x171)))return{'passed':!![],'rationale':_0x478790(0x260)+':\x20'+(_0x130842['content']?.[0x0]?.[_0x478790(0x204)]||_0x478790(0x2b3)+_0x478790(0x213)),'toolOutput':JSON[_0x478790(0x1ad)](_0x130842,null,0x2)};return{'passed':![],'rationale':_0x478790(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x130842,null,0x2)};}},{'id':a4_0x38a391(0x29a),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x1c2),'procedure':a4_0x38a391(0x2e1)+a4_0x38a391(0x2b8),'expected':'오류\x20메시지','priority':'낮음','task':async _0x23ec3f=>{const _0x279a8e=a4_0x38a391,_0x1177b1={};_0x1177b1[_0x279a8e(0x1a6)+'t']='',_0x1177b1['fileName']='Empty.java';const _0x46cd6d={};_0x46cd6d[_0x279a8e(0x2c6)]=_0x279a8e(0x12b)+_0x279a8e(0x209),_0x46cd6d['arguments']=_0x1177b1;const _0x370c05=await _0x23ec3f[_0x279a8e(0x26c)](_0x279a8e(0x1f8),_0x46cd6d);if(isErrorResponse(_0x370c05))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x370c05[_0x279a8e(0x137)]?.[0x0]?.['text']||_0x279a8e(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x370c05,null,0x2)};return{'passed':![],'rationale':_0x279a8e(0x1be)+_0x279a8e(0x2af),'toolOutput':JSON[_0x279a8e(0x1ad)](_0x370c05,null,0x2)};}},{'id':a4_0x38a391(0x237),'tool':a4_0x38a391(0x12b)+'le_sast','category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x231),'procedure':a4_0x38a391(0x232)+a4_0x38a391(0x192),'expected':a4_0x38a391(0x2d6),'priority':'낮음','task':async _0x1292db=>{const _0x2083e8=a4_0x38a391,_0x132b84={};_0x132b84[_0x2083e8(0x186)]=_0x2083e8(0xf0);const _0x5b2452=_0x132b84;try{const _0x28ac26={};_0x28ac26[_0x2083e8(0x1a6)+'t']=_0x2083e8(0x20d)+'d',_0x28ac26[_0x2083e8(0x2f9)]=_0x5b2452[_0x2083e8(0x186)];const _0x44417b={};_0x44417b[_0x2083e8(0x2c6)]='analyze_fi'+_0x2083e8(0x209),_0x44417b[_0x2083e8(0x1a1)]=_0x28ac26;const _0x79811d=await _0x1292db[_0x2083e8(0x26c)](_0x2083e8(0x1f8),_0x44417b);return{'passed':!![],'rationale':_0x2083e8(0x12e)+_0x2083e8(0x122)+_0x2083e8(0x191),'toolOutput':JSON[_0x2083e8(0x1ad)](_0x79811d,null,0x2)};}catch(_0x191620){const _0x4c3c60={};return _0x4c3c60[_0x2083e8(0x1f6)]=!![],_0x4c3c60['rationale']=_0x2083e8(0x19c)+'\x20'+_0x191620[_0x2083e8(0x158)],_0x4c3c60;}}},{'id':a4_0x38a391(0x194),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':'정상동작','name':'여러\x20파일\x20SAST'+'\x20분석\x20성공','procedure':a4_0x38a391(0x2d5)+a4_0x38a391(0xf2)+a4_0x38a391(0x293),'expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x342bdc=>{const _0x178ba0=a4_0x38a391,_0x1faa61={'cOqjn':function(_0x45db17,_0x314ab2){return _0x45db17(_0x314ab2);}};if(!javaContent||!jsContent){const _0xbc68da={};return _0xbc68da['passed']=!![],_0xbc68da[_0x178ba0(0x2cb)]='테스트\x20파일을\x20찾을'+_0x178ba0(0x2bd),_0xbc68da;}const _0x14ca31={};_0x14ca31[_0x178ba0(0x1d0)]=[javaFile,jsFile];const _0x9bb754={};_0x9bb754[_0x178ba0(0x2c6)]=_0x178ba0(0x12b)+_0x178ba0(0x141),_0x9bb754[_0x178ba0(0x1a1)]=_0x14ca31;const _0x51e674=await _0x342bdc[_0x178ba0(0x26c)]('tools/call',_0x9bb754),_0x20952e=extractAnalysisId(_0x51e674);return await pollUntilComplete(_0x342bdc,_0x20952e),{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x178ba0(0x2a1)+_0x178ba0(0x2ea)+_0x20952e+'\x20완료.','analysisLink':_0x1faa61['cOqjn'](getAnalysisLink,_0x20952e),'toolOutput':JSON['stringify'](_0x51e674,null,0x2)};}},{'id':a4_0x38a391(0x2a9),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x106)+'배열\x201개)','procedure':a4_0x38a391(0xdd)+a4_0x38a391(0xb5)+a4_0x38a391(0x2e5),'expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'낮음','task':async _0x170f00=>{const _0x326bf5=a4_0x38a391,_0x2bb6aa={};_0x2bb6aa[_0x326bf5(0x201)]=_0x326bf5(0x12b)+_0x326bf5(0x141);const _0x199aff=_0x2bb6aa;if(!javaContent){const _0x141696={};return _0x141696['passed']=!![],_0x141696['rationale']=_0x326bf5(0x2df)+_0x326bf5(0x2bd),_0x141696;}const _0x5d74bf={};_0x5d74bf[_0x326bf5(0x1d0)]=[javaFile];const _0x128e26={};_0x128e26[_0x326bf5(0x2c6)]=_0x199aff[_0x326bf5(0x201)],_0x128e26['arguments']=_0x5d74bf;const _0x2c699f=await _0x170f00[_0x326bf5(0x26c)]('tools/call',_0x128e26),_0xecb845=extractAnalysisId(_0x2c699f);return{'passed':!![],'rationale':_0x326bf5(0x1c5)+_0x326bf5(0x2bb)+'\x20'+_0xecb845,'analysisLink':getAnalysisLink(_0xecb845),'toolOutput':JSON[_0x326bf5(0x1ad)](_0x2c699f,null,0x2)};}},{'id':a4_0x38a391(0x1ca),'tool':'analyze_fi'+a4_0x38a391(0x141),'category':'오류처리','name':a4_0x38a391(0x1a8),'procedure':a4_0x38a391(0x2a4)+a4_0x38a391(0x2e2),'expected':a4_0x38a391(0x1c4),'priority':'중간','task':async _0x50f54e=>{const _0x5481ad=a4_0x38a391,_0x52184c={};_0x52184c['filePaths']=[];const _0x215cd7={};_0x215cd7[_0x5481ad(0x2c6)]='analyze_fi'+_0x5481ad(0x141),_0x215cd7[_0x5481ad(0x1a1)]=_0x52184c;const _0x2d44d4=await _0x50f54e['request']('tools/call',_0x215cd7);if(isErrorResponse(_0x2d44d4))return{'passed':!![],'rationale':_0x5481ad(0x260)+':\x20'+(_0x2d44d4[_0x5481ad(0x137)]?.[0x0]?.['text']||_0x5481ad(0x2b3)+'cted'),'toolOutput':JSON[_0x5481ad(0x1ad)](_0x2d44d4,null,0x2)};return{'passed':![],'rationale':_0x5481ad(0x1be)+_0x5481ad(0x2af),'toolOutput':JSON[_0x5481ad(0x1ad)](_0x2d44d4,null,0x2)};}},{'id':'TC013','tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':a4_0x38a391(0x2e8),'name':'존재하지\x20않는\x20파일'+a4_0x38a391(0xc0),'procedure':a4_0x38a391(0x148)+a4_0x38a391(0x156)+'도구\x20실행','expected':'오류\x20메시지\x20반환','priority':'중간','task':async _0xa37570=>{const _0x10926c=a4_0x38a391,_0x15e033={};_0x15e033[_0x10926c(0x1d0)]=[_0x10926c(0x26d)+_0x10926c(0x223)+'va'];const _0x4abccb={};_0x4abccb[_0x10926c(0x2c6)]=_0x10926c(0x12b)+_0x10926c(0x141),_0x4abccb[_0x10926c(0x1a1)]=_0x15e033;const _0x4df14e=await _0xa37570[_0x10926c(0x26c)](_0x10926c(0x1f8),_0x4abccb);if(isErrorResponse(_0x4df14e))return{'passed':!![],'rationale':_0x10926c(0x260)+':\x20'+(_0x4df14e[_0x10926c(0x137)]?.[0x0]?.[_0x10926c(0x204)]||_0x10926c(0x2b3)+'cted'),'toolOutput':JSON[_0x10926c(0x1ad)](_0x4df14e,null,0x2)};return{'passed':![],'rationale':_0x10926c(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x4df14e,null,0x2)};}},{'id':a4_0x38a391(0x1f7),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2da)+'\x20분석\x20성공','procedure':'1.\x20폴더\x20경로\x20입'+'력\x0a2.\x20도구\x20실행','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x13e2b4=>{const _0x1a5b7a=a4_0x38a391;if(!a4_0x17a5b9['existsSync'](sastTestFolder)){const _0x993b68={};return _0x993b68[_0x1a5b7a(0x1f6)]=!![],_0x993b68['rationale']=_0x1a5b7a(0x2f4)+_0x1a5b7a(0x312)+_0x1a5b7a(0x2b5),_0x993b68;}const _0x31f857={};_0x31f857[_0x1a5b7a(0x1e3)]=sastTestFolder;const _0xce2f47={};_0xce2f47['name']=_0x1a5b7a(0x239)+_0x1a5b7a(0x221),_0xce2f47[_0x1a5b7a(0x1a1)]=_0x31f857;const _0x281887=await _0x13e2b4['request'](_0x1a5b7a(0x1f8),_0xce2f47),_0x4cb847=extractAnalysisId(_0x281887);return await pollUntilComplete(_0x13e2b4,_0x4cb847),{'passed':!![],'rationale':'폴더\x20분석\x20'+_0x4cb847+_0x1a5b7a(0x283),'analysisLink':getAnalysisLink(_0x4cb847),'toolOutput':JSON[_0x1a5b7a(0x1ad)](_0x281887,null,0x2)};}},{'id':a4_0x38a391(0x21f),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':a4_0x38a391(0x2c3),'name':'대용량\x20폴더\x20ZIP'+a4_0x38a391(0x181),'procedure':a4_0x38a391(0x15b)+'분석','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x2b2)+'제한','priority':'낮음','task':async _0x28c068=>{const _0x5287a4=a4_0x38a391,_0x321c3b={'CDVKA':function(_0x1fcf56,_0x1f2904,_0x3d6c0f){return _0x1fcf56(_0x1f2904,_0x3d6c0f);}};if(!a4_0x17a5b9['existsSync'](largeFolderPath)){const _0x592f9f={};return _0x592f9f[_0x5287a4(0x1f6)]=!![],_0x592f9f[_0x5287a4(0x2cb)]='대용량\x20테스트\x20폴더'+_0x5287a4(0x15a)+_0x5287a4(0x286)+_0x5287a4(0x1d7)+_0x5287a4(0x27f),_0x592f9f;}const _0x1eeb93={};_0x1eeb93[_0x5287a4(0x1e3)]=largeFolderPath;const _0x232601={};_0x232601[_0x5287a4(0x2c6)]=_0x5287a4(0x239)+_0x5287a4(0x221),_0x232601[_0x5287a4(0x1a1)]=_0x1eeb93;const _0x2d7346=await _0x28c068[_0x5287a4(0x26c)]('tools/call',_0x232601),_0x3f47ab=extractAnalysisId(_0x2d7346);return await _0x321c3b['CDVKA'](pollUntilComplete,_0x28c068,_0x3f47ab),{'passed':!![],'rationale':'대용량\x20폴더\x20분석\x20'+_0x5287a4(0x20c)+_0x3f47ab,'analysisLink':getAnalysisLink(_0x3f47ab),'toolOutput':JSON[_0x5287a4(0x1ad)](_0x2d7346,null,0x2)};}},{'id':a4_0x38a391(0xcf),'tool':'analyze_fo'+a4_0x38a391(0x221),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x2a2),'procedure':a4_0x38a391(0xc4)+a4_0x38a391(0x2e2),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x45936b=>{const _0x55f829=a4_0x38a391,_0x1c4089={'tzXAS':function(_0x200555,_0x49d9b3){return _0x200555(_0x49d9b3);}},_0x71f3d6={};_0x71f3d6[_0x55f829(0x1e3)]='';const _0x60dee9={};_0x60dee9[_0x55f829(0x2c6)]=_0x55f829(0x239)+_0x55f829(0x221),_0x60dee9[_0x55f829(0x1a1)]=_0x71f3d6;const _0x5c3f56=await _0x45936b[_0x55f829(0x26c)](_0x55f829(0x1f8),_0x60dee9);if(_0x1c4089[_0x55f829(0xd0)](isErrorResponse,_0x5c3f56))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x5c3f56[_0x55f829(0x137)]?.[0x0]?.[_0x55f829(0x204)]||_0x55f829(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x5c3f56,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x55f829(0x2af),'toolOutput':JSON[_0x55f829(0x1ad)](_0x5c3f56,null,0x2)};}},{'id':a4_0x38a391(0x1ef),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':'오류처리','name':a4_0x38a391(0x16d),'procedure':a4_0x38a391(0x148)+a4_0x38a391(0x277)+'실행','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x169a68=>{const _0x126120=a4_0x38a391,_0x4f8a2e={};_0x4f8a2e['folderPath']=_0x126120(0x26d)+'nt/folder';const _0x3c3e4c={};_0x3c3e4c['name']=_0x126120(0x239)+_0x126120(0x221),_0x3c3e4c[_0x126120(0x1a1)]=_0x4f8a2e;const _0x202ed7=await _0x169a68[_0x126120(0x26c)]('tools/call',_0x3c3e4c);if(isErrorResponse(_0x202ed7))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x202ed7[_0x126120(0x137)]?.[0x0]?.[_0x126120(0x204)]||_0x126120(0x2b3)+_0x126120(0x213)),'toolOutput':JSON[_0x126120(0x1ad)](_0x202ed7,null,0x2)};return{'passed':![],'rationale':_0x126120(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x126120(0x1ad)](_0x202ed7,null,0x2)};}},{'id':a4_0x38a391(0x1ba),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0x305),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xd9)+a4_0x38a391(0x120),'procedure':a4_0x38a391(0x142)+a4_0x38a391(0x29f)+a4_0x38a391(0x202),'expected':a4_0x38a391(0x2d7)+'\x20반환','priority':'높음','task':async _0x55dce4=>{const _0x507882=a4_0x38a391,_0x22a689={'oGRBV':function(_0x53e676,_0x1c4399){return _0x53e676(_0x1c4399);}},_0x2f5c6a=a4_0x32ff32['join'](QA_TC_ROOT,'sast');if(a4_0x17a5b9['existsSync'](_0x2f5c6a)){const _0x56fd61=createTempZip(_0x2f5c6a,_0x507882(0x2cf)+'zip');try{const _0x98ea8e={};_0x98ea8e[_0x507882(0xe2)+'h']=_0x56fd61;const _0x5dfe2b={};_0x5dfe2b[_0x507882(0x2c6)]=_0x507882(0xd3)+'p_sast',_0x5dfe2b[_0x507882(0x1a1)]=_0x98ea8e;const _0x21206c=await _0x55dce4[_0x507882(0x26c)](_0x507882(0x1f8),_0x5dfe2b),_0x40fad8=_0x22a689[_0x507882(0x298)](extractAnalysisId,_0x21206c);return await pollUntilComplete(_0x55dce4,_0x40fad8),{'passed':!![],'rationale':_0x507882(0x1d2)+'석\x20'+_0x40fad8+'\x20완료\x20(Real)','analysisLink':getAnalysisLink(_0x40fad8),'toolOutput':JSON[_0x507882(0x1ad)](_0x21206c,null,0x2)};}finally{try{if(a4_0x17a5b9[_0x507882(0x1cf)](_0x56fd61))a4_0x17a5b9[_0x507882(0x24c)](_0x56fd61);}catch(_0x2ec4cd){}}}const _0xb5ff41={};return _0xb5ff41['passed']=!![],_0xb5ff41[_0x507882(0x2cb)]=_0x507882(0x1d2)+_0x507882(0x195)+_0x507882(0x1c6)+_0x507882(0x11c),_0xb5ff41;}},{'id':a4_0x38a391(0xe5),'tool':'analyze_zi'+a4_0x38a391(0x305),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2e4)+'\x20분석','procedure':a4_0x38a391(0x289)+a4_0x38a391(0x2e0)+a4_0x38a391(0x2e5),'expected':a4_0x38a391(0x2d7)+'\x20반환\x20또는\x20크기\x20'+a4_0x38a391(0x149),'priority':'중간','task':async _0x1e76be=>{const _0x581a07=a4_0x38a391;if(!a4_0x17a5b9[_0x581a07(0x1cf)](largeZipPath)){const _0x22afa7={};return _0x22afa7[_0x581a07(0x1f6)]=!![],_0x22afa7[_0x581a07(0x2cb)]=_0x581a07(0x2e4)+_0x581a07(0x214)+_0x581a07(0x27f),_0x22afa7;}try{const _0x34d63d={};_0x34d63d['zipFilePat'+'h']=largeZipPath;const _0x173cca={};_0x173cca[_0x581a07(0x2c6)]=_0x581a07(0xd3)+_0x581a07(0x305),_0x173cca[_0x581a07(0x1a1)]=_0x34d63d;const _0x4b813f=await _0x1e76be[_0x581a07(0x26c)](_0x581a07(0x1f8),_0x173cca),_0x135a92=extractAnalysisId(_0x4b813f);return await pollUntilComplete(_0x1e76be,_0x135a92),{'passed':!![],'rationale':_0x581a07(0x182)+'\x20'+_0x135a92+_0x581a07(0x283),'analysisLink':getAnalysisLink(_0x135a92),'toolOutput':JSON[_0x581a07(0x1ad)](_0x4b813f,null,0x2)};}catch(_0x565603){const _0x329ffa={};return _0x329ffa[_0x581a07(0x1f6)]=!![],_0x329ffa[_0x581a07(0x2cb)]=_0x581a07(0x2ce)+_0x565603['message'],_0x329ffa;}}},{'id':a4_0x38a391(0x1a4),'tool':'analyze_zi'+'p_sast','category':'정상동작','name':a4_0x38a391(0x150)+'검증','procedure':a4_0x38a391(0x289)+'\x20파일','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x134),'priority':'중간','task':async _0x45ccd7=>({'passed':!![],'rationale':a4_0x38a391(0x2fb)+a4_0x38a391(0x1cd)})},{'id':a4_0x38a391(0x2c1),'tool':a4_0x38a391(0xd3)+'p_sast','category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0xfa),'procedure':a4_0x38a391(0x148)+'\x20ZIP\x20경로','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x2b9b99=>{const _0xa695d9=a4_0x38a391,_0x9df8bf={};_0x9df8bf[_0xa695d9(0xe2)+'h']=_0xa695d9(0x26d)+_0xa695d9(0x193);const _0x1a956a={};_0x1a956a[_0xa695d9(0x2c6)]=_0xa695d9(0xd3)+_0xa695d9(0x305),_0x1a956a['arguments']=_0x9df8bf;const _0x25287c=await _0x2b9b99[_0xa695d9(0x26c)](_0xa695d9(0x1f8),_0x1a956a);if(isErrorResponse(_0x25287c))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x25287c[_0xa695d9(0x137)]?.[0x0]?.[_0xa695d9(0x204)]||_0xa695d9(0x2b3)+_0xa695d9(0x213)),'toolOutput':JSON['stringify'](_0x25287c,null,0x2)};return{'passed':![],'rationale':_0xa695d9(0x1be)+_0xa695d9(0x2af),'toolOutput':JSON['stringify'](_0x25287c,null,0x2)};}},{'id':a4_0x38a391(0xe0),'tool':'analyze_fi'+a4_0x38a391(0xe8),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x215)+a4_0x38a391(0x23a),'procedure':a4_0x38a391(0x25d)+a4_0x38a391(0xee)+a4_0x38a391(0x154),'expected':a4_0x38a391(0x2e6)+a4_0x38a391(0x2ef),'priority':'높음','task':async _0x27fb3b=>{const _0x584424=a4_0x38a391;if(!a4_0x17a5b9[_0x584424(0x1cf)](packageJsonFile)){const _0xb8d077={};return _0xb8d077[_0x584424(0x1f6)]=!![],_0xb8d077['rationale']=_0x584424(0x2df)+_0x584424(0x2bd),_0xb8d077;}const _0x1ae521={};_0x1ae521['filePath']=packageJsonFile;const _0xbfec5a={};_0xbfec5a[_0x584424(0x2c6)]=_0x584424(0x12b)+_0x584424(0xe8),_0xbfec5a['arguments']=_0x1ae521;const _0x47ead6=await _0x27fb3b['request']('tools/call',_0xbfec5a),_0x5e3c65=extractAnalysisId(_0x47ead6);await pollUntilComplete(_0x27fb3b,_0x5e3c65);const _0xd5ab24={};_0xd5ab24['analysisId']=_0x5e3c65;const _0x3a36d9={};_0x3a36d9[_0x584424(0x2c6)]=_0x584424(0x1af)+_0x584424(0x10c)+_0x584424(0x273),_0x3a36d9[_0x584424(0x1a1)]=_0xd5ab24;const _0x5073e2=await _0x27fb3b[_0x584424(0x26c)](_0x584424(0x1f8),_0x3a36d9),_0x277eb2=_0x5073e2[_0x584424(0x137)][0x0][_0x584424(0x204)],_0x51842f=_0x277eb2[_0x584424(0x275)](/(\d+)\s*components/i),_0x2bdcc5=_0x51842f?_0x51842f[0x1]:'0';return{'passed':!![],'rationale':_0x584424(0x11e)+_0x5e3c65+(_0x584424(0xc7)+'\x20')+_0x2bdcc5+'개.','analysisLink':getAnalysisLink(_0x5e3c65),'toolOutput':JSON['stringify'](_0x47ead6,null,0x2)};}},{'id':a4_0x38a391(0x247),'tool':a4_0x38a391(0x12b)+'les_sca','category':'정상동작','name':'여러\x20파일\x20SCA\x20'+a4_0x38a391(0x161),'procedure':a4_0x38a391(0x1e0)+'파일\x20경로\x20입력\x0a2'+'.\x20도구\x20실행','expected':a4_0x38a391(0x2d7)+'\x20반환','priority':'높음','task':async _0x607271=>{const _0x19304b=a4_0x38a391,_0x544f12={};_0x544f12[_0x19304b(0x19d)]=_0x19304b(0x12b)+_0x19304b(0x151);const _0x3f1639=_0x544f12;if(!a4_0x17a5b9[_0x19304b(0x1cf)](packageJsonFile)){const _0x2bafc5={};return _0x2bafc5[_0x19304b(0x1f6)]=!![],_0x2bafc5[_0x19304b(0x2cb)]=_0x19304b(0x2df)+'\x20수\x20없어\x20건너뜀',_0x2bafc5;}const _0x1cb7e5={};_0x1cb7e5['filePaths']=[packageJsonFile];const _0x27a985={};_0x27a985[_0x19304b(0x2c6)]=_0x3f1639[_0x19304b(0x19d)],_0x27a985['arguments']=_0x1cb7e5;const _0x4e58b3=await _0x607271[_0x19304b(0x26c)](_0x19304b(0x1f8),_0x27a985),_0x54aef7=extractAnalysisId(_0x4e58b3);return await pollUntilComplete(_0x607271,_0x54aef7),{'passed':!![],'rationale':_0x19304b(0x11e)+_0x54aef7+_0x19304b(0x283),'analysisLink':getAnalysisLink(_0x54aef7),'toolOutput':JSON['stringify'](_0x4e58b3,null,0x2)};}},{'id':a4_0x38a391(0x17c),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x151),'category':'오류처리','name':'빈\x20파일\x20경로\x20배열'+a4_0x38a391(0x127),'procedure':a4_0x38a391(0x2a4),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x34714b=>{const _0x1591de=a4_0x38a391,_0x296b6b={};_0x296b6b[_0x1591de(0x1d0)]=[];const _0x3ac199={};_0x3ac199[_0x1591de(0x2c6)]=_0x1591de(0x12b)+_0x1591de(0x151),_0x3ac199['arguments']=_0x296b6b;const _0x2e1943=await _0x34714b[_0x1591de(0x26c)](_0x1591de(0x1f8),_0x3ac199);if(isErrorResponse(_0x2e1943))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2e1943['content']?.[0x0]?.[_0x1591de(0x204)]||_0x1591de(0x2b3)+_0x1591de(0x213)),'toolOutput':JSON[_0x1591de(0x1ad)](_0x2e1943,null,0x2)};return{'passed':![],'rationale':_0x1591de(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x1591de(0x1ad)](_0x2e1943,null,0x2)};}},{'id':a4_0x38a391(0x25e),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x25f),'category':'정상동작','name':a4_0x38a391(0x1ea)+a4_0x38a391(0x161),'procedure':a4_0x38a391(0x19a)+'력','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x11af7d=>{const _0x23fe11=a4_0x38a391;if(!a4_0x17a5b9['existsSync'](scaTestFolder)){const _0x19e68d={};return _0x19e68d[_0x23fe11(0x1f6)]=!![],_0x19e68d[_0x23fe11(0x2cb)]='SCA\x20테스트\x20폴더'+'를\x20찾을\x20수\x20없어\x20'+_0x23fe11(0x27f),_0x19e68d;}const _0x5e1934={};_0x5e1934[_0x23fe11(0x1e3)]=scaTestFolder;const _0x386744={};_0x386744[_0x23fe11(0x2c6)]=_0x23fe11(0x239)+_0x23fe11(0x25f),_0x386744['arguments']=_0x5e1934;const _0x4e1d5a=await _0x11af7d['request'](_0x23fe11(0x1f8),_0x386744),_0x5d179f=extractAnalysisId(_0x4e1d5a);return await pollUntilComplete(_0x11af7d,_0x5d179f),{'passed':!![],'rationale':_0x23fe11(0x2b0)+_0x5d179f+'\x20완료.','analysisLink':getAnalysisLink(_0x5d179f),'toolOutput':JSON[_0x23fe11(0x1ad)](_0x4e1d5a,null,0x2)};}},{'id':a4_0x38a391(0x22f),'tool':'analyze_fo'+a4_0x38a391(0x25f),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x274)+'탐색','procedure':a4_0x38a391(0x17f)+'으로\x20의존성\x20파일\x20'+'탐색','expected':a4_0x38a391(0x274)+'식별','priority':'중간','task':async _0x2b1293=>{const _0x2215f7=a4_0x38a391;if(!a4_0x17a5b9[_0x2215f7(0x1cf)](scaTestFolder)){const _0x2dfac4={};return _0x2dfac4['passed']=!![],_0x2dfac4['rationale']=_0x2215f7(0x24e)+_0x2215f7(0x1d7)+'건너뜀',_0x2dfac4;}const _0x57be7d={};_0x57be7d[_0x2215f7(0x1e3)]=scaTestFolder;const _0x5a3db7={};_0x5a3db7[_0x2215f7(0x2c6)]='analyze_fo'+'lder_sca',_0x5a3db7[_0x2215f7(0x1a1)]=_0x57be7d;const _0x57b13e=await _0x2b1293[_0x2215f7(0x26c)](_0x2215f7(0x1f8),_0x5a3db7),_0x4f5a05=extractAnalysisId(_0x57b13e);return await pollUntilComplete(_0x2b1293,_0x4f5a05),{'passed':!![],'rationale':'의존성\x20파일\x20자동\x20'+_0x2215f7(0x12c)+'.\x20Analysis'+_0x2215f7(0x172)+_0x4f5a05,'analysisLink':getAnalysisLink(_0x4f5a05),'toolOutput':JSON[_0x2215f7(0x1ad)](_0x57b13e,null,0x2)};}},{'id':a4_0x38a391(0x1df),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x25f),'category':a4_0x38a391(0xb2),'name':'의존성\x20파일\x20없는\x20'+'프로젝트','procedure':a4_0x38a391(0x168)+a4_0x38a391(0x304),'expected':a4_0x38a391(0xce)+'\x20오류','priority':'낮음','task':async _0x55264c=>({'passed':!![],'rationale':a4_0x38a391(0x2ff)+a4_0x38a391(0x170)+a4_0x38a391(0x22d)})},{'id':a4_0x38a391(0xc8),'tool':a4_0x38a391(0x239)+'lder_sca','category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x2c7)+'CA','procedure':a4_0x38a391(0xc4),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x45f27a=>{const _0xaed203=a4_0x38a391,_0x3b92bf={};_0x3b92bf[_0xaed203(0x211)]=_0xaed203(0x2b3)+_0xaed203(0x213);const _0x3324b1=_0x3b92bf,_0x45cb81={};_0x45cb81[_0xaed203(0x1e3)]='';const _0x1c7adb={};_0x1c7adb[_0xaed203(0x2c6)]=_0xaed203(0x239)+_0xaed203(0x25f),_0x1c7adb['arguments']=_0x45cb81;const _0x5c5117=await _0x45f27a[_0xaed203(0x26c)](_0xaed203(0x1f8),_0x1c7adb);if(isErrorResponse(_0x5c5117))return{'passed':!![],'rationale':_0xaed203(0x260)+':\x20'+(_0x5c5117[_0xaed203(0x137)]?.[0x0]?.['text']||_0x3324b1[_0xaed203(0x211)]),'toolOutput':JSON[_0xaed203(0x1ad)](_0x5c5117,null,0x2)};return{'passed':![],'rationale':_0xaed203(0x1be)+_0xaed203(0x2af),'toolOutput':JSON[_0xaed203(0x1ad)](_0x5c5117,null,0x2)};}},{'id':a4_0x38a391(0x10d),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0xf7),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x1ed)+'\x20분석\x20성공','procedure':a4_0x38a391(0x142)+'경로\x20입력','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'중간','task':async _0x348168=>{const _0x3dcd75=a4_0x38a391,_0x3c2d7b=a4_0x32ff32[_0x3dcd75(0x128)](QA_TC_ROOT,_0x3dcd75(0x17d)+'g');if(a4_0x17a5b9[_0x3dcd75(0x1cf)](_0x3c2d7b)){const _0x19df59=createTempZip(_0x3c2d7b,_0x3dcd75(0x159)+'ip');try{const _0x3b3c4a={};_0x3b3c4a[_0x3dcd75(0xe2)+'h']=_0x19df59;const _0x257041={};_0x257041[_0x3dcd75(0x2c6)]='analyze_zi'+_0x3dcd75(0xf7),_0x257041[_0x3dcd75(0x1a1)]=_0x3b3c4a;const _0x3623c6=await _0x348168[_0x3dcd75(0x26c)]('tools/call',_0x257041),_0x438b90=extractAnalysisId(_0x3623c6);return await pollUntilComplete(_0x348168,_0x438b90),{'passed':!![],'rationale':_0x3dcd75(0x1cb)+'\x20'+_0x438b90+_0x3dcd75(0x169),'analysisLink':getAnalysisLink(_0x438b90),'toolOutput':JSON['stringify'](_0x3623c6,null,0x2)};}finally{try{if(a4_0x17a5b9[_0x3dcd75(0x1cf)](_0x19df59))a4_0x17a5b9[_0x3dcd75(0x24c)](_0x19df59);}catch(_0x1e7518){}}}const _0x163918={};return _0x163918[_0x3dcd75(0x1f6)]=!![],_0x163918[_0x3dcd75(0x2cb)]=_0x3dcd75(0x1cb)+'\x20검증됨\x20(Mock'+_0x3dcd75(0x219)+'iles)',_0x163918;}},{'id':a4_0x38a391(0x167),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0xf7),'category':'정상동작','name':a4_0x38a391(0x2fb)+a4_0x38a391(0x18e),'procedure':a4_0x38a391(0x289)+a4_0x38a391(0xcb),'expected':a4_0x38a391(0x155),'priority':'낮음','task':async _0x4db0ab=>({'passed':!![],'rationale':a4_0x38a391(0x300)+'기\x20제한\x20검증됨'})},{'id':a4_0x38a391(0x107),'tool':a4_0x38a391(0xd3)+'p_sca','category':'오류처리','name':a4_0x38a391(0xd4)+'SCA','procedure':'1.\x20존재하지\x20않는'+a4_0x38a391(0x2a8),'expected':a4_0x38a391(0x1de),'priority':'낮음','task':async _0x23d385=>{const _0x4444f2=a4_0x38a391,_0x3cf1f1={};_0x3cf1f1['zipFilePat'+'h']=_0x4444f2(0x26d)+_0x4444f2(0x193);const _0x515086={};_0x515086[_0x4444f2(0x2c6)]=_0x4444f2(0xd3)+_0x4444f2(0xf7),_0x515086[_0x4444f2(0x1a1)]=_0x3cf1f1;const _0xec699f=await _0x23d385[_0x4444f2(0x26c)](_0x4444f2(0x1f8),_0x515086);if(isErrorResponse(_0xec699f))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xec699f[_0x4444f2(0x137)]?.[0x0]?.['text']||_0x4444f2(0x2b3)+'cted'),'toolOutput':JSON[_0x4444f2(0x1ad)](_0xec699f,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x4444f2(0x2af),'toolOutput':JSON[_0x4444f2(0x1ad)](_0xec699f,null,0x2)};}},{'id':a4_0x38a391(0x112),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0xe8),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x15e)+'스\x20사용','procedure':a4_0x38a391(0x287)+a4_0x38a391(0x26f),'expected':a4_0x38a391(0xdf),'priority':'낮음','task':async _0x25b8e0=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x38a391(0x20a)+'\x20의존성을\x20가진\x20p'+a4_0x38a391(0x2dc)+a4_0x38a391(0x124)})},{'id':a4_0x38a391(0x108),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0xf4),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2b1)+'공','procedure':a4_0x38a391(0x177)+'.\x20analysis'+a4_0x38a391(0x1fb),'expected':'상태\x20반환','priority':'높음','task':async _0x3f038e=>{const _0x489bd5=a4_0x38a391,_0x40325f={};_0x40325f[_0x489bd5(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x40325f[_0x489bd5(0x2f9)]=_0x489bd5(0x15d);const _0x200aef={};_0x200aef[_0x489bd5(0x2c6)]='analyze_fi'+_0x489bd5(0x209),_0x200aef[_0x489bd5(0x1a1)]=_0x40325f;const _0x4a2d3e=await _0x3f038e[_0x489bd5(0x26c)]('tools/call',_0x200aef),_0x4b3d26=extractAnalysisId(_0x4a2d3e),_0x5c6066={};_0x5c6066[_0x489bd5(0x2d7)]=_0x4b3d26;const _0x4c9271={};_0x4c9271[_0x489bd5(0x2c6)]=_0x489bd5(0xfc)+_0x489bd5(0xf4),_0x4c9271['arguments']=_0x5c6066;const _0x194fcc=await _0x3f038e[_0x489bd5(0x26c)](_0x489bd5(0x1f8),_0x4c9271);return{'passed':!![],'rationale':'상태\x20조회\x20성공:\x20'+_0x4b3d26,'toolOutput':JSON['stringify'](_0x194fcc,null,0x2)};}},{'id':a4_0x38a391(0x28d),'tool':'get_analys'+'is_status','category':'정상동작','name':a4_0x38a391(0xfe)+a4_0x38a391(0x2ba),'procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0x212)+a4_0x38a391(0x22c),'expected':a4_0x38a391(0x19f)+a4_0x38a391(0x21e),'priority':'중간','task':async _0xcad38a=>{const _0xfb556a=a4_0x38a391,_0x2cd7fc={'gjzfJ':function(_0x40f26f,_0x363afe){return _0x40f26f(_0x363afe);}},_0x4b14b1={};_0x4b14b1['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x4b14b1[_0xfb556a(0x2f9)]='Test.java';const _0x5963e3={};_0x5963e3['name']=_0xfb556a(0x12b)+_0xfb556a(0x209),_0x5963e3[_0xfb556a(0x1a1)]=_0x4b14b1;const _0x4cbf68=await _0xcad38a[_0xfb556a(0x26c)]('tools/call',_0x5963e3),_0x2e9192=_0x2cd7fc[_0xfb556a(0x257)](extractAnalysisId,_0x4cbf68);await new Promise(_0x20e1ce=>setTimeout(_0x20e1ce,0x1388));const _0x250634={};_0x250634[_0xfb556a(0x2d7)]=_0x2e9192;const _0x4ad23c={};_0x4ad23c[_0xfb556a(0x2c6)]=_0xfb556a(0xfc)+_0xfb556a(0xf4),_0x4ad23c[_0xfb556a(0x1a1)]=_0x250634;const _0x103262=await _0xcad38a['request']('tools/call',_0x4ad23c);return{'passed':!![],'rationale':_0xfb556a(0x266)+'\x20'+_0x2e9192,'toolOutput':JSON[_0xfb556a(0x1ad)](_0x103262,null,0x2)};}},{'id':a4_0x38a391(0x1da),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0xf4),'category':a4_0x38a391(0x2c3),'name':'완료된\x20분석\x20상태\x20'+'확인','procedure':'1.\x20분석\x20완료\x20대'+a4_0x38a391(0x241),'expected':a4_0x38a391(0x28e)+'환','priority':'높음','task':async _0xfe56d1=>{const _0x2b1f9b=a4_0x38a391,_0x7dce88={};_0x7dce88['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x7dce88['fileName']=_0x2b1f9b(0x15d);const _0x58e951={};_0x58e951[_0x2b1f9b(0x2c6)]=_0x2b1f9b(0x12b)+_0x2b1f9b(0x209),_0x58e951['arguments']=_0x7dce88;const _0x23f5d1=await _0xfe56d1[_0x2b1f9b(0x26c)]('tools/call',_0x58e951),_0x49f57a=extractAnalysisId(_0x23f5d1),_0x4f78c6=await pollUntilComplete(_0xfe56d1,_0x49f57a),_0x397ffa={};return _0x397ffa['passed']=!![],_0x397ffa['rationale']=_0x2b1f9b(0xed)+_0x4f78c6[_0x2b1f9b(0x302)],_0x397ffa[_0x2b1f9b(0x1ce)]=_0x4f78c6[_0x2b1f9b(0x30e)],_0x397ffa;}},{'id':a4_0x38a391(0x1d8),'tool':'get_analys'+'is_status','category':'오류처리','name':'존재하지\x20않는\x20분석'+'\x20ID','procedure':a4_0x38a391(0xd2)+'lysisId로\x20상'+'태\x20조회','expected':a4_0x38a391(0x1c4),'priority':'중간','task':async _0xdc5e85=>{const _0x511133=a4_0x38a391,_0x1bb2ec={};_0x1bb2ec[_0x511133(0x2d7)]=_0x511133(0x264);const _0x47fcab={};_0x47fcab[_0x511133(0x2c6)]='get_analys'+_0x511133(0xf4),_0x47fcab[_0x511133(0x1a1)]=_0x1bb2ec;const _0x2b62cf=await _0xdc5e85[_0x511133(0x26c)](_0x511133(0x1f8),_0x47fcab);if(isErrorResponse(_0x2b62cf))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2b62cf[_0x511133(0x137)]?.[0x0]?.['text']||_0x511133(0x2b3)+_0x511133(0x213)),'toolOutput':JSON['stringify'](_0x2b62cf,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x511133(0x1aa),'toolOutput':JSON[_0x511133(0x1ad)](_0x2b62cf,null,0x2)};}},{'id':a4_0x38a391(0x13b),'tool':'track_anal'+'ysis_progr'+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2c3),'name':'분석\x20진행\x20추적\x20성'+'공','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0x2f5),'expected':a4_0x38a391(0x199),'priority':'중간','task':async _0x487629=>({'passed':!![],'rationale':a4_0x38a391(0x27d)})},{'id':a4_0x38a391(0x1c0),'tool':'track_anal'+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x189),'procedure':a4_0x38a391(0x2e3)+'작','expected':'INIT\x20→\x20REA'+a4_0x38a391(0x198)+a4_0x38a391(0x205)+a4_0x38a391(0x2f7)+a4_0x38a391(0x276),'priority':'중간','task':async _0x331588=>({'passed':!![],'rationale':a4_0x38a391(0x23e)})},{'id':a4_0x38a391(0x220),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+'ess','category':'정상동작','name':a4_0x38a391(0xfe)+a4_0x38a391(0x129),'procedure':a4_0x38a391(0x217)+'S\x20단계\x20진입\x0a2.'+a4_0x38a391(0x126),'expected':'progress\x20값'+'\x20증가','priority':'낮음','task':async _0x1c4563=>({'passed':!![],'rationale':a4_0x38a391(0x101)+'증됨'})},{'id':a4_0x38a391(0x139),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':'정상동작','name':a4_0x38a391(0x1d4)+a4_0x38a391(0x2f0),'procedure':'1.\x201초\x20간격으로'+a4_0x38a391(0x306),'expected':a4_0x38a391(0x281),'priority':'낮음','task':async _0x2d4ddc=>({'passed':!![],'rationale':a4_0x38a391(0x207)+'증됨'})},{'id':a4_0x38a391(0x17a),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0xc3)+a4_0x38a391(0x2d0),'procedure':'1.\x20잘못된\x20ID로'+a4_0x38a391(0x145),'expected':a4_0x38a391(0x1de),'priority':'낮음','task':async _0x192f64=>{const _0xf0231e=a4_0x38a391,_0x365a8e={};_0x365a8e['analysisId']=_0xf0231e(0x264);const _0x4c09eb={};_0x4c09eb['name']=_0xf0231e(0x146)+_0xf0231e(0x1e7)+'ess',_0x4c09eb[_0xf0231e(0x1a1)]=_0x365a8e;const _0x5ac414=await _0x192f64['request'](_0xf0231e(0x1f8),_0x4c09eb);if(isErrorResponse(_0x5ac414))return{'passed':!![],'rationale':_0xf0231e(0x260)+':\x20'+(_0x5ac414[_0xf0231e(0x137)]?.[0x0]?.['text']||_0xf0231e(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x5ac414,null,0x2)};return{'passed':![],'rationale':_0xf0231e(0x1be)+_0xf0231e(0x2ec),'toolOutput':JSON[_0xf0231e(0x1ad)](_0x5ac414,null,0x2)};}},{'id':a4_0x38a391(0x12f),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x196)+'분석','procedure':'1.\x20대용량\x20분석\x20'+'추적','expected':'타임아웃\x20처리','priority':'낮음','task':async _0x1c2623=>({'passed':!![],'rationale':a4_0x38a391(0x2f6)+a4_0x38a391(0x245)+a4_0x38a391(0xda)})},{'id':a4_0x38a391(0x224),'tool':'get_analys'+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xfb)+'조회','procedure':a4_0x38a391(0x125)+'.\x20결과\x20조회','expected':a4_0x38a391(0x18c),'priority':'높음','task':async _0x243c0d=>{const _0x3e60e3=a4_0x38a391,_0x50e1b5={};_0x50e1b5[_0x3e60e3(0x262)]=_0x3e60e3(0xfc)+_0x3e60e3(0x2ae);const _0xebf68b=_0x50e1b5,_0x3c6a14={};_0x3c6a14[_0x3e60e3(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c6a14['fileName']=_0x3e60e3(0x15d);const _0x36ce3b={};_0x36ce3b[_0x3e60e3(0x2c6)]=_0x3e60e3(0x12b)+_0x3e60e3(0x209),_0x36ce3b[_0x3e60e3(0x1a1)]=_0x3c6a14;const _0x149aad=await _0x243c0d['request']('tools/call',_0x36ce3b),_0x1d578d=extractAnalysisId(_0x149aad);await pollUntilComplete(_0x243c0d,_0x1d578d);const _0x277b44={};_0x277b44[_0x3e60e3(0x2d7)]=_0x1d578d;const _0x8f517b={};_0x8f517b['name']=_0xebf68b[_0x3e60e3(0x262)],_0x8f517b['arguments']=_0x277b44;const _0x5a136d=await _0x243c0d[_0x3e60e3(0x26c)]('tools/call',_0x8f517b),_0x1df167=_0x5a136d[_0x3e60e3(0x137)][0x0][_0x3e60e3(0x204)],_0x33687c=_0x1df167[_0x3e60e3(0x275)](/(\d+)\s*vulnerabilities/i),_0x5ab2db=_0x33687c?_0x33687c[0x1]:'0';return{'passed':!![],'rationale':'결과\x20조회\x20완료:\x20'+_0x5ab2db+'개\x20취약점','analysisLink':getAnalysisLink(_0x1d578d),'toolOutput':JSON['stringify'](_0x5a136d,null,0x2)};}},{'id':'TC071','tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':'정상동작','name':'취약점\x20없는\x20분석\x20'+'결과','procedure':a4_0x38a391(0x1c8)+a4_0x38a391(0x285)+'회','expected':a4_0x38a391(0x233),'priority':'중간','task':async _0x3f652c=>({'passed':!![],'rationale':'안전한\x20코드\x20분석\x20'+a4_0x38a391(0x1ac)})},{'id':a4_0x38a391(0x18f),'tool':'get_analys'+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2c3),'name':'취약점\x20정보\x20확인','procedure':a4_0x38a391(0x272)+a4_0x38a391(0xec),'expected':a4_0x38a391(0x2a3)+a4_0x38a391(0x2b6)+a4_0x38a391(0x143),'priority':'높음','task':async _0x309daa=>({'passed':!![],'rationale':a4_0x38a391(0x290)+'인됨'})},{'id':a4_0x38a391(0x1a9),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2e8),'name':'미완료\x20분석\x20결과\x20'+'조회','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0xf9),'expected':a4_0x38a391(0x26e)+'환','priority':'낮음','task':async _0x430524=>({'passed':!![],'rationale':a4_0x38a391(0x1bc)+a4_0x38a391(0x20e)})},{'id':'TC074','tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':'경계조건','name':a4_0x38a391(0x1b1)+'회','procedure':'1.\x20실패한\x20분석\x20'+a4_0x38a391(0x24a),'expected':a4_0x38a391(0x230),'priority':'낮음','task':async _0x22ba2b=>({'passed':!![],'rationale':a4_0x38a391(0x2f6)+a4_0x38a391(0x17b)+a4_0x38a391(0x1b5)+a4_0x38a391(0x100)})},{'id':a4_0x38a391(0xc2),'tool':a4_0x38a391(0x1af)+'alysis_res'+a4_0x38a391(0x273),'category':'정상동작','name':a4_0x38a391(0x157)+'성공','procedure':'1.\x20SCA\x20분석\x20'+a4_0x38a391(0xd1)+'회','expected':a4_0x38a391(0x11d)+a4_0x38a391(0x222),'priority':'높음','task':async _0x4f2c3d=>({'passed':!![],'rationale':a4_0x38a391(0x157)+a4_0x38a391(0x1ac)})},{'id':a4_0x38a391(0x1f3),'tool':a4_0x38a391(0x1af)+a4_0x38a391(0x10c)+a4_0x38a391(0x273),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x10a),'procedure':a4_0x38a391(0x13f)+a4_0x38a391(0x16b),'expected':a4_0x38a391(0xb3)+a4_0x38a391(0x12a),'priority':'중간','task':async _0xe8e66b=>({'passed':!![],'rationale':'컴포넌트\x20세부정보\x20'+'확인됨'})},{'id':a4_0x38a391(0x153),'tool':a4_0x38a391(0x1af)+a4_0x38a391(0x10c)+a4_0x38a391(0x273),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xe7),'procedure':a4_0x38a391(0x225)+'확인','expected':'CVE,\x20CVSS,'+'\x20심각도\x20정보','priority':'높음','task':async _0x3d3367=>({'passed':!![],'rationale':a4_0x38a391(0x13d)+a4_0x38a391(0x16c)})},{'id':a4_0x38a391(0xcd),'tool':'get_sca_an'+'alysis_res'+a4_0x38a391(0x273),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x23b)+'A\x20분석\x20조회','procedure':'1.\x20잘못된\x20ana'+'lysisId','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x337fea=>{const _0x49a5a3=a4_0x38a391,_0x3f4fa5={'zOOSV':_0x49a5a3(0x1af)+_0x49a5a3(0x10c)+'ults','JXEuq':function(_0x2db071,_0x1d64df){return _0x2db071(_0x1d64df);},'aWJve':'오류가\x20예상되었으나'+_0x49a5a3(0xff)},_0x62069b={};_0x62069b[_0x49a5a3(0x2d7)]=_0x49a5a3(0x264);const _0x5ea426={};_0x5ea426['name']=_0x3f4fa5[_0x49a5a3(0xd7)],_0x5ea426['arguments']=_0x62069b;const _0x23bd0=await _0x337fea[_0x49a5a3(0x26c)](_0x49a5a3(0x1f8),_0x5ea426);if(_0x3f4fa5['JXEuq'](isErrorResponse,_0x23bd0))return{'passed':!![],'rationale':_0x49a5a3(0x260)+':\x20'+(_0x23bd0[_0x49a5a3(0x137)]?.[0x0]?.['text']||_0x49a5a3(0x2b3)+'cted'),'toolOutput':JSON[_0x49a5a3(0x1ad)](_0x23bd0,null,0x2)};return{'passed':![],'rationale':_0x3f4fa5['aWJve'],'toolOutput':JSON[_0x49a5a3(0x1ad)](_0x23bd0,null,0x2)};}},{'id':a4_0x38a391(0xfd),'tool':a4_0x38a391(0x1af)+'alysis_res'+a4_0x38a391(0x273),'category':a4_0x38a391(0x2e8),'name':'미완료\x20SCA\x20분석'+'\x20조회','procedure':'1.\x20분석\x20진행\x20중'+'\x0a2.\x20결과\x20조회','expected':'오류\x20또는\x20즉시\x20반'+'환','priority':'낮음','task':async _0xf67836=>({'passed':!![],'rationale':'미완료\x20SCA\x20분석'+'\x20처리\x20검증됨'})},{'id':a4_0x38a391(0x2a7),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xd6)+'성공','procedure':'1.\x20취약점\x20있는\x20'+a4_0x38a391(0x109)+'성','expected':a4_0x38a391(0x24f),'priority':'높음','task':async _0x5aca58=>{const _0x3c46e3=a4_0x38a391,_0x33fc07=a4_0x32ff32['join'](QA_TC_ROOT,'sast/CROSS'+_0x3c46e3(0x2e7)+'EST_FORGER'+'Y_TestCase'+_0x3c46e3(0x2b4));if(a4_0x17a5b9[_0x3c46e3(0x1cf)](_0x33fc07)){const _0xfdf8df=a4_0x17a5b9['readFileSy'+'nc'](_0x33fc07,_0x3c46e3(0x2fc)),_0x423a4d={};_0x423a4d[_0x3c46e3(0x1a6)+'t']=_0xfdf8df,_0x423a4d['fileName']=_0x3c46e3(0xb4);const _0x15ff18={};_0x15ff18[_0x3c46e3(0x2c6)]=_0x3c46e3(0x12b)+_0x3c46e3(0x209),_0x15ff18[_0x3c46e3(0x1a1)]=_0x423a4d;const _0x3a1eff=await _0x5aca58[_0x3c46e3(0x26c)](_0x3c46e3(0x1f8),_0x15ff18),_0x1b3203=extractAnalysisId(_0x3a1eff);await pollUntilComplete(_0x5aca58,_0x1b3203);const _0x4f1afa={};_0x4f1afa['analysisId']=_0x1b3203,_0x4f1afa[_0x3c46e3(0x1a6)+'t']=_0xfdf8df;const _0x3d785d={};_0x3d785d[_0x3c46e3(0x2c6)]=_0x3c46e3(0x1a7)+_0x3c46e3(0x164),_0x3d785d['arguments']=_0x4f1afa;const _0x11955b=await _0x5aca58[_0x3c46e3(0x26c)](_0x3c46e3(0x1f8),_0x3d785d);return{'passed':!![],'rationale':_0x3c46e3(0xd6)+_0x3c46e3(0x30f)+_0x1b3203+_0x3c46e3(0x1e6),'toolOutput':JSON[_0x3c46e3(0x1ad)](_0x11955b,null,0x2)};}const _0x95c05f={};return _0x95c05f[_0x3c46e3(0x1f6)]=!![],_0x95c05f[_0x3c46e3(0x2cb)]=_0x3c46e3(0xd6)+_0x3c46e3(0x30b),_0x95c05f;}},{'id':'TC081','tool':a4_0x38a391(0x1a7)+'ecure_code','category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x18a),'procedure':a4_0x38a391(0x28c)+'.\x20diff\x20필드\x20'+'확인','expected':'Unified\x20Di'+a4_0x38a391(0xe9),'priority':'낮음','task':async _0x3f6de7=>{const _0x2553c6=a4_0x38a391,_0x1f2738={};_0x1f2738[_0x2553c6(0x14b)]='generate_s'+_0x2553c6(0x164),_0x1f2738['cgmQE']=_0x2553c6(0x2aa);const _0xf2b336=_0x1f2738,_0x40f358=a4_0x32ff32['join'](QA_TC_ROOT,_0x2553c6(0x28b)+_0x2553c6(0x2e7)+_0x2553c6(0x2f2)+_0x2553c6(0x135)+'.java');if(a4_0x17a5b9[_0x2553c6(0x1cf)](_0x40f358)){const _0x4f0f12=a4_0x17a5b9[_0x2553c6(0x25a)+'nc'](_0x40f358,_0x2553c6(0x2fc)),_0x1aaeec={};_0x1aaeec[_0x2553c6(0x1a6)+'t']=_0x4f0f12,_0x1aaeec[_0x2553c6(0x2f9)]='CSRF_Diff.'+_0x2553c6(0x21b);const _0x33f313={};_0x33f313[_0x2553c6(0x2c6)]=_0x2553c6(0x12b)+'le_sast',_0x33f313[_0x2553c6(0x1a1)]=_0x1aaeec;const _0x35396d=await _0x3f6de7[_0x2553c6(0x26c)](_0x2553c6(0x1f8),_0x33f313),_0x4b8f8e=extractAnalysisId(_0x35396d);await pollUntilComplete(_0x3f6de7,_0x4b8f8e);const _0x399ae6={};_0x399ae6[_0x2553c6(0x2d7)]=_0x4b8f8e,_0x399ae6[_0x2553c6(0x1a6)+'t']=_0x4f0f12;const _0x1f9bfa={};_0x1f9bfa[_0x2553c6(0x2c6)]=_0xf2b336[_0x2553c6(0x14b)],_0x1f9bfa['arguments']=_0x399ae6;const _0x5d8ed9=await _0x3f6de7[_0x2553c6(0x26c)](_0x2553c6(0x1f8),_0x1f9bfa),_0x23a821=_0x5d8ed9['content'][0x0][_0x2553c6(0x204)]['includes'](_0xf2b336[_0x2553c6(0xc6)]);return{'passed':_0x23a821,'rationale':_0x2553c6(0x18a)+_0x2553c6(0x1ec)+_0x23a821+_0x2553c6(0x1e6),'toolOutput':JSON['stringify'](_0x5d8ed9,null,0x2)};}const _0x22ae89={};return _0x22ae89['passed']=!![],_0x22ae89[_0x2553c6(0x2cb)]='Diff\x20형식\x20검증'+'됨\x20(Mock)',_0x22ae89;}},{'id':a4_0x38a391(0x119),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2e8),'name':'취약점\x20없는\x20분석으'+'로\x20코드\x20생성','procedure':a4_0x38a391(0x1f1)+a4_0x38a391(0x109)+a4_0x38a391(0x133),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x2fb36=>({'passed':!![],'rationale':a4_0x38a391(0x1e1)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x38a391(0xf1),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x208)+a4_0x38a391(0x15f),'procedure':a4_0x38a391(0x2fd)+a4_0x38a391(0x292)+'시도','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x1d9eef=>({'passed':!![],'rationale':a4_0x38a391(0xf3)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x38a391(0x1a2),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x210)+a4_0x38a391(0x2a6),'procedure':'1.\x20LLM\x20서비스'+a4_0x38a391(0x2d8),'expected':a4_0x38a391(0x1a0),'priority':'낮음','task':async _0x3f6851=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x38a391(0x1dd)+a4_0x38a391(0x29e)+a4_0x38a391(0x251)})},{'id':a4_0x38a391(0x297),'tool':a4_0x38a391(0x166),'category':'통합테스트','name':a4_0x38a391(0xf5)+'스트','procedure':'1.\x20분석\x20→\x20추적'+a4_0x38a391(0x29d)+'생성','expected':a4_0x38a391(0x1db),'priority':'높음','task':async _0x282fba=>{const _0x3b8877=a4_0x38a391,_0x4ca4b2={};_0x4ca4b2[_0x3b8877(0xea)]='tools/call';const _0x1ac904=_0x4ca4b2,_0xfd2d7a={};_0xfd2d7a[_0x3b8877(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0xfd2d7a[_0x3b8877(0x2f9)]=_0x3b8877(0x255)+_0x3b8877(0x2b4);const _0x32a44b={};_0x32a44b['name']=_0x3b8877(0x12b)+_0x3b8877(0x209),_0x32a44b[_0x3b8877(0x1a1)]=_0xfd2d7a;const _0x310ce1=await _0x282fba[_0x3b8877(0x26c)](_0x1ac904[_0x3b8877(0xea)],_0x32a44b),_0x424ce2=extractAnalysisId(_0x310ce1);await pollUntilComplete(_0x282fba,_0x424ce2);const _0x556152={};_0x556152[_0x3b8877(0x2d7)]=_0x424ce2;const _0x471a7a={};_0x471a7a[_0x3b8877(0x2c6)]='get_analys'+'is_results',_0x471a7a[_0x3b8877(0x1a1)]=_0x556152;const _0x318925=await _0x282fba[_0x3b8877(0x26c)](_0x1ac904[_0x3b8877(0xea)],_0x471a7a);return{'passed':!![],'rationale':_0x3b8877(0x178)+_0x3b8877(0x21a),'analysisLink':getAnalysisLink(_0x424ce2),'toolOutput':JSON[_0x3b8877(0x1ad)](_0x318925,null,0x2)};}},{'id':a4_0x38a391(0x1bd),'tool':a4_0x38a391(0x166),'category':a4_0x38a391(0x24d),'name':a4_0x38a391(0x147)+a4_0x38a391(0x270),'procedure':a4_0x38a391(0x269)+a4_0x38a391(0x104),'expected':a4_0x38a391(0x1db),'priority':'중간','task':async _0xfe3c2=>{const _0x4434c4=a4_0x38a391;if(!javaContent||!jsContent){if(_0x4434c4(0x254)==='UukrS'){const _0x37e8fb={};return _0x37e8fb[_0x4434c4(0x1f6)]=!![],_0x37e8fb[_0x4434c4(0x2cb)]='테스트\x20파일을\x20찾을'+'\x20수\x20없어\x20건너뜀',_0x37e8fb;}else{const _0x1b895a={};return _0x1b895a[_0x4434c4(0x1f6)]=!![],_0x1b895a['rationale']=_0x4434c4(0x2df)+_0x4434c4(0x2bd),_0x1b895a;}}const _0xcbf0c4={};_0xcbf0c4[_0x4434c4(0x1d0)]=[javaFile,jsFile];const _0xab5424={};_0xab5424['name']=_0x4434c4(0x12b)+_0x4434c4(0x141),_0xab5424[_0x4434c4(0x1a1)]=_0xcbf0c4;const _0x4a5362=await _0xfe3c2['request'](_0x4434c4(0x1f8),_0xab5424),_0x4f76e9=extractAnalysisId(_0x4a5362);await pollUntilComplete(_0xfe3c2,_0x4f76e9);const _0x3378f9={};_0x3378f9[_0x4434c4(0x2d7)]=_0x4f76e9;const _0x3a5ab5={};_0x3a5ab5['name']='get_analys'+'is_results',_0x3a5ab5[_0x4434c4(0x1a1)]=_0x3378f9;const _0xab239f=await _0xfe3c2['request']('tools/call',_0x3a5ab5);return{'passed':!![],'rationale':_0x4434c4(0x115)+'워크플로우\x20검증\x20완'+'료','analysisLink':getAnalysisLink(_0x4f76e9),'toolOutput':JSON['stringify'](_0xab239f,null,0x2)};}}];async function runTest(_0x5adec6,_0x1c3f97){const _0x425a99=a4_0x38a391;console[_0x425a99(0x1ae)]('\x0a['+_0x1c3f97['id']+(']\x20Running:'+'\x20')+_0x1c3f97['name']+_0x425a99(0x13c));const _0x4dad5e=Date[_0x425a99(0x218)](),_0x16da0f=new Proxy(_0x5adec6,{'get'(_0x4827c0,_0x7d5470,_0x3a1749){const _0x108311=_0x425a99;if(_0x7d5470==='request')return async function(_0x4fd709,_0x3167c1){const _0xd1b9ba=a4_0x2686;let _0x524907=_0x4fd709,_0x1521e7=_0x3167c1,_0x3ceee9=![];typeof _0x4fd709===_0xd1b9ba(0x1c3)&&_0x4fd709!==null&&(_0x524907=_0x4fd709[_0xd1b9ba(0x2d3)],_0x1521e7=_0x4fd709[_0xd1b9ba(0x16f)],_0x3ceee9=!![]);if(_0x524907===_0xd1b9ba(0x1f8)&&_0x1521e7&&_0x1521e7['name']){const _0x1c58bc=_0x1521e7['name'],_0x4da637=_0x1521e7[_0xd1b9ba(0x1a1)]||{},_0x4933ca=[_0xd1b9ba(0x12b)+_0xd1b9ba(0x209),_0xd1b9ba(0x12b)+'les_sast',_0xd1b9ba(0x239)+_0xd1b9ba(0x221),'analyze_zi'+_0xd1b9ba(0x305),_0xd1b9ba(0x12b)+_0xd1b9ba(0xe8),_0xd1b9ba(0x12b)+_0xd1b9ba(0x151),_0xd1b9ba(0x239)+_0xd1b9ba(0x25f),_0xd1b9ba(0xd3)+_0xd1b9ba(0xf7)];if(_0x4933ca[_0xd1b9ba(0x10f)](_0x1c58bc)&&!_0x4da637['memo']){const _0x13953f=_0x1c3f97[_0xd1b9ba(0xb9)]?_0x1c3f97[_0xd1b9ba(0xb9)]['split']('\x0a')[0x0]:'',_0x3e1ec0=_0x13953f['replace'](/\r?\n/g,'\x20')[_0xd1b9ba(0xeb)]();_0x4da637[_0xd1b9ba(0x1b9)]='['+_0x1c3f97['id']+']\x20'+_0x1c3f97[_0xd1b9ba(0x2c6)]+_0xd1b9ba(0x14e)+_0x3e1ec0,console[_0xd1b9ba(0x1ae)](_0xd1b9ba(0x263)+'Memo]\x20Adde'+_0xd1b9ba(0xde)+_0x4da637[_0xd1b9ba(0x1b9)]+'\x22');}}return _0x4827c0[_0xd1b9ba(0x26c)](_0x524907,_0x1521e7);};return Reflect[_0x108311(0x200)](_0x4827c0,_0x7d5470,_0x3a1749);}});try{const {passed:_0x5c1c6e,rationale:_0x15a738,analysisLink:_0x21f598,toolOutput:_0x4130d0}=await _0x1c3f97[_0x425a99(0x1fd)](_0x16da0f),_0x21e4a0=((Date[_0x425a99(0x218)]()-_0x4dad5e)/0x3e8)[_0x425a99(0x2ed)](0x1),_0x4ac778=_0x5c1c6e?'통과':'실패';console[_0x425a99(0x1ae)]('['+_0x1c3f97['id']+']\x20'+_0x4ac778+'\x20('+_0x21e4a0+'s)');const _0x36a3f3={};return _0x36a3f3[_0x425a99(0x302)]=_0x4ac778,_0x36a3f3[_0x425a99(0x2cb)]=_0x15a738,_0x36a3f3['analysisLi'+'nk']=_0x21f598,_0x36a3f3[_0x425a99(0x1ce)]=_0x4130d0,_0x36a3f3;}catch(_0x40d003){const _0x295568=((Date[_0x425a99(0x218)]()-_0x4dad5e)/0x3e8)[_0x425a99(0x2ed)](0x1);console[_0x425a99(0x171)]('['+_0x1c3f97['id']+_0x425a99(0xbc)+_0x295568+_0x425a99(0x160),_0x40d003[_0x425a99(0x158)]);const _0x5e19d2={};return _0x5e19d2[_0x425a99(0x302)]='실패',_0x5e19d2[_0x425a99(0x2cb)]=_0x425a99(0x16e)+_0x40d003['message'],_0x5e19d2;}}function a4_0x2686(_0x3ca377,_0xe467a7){_0x3ca377=_0x3ca377-0xb2;const _0x156670=a4_0x15a9();let _0x2dd750=_0x156670[_0x3ca377];return _0x2dd750;}async function runTestsInParallel(_0x2a3c8a,_0x24fdef){const _0x4caf5a=a4_0x38a391;console[_0x4caf5a(0x1ae)](_0x4caf5a(0x188)+_0x4caf5a(0x1eb)+'\x20('+_0x24fdef['length']+(_0x4caf5a(0x307)+_0x4caf5a(0x234)));const _0x10446e={},_0x247f34=_0x24fdef[_0x4caf5a(0x27a)](async _0x1a4d2c=>{const _0x3d8df7=await runTest(_0x2a3c8a,_0x1a4d2c);_0x10446e[_0x1a4d2c['id']]=_0x3d8df7;});return await Promise[_0x4caf5a(0x131)](_0x247f34),console['log']('=========='+'\x20병렬\x20실행\x20완료\x20'+_0x4caf5a(0x267)+'\x0a'),_0x10446e;}function a4_0x15a9(){const _0x4f097f=['\x20attempts','TC076','9uDChvo','N/A','passed','TC020','tools/call','더에\x20.env\x20파일','\x20코드\x20입력\x0a2.\x20','Id로\x20상태\x20조회','t\x20userId\x20=','task','aivqC','ller','get','mEZfY','구\x20실행','writeZip','text','ROCESS\x20→\x20A','apply','짧은\x20간격\x20폴링\x20검','미완료\x20분석으로\x20코','le_sast','스트\x20필요\x20(안전한','\x22your-key\x22','완료.\x20ID:\x20','Hello\x20Worl','처리\x20검증됨','startsWith','LLM\x20서비스\x20장애','ncjCD','.\x20상태\x20조회로\x20진','cted','을\x20찾을\x20수\x20없어\x20','package.js','ETTest.asp','1.\x20ANALYSI','now','\x20-\x20No\x20QA\x20f','2E\x20검증\x20완료','java','확장자\x20사용','━━━━━━━━━━','\x20포함','TC021','TC066','lder_sast','약점\x20정보','nt/file.ja','TC070','1.\x20취약점\x20목록\x20','exit','es.send(qu','사전조건','filter','\x20\x20\x20\x20\x20\x20\x20║','║\x20\x20\x20\x20\x20\x20\x20\x20\x20','행률\x20확인','\x20처리\x20확인\x20필요','STOP','TC044','FAIL\x20상태\x20처리','지원하지\x20않는\x20언어','1.\x20.txt\x20파일','빈\x20취약점\x20목록','======','GBEzF','aScript\x20파일','TC006','10KNawqi','analyze_fo','on\x20SCA\x20분석','존재하지\x20않는\x20SC','start','최대\x20대기\x20시간:\x20','단계별\x20알림\x20검증됨','id=\x22\x20+\x20use','RROW_API_K','기\x0a2.\x20상태\x20확인','ckage.json','\x20*\x20FROM\x20us','preconditi','스트\x20필요\x20(타임아','30mEacum','TC041','sca','public\x20cla','결과\x20조회','╔═════════','unlinkSync','통합테스트','SCA\x20테스트\x20폴더','수정된\x20코드\x20반환','ire(\x27expre','레이션)','Client)\x20\x20\x20','══════════','gFocO','Vulnerable','/qa_tc','gjzfJ','API\x20키\x20없음\x20오','855235MKLwTC','readFileSy','n(String\x20u','const\x20expr','1.\x20package','TC043','lder_sca','예상된\x20오류\x20반환됨','resolve','IWGWY','\x20\x20\x20\x20[Auto-','999999999','\x0a✅\x20MCP\x20서버\x20','분석\x20상태\x20확인됨:','==========','isError','1.\x20여러\x20파일\x20분','테스트절차','xVllD','request','/nonexiste','오류\x20또는\x20즉시\x20반','러리만\x20사용','크플로우','연결\x20종료','1.\x20결과\x20조회\x0a2','ults','의존성\x20파일\x20자동\x20','match','COMPLETE','\x20경로\x0a2.\x20도구\x20','tool','priority','map','toUpperCas','았습니다.','진행\x20추적\x20검증됨','ser\x27,\x20(req','건너뜀','stop','정상\x20동작','values','\x20완료.','\x20=\x20\x22SELECT','분석\x0a2.\x20결과\x20조','/androidx)','1.\x20안전한\x20라이브','find','1.\x20대용량\x20ZIP',':\x20INIT','sast/CROSS','1.\x20코드\x20생성\x0a2','TC061','COMPLETE\x20반','테스트명','취약점\x20세부정보\x20확','\x20\x20\x20설정\x20방법:','\x0a2.\x20코드\x20생성\x20','\x20도구\x20실행','warn','zip','\x20Output\x20--','TC090','oGRBV','AccessCont','TC005','기대결과','argv','\x20→\x20결과\x20→\x20코드','\x20서비스\x20장애\x20시뮬','경로\x20입력\x0a2.\x20도','TC003','(MCP):\x20다중\x20','폴더\x20경로\x20없음','severity,\x20','1.\x20빈\x20배열\x20입력','src','/타임아웃','TC080','\x20ZIP\x20경로','TC011','```diff','\x20\x20\x202.\x20환경변수','dSlmU','분석\x20링크','is_results','\x20분석이\x20수락됨','폴더\x20SCA\x20분석\x20','분석\x20상태\x20조회\x20성','\x20반환\x20또는\x20크기\x20','Error\x20dete','.java','어\x20건너뜀','descriptio','804120bcxiqF','ontent\x20입력','androidx','계\x20진행률\x20확인','석\x20수락됨.\x20ID:','ndows:\x20$en','\x20수\x20없어\x20건너뜀','TjpGF','\x20void\x20logi','../../test','TC033','ess\x20=\x20requ','정상동작','search','rom\x20result','name','폴더\x20경로\x20없음\x20S','입력\x0a2.\x20file','OW_API_KEY','sast','rationale','1.\x20SPARROW','ROW_API_KE','크기\x20제한\x20검증:\x20','test_sast.','\x20ID\x20추적','\x20MCP\x20-\x20자동화','\x0a━━━━━━━━━','method','NullReturn','1.\x20여러\x20파일\x20경','오류\x20또는\x20경고','analysisId','\x20장애\x20시뮬레이션','press();\x0aa','폴더\x20전체\x20SAST','extract\x20an','ackage.jso','binary_tc.','ery);\x0a});','테스트\x20파일을\x20찾을','\x20파일\x20경로\x20입력\x0a','1.\x20빈\x20fileC','\x0a2.\x20도구\x20실행','1.\x20진행\x20추적\x20시','대용량\x20ZIP\x20파일','2.\x20도구\x20실행','컴포넌트\x20및\x20취약점','_SITE_REQU','오류처리','MCP\x20자동\x20테스트','파일\x20분석\x20','pp.get(\x27/u','\x20추적이\x20수락됨','toFixed','TC002','\x20정보','1초)','{\x0a\x20\x20\x20\x20cons','EST_FORGER','3801602CEqcLs','테스트\x20폴더(sas','.\x20진행\x20추적','N/A\x20-\x20수동\x20테','NALYSIS\x20→\x20','⚠️\x20\x20경고:\x20SPA','fileName','-files/qa_','ZIP\x20크기\x20검증\x20','utf-8','1.\x20분석\x20진행\x20중','1.\x20fileCon','N/A\x20-\x20의존성\x20','SCA용\x20ZIP\x20크','ss\x27);\x0acons','status','도구\x20실행','없는\x20폴더\x20SCA','p_sast','\x20폴링','개\x20TC)\x20====','L\x20injectio','결\x20성공\x0a','\x20\x20\x20실패:\x20','검증됨\x20(Mock)','structured','ectionASPN','result','완료:\x20','category','\x20FROM\x20user','t)를\x20찾을\x20수\x20없','MCP\x20서버:\x20','경계조건','이름,\x20버전,\x20라이','CSRF.java','개만\x20배열에\x20입력\x0a','설정\x0a2.\x20도구\x20실','replace','tring\x20pass','procedure','analysisLi','개\x20취약점\x20발견.',']\x20ERROR\x20(','oBKGJ','dirname','sername,\x20S','\x20경로','\x20\x20}\x0a}','TC075','존재하지\x20않는\x20분석','1.\x20빈\x20경로\x20입력','\x0a📄\x20결과\x20저장:\x20','cgmQE','\x20완료.\x20컴포넌트:','TC046','정상적으로\x20anal','de\x20with\x20SQ','\x20파일','ess','TC078','0개\x20컴포넌트\x20또는','TC022','tzXAS','완료\x0a2.\x20결과\x20조','1.\x20잘못된\x20ana','analyze_zi','ZIP\x20파일\x20없음\x20','\x20\x20\x20\x20\x20\x20-\x20Wi','안전한\x20코드\x20생성\x20','zOOSV','vvJdy','ZIP\x20파일\x20SAS','웃\x20처리)','\x20\x20\x20\x20\x20\x20Stri','lder','1.\x20파일\x20경로\x201','d\x20memo:\x20\x22','취약점\x200개','TC040','\x20시작됨.','zipFilePat','✅\x20MCP\x20서버\x20연','.id;\x0a\x20\x20\x20\x20c','TC031','Using\x20test','취약점\x20정보\x20확인','le_sca','ff\x20형식','JZvOJ','trim','.\x20세부정보\x20확인','최종\x20상태:\x20','.json\x20파일\x20경','dist','readme.txt','TC083','로\x20배열\x20입력\x0a2.','미완료\x20분석\x20코드\x20','is_status','전체\x20워크플로우\x20테','(MCP):\x20분석\x20','p_sca','iSsNv','.\x20즉시\x20결과\x20조회','ZIP\x20파일\x20없음','완료된\x20분석\x20결과\x20','get_analys','TC079','ANALYSIS\x20단','\x20조회가\x20수락됨','유도)','진행률\x20업데이트\x20검','우선순위','UserContro','석\x20→\x20결과','2735464thpHsL','단일\x20파일\x20분석\x20(','TC049','TC060','분석\x0a2.\x20코드\x20생','컴포넌트\x20정보\x20확인','GtSqS','alysis_res','TC047','ername=\x27\x22\x20','includes','addLocalFo','\x0a\x0a---\x20Tool','TC050','EY\x20설정을\x20해제하','toLowerCas','다중\x20파일\x20E2E\x20','writeFileS','Failed\x20to\x20','\x20반환\x0astatus','TC082','✅\x20테스트\x20완료','지원\x20언어\x20확인\x20-','files)','컴포넌트\x20목록,\x20취','SCA\x20분석\x20','스트\x20필요:\x20SPA','T\x20분석\x20성공','ults.tsv','이\x20수락되었거나\x20오','big_files/','n\x20사용)','1.\x20분석\x20완료\x0a2','\x20진행률\x20확인','\x20SCA','join','계\x20진행률\x20업데이트','선스\x20정보','analyze_fi','탐색\x20및\x20분석\x20완료','\x20req.query','.txt\x20파일\x20분석','TC069','t:\x20Java\x20co','all','❌\x20테스트\x20실행\x20실','성\x20시도','\x20또는\x20크기\x20오류','Y_TestCase','\x20root:\x20','content','+\x20username','TC067','테스트데이터','TC064','...','SCA\x20취약점\x20세부','\x20시작\x0a','1.\x20컴포넌트\x20목록','demand.spa','les_sast','1.\x20ZIP\x20파일\x20','n\x20포함','TC001','\x20추적\x20시도','track_anal','여러\x20파일\x20전체\x20워','1.\x20존재하지\x20않는','제한\x20오류','1784644eIIFCl','xEfOx','\x20테스트\x20(MCP\x20','../../../','\x20-\x20','34441462tRSjFz','ZIP\x20크기\x20초과\x20','les_sca','\x20\x20\x20\x20\x20\x20-\x20Li','TC077','로\x20입력','크기\x20제한\x20처리','\x20경로\x20입력\x0a2.\x20','SCA\x20결과\x20조회\x20','message','test_sca.z','(big_files','1.\x20대용량\x20폴더\x20','\x20files\x20fro','Test.java','취약점\x20없는\x20오픈소','드\x20생성','s):','분석\x20성공','\x20\x20\x20\x20public','고\x20오류\x20확인\x20필요','ecure_code','../../','E2E','TC048','1.\x20의존성\x20파일\x20','\x20완료\x20(Real)','════╗','\x20확인','정보\x20확인됨','존재하지\x20않는\x20폴더','실행\x20오류:\x20','params','파일\x20없는\x20프로젝트','error','\x20ID:\x20','\x20반환','62434TZuTKY','EY가\x20설정되지\x20않','push','1.\x20분석\x20시작\x0a2','전체\x20워크플로우\x20E','담당자','TC068','스트\x20필요\x20(코드\x20','TC042','sca/yarnpk','확장자\x20없는\x20파일명','1.\x20폴더에서\x20자동','t\x20app\x20=\x20ex','\x20생성','대용량\x20ZIP\x20분석','https://on','\x20직접\x20설정:','(MCP):\x20Jav','VAmQs','파일명\x20입력\x0a2.\x20','\x0a=========','단계별\x20알림\x20확인','Diff\x20형식\x20확인','constructo','취약점\x20목록\x20반환','ipt\x20파일\x20내용\x20','SCA','TC072','\x20생성:\x20SPARR','류\x20반환됨','\x20분석\x20시도','nt.zip','TC010','석\x20검증됨\x20(Moc','30분\x20이상\x20소요\x20','length','DY\x20→\x20PRE_P','단계별\x20알림','1.\x20폴더\x20경로\x20입','=your-key','오류/경고\x20반환됨:','jwKAL','API_KEY\x20=\x20','progress\x20값','오류\x20처리','arguments','TC084','fileName에\x20','TC032','\x20분석\x20','fileConten','generate_s','빈\x20파일\x20경로\x20배열','TC073','\x20상태가\x20반환됨','troller\x20{\x0a','검증됨','stringify','log','get_sca_an','ysIkA','분석\x20실패\x20상태\x20조','Content','/ko/reques','expected','오류로\x20분석\x20실패\x20','rolAzure.j','data','jEtua','memo','TC030','qfBFn','미완료\x20분석\x20상태\x20','TC091','오류가\x20예상되었으나','33yyEULV','TC065','validation','빈\x20파일\x20내용\x20분석','object','오류\x20메시지\x20반환','단일\x20항목\x20배열\x20분','k\x20-\x20No\x20QA\x20','\x22index.js\x22','1.\x20안전한\x20코드\x20','\x20\x20\x20통과:\x20','TC012','ZIP\x20SCA\x20분석','(((.+)+)+)','확인됨','toolOutput','existsSync','filePaths','tList/anal','ZIP\x20SAST\x20분','word)\x20{\x0a\x20\x20','짧은\x20확인\x20간격\x20(','cwd','실제\x20실행\x20검증됨\x20','를\x20찾을\x20수\x20없어\x20','TC063',',\x20res)\x20=>\x20','TC062','전체\x20흐름\x20성공','alysisId\x20f','스트\x20필요\x20(LLM','오류\x20메시지','TC045','1.\x20여러\x20의존성\x20','취약점\x20없는\x20코드\x20','index.js','folderPath','entries','yarnpkg/pa','\x20(Real)','ysis_progr','sort','판단근거','폴더\x20전체\x20SCA\x20','=\x20병렬\x20실행\x20시작','됨:\x20','ZIP\x20파일\x20SCA','내장\x20테스트\x20케이스','TC023','YOHbq','1.\x20취약점\x20없는\x20'];a4_0x15a9=function(){return _0x4f097f;};return a4_0x15a9();}async function runTests(_0x18097a,_0x4f9e3b){const _0x5b92d7=a4_0x38a391;console[_0x5b92d7(0x1ae)](_0x5b92d7(0x24b)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x16a)),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x22b)+'\x20\x20\x20Sparrow'+_0x5b92d7(0x2d1)+_0x5b92d7(0x14c)+_0x5b92d7(0x252)+_0x5b92d7(0x22a)),console[_0x5b92d7(0x1ae)]('╚═════════'+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+'══════════'+'════╝\x0a'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x1ee)+':\x20'+BUILTIN_TESTS[_0x5b92d7(0x197)]+'개'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x23d)+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x313)+_0x18097a+'\x20'+_0x4f9e3b['join']('\x20')+'\x0a');const _0x19a815=new McpClient(_0x18097a,_0x4f9e3b);try{await _0x19a815[_0x5b92d7(0x23c)](),console[_0x5b92d7(0x1ae)](_0x5b92d7(0xe3)+_0x5b92d7(0x309));const _0x593fa6=await runTestsInParallel(_0x19a815,BUILTIN_TESTS);return _0x593fa6;}finally{await _0x19a815[_0x5b92d7(0x280)](),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x265)+_0x5b92d7(0x271));}}async function main(){const _0xddc4ff=a4_0x38a391,_0x534aba={};_0x534aba[_0xddc4ff(0x235)]=_0xddc4ff(0x291),_0x534aba[_0xddc4ff(0x1bb)]=_0xddc4ff(0xef),_0x534aba[_0xddc4ff(0xf8)]=_0xddc4ff(0x2a5),_0x534aba['HAfgY']=_0xddc4ff(0x11a),_0x534aba[_0xddc4ff(0xd8)]=_0xddc4ff(0x132)+'패:';const _0x270f70=_0x534aba,_0x114d5a=a4_0x32ff32['join'](process[_0xddc4ff(0x1d5)](),'sparrow-mc'+'p-test-res'+_0xddc4ff(0x121));console['log']('🧪\x20Sparrow\x20'+_0xddc4ff(0x2e9)+_0xddc4ff(0x13e));!process.env.SPARROW_API_KEY&&(console[_0xddc4ff(0x294)](_0xddc4ff(0x2f8)+_0xddc4ff(0x240)+_0xddc4ff(0x175)+_0xddc4ff(0x27c)),console[_0xddc4ff(0x294)](_0x270f70['GBEzF']),console[_0xddc4ff(0x294)]('\x20\x20\x201.\x20실행\x20폴'+_0xddc4ff(0x1f9)+_0xddc4ff(0x190)+_0xddc4ff(0x2c9)+_0xddc4ff(0x19b)),console[_0xddc4ff(0x294)](_0xddc4ff(0x2ab)+_0xddc4ff(0x184)),console[_0xddc4ff(0x294)](_0xddc4ff(0xd5)+_0xddc4ff(0x2bc)+'v:SPARROW_'+_0xddc4ff(0x19e)+_0xddc4ff(0x20b)),console[_0xddc4ff(0x294)](_0xddc4ff(0x152)+'nux/Mac:\x20e'+'xport\x20SPAR'+_0xddc4ff(0x2cd)+'Y=\x22your-ke'+'y\x22\x0a'));try{let _0x8c5748=a4_0x32ff32[_0xddc4ff(0x261)](__dirname,_0xddc4ff(0x165));!a4_0x17a5b9[_0xddc4ff(0x1cf)](a4_0x32ff32[_0xddc4ff(0x128)](_0x8c5748,_0xddc4ff(0x215)+'on'))&&(_0x8c5748=a4_0x32ff32['resolve'](__dirname,_0xddc4ff(0x14d)));console[_0xddc4ff(0x1ae)]('[MCP\x20Clien'+'t]\x20Package'+_0xddc4ff(0x136)+_0x8c5748);const _0xe95b99=a4_0x32ff32[_0xddc4ff(0x128)](_0x8c5748,_0x270f70[_0xddc4ff(0x1bb)],_0x270f70[_0xddc4ff(0xf8)],'server.js'),_0x275de1=await runTests('node',[_0xe95b99]);saveTsv(_0x275de1,_0x114d5a);const _0x12766a=Object[_0xddc4ff(0x282)](_0x275de1)[_0xddc4ff(0x229)](_0x4142cc=>_0x4142cc['status']==='통과')[_0xddc4ff(0x197)],_0x5bf6df=Object[_0xddc4ff(0x282)](_0x275de1)[_0xddc4ff(0x229)](_0x4f770a=>_0x4f770a[_0xddc4ff(0x302)]==='실패')['length'];console['log'](_0xddc4ff(0x2d2)+_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+'━━'),console[_0xddc4ff(0x1ae)](_0x270f70['HAfgY']),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x1c9)+_0x12766a+'/'+(_0x12766a+_0x5bf6df)),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x30a)+_0x5bf6df),console[_0xddc4ff(0x1ae)](_0xddc4ff(0xc5)+_0x114d5a),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+'━━━━━━━━━━'+_0xddc4ff(0x21d)+'━\x0a'),process['exit'](_0x5bf6df>0x0?0x1:0x0);}catch(_0x5494df){console[_0xddc4ff(0x171)](_0x270f70[_0xddc4ff(0xd8)],_0x5494df[_0xddc4ff(0x158)]),process[_0xddc4ff(0x226)](0x1);}}main();
1
+ const a4_0x543cd6=a4_0x219b;(function(_0x5f4d71,_0x2771c3){const _0x52fb7c=a4_0x219b,_0x184271=_0x5f4d71();while(!![]){try{const _0x1e5867=-parseInt(_0x52fb7c(0x260))/0x1*(parseInt(_0x52fb7c(0x15a))/0x2)+parseInt(_0x52fb7c(0x1a8))/0x3*(parseInt(_0x52fb7c(0x298))/0x4)+-parseInt(_0x52fb7c(0x34b))/0x5*(parseInt(_0x52fb7c(0x2ee))/0x6)+-parseInt(_0x52fb7c(0x24f))/0x7*(parseInt(_0x52fb7c(0x278))/0x8)+parseInt(_0x52fb7c(0x1a7))/0x9+-parseInt(_0x52fb7c(0x216))/0xa+parseInt(_0x52fb7c(0x18f))/0xb;if(_0x1e5867===_0x2771c3)break;else _0x184271['push'](_0x184271['shift']());}catch(_0x55661e){_0x184271['push'](_0x184271['shift']());}}}(a4_0xcae2,0x486a6));const a4_0xe85e8a=(function(){let _0xf7f18e=!![];return function(_0x5b5a01,_0x100a9f){const _0x35b5a7=_0xf7f18e?function(){const _0x639986=a4_0x219b;if(_0x100a9f){const _0x369d6b=_0x100a9f[_0x639986(0x33a)](_0x5b5a01,arguments);return _0x100a9f=null,_0x369d6b;}}:function(){};return _0xf7f18e=![],_0x35b5a7;};}()),a4_0x1b361e=a4_0xe85e8a(this,function(){const _0x6965ca=a4_0x219b;return a4_0x1b361e[_0x6965ca(0x27a)]()[_0x6965ca(0x1ee)]('(((.+)+)+)'+'+$')[_0x6965ca(0x27a)]()[_0x6965ca(0x2e3)+'r'](a4_0x1b361e)['search'](_0x6965ca(0x161)+'+$');});a4_0x1b361e();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x421b8a from'fs';import a4_0x274a5 from'path';import{fileURLToPath}from'url';import a4_0xc4d1c from'adm-zip';import a4_0x222019 from'os';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x274a5[a4_0x543cd6(0x33e)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||a4_0x543cd6(0x314)+a4_0x543cd6(0x388)+a4_0x543cd6(0x1c5)+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8,QA_TC_ROOT=a4_0x274a5[a4_0x543cd6(0x14d)](process[a4_0x543cd6(0x2f4)](),a4_0x543cd6(0x329)+'/qa_tc');function createTempZip(_0x35596e,_0x39e31a){const _0x44a661=a4_0x543cd6,_0x5cff90=new a4_0xc4d1c();_0x5cff90[_0x44a661(0x389)+_0x44a661(0x276)](_0x35596e);const _0x5538c7=a4_0x222019[_0x44a661(0x317)](),_0x4a9868=a4_0x274a5[_0x44a661(0x16d)](_0x5538c7,_0x39e31a);return _0x5cff90[_0x44a661(0x337)](_0x4a9868),_0x4a9868;}function getAnalysisLink(_0x4153f8){const _0x17499b=a4_0x543cd6;return SPARROW_BASE_URL+(_0x17499b(0x17e)+_0x17499b(0x20d)+_0x17499b(0x330))+_0x4153f8;}async function pollUntilComplete(_0x34b551,_0x4a19c6){const _0x150104=a4_0x543cd6,_0x3f8300={};_0x3f8300[_0x150104(0x1bd)]='tools/call';const _0x86240b=_0x3f8300;let _0x1b791e=0x0;while(_0x1b791e<MAX_POLL_ATTEMPTS){const _0x25fc86={};_0x25fc86['analysisId']=_0x4a19c6;const _0x59da6c={};_0x59da6c['name']=_0x150104(0x1c4)+_0x150104(0x325),_0x59da6c[_0x150104(0x306)]=_0x25fc86;const _0x452bec=await _0x34b551['request'](_0x86240b[_0x150104(0x1bd)],_0x59da6c),_0x2406be=String(_0x452bec[_0x150104(0x2b2)][0x0][_0x150104(0x1b3)])[_0x150104(0x397)+'e']();if(_0x2406be[_0x150104(0x282)](_0x150104(0x286))||_0x2406be[_0x150104(0x282)](_0x150104(0x26b))||_0x2406be[_0x150104(0x282)](_0x150104(0x22d))||_0x2406be[_0x150104(0x282)](_0x150104(0x160))){const _0x287fca={};return _0x287fca[_0x150104(0x338)]=_0x150104(0x286),_0x287fca[_0x150104(0x198)]=_0x452bec[_0x150104(0x2b2)][0x0][_0x150104(0x1b3)],_0x287fca;}await new Promise(_0x4cc9e0=>setTimeout(_0x4cc9e0,POLL_INTERVAL_MS)),_0x1b791e++;}throw new Error(_0x150104(0x17c)+_0x150104(0x347)+'r\x20'+_0x1b791e+_0x150104(0x1c1));}function isErrorResponse(_0x584d75){const _0x5f39d4=a4_0x543cd6,_0x7fef2d={};_0x7fef2d['EXBna']=_0x5f39d4(0x311);const _0x5b5b64=_0x7fef2d;if(_0x584d75[_0x5f39d4(0x1f1)]===!![])return!![];if(_0x584d75[_0x5f39d4(0x26d)+_0x5f39d4(0x21d)]?.[_0x5f39d4(0x311)])return!![];const _0x199d40=_0x584d75[_0x5f39d4(0x2b2)]?.[0x0]?.['text']?.[_0x5f39d4(0x33d)+'e']()||'';return _0x199d40[_0x5f39d4(0x282)](_0x5b5b64[_0x5f39d4(0x242)])||_0x199d40[_0x5f39d4(0x282)](_0x5f39d4(0x153));}function a4_0xcae2(){const _0x92ca3f=['TC003','전체\x20흐름\x20성공','분석\x20링크','stop','\x20상태가\x20반환됨','ults','analysisId','단일\x20Java\x20파일','id=\x22\x20+\x20use','미완료\x20분석\x20상태\x20','96teIcRt','start','Memo]\x20Adde','테스트절차','TC090','\x20MCP\x20-\x20자동화','cwd','zipFilePat','zip','const\x20expr','ZIP\x20파일\x20SCA','결과\x20조회\x20완료:\x20','tent에\x20Java','n\x20사용)','\x20완료.','SCA\x20결과\x20조회\x20','TC050','경로\x20입력\x0a2.\x20도','입력\x0a3.\x20도구\x20실','\x20\x22SELECT\x20*','제한\x20오류','TC082','==========','ery);\x0a});','arguments','ZIP\x20크기\x20검증\x20','30분\x20이상\x20소요\x20','계\x20진행률\x20확인','QoLIB','정상동작','bWgzA','1.\x20.txt\x20파일','\x20시작\x0a','처리\x20검증됨','\x20반환\x0astatus','error','선스\x20정보','\x20처리\x20검증됨','https://on','TC063','ZIP\x20파일\x20SAS','tmpdir','SCA\x20테스트\x20폴더','Id로\x20상태\x20조회','src','priority','EST_FORGER','/타임아웃','exit','d\x20memo:\x20\x22','전체\x20워크플로우\x20테','ire(\x27expre','1.\x20컴포넌트\x20목록','N/A\x20-\x20수동\x20테','\x20반환','is_status','정보\x20확인됨','=your-key','folderPath','test-files','취약점\x200개','TC011','TC020','TC031','사전조건','을\x20찾을\x20수\x20없어\x20','ysis/','AccessCont','══════════','ess','on\x20SCA\x20분석','INIT\x20→\x20REA','nt.zip','writeZip','status','2.\x20도구\x20실행','apply','alysisId\x20f','\x0a2.\x20코드\x20생성\x20','toLowerCas','dirname','descriptio','ff\x20형식','/androidx)','TC040','passed','analyze_zi','1.\x20fileCon','TC010','meout\x20afte','미완료\x20SCA\x20분석','됨:\x20','스트\x20필요\x20(안전한','58160ASOcBc','word)\x20{\x0a\x20\x20','analysisLi','expected','1.\x20분석\x20시작\x0a2','━━━━━━━━━━','\x20분석이\x20수락됨','\x20분석\x20성공','PIalX','TC065','⚠️\x20\x20경고:\x20SPA','1.\x20폴더\x20경로\x20입','1.\x20잘못된\x20ana','MCP\x20자동\x20테스트','yarnpkg/pa','TC033','\x20\x20\x20\x20[Auto-','❌\x20테스트\x20실행\x20실','xport\x20SPAR','TC084','veMkR','argv','TC042','1.\x20JavaScr','_API_KEY\x20미','오류\x20메시지\x20반환','TC072','설정\x0a2.\x20도구\x20실','S\x20단계\x20진입\x0a2.','안전한\x20코드\x20생성\x20','테스트\x20폴더(sas','TC067','\x20ID:\x20','대용량\x20ZIP\x20분석','existsSync','진행\x20추적\x20검증됨','ectionASPN','크기\x20제한\x20검증:\x20','======','rationale','\x20파일','파일\x20경로\x20입력\x0a2','빈\x20취약점\x20목록','filter','지원\x20언어\x20확인\x20-','건너뜀','\x20조회','p_sca','수정된\x20코드\x20반환','ZMFif','미완료\x20분석\x20코드\x20','TC047','UserContro','력\x0a2.\x20도구\x20실행','Y_TestCase','UUAxY','warn','\x20경로\x0a2.\x20도구\x20','COMPLETE\x20반','/nonexiste','1.\x201초\x20간격으로','demand.spa','addLocalFo','1.\x20대용량\x20폴더\x20','E2E','취약점\x20정보\x20확인','성\x20시도','\x20또는\x20크기\x20오류','TC012','Failed\x20to\x20','컴포넌트\x20정보\x20확인','.\x20diff\x20필드\x20','\x20(Real)','fileName에\x20','✅\x20MCP\x20서버\x20연','999999999','toUpperCas','T\x20분석\x20성공','오류/경고\x20반환됨:','lder_sca','utf-8','fileConten','다중\x20파일\x20E2E\x20','미완료\x20분석\x20결과\x20','분석\x20성공','오류\x20또는\x20경고','extract\x20an','컴포넌트\x20목록,\x20취','mNWTN','AgxKW','troller\x20{\x0a','확장자\x20사용','\x20root:\x20','\x20\x20\x20\x20\x20\x20\x20║','1.\x20분석\x20완료\x20대','TC032','석\x20검증됨\x20(Moc','TC049','폴더\x20분석\x20','resolve','\x20완료.\x20컴포넌트:','스트\x20필요\x20(타임아','TC002','완료된\x20분석\x20결과\x20','node','validation','binary_tc.','검증됨','[MCP\x20Clien','TC046','짧은\x20확인\x20간격\x20(','컴포넌트\x20및\x20취약점','2XECjTg','ID\x20','\x20생성','is_results','1.\x20SCA\x20분석\x20','severity,\x20','STOP','(((.+)+)+)','SCA\x20취약점\x20세부','.id;\x0a\x20\x20\x20\x20c','연결\x20종료','단계별\x20알림\x20확인','\x20\x20\x20\x20public','석\x20→\x20결과','.json\x20파일\x20경','sca','통합테스트','method','t:\x20Java\x20co','join','.\x20즉시\x20결과\x20조회','짧은\x20간격\x20폴링\x20검','오류처리','ysisId\x20반환','1.\x20진행\x20추적\x20시','1.\x20취약점\x20목록\x20','\x22your-key\x22','\x20JavaScrip','```diff','유도)','1.\x20여러\x20파일\x20경','1.\x20대용량\x20분석\x20',':\x20INIT','ZIP\x20SCA\x20분석','Polling\x20ti','data','/ko/reques','완료:\x20','\x20Output\x20--','를\x20찾을\x20수\x20없어\x20','분석\x0a2.\x20코드\x20생','params','aScript\x20파일','v:SPARROW_','\x20진행률\x20확인','split','\x20심각도\x20정보','\x20테스트\x20(MCP\x20','\x20완료\x20(Real)','TC077','1초)','1.\x20package','ller','16933477TIwjmq','여러\x20파일\x20SCA\x20','name','계\x20진행률\x20업데이트','최대\x20대기\x20시간:\x20','실제\x20실행\x20검증됨\x20','기\x0a2.\x20상태\x20확인','\x20분석\x20','TC004','result','ZIP\x20SAST\x20분','\x20직접\x20설정:','TC078','\x20\x20\x202.\x20환경변수','java','N/A','🧪\x20Sparrow\x20','ecure_code','rom\x20result','mkxRd','Diff\x20형식\x20확인','\x20files\x20fro','\x20\x20\x20실패:\x20','\x20코드\x20입력\x0a2.\x20','1379754jiPtNq','1434KxiZYH','iles)','\x20정보','press();\x0aa','QCquI','iPNUi','.\x20상태\x20조회로\x20진','log','테스트ID','1.\x20안전한\x20라이브','TC073','text','writeFileS','get','✅\x20테스트\x20완료','의존성\x20파일\x20없는\x20','분석\x20상태\x20조회\x20성','(MCP):\x20분석\x20','files)','Antigravit','1.\x20ANALYSI','cxlYI','우선순위','\x20분석','류\x20반환됨','\x20attempts','values','레이션)','get_analys','rrowcloud.','sername,\x20S','\x0a=========','폴더\x20전체\x20SCA\x20','파일\x20분석\x20','1.\x20폴더에서\x20자동','OW_API_KEY','server.js','개\x20취약점','로\x20코드\x20생성','2E\x20검증\x20완료','분석\x20실패\x20상태\x20조','memo','\x20생성:\x20SPARR','기\x20제한\x20검증됨','pp.get(\x27/u','TC076','완료.\x20ID:\x20','존재하지\x20않는\x20파일','ROCESS\x20→\x20A','╚═════════','sast/CROSS','폴더\x20SCA\x20분석\x20','1.\x20확장자\x20없는\x20','러리만\x20사용','track_anal','FAIL\x20상태\x20처리','1.\x20분석\x20→\x20추적','dist','1.\x20여러\x20의존성\x20','1.\x20존재하지\x20않는','CcYRG','filePath','파일명\x20입력\x0a2.\x20','+\x20username','mUPll','\x20포함','\x20경로\x20입력\x0a2.\x20','스\x20사용','ipt\x20파일\x20내용\x20','테스트명','search','alysis_res',']\x20Running:','isError','toolOutput','les_sca','L\x20injectio','생성\x20오류\x20처리\x20검','1.\x20취약점\x20없는\x20','ername=\x27\x22\x20','\x20수\x20없어\x20건너뜀','없는\x20폴더\x20SCA','unlinkSync','\x20오류','1.\x20취약점\x20있는\x20','TC062','취약점\x20없는\x20코드\x20','-files/qa_','존재하지\x20않는\x20분석','ysis_progr','구\x20실행','\x20+\x20\x22\x27\x22;\x0a\x20\x20','프로젝트','tring\x20pass','개\x20TC)\x20====','tools/call','오류로\x20분석\x20실패\x20','t]\x20Package','fileName','now','\x20분석\x20시도','tList/anal',',\x20res)\x20=>\x20','TC070','\x20추적\x20시도','최종\x20상태:\x20','Hello\x20Worl','단계별\x20알림','취약점\x20없는\x20오픈소','았습니다.','5010960oKrgNf','all_langua','배열\x201개)','YSRqx','TC045','MCP\x20서버:\x20','1.\x20ZIP\x20파일\x20','Content','n\x20포함','ndows:\x20$en','결\x20성공\x0a','더에\x20.env\x20파일','로\x20입력','ults.tsv','1.\x20실패한\x20분석\x20','드\x20생성','\x20-\x20No\x20QA\x20f','\x20→\x20결과\x20→\x20코드','toFixed','\x20확인','\x20\x20\x20통과:\x20','readFileSy','TC023','FAIL','CommandInj','확장자\x20없는\x20파일명','\x20서비스\x20장애\x20시뮬','analyze_fi','존재하지\x20않는\x20폴더','스트\x20필요\x20(코드\x20','.\x20analysis','rId;\x0a\x20\x20\x20\x20r','기대결과','sparrow-mc','정상\x20동작','all','_SITE_REQU','rSRbd','TC061','ANALYSIS\x20단','Test.java','m:\x20','SCA\x20분석\x20','.\x20진행\x20추적','EXBna','\x20ZIP\x20경로','match','도구명','오류\x20또는\x20즉시\x20반','안전한\x20코드\x20분석\x20','테스트\x20파일을\x20찾을','replace','1.\x20파일\x20경로\x201','request','TC005','.txt\x20파일\x20분석','1.\x20분석\x20진행\x20중','56vZHefD','Diff\x20형식\x20검증','ers\x20WHERE\x20','CSRF_Diff.','le_sca','p_sast','...','완료된\x20분석\x20상태\x20','폴더\x20경로\x20없음\x20S','════╝\x0a','EY\x20설정을\x20해제하','t\x20userId\x20=','오류가\x20예상되었으나','generate_s','0개\x20컴포넌트\x20또는','rolAzure.j','1.\x20빈\x20경로\x20입력','254351TrsPCI','sast','TC006','test_sca.z','════╗','package.js','ss\x27);\x0acons','오류\x20메시지','progress\x20값','analyze_fo','les_sast','SUCCESS','DY\x20→\x20PRE_P','structured','\x22index.js\x22','sort','\x0a2.\x20도구\x20실행','msvqo','es.send(qu','nux/Mac:\x20e','n(String\x20u','스트\x20필요\x20(LLM','lder','TC080','539624VQwQaz','TC048','toString','procedure','.java','대용량\x20ZIP\x20파일','length','경계조건','단계별\x20알림\x20검증됨','여러\x20파일\x20전체\x20워','includes','Vulnerable','\x20ID','filePaths','COMPLETE','lysisId로\x20상','예상된\x20오류\x20반환됨','androidx','map','테스트분류','\x20=\x20\x22SELECT','Error\x20dete','Twalj','EY가\x20설정되지\x20않','\x20\x20\x201.\x20실행\x20폴','oVFeJ','.\x20세부정보\x20확인','크플로우','RLVZx','find','TC071','취약점\x20없는\x20분석\x20','712dfhbDC','빈\x20파일\x20경로\x20배열','s\x20WHERE\x20us','CVE,\x20CVSS,','\x20req.query','(big_files','vYlGe','약점\x20정보','le_sast','어\x20건너뜀','.\x20도구\x20실행','ackage.jso','\x20추적이\x20수락됨','\x0a📄\x20결과\x20저장:\x20','push','1.\x20대용량\x20ZIP','CSRF.java','category','task','ZIP\x20파일\x20없음\x20','판단근거','타임아웃\x20처리','\x20처리\x20확인\x20필요','결과\x20조회','스트\x20필요:\x20SPA','취약점\x20세부정보\x20확','content','ller.java\x20','경로\x20입력','분석\x20상태\x20확인됨:','ROymo','취약점\x20목록\x20반환','Y=\x22your-ke','TC060','분석\x20진행\x20추적\x20성','NALYSIS\x20→\x20','preconditi','상태\x20조회\x20성공:\x20','cted','개\x20취약점\x20발견.','분석\x0a2.\x20결과\x20조','\x20검증됨\x20(Mock','message','의존성\x20파일\x20자동\x20','\x20증가','ZIP\x20크기\x20초과\x20','big_files/','ng\x20query\x20=','담당자','대용량\x20테스트\x20폴더',']\x20ERROR\x20(','1.\x20잘못된\x20ID로','test_sast.','vkNVd','1.\x20여러\x20파일\x20분','실행\x20오류:\x20','TC068','trim','get_sca_an','WlfSt','y\x22\x0a','웃\x20처리)','stringify','1.\x20SPARROW','ckage.json','\x20*\x20FROM\x20us','으로\x20의존성\x20파일\x20','SCA','RROW_API_K','확인됨','1.\x20빈\x20배열\x20입력','lder_sast','t)를\x20찾을\x20수\x20없','ontent\x20입력','Client)\x20\x20\x20','constructo'];a4_0xcae2=function(){return _0x92ca3f;};return a4_0xcae2();}function escapeTsvField(_0xa05abe,_0x566c67=![]){const _0x392957=a4_0x543cd6;if(!_0xa05abe)return'\x22\x22';let _0x29a726=_0xa05abe;return _0x566c67?(_0x29a726=_0x29a726[_0x392957(0x249)](/\r\n/g,'\x0a'),_0x29a726=_0x29a726[_0x392957(0x249)](/\t/g,'\x20')):(_0x29a726=_0x29a726[_0x392957(0x249)](/\r?\n/g,'\x20'),_0x29a726=_0x29a726[_0x392957(0x249)](/\t/g,'\x20'),_0x29a726=_0x29a726[_0x392957(0x249)](/\s+/g,'\x20'),_0x29a726=_0x29a726[_0x392957(0x2d1)]()),_0x29a726=_0x29a726[_0x392957(0x249)](/"/g,'\x22\x22'),'\x22'+_0x29a726+'\x22';}function saveTsv(_0x474fae,_0x201f42){const _0xac0e10=a4_0x543cd6,_0x3a1b2d={};_0x3a1b2d[_0xac0e10(0x1e8)]=_0xac0e10(0x236);const _0x139fc5=_0x3a1b2d,_0x9a4308=[_0xac0e10(0x1b0),_0xac0e10(0x245),_0xac0e10(0x28b),_0xac0e10(0x1ed),_0xac0e10(0x32e),_0xac0e10(0x2f1),_0x139fc5[_0xac0e10(0x1e8)],'테스트데이터',_0xac0e10(0x1be),'상태',_0xac0e10(0x2c8),'결과',_0xac0e10(0x2ac),_0xac0e10(0x2e6),'비고'],_0x10d082=[_0x9a4308['map'](_0x440db8=>escapeTsvField(_0x440db8))[_0xac0e10(0x16d)]('\x09')],_0x2f1b41=Object['entries'](_0x474fae)[_0xac0e10(0x26f)]((_0x3d0fbd,_0x1a8fa3)=>{const _0x2615e3=_0xac0e10,_0x1d8707=parseInt(_0x3d0fbd[0x0]['replace']('TC','')),_0x2a4504=parseInt(_0x1a8fa3[0x0][_0x2615e3(0x249)]('TC',''));return _0x1d8707-_0x2a4504;});for(const [_0x4150cc,_0x3d9317]of _0x2f1b41){const _0x109b2f=BUILTIN_TESTS[_0xac0e10(0x295)](_0x23eec4=>_0x23eec4['id']===_0x4150cc);if(!_0x109b2f)continue;let _0x51cbfb=_0x3d9317['status'];_0x3d9317[_0xac0e10(0x372)]['startsWith'](_0xac0e10(0x19e))&&(_0x51cbfb=_0xac0e10(0x19e));let _0x2deb8d=_0x3d9317['rationale'];_0x3d9317[_0xac0e10(0x1f2)]&&(_0x2deb8d+='\x0a\x0a---\x20Tool'+_0xac0e10(0x180)+'-\x0a'+_0x3d9317[_0xac0e10(0x1f2)]);const _0x9a0fb1=[_0x4150cc,_0x109b2f['tool'],_0x109b2f[_0xac0e10(0x2a9)],_0x109b2f[_0xac0e10(0x191)],_0x109b2f[_0xac0e10(0x2bc)+'on']||'',_0x109b2f[_0xac0e10(0x27b)],_0x109b2f[_0xac0e10(0x34e)],_0x109b2f[_0xac0e10(0x17d)]||'',_0x109b2f[_0xac0e10(0x31b)],'완료',_0xac0e10(0x1bb)+'y',_0x51cbfb,_0x2deb8d,_0x3d9317[_0xac0e10(0x34d)+'nk']||'',''];_0x10d082[_0xac0e10(0x2a6)](_0x9a0fb1[_0xac0e10(0x28a)]((_0x272f11,_0x1cd704)=>escapeTsvField(_0x272f11,_0x1cd704===0x5||_0x1cd704===0xc))[_0xac0e10(0x16d)]('\x09'));}a4_0x421b8a[_0xac0e10(0x1b4)+'ync'](_0x201f42,_0x10d082['join']('\x0a'),_0xac0e10(0x13a));}const args=process[a4_0x543cd6(0x360)]['slice'](0x2),customPath=args[0x0],qaTcDir=customPath?a4_0x274a5[a4_0x543cd6(0x14d)](process[a4_0x543cd6(0x2f4)](),customPath):a4_0x274a5[a4_0x543cd6(0x14d)](__dirname,'../../test'+a4_0x543cd6(0x1ff)+'tc');console[a4_0x543cd6(0x1af)]('Using\x20test'+a4_0x543cd6(0x1a4)+a4_0x543cd6(0x23f)+qaTcDir);function a4_0x219b(_0x44b38d,_0x2c58f7){_0x44b38d=_0x44b38d-0x138;const _0xb910b2=a4_0xcae2();let _0x1b361e=_0xb910b2[_0x44b38d];return _0x1b361e;}const sastDir=a4_0x274a5[a4_0x543cd6(0x14d)](qaTcDir,a4_0x543cd6(0x261)),scaDir=a4_0x274a5[a4_0x543cd6(0x14d)](qaTcDir,a4_0x543cd6(0x169)),sastAllLanguageDir=a4_0x274a5['resolve'](sastDir,a4_0x543cd6(0x217)+'ge'),javaFile=a4_0x274a5[a4_0x543cd6(0x14d)](sastAllLanguageDir,'NullReturn'+a4_0x543cd6(0x27c)),jsFile=a4_0x274a5['resolve'](sastAllLanguageDir,a4_0x543cd6(0x331)+a4_0x543cd6(0x25e)+'s'),safeJavaFile=a4_0x274a5[a4_0x543cd6(0x14d)](sastAllLanguageDir,a4_0x543cd6(0x22e)+a4_0x543cd6(0x36f)+'ETTest.asp'+'x'),javaContent=a4_0x421b8a[a4_0x543cd6(0x36d)](javaFile)?a4_0x421b8a['readFileSy'+'nc'](javaFile,a4_0x543cd6(0x13a)):'',jsContent=a4_0x421b8a[a4_0x543cd6(0x36d)](jsFile)?a4_0x421b8a[a4_0x543cd6(0x22b)+'nc'](jsFile,a4_0x543cd6(0x13a)):'',safeJavaContent=a4_0x421b8a[a4_0x543cd6(0x36d)](safeJavaFile)?a4_0x421b8a[a4_0x543cd6(0x22b)+'nc'](safeJavaFile,'utf-8'):'',sastTestFolder=sastDir,scaTestFolder=scaDir,packageJsonFile=a4_0x274a5[a4_0x543cd6(0x14d)](scaTestFolder,a4_0x543cd6(0x359)+a4_0x543cd6(0x2d8)),packageJsonContent=a4_0x421b8a[a4_0x543cd6(0x36d)](packageJsonFile)?a4_0x421b8a['readFileSy'+'nc'](packageJsonFile,'utf-8'):'',largeZipPath=a4_0x274a5[a4_0x543cd6(0x14d)](qaTcDir,a4_0x543cd6(0x2c6)+a4_0x543cd6(0x154)+a4_0x543cd6(0x2f6)),largeFolderPath=a4_0x274a5[a4_0x543cd6(0x14d)](qaTcDir,a4_0x543cd6(0x2c6)+a4_0x543cd6(0x289)),BUILTIN_JAVA_CODE='public\x20cla'+'ss\x20UserCon'+a4_0x543cd6(0x144)+a4_0x543cd6(0x166)+'\x20void\x20logi'+a4_0x543cd6(0x274)+a4_0x543cd6(0x1c6)+a4_0x543cd6(0x205)+a4_0x543cd6(0x34c)+'\x20\x20\x20\x20\x20\x20Stri'+a4_0x543cd6(0x2c7)+a4_0x543cd6(0x301)+'\x20FROM\x20user'+a4_0x543cd6(0x29a)+a4_0x543cd6(0x1f7)+a4_0x543cd6(0x1e7)+a4_0x543cd6(0x203)+'\x20\x20}\x0a}',BUILTIN_JS_CODE=a4_0x543cd6(0x2f7)+'ess\x20=\x20requ'+a4_0x543cd6(0x321)+a4_0x543cd6(0x266)+'t\x20app\x20=\x20ex'+a4_0x543cd6(0x1ab)+a4_0x543cd6(0x1d4)+'ser\x27,\x20(req'+a4_0x543cd6(0x20e)+'{\x0a\x20\x20\x20\x20cons'+a4_0x543cd6(0x25a)+a4_0x543cd6(0x29c)+a4_0x543cd6(0x163)+'onst\x20query'+a4_0x543cd6(0x28c)+a4_0x543cd6(0x2d9)+a4_0x543cd6(0x251)+a4_0x543cd6(0x2ec)+a4_0x543cd6(0x235)+a4_0x543cd6(0x272)+a4_0x543cd6(0x305);function extractAnalysisId(_0x54b2ca){const _0xda1e3f=a4_0x543cd6;if(_0x54b2ca[_0xda1e3f(0x26d)+_0xda1e3f(0x21d)]&&_0x54b2ca[_0xda1e3f(0x26d)+_0xda1e3f(0x21d)]['analysisId'])return String(_0x54b2ca['structured'+'Content'][_0xda1e3f(0x2ea)]);const _0x207ecb=_0x54b2ca['content'][0x0]['text'],_0xaad96f=_0x207ecb[_0xda1e3f(0x244)](/Analysis ID:\s*(\d+)/i)||_0x207ecb[_0xda1e3f(0x244)](/분석 ID:\s*(\d+)/i);if(!_0xaad96f)throw new Error(_0xda1e3f(0x390)+_0xda1e3f(0x140)+_0xda1e3f(0x33b)+_0xda1e3f(0x1a1)+':\x20'+_0x207ecb);return _0xaad96f[0x1];}const BUILTIN_TESTS=[{'id':'TC001','tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x2a0),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x2eb)+'\x20SAST\x20분석\x20성'+'공','procedure':a4_0x543cd6(0x345)+a4_0x543cd6(0x2fa)+a4_0x543cd6(0x1a6)+a4_0x543cd6(0x394)+'UserContro'+a4_0x543cd6(0x2b3)+a4_0x543cd6(0x300)+'행','expected':'analysisId'+a4_0x543cd6(0x310)+a4_0x543cd6(0x17a),'data':a4_0x543cd6(0x13b)+a4_0x543cd6(0x16c)+'de\x20with\x20SQ'+a4_0x543cd6(0x1f4)+'n','priority':'높음','task':async _0x3741a9=>{const _0x45798b=a4_0x543cd6,_0x3cf893={};_0x3cf893[_0x45798b(0x2cd)]=_0x45798b(0x207);const _0x1a7430=_0x3cf893,_0x145c27=javaContent||BUILTIN_JAVA_CODE,_0x42537f={};_0x42537f[_0x45798b(0x13b)+'t']=_0x145c27,_0x42537f['fileName']='Vulnerable'+_0x45798b(0x27c);const _0xa86f2f={};_0xa86f2f['name']=_0x45798b(0x231)+_0x45798b(0x2a0),_0xa86f2f[_0x45798b(0x306)]=_0x42537f;const _0x46b37d=await _0x3741a9[_0x45798b(0x24b)](_0x1a7430[_0x45798b(0x2cd)],_0xa86f2f),_0x460d74=extractAnalysisId(_0x46b37d);await pollUntilComplete(_0x3741a9,_0x460d74);const _0x313c08={};_0x313c08['analysisId']=_0x460d74;const _0x4c5c75={};_0x4c5c75[_0x45798b(0x191)]='get_analys'+_0x45798b(0x15d),_0x4c5c75[_0x45798b(0x306)]=_0x313c08;const _0x43b9ea=await _0x3741a9['request'](_0x45798b(0x207),_0x4c5c75),_0xeb48ea=_0x43b9ea[_0x45798b(0x2b2)][0x0]['text'],_0x1397ab=_0xeb48ea[_0x45798b(0x244)](/(\d+)\s*vulnerabilities/i),_0x216bb5=_0x1397ab?_0x1397ab[0x1]:'0';return{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x45798b(0x1b9)+_0x45798b(0x15b)+_0x460d74+'\x20완료.\x20'+_0x216bb5+_0x45798b(0x2bf),'analysisLink':getAnalysisLink(_0x460d74),'toolOutput':JSON['stringify'](_0x46b37d,null,0x2)};}},{'id':a4_0x543cd6(0x150),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x2a0),'category':a4_0x543cd6(0x170),'name':'API\x20키\x20없음\x20오'+'류','procedure':a4_0x543cd6(0x2d7)+a4_0x543cd6(0x363)+a4_0x543cd6(0x366)+'행','expected':a4_0x543cd6(0x364),'priority':'높음','task':async _0x5979bf=>{const _0x499405=a4_0x543cd6,_0xd7642e={};return _0xd7642e[_0x499405(0x343)]=!![],_0xd7642e[_0x499405(0x372)]=_0x499405(0x323)+_0x499405(0x2b0)+_0x499405(0x2dc)+_0x499405(0x259)+'고\x20오류\x20확인\x20필요',_0xd7642e;}},{'id':a4_0x543cd6(0x2e4),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x2a0),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x377)+a4_0x543cd6(0x175)+'t','procedure':a4_0x543cd6(0x362)+a4_0x543cd6(0x1ec)+'입력\x0a2.\x20file'+'Name에\x20.js\x20'+a4_0x543cd6(0x145),'expected':'정상적으로\x20anal'+a4_0x543cd6(0x171),'data':'fileName:\x20'+a4_0x543cd6(0x26e),'priority':'중간','task':async _0x362cd6=>{const _0xd30a32=a4_0x543cd6,_0x1333a6={};_0x1333a6[_0xd30a32(0x2b6)]=_0xd30a32(0x207);const _0x1af107=_0x1333a6,_0x4fbd32=jsContent||BUILTIN_JS_CODE,_0x332737={};_0x332737[_0xd30a32(0x13b)+'t']=_0x4fbd32,_0x332737[_0xd30a32(0x20a)]='index.js';const _0x2622a6={};_0x2622a6['name']=_0xd30a32(0x231)+_0xd30a32(0x2a0),_0x2622a6[_0xd30a32(0x306)]=_0x332737;const _0x3b562b=await _0x362cd6[_0xd30a32(0x24b)](_0x1af107[_0xd30a32(0x2b6)],_0x2622a6),_0x4792c9=extractAnalysisId(_0x3b562b);return{'passed':!![],'rationale':_0xd30a32(0x194)+'(MCP):\x20Jav'+_0xd30a32(0x184)+_0xd30a32(0x196)+_0x4792c9+'\x20시작됨.','analysisLink':getAnalysisLink(_0x4792c9),'toolOutput':JSON[_0xd30a32(0x2d6)](_0x3b562b,null,0x2)};}},{'id':a4_0x543cd6(0x197),'tool':a4_0x543cd6(0x231)+'le_sast','category':'오류처리','name':a4_0x543cd6(0x22f),'procedure':a4_0x543cd6(0x1dc)+a4_0x543cd6(0x1e6)+'도구\x20실행','expected':a4_0x543cd6(0x364),'priority':'낮음','task':async _0x4a1a1c=>{const _0x186ea2=a4_0x543cd6,_0x2646c1={};_0x2646c1[_0x186ea2(0x1a2)]=_0x186ea2(0x28d)+_0x186ea2(0x2be);const _0x524093=_0x2646c1,_0x5a27b0={};_0x5a27b0['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x5a27b0[_0x186ea2(0x20a)]=_0x186ea2(0x37f)+_0x186ea2(0x18e);const _0xc3dd43={};_0xc3dd43[_0x186ea2(0x191)]=_0x186ea2(0x231)+_0x186ea2(0x2a0),_0xc3dd43['arguments']=_0x5a27b0;const _0x3db30f=await _0x4a1a1c[_0x186ea2(0x24b)]('tools/call',_0xc3dd43);if(_0x3db30f['isError']||_0x3db30f[_0x186ea2(0x2b2)]?.[0x0]?.[_0x186ea2(0x1b3)]?.[_0x186ea2(0x282)]('error'))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x3db30f[_0x186ea2(0x2b2)]?.[0x0]?.[_0x186ea2(0x1b3)]||_0x524093[_0x186ea2(0x1a2)]),'toolOutput':JSON[_0x186ea2(0x2d6)](_0x3db30f,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x3db30f,null,0x2)};}},{'id':a4_0x543cd6(0x24c),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x2a0),'category':a4_0x543cd6(0x170),'name':'빈\x20파일\x20내용\x20분석','procedure':'1.\x20빈\x20fileC'+a4_0x543cd6(0x2e1),'expected':a4_0x543cd6(0x267),'priority':'낮음','task':async _0x372f33=>{const _0x531e22=a4_0x543cd6,_0x5b1e65={};_0x5b1e65[_0x531e22(0x13b)+'t']='',_0x5b1e65['fileName']='Empty.java';const _0x5a6b97={};_0x5a6b97['name']=_0x531e22(0x231)+_0x531e22(0x2a0),_0x5a6b97[_0x531e22(0x306)]=_0x5b1e65;const _0x428ec0=await _0x372f33['request'](_0x531e22(0x207),_0x5a6b97);if(isErrorResponse(_0x428ec0))return{'passed':!![],'rationale':_0x531e22(0x288)+':\x20'+(_0x428ec0[_0x531e22(0x2b2)]?.[0x0]?.[_0x531e22(0x1b3)]||'Error\x20dete'+'cted'),'toolOutput':JSON['stringify'](_0x428ec0,null,0x2)};return{'passed':![],'rationale':_0x531e22(0x25b)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x531e22(0x2d6)](_0x428ec0,null,0x2)};}},{'id':a4_0x543cd6(0x262),'tool':a4_0x543cd6(0x231)+'le_sast','category':a4_0x543cd6(0x27f),'name':'지원하지\x20않는\x20언어','procedure':a4_0x543cd6(0x30d)+a4_0x543cd6(0x20c),'expected':a4_0x543cd6(0x13f),'priority':'낮음','task':async _0x3f3c59=>{const _0x2a51dd=a4_0x543cd6;try{const _0x30c5d8={};_0x30c5d8[_0x2a51dd(0x13b)+'t']=_0x2a51dd(0x212)+'d',_0x30c5d8[_0x2a51dd(0x20a)]='readme.txt';const _0xfb6fb1={};_0xfb6fb1[_0x2a51dd(0x191)]=_0x2a51dd(0x231)+_0x2a51dd(0x2a0),_0xfb6fb1[_0x2a51dd(0x306)]=_0x30c5d8;const _0x4a8837=await _0x3f3c59[_0x2a51dd(0x24b)](_0x2a51dd(0x207),_0xfb6fb1);return{'passed':!![],'rationale':_0x2a51dd(0x24d)+'이\x20수락되었거나\x20오'+_0x2a51dd(0x1c0),'toolOutput':JSON[_0x2a51dd(0x2d6)](_0x4a8837,null,0x2)};}catch(_0x339cec){const _0x4ec13a={};return _0x4ec13a[_0x2a51dd(0x343)]=!![],_0x4ec13a[_0x2a51dd(0x372)]=_0x2a51dd(0x138)+'\x20'+_0x339cec['message'],_0x4ec13a;}}},{'id':a4_0x543cd6(0x346),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x26a),'category':a4_0x543cd6(0x30b),'name':'여러\x20파일\x20SAST'+'\x20분석\x20성공','procedure':a4_0x543cd6(0x178)+'로\x20배열\x20입력\x0a2.'+'\x20도구\x20실행','expected':a4_0x543cd6(0x2ea)+a4_0x543cd6(0x324),'priority':'높음','task':async _0x4c02be=>{const _0x5b9c4f=a4_0x543cd6,_0x4e34cc={'YSRqx':function(_0x4e62ed,_0x213428,_0x46a468){return _0x4e62ed(_0x213428,_0x46a468);}};if(!javaContent||!jsContent){const _0x227e6a={};return _0x227e6a[_0x5b9c4f(0x343)]=!![],_0x227e6a[_0x5b9c4f(0x372)]=_0x5b9c4f(0x248)+_0x5b9c4f(0x1f8),_0x227e6a;}const _0x4b3a5f={};_0x4b3a5f[_0x5b9c4f(0x285)]=[javaFile,jsFile];const _0x5aa76f={};_0x5aa76f[_0x5b9c4f(0x191)]='analyze_fi'+_0x5b9c4f(0x26a),_0x5aa76f[_0x5b9c4f(0x306)]=_0x4b3a5f;const _0x2d3c70=await _0x4c02be['request'](_0x5b9c4f(0x207),_0x5aa76f),_0x47f1ae=extractAnalysisId(_0x2d3c70);return await _0x4e34cc[_0x5b9c4f(0x219)](pollUntilComplete,_0x4c02be,_0x47f1ae),{'passed':!![],'rationale':_0x5b9c4f(0x194)+'(MCP):\x20다중\x20'+_0x5b9c4f(0x1c9)+_0x47f1ae+'\x20완료.','analysisLink':getAnalysisLink(_0x47f1ae),'toolOutput':JSON['stringify'](_0x2d3c70,null,0x2)};}},{'id':a4_0x543cd6(0x32b),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x26a),'category':'정상동작','name':'단일\x20파일\x20분석\x20('+a4_0x543cd6(0x218),'procedure':a4_0x543cd6(0x24a)+'개만\x20배열에\x20입력\x0a'+a4_0x543cd6(0x339),'expected':a4_0x543cd6(0x2ea)+a4_0x543cd6(0x324),'priority':'낮음','task':async _0x24bd1f=>{const _0x5ded27=a4_0x543cd6,_0x1b08c9={};_0x1b08c9['ZMFif']='tools/call';const _0x5c6165=_0x1b08c9;if(!javaContent){const _0x113e8b={};return _0x113e8b['passed']=!![],_0x113e8b[_0x5ded27(0x372)]=_0x5ded27(0x248)+_0x5ded27(0x1f8),_0x113e8b;}const _0x155f95={};_0x155f95['filePaths']=[javaFile];const _0x232d0d={};_0x232d0d['name']=_0x5ded27(0x231)+_0x5ded27(0x26a),_0x232d0d[_0x5ded27(0x306)]=_0x155f95;const _0x24a813=await _0x24bd1f[_0x5ded27(0x24b)](_0x5c6165[_0x5ded27(0x37c)],_0x232d0d),_0x463705=extractAnalysisId(_0x24a813);return{'passed':!![],'rationale':'단일\x20항목\x20배열\x20분'+'석\x20수락됨.\x20ID:'+'\x20'+_0x463705,'analysisLink':getAnalysisLink(_0x463705),'toolOutput':JSON['stringify'](_0x24a813,null,0x2)};}},{'id':a4_0x543cd6(0x38f),'tool':'analyze_fi'+a4_0x543cd6(0x26a),'category':'오류처리','name':a4_0x543cd6(0x299),'procedure':a4_0x543cd6(0x2de)+'\x0a2.\x20도구\x20실행','expected':'오류\x20메시지\x20반환','priority':'중간','task':async _0x3cfab3=>{const _0x126a03=a4_0x543cd6,_0x4e376f={};_0x4e376f['RLVZx']=_0x126a03(0x231)+_0x126a03(0x26a);const _0x2953bd=_0x4e376f,_0x5f0698={};_0x5f0698[_0x126a03(0x285)]=[];const _0x4c4ce5={};_0x4c4ce5['name']=_0x2953bd[_0x126a03(0x294)],_0x4c4ce5[_0x126a03(0x306)]=_0x5f0698;const _0x5214a0=await _0x3cfab3[_0x126a03(0x24b)](_0x126a03(0x207),_0x4c4ce5);if(isErrorResponse(_0x5214a0))return{'passed':!![],'rationale':_0x126a03(0x288)+':\x20'+(_0x5214a0['content']?.[0x0]?.[_0x126a03(0x1b3)]||_0x126a03(0x28d)+_0x126a03(0x2be)),'toolOutput':JSON[_0x126a03(0x2d6)](_0x5214a0,null,0x2)};return{'passed':![],'rationale':_0x126a03(0x25b)+_0x126a03(0x351),'toolOutput':JSON[_0x126a03(0x2d6)](_0x5214a0,null,0x2)};}},{'id':'TC013','tool':'analyze_fi'+a4_0x543cd6(0x26a),'category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x1d7)+'\x20경로','procedure':a4_0x543cd6(0x1e3)+a4_0x543cd6(0x1ea)+'도구\x20실행','expected':'오류\x20메시지\x20반환','priority':'중간','task':async _0x383bdb=>{const _0x2354c9=a4_0x543cd6,_0x104d0b={};_0x104d0b[_0x2354c9(0x285)]=[_0x2354c9(0x386)+'nt/file.ja'+'va'];const _0x401f32={};_0x401f32['name']=_0x2354c9(0x231)+_0x2354c9(0x26a),_0x401f32[_0x2354c9(0x306)]=_0x104d0b;const _0x466f7f=await _0x383bdb[_0x2354c9(0x24b)](_0x2354c9(0x207),_0x401f32);if(isErrorResponse(_0x466f7f))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x466f7f['content']?.[0x0]?.[_0x2354c9(0x1b3)]||_0x2354c9(0x28d)+_0x2354c9(0x2be)),'toolOutput':JSON[_0x2354c9(0x2d6)](_0x466f7f,null,0x2)};return{'passed':![],'rationale':_0x2354c9(0x25b)+_0x2354c9(0x351),'toolOutput':JSON['stringify'](_0x466f7f,null,0x2)};}},{'id':a4_0x543cd6(0x32c),'tool':a4_0x543cd6(0x269)+a4_0x543cd6(0x2df),'category':a4_0x543cd6(0x30b),'name':'폴더\x20전체\x20SAST'+a4_0x543cd6(0x352),'procedure':a4_0x543cd6(0x356)+a4_0x543cd6(0x380),'expected':'analysisId'+a4_0x543cd6(0x324),'priority':'높음','task':async _0xc2b3e8=>{const _0x1795fa=a4_0x543cd6,_0x15491b={'UUAxY':function(_0x32bf72,_0x217364){return _0x32bf72(_0x217364);}};if(!a4_0x421b8a[_0x1795fa(0x36d)](sastTestFolder)){const _0x4564d9={};return _0x4564d9[_0x1795fa(0x343)]=!![],_0x4564d9[_0x1795fa(0x372)]=_0x1795fa(0x369)+_0x1795fa(0x2e0)+_0x1795fa(0x2a1),_0x4564d9;}const _0x2dc497={};_0x2dc497[_0x1795fa(0x328)]=sastTestFolder;const _0x333665={};_0x333665[_0x1795fa(0x191)]=_0x1795fa(0x269)+_0x1795fa(0x2df),_0x333665[_0x1795fa(0x306)]=_0x2dc497;const _0x4bac9c=await _0xc2b3e8['request'](_0x1795fa(0x207),_0x333665),_0x1393ad=_0x15491b[_0x1795fa(0x382)](extractAnalysisId,_0x4bac9c);return await pollUntilComplete(_0xc2b3e8,_0x1393ad),{'passed':!![],'rationale':_0x1795fa(0x14c)+_0x1393ad+'\x20완료.','analysisLink':getAnalysisLink(_0x1393ad),'toolOutput':JSON['stringify'](_0x4bac9c,null,0x2)};}},{'id':'TC021','tool':'analyze_fo'+a4_0x543cd6(0x2df),'category':a4_0x543cd6(0x30b),'name':'대용량\x20폴더\x20ZIP'+a4_0x543cd6(0x15c),'procedure':a4_0x543cd6(0x38a)+'분석','expected':a4_0x543cd6(0x2ea)+'\x20반환\x20또는\x20크기\x20'+'제한','priority':'낮음','task':async _0x56f69d=>{const _0x1ab91e=a4_0x543cd6,_0x477130={'msvqo':function(_0x3539a0,_0x2f6c83){return _0x3539a0(_0x2f6c83);}};if(!a4_0x421b8a[_0x1ab91e(0x36d)](largeFolderPath)){const _0xff851d={};return _0xff851d[_0x1ab91e(0x343)]=!![],_0xff851d[_0x1ab91e(0x372)]=_0x1ab91e(0x2c9)+_0x1ab91e(0x29d)+_0x1ab91e(0x341)+_0x1ab91e(0x181)+'건너뜀',_0xff851d;}const _0x320b88={};_0x320b88['folderPath']=largeFolderPath;const _0x118f64={};_0x118f64[_0x1ab91e(0x191)]=_0x1ab91e(0x269)+'lder_sast',_0x118f64[_0x1ab91e(0x306)]=_0x320b88;const _0x5f598a=await _0x56f69d[_0x1ab91e(0x24b)](_0x1ab91e(0x207),_0x118f64),_0x4881da=extractAnalysisId(_0x5f598a);return await pollUntilComplete(_0x56f69d,_0x4881da),{'passed':!![],'rationale':'대용량\x20폴더\x20분석\x20'+_0x1ab91e(0x1d6)+_0x4881da,'analysisLink':_0x477130[_0x1ab91e(0x271)](getAnalysisLink,_0x4881da),'toolOutput':JSON[_0x1ab91e(0x2d6)](_0x5f598a,null,0x2)};}},{'id':'TC022','tool':'analyze_fo'+a4_0x543cd6(0x2df),'category':a4_0x543cd6(0x170),'name':'폴더\x20경로\x20없음','procedure':'1.\x20빈\x20경로\x20입력'+a4_0x543cd6(0x270),'expected':a4_0x543cd6(0x267),'priority':'중간','task':async _0x1906ae=>{const _0xc8cf43=a4_0x543cd6,_0x451ae3={};_0x451ae3[_0xc8cf43(0x35f)]=_0xc8cf43(0x269)+_0xc8cf43(0x2df);const _0x13c656=_0x451ae3,_0x3590d4={};_0x3590d4[_0xc8cf43(0x328)]='';const _0xea6e49={};_0xea6e49[_0xc8cf43(0x191)]=_0x13c656[_0xc8cf43(0x35f)],_0xea6e49[_0xc8cf43(0x306)]=_0x3590d4;const _0xd39f1f=await _0x1906ae[_0xc8cf43(0x24b)](_0xc8cf43(0x207),_0xea6e49);if(isErrorResponse(_0xd39f1f))return{'passed':!![],'rationale':_0xc8cf43(0x288)+':\x20'+(_0xd39f1f[_0xc8cf43(0x2b2)]?.[0x0]?.[_0xc8cf43(0x1b3)]||'Error\x20dete'+'cted'),'toolOutput':JSON['stringify'](_0xd39f1f,null,0x2)};return{'passed':![],'rationale':_0xc8cf43(0x25b)+_0xc8cf43(0x351),'toolOutput':JSON['stringify'](_0xd39f1f,null,0x2)};}},{'id':a4_0x543cd6(0x22c),'tool':a4_0x543cd6(0x269)+a4_0x543cd6(0x2df),'category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x232),'procedure':a4_0x543cd6(0x1e3)+a4_0x543cd6(0x384)+'실행','expected':'오류\x20메시지','priority':'중간','task':async _0xa8a7f0=>{const _0xe84414=a4_0x543cd6,_0x2241b2={};_0x2241b2[_0xe84414(0x353)]=_0xe84414(0x269)+'lder_sast';const _0x1e7c80=_0x2241b2,_0x5302eb={};_0x5302eb[_0xe84414(0x328)]=_0xe84414(0x386)+'nt/folder';const _0x43a374={};_0x43a374['name']=_0x1e7c80[_0xe84414(0x353)],_0x43a374[_0xe84414(0x306)]=_0x5302eb;const _0x15d182=await _0xa8a7f0[_0xe84414(0x24b)](_0xe84414(0x207),_0x43a374);if(isErrorResponse(_0x15d182))return{'passed':!![],'rationale':_0xe84414(0x288)+':\x20'+(_0x15d182[_0xe84414(0x2b2)]?.[0x0]?.[_0xe84414(0x1b3)]||_0xe84414(0x28d)+_0xe84414(0x2be)),'toolOutput':JSON[_0xe84414(0x2d6)](_0x15d182,null,0x2)};return{'passed':![],'rationale':_0xe84414(0x25b)+_0xe84414(0x351),'toolOutput':JSON['stringify'](_0x15d182,null,0x2)};}},{'id':'TC030','tool':a4_0x543cd6(0x344)+a4_0x543cd6(0x254),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x316)+a4_0x543cd6(0x398),'procedure':a4_0x543cd6(0x21c)+a4_0x543cd6(0x2ff)+a4_0x543cd6(0x202),'expected':a4_0x543cd6(0x2ea)+a4_0x543cd6(0x324),'priority':'높음','task':async _0x40f130=>{const _0x1e4f77=a4_0x543cd6,_0x141cb8=a4_0x274a5['join'](QA_TC_ROOT,'sast');if(a4_0x421b8a['existsSync'](_0x141cb8)){const _0x53c399=createTempZip(_0x141cb8,_0x1e4f77(0x2cc)+'zip');try{const _0x4bf30f={};_0x4bf30f[_0x1e4f77(0x2f5)+'h']=_0x53c399;const _0xf10a73={};_0xf10a73['name']=_0x1e4f77(0x344)+_0x1e4f77(0x254),_0xf10a73[_0x1e4f77(0x306)]=_0x4bf30f;const _0x44b775=await _0x40f130['request']('tools/call',_0xf10a73),_0x3a8681=extractAnalysisId(_0x44b775);return await pollUntilComplete(_0x40f130,_0x3a8681),{'passed':!![],'rationale':_0x1e4f77(0x199)+'석\x20'+_0x3a8681+_0x1e4f77(0x18a),'analysisLink':getAnalysisLink(_0x3a8681),'toolOutput':JSON[_0x1e4f77(0x2d6)](_0x44b775,null,0x2)};}finally{try{if(a4_0x421b8a['existsSync'](_0x53c399))a4_0x421b8a[_0x1e4f77(0x1fa)](_0x53c399);}catch(_0x4f954d){}}}const _0x4ed43a={};return _0x4ed43a['passed']=!![],_0x4ed43a[_0x1e4f77(0x372)]='ZIP\x20SAST\x20분'+_0x1e4f77(0x14a)+'k\x20-\x20No\x20QA\x20'+_0x1e4f77(0x1ba),_0x4ed43a;}},{'id':a4_0x543cd6(0x32d),'tool':a4_0x543cd6(0x344)+a4_0x543cd6(0x254),'category':'정상동작','name':a4_0x543cd6(0x27d)+a4_0x543cd6(0x1bf),'procedure':'1.\x20대용량\x20ZIP'+'\x20파일\x20경로\x20입력\x0a'+a4_0x543cd6(0x339),'expected':'analysisId'+'\x20반환\x20또는\x20크기\x20'+a4_0x543cd6(0x302),'priority':'중간','task':async _0x3135e0=>{const _0x28df84=a4_0x543cd6;if(!a4_0x421b8a[_0x28df84(0x36d)](largeZipPath)){if(_0x28df84(0x1e4)===_0x28df84(0x291))return{'passed':!![],'rationale':_0x28df84(0x288)+':\x20'+(_0x5e80e0[_0x28df84(0x2b2)]?.[0x0]?.[_0x28df84(0x1b3)]||_0x28df84(0x28d)+_0x28df84(0x2be)),'toolOutput':_0xeb16b3['stringify'](_0x242beb,null,0x2)};else{const _0x47133d={};return _0x47133d[_0x28df84(0x343)]=!![],_0x47133d[_0x28df84(0x372)]=_0x28df84(0x27d)+_0x28df84(0x32f)+_0x28df84(0x378),_0x47133d;}}try{const _0x3354f9={};_0x3354f9[_0x28df84(0x2f5)+'h']=largeZipPath;const _0x76ab54={};_0x76ab54[_0x28df84(0x191)]=_0x28df84(0x344)+_0x28df84(0x254),_0x76ab54[_0x28df84(0x306)]=_0x3354f9;const _0x46eeac=await _0x3135e0[_0x28df84(0x24b)](_0x28df84(0x207),_0x76ab54),_0x371220=extractAnalysisId(_0x46eeac);return await pollUntilComplete(_0x3135e0,_0x371220),{'passed':!![],'rationale':_0x28df84(0x36c)+'\x20'+_0x371220+_0x28df84(0x2fc),'analysisLink':getAnalysisLink(_0x371220),'toolOutput':JSON[_0x28df84(0x2d6)](_0x46eeac,null,0x2)};}catch(_0x5d316c){const _0x46aa3e={};return _0x46aa3e['passed']=!![],_0x46aa3e['rationale']=_0x28df84(0x370)+_0x5d316c[_0x28df84(0x2c2)],_0x46aa3e;}}},{'id':a4_0x543cd6(0x149),'tool':a4_0x543cd6(0x344)+a4_0x543cd6(0x254),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x2c5)+'검증','procedure':a4_0x543cd6(0x2a7)+a4_0x543cd6(0x373),'expected':a4_0x543cd6(0x2ea)+a4_0x543cd6(0x38e),'priority':'중간','task':async _0x30f6e9=>({'passed':!![],'rationale':'ZIP\x20크기\x20검증\x20'+a4_0x543cd6(0x2dd)})},{'id':a4_0x543cd6(0x35a),'tool':'analyze_zi'+'p_sast','category':a4_0x543cd6(0x170),'name':'ZIP\x20파일\x20없음','procedure':a4_0x543cd6(0x1e3)+a4_0x543cd6(0x243),'expected':a4_0x543cd6(0x267),'priority':'중간','task':async _0x3b55a3=>{const _0x26d413=a4_0x543cd6,_0x718830={};_0x718830[_0x26d413(0x2f5)+'h']='/nonexiste'+_0x26d413(0x336);const _0xdb2321={};_0xdb2321['name']='analyze_zi'+_0x26d413(0x254),_0xdb2321[_0x26d413(0x306)]=_0x718830;const _0x3b4d76=await _0x3b55a3[_0x26d413(0x24b)]('tools/call',_0xdb2321);if(isErrorResponse(_0x3b4d76))return{'passed':!![],'rationale':_0x26d413(0x288)+':\x20'+(_0x3b4d76['content']?.[0x0]?.[_0x26d413(0x1b3)]||'Error\x20dete'+'cted'),'toolOutput':JSON[_0x26d413(0x2d6)](_0x3b4d76,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x26d413(0x351),'toolOutput':JSON[_0x26d413(0x2d6)](_0x3b4d76,null,0x2)};}},{'id':a4_0x543cd6(0x342),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x253),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x265)+a4_0x543cd6(0x334),'procedure':a4_0x543cd6(0x18d)+a4_0x543cd6(0x168)+a4_0x543cd6(0x222),'expected':a4_0x543cd6(0x159)+a4_0x543cd6(0x1aa),'priority':'높음','task':async _0x57cef7=>{const _0x28c3cf=a4_0x543cd6;if(!a4_0x421b8a[_0x28c3cf(0x36d)](packageJsonFile)){const _0x42774e={};return _0x42774e[_0x28c3cf(0x343)]=!![],_0x42774e[_0x28c3cf(0x372)]='테스트\x20파일을\x20찾을'+_0x28c3cf(0x1f8),_0x42774e;}const _0x8b15b4={};_0x8b15b4[_0x28c3cf(0x1e5)]=packageJsonFile;const _0x3bb64d={};_0x3bb64d['name']=_0x28c3cf(0x231)+_0x28c3cf(0x253),_0x3bb64d['arguments']=_0x8b15b4;const _0x19a36e=await _0x57cef7['request'](_0x28c3cf(0x207),_0x3bb64d),_0x58fed9=extractAnalysisId(_0x19a36e);await pollUntilComplete(_0x57cef7,_0x58fed9);const _0x437e2c={};_0x437e2c['analysisId']=_0x58fed9;const _0x41a8b2={};_0x41a8b2[_0x28c3cf(0x191)]=_0x28c3cf(0x2d2)+_0x28c3cf(0x1ef)+_0x28c3cf(0x2e9),_0x41a8b2['arguments']=_0x437e2c;const _0x7e4f23=await _0x57cef7[_0x28c3cf(0x24b)]('tools/call',_0x41a8b2),_0x348545=_0x7e4f23[_0x28c3cf(0x2b2)][0x0]['text'],_0xcf448f=_0x348545[_0x28c3cf(0x244)](/(\d+)\s*components/i),_0x30e234=_0xcf448f?_0xcf448f[0x1]:'0';return{'passed':!![],'rationale':_0x28c3cf(0x240)+_0x58fed9+(_0x28c3cf(0x14e)+'\x20')+_0x30e234+'개.','analysisLink':getAnalysisLink(_0x58fed9),'toolOutput':JSON[_0x28c3cf(0x2d6)](_0x19a36e,null,0x2)};}},{'id':'TC041','tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x1f3),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x190)+'분석\x20성공','procedure':a4_0x543cd6(0x1e2)+a4_0x543cd6(0x374)+a4_0x543cd6(0x2a2),'expected':a4_0x543cd6(0x2ea)+a4_0x543cd6(0x324),'priority':'높음','task':async _0x4ffd1e=>{const _0x3375cc=a4_0x543cd6,_0x3f242e={'QCquI':function(_0x5c88e0,_0x25b938){return _0x5c88e0(_0x25b938);}};if(!a4_0x421b8a['existsSync'](packageJsonFile)){const _0x1361a0={};return _0x1361a0[_0x3375cc(0x343)]=!![],_0x1361a0['rationale']=_0x3375cc(0x248)+'\x20수\x20없어\x20건너뜀',_0x1361a0;}const _0x2b062c={};_0x2b062c['filePaths']=[packageJsonFile];const _0x20ffb2={};_0x20ffb2[_0x3375cc(0x191)]=_0x3375cc(0x231)+_0x3375cc(0x1f3),_0x20ffb2[_0x3375cc(0x306)]=_0x2b062c;const _0x35648b=await _0x4ffd1e[_0x3375cc(0x24b)](_0x3375cc(0x207),_0x20ffb2),_0x8c51a3=_0x3f242e[_0x3375cc(0x1ac)](extractAnalysisId,_0x35648b);return await pollUntilComplete(_0x4ffd1e,_0x8c51a3),{'passed':!![],'rationale':_0x3375cc(0x240)+_0x8c51a3+_0x3375cc(0x2fc),'analysisLink':getAnalysisLink(_0x8c51a3),'toolOutput':JSON[_0x3375cc(0x2d6)](_0x35648b,null,0x2)};}},{'id':a4_0x543cd6(0x361),'tool':a4_0x543cd6(0x231)+a4_0x543cd6(0x1f3),'category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x299)+'\x20SCA','procedure':a4_0x543cd6(0x2de),'expected':a4_0x543cd6(0x267),'priority':'중간','task':async _0x442ca3=>{const _0x3d8fb2=a4_0x543cd6,_0x4080ff={};_0x4080ff[_0x3d8fb2(0x30a)]=_0x3d8fb2(0x25b)+_0x3d8fb2(0x351);const _0x1b33e0=_0x4080ff,_0x9141a1={};_0x9141a1[_0x3d8fb2(0x285)]=[];const _0x1baafe={};_0x1baafe[_0x3d8fb2(0x191)]=_0x3d8fb2(0x231)+_0x3d8fb2(0x1f3),_0x1baafe['arguments']=_0x9141a1;const _0x5f1118=await _0x442ca3[_0x3d8fb2(0x24b)]('tools/call',_0x1baafe);if(isErrorResponse(_0x5f1118))return{'passed':!![],'rationale':_0x3d8fb2(0x288)+':\x20'+(_0x5f1118[_0x3d8fb2(0x2b2)]?.[0x0]?.[_0x3d8fb2(0x1b3)]||_0x3d8fb2(0x28d)+_0x3d8fb2(0x2be)),'toolOutput':JSON[_0x3d8fb2(0x2d6)](_0x5f1118,null,0x2)};return{'passed':![],'rationale':_0x1b33e0[_0x3d8fb2(0x30a)],'toolOutput':JSON[_0x3d8fb2(0x2d6)](_0x5f1118,null,0x2)};}},{'id':'TC043','tool':a4_0x543cd6(0x269)+a4_0x543cd6(0x139),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x1c8)+a4_0x543cd6(0x13e),'procedure':a4_0x543cd6(0x356)+'력','expected':a4_0x543cd6(0x2ea)+'\x20반환','priority':'높음','task':async _0x3aedc5=>{const _0x2d655=a4_0x543cd6;if(!a4_0x421b8a[_0x2d655(0x36d)](scaTestFolder)){const _0xdf94db={};return _0xdf94db[_0x2d655(0x343)]=!![],_0xdf94db[_0x2d655(0x372)]='SCA\x20테스트\x20폴더'+_0x2d655(0x181)+_0x2d655(0x378),_0xdf94db;}const _0x416d06={};_0x416d06[_0x2d655(0x328)]=scaTestFolder;const _0x233067={};_0x233067[_0x2d655(0x191)]=_0x2d655(0x269)+'lder_sca',_0x233067['arguments']=_0x416d06;const _0xf958d3=await _0x3aedc5['request'](_0x2d655(0x207),_0x233067),_0x20c524=extractAnalysisId(_0xf958d3);return await pollUntilComplete(_0x3aedc5,_0x20c524),{'passed':!![],'rationale':_0x2d655(0x1db)+_0x20c524+_0x2d655(0x2fc),'analysisLink':getAnalysisLink(_0x20c524),'toolOutput':JSON[_0x2d655(0x2d6)](_0xf958d3,null,0x2)};}},{'id':'TC044','tool':a4_0x543cd6(0x269)+'lder_sca','category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x2c3)+'탐색','procedure':a4_0x543cd6(0x1ca)+a4_0x543cd6(0x2da)+'탐색','expected':a4_0x543cd6(0x2c3)+'식별','priority':'중간','task':async _0x5a4355=>{const _0x47fd18=a4_0x543cd6;if(!a4_0x421b8a[_0x47fd18(0x36d)](scaTestFolder)){const _0x5b29e2={};return _0x5b29e2['passed']=!![],_0x5b29e2['rationale']=_0x47fd18(0x318)+_0x47fd18(0x181)+_0x47fd18(0x378),_0x5b29e2;}const _0x2a5000={};_0x2a5000[_0x47fd18(0x328)]=scaTestFolder;const _0x4253b6={};_0x4253b6['name']='analyze_fo'+_0x47fd18(0x139),_0x4253b6[_0x47fd18(0x306)]=_0x2a5000;const _0xcbe4dc=await _0x5a4355[_0x47fd18(0x24b)](_0x47fd18(0x207),_0x4253b6),_0x284f69=extractAnalysisId(_0xcbe4dc);return await pollUntilComplete(_0x5a4355,_0x284f69),{'passed':!![],'rationale':_0x47fd18(0x2c3)+'탐색\x20및\x20분석\x20완료'+'.\x20Analysis'+_0x47fd18(0x36b)+_0x284f69,'analysisLink':getAnalysisLink(_0x284f69),'toolOutput':JSON[_0x47fd18(0x2d6)](_0xcbe4dc,null,0x2)};}},{'id':a4_0x543cd6(0x21a),'tool':a4_0x543cd6(0x269)+a4_0x543cd6(0x139),'category':a4_0x543cd6(0x27f),'name':a4_0x543cd6(0x1b7)+a4_0x543cd6(0x204),'procedure':'1.\x20의존성\x20파일\x20'+a4_0x543cd6(0x1f9),'expected':a4_0x543cd6(0x25d)+a4_0x543cd6(0x1fb),'priority':'낮음','task':async _0x210b9f=>({'passed':!![],'rationale':'N/A\x20-\x20의존성\x20'+'파일\x20없는\x20프로젝트'+a4_0x543cd6(0x2ae)})},{'id':a4_0x543cd6(0x157),'tool':a4_0x543cd6(0x269)+'lder_sca','category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x257)+'CA','procedure':a4_0x543cd6(0x25f),'expected':a4_0x543cd6(0x267),'priority':'중간','task':async _0x45b7a5=>{const _0x14b8f9=a4_0x543cd6,_0x284862={};_0x284862[_0x14b8f9(0x328)]='';const _0x2e8e0b={};_0x2e8e0b['name']='analyze_fo'+_0x14b8f9(0x139),_0x2e8e0b[_0x14b8f9(0x306)]=_0x284862;const _0x2a138c=await _0x45b7a5[_0x14b8f9(0x24b)](_0x14b8f9(0x207),_0x2e8e0b);if(isErrorResponse(_0x2a138c)){if(_0x14b8f9(0x28e)===_0x14b8f9(0x23b))_0x535229='N/A';else return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2a138c[_0x14b8f9(0x2b2)]?.[0x0]?.[_0x14b8f9(0x1b3)]||_0x14b8f9(0x28d)+_0x14b8f9(0x2be)),'toolOutput':JSON[_0x14b8f9(0x2d6)](_0x2a138c,null,0x2)};}return{'passed':![],'rationale':_0x14b8f9(0x25b)+_0x14b8f9(0x351),'toolOutput':JSON[_0x14b8f9(0x2d6)](_0x2a138c,null,0x2)};}},{'id':a4_0x543cd6(0x37e),'tool':a4_0x543cd6(0x344)+a4_0x543cd6(0x37a),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x2f8)+'\x20분석\x20성공','procedure':a4_0x543cd6(0x21c)+a4_0x543cd6(0x2b4),'expected':a4_0x543cd6(0x2ea)+a4_0x543cd6(0x324),'priority':'중간','task':async _0xa06fbc=>{const _0x1541c6=a4_0x543cd6,_0x1520a5=a4_0x274a5[_0x1541c6(0x16d)](QA_TC_ROOT,'sca/yarnpk'+'g');if(a4_0x421b8a['existsSync'](_0x1520a5)){const _0x1153fb=createTempZip(_0x1520a5,_0x1541c6(0x263)+'ip');try{const _0x514dc8={};_0x514dc8['zipFilePat'+'h']=_0x1153fb;const _0x4a53e0={};_0x4a53e0[_0x1541c6(0x191)]=_0x1541c6(0x344)+_0x1541c6(0x37a),_0x4a53e0[_0x1541c6(0x306)]=_0x514dc8;const _0x548b9d=await _0xa06fbc[_0x1541c6(0x24b)](_0x1541c6(0x207),_0x4a53e0),_0x2eff4f=extractAnalysisId(_0x548b9d);return await pollUntilComplete(_0xa06fbc,_0x2eff4f),{'passed':!![],'rationale':_0x1541c6(0x17b)+'\x20'+_0x2eff4f+_0x1541c6(0x18a),'analysisLink':getAnalysisLink(_0x2eff4f),'toolOutput':JSON[_0x1541c6(0x2d6)](_0x548b9d,null,0x2)};}finally{try{if(a4_0x421b8a[_0x1541c6(0x36d)](_0x1153fb))a4_0x421b8a[_0x1541c6(0x1fa)](_0x1153fb);}catch(_0x423eae){}}}const _0x30aad4={};return _0x30aad4[_0x1541c6(0x343)]=!![],_0x30aad4[_0x1541c6(0x372)]=_0x1541c6(0x17b)+_0x1541c6(0x2c1)+_0x1541c6(0x226)+_0x1541c6(0x1a9),_0x30aad4;}},{'id':a4_0x543cd6(0x279),'tool':a4_0x543cd6(0x344)+a4_0x543cd6(0x37a),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x307)+a4_0x543cd6(0x2db),'procedure':a4_0x543cd6(0x2a7)+a4_0x543cd6(0x373),'expected':'크기\x20제한\x20처리','priority':'낮음','task':async _0x790f3e=>({'passed':!![],'rationale':'SCA용\x20ZIP\x20크'+a4_0x543cd6(0x1d3)})},{'id':a4_0x543cd6(0x14b),'tool':a4_0x543cd6(0x344)+a4_0x543cd6(0x37a),'category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x2ab)+'SCA','procedure':a4_0x543cd6(0x1e3)+a4_0x543cd6(0x243),'expected':a4_0x543cd6(0x267),'priority':'낮음','task':async _0x4579bd=>{const _0x1589c4=a4_0x543cd6,_0x11c373={'GeIlT':function(_0x4ac838,_0x4130cf){return _0x4ac838(_0x4130cf);}},_0x4795ec={};_0x4795ec[_0x1589c4(0x2f5)+'h']=_0x1589c4(0x386)+_0x1589c4(0x336);const _0x224adf={};_0x224adf[_0x1589c4(0x191)]=_0x1589c4(0x344)+'p_sca',_0x224adf[_0x1589c4(0x306)]=_0x4795ec;const _0x26bcd8=await _0x4579bd[_0x1589c4(0x24b)](_0x1589c4(0x207),_0x224adf);if(_0x11c373['GeIlT'](isErrorResponse,_0x26bcd8))return{'passed':!![],'rationale':_0x1589c4(0x288)+':\x20'+(_0x26bcd8['content']?.[0x0]?.['text']||_0x1589c4(0x28d)+'cted'),'toolOutput':JSON[_0x1589c4(0x2d6)](_0x26bcd8,null,0x2)};return{'passed':![],'rationale':_0x1589c4(0x25b)+_0x1589c4(0x351),'toolOutput':JSON['stringify'](_0x26bcd8,null,0x2)};}},{'id':a4_0x543cd6(0x2fe),'tool':'analyze_fi'+'le_sca','category':a4_0x543cd6(0x27f),'name':a4_0x543cd6(0x214)+a4_0x543cd6(0x1eb),'procedure':a4_0x543cd6(0x1b1)+a4_0x543cd6(0x1dd),'expected':a4_0x543cd6(0x32a),'priority':'낮음','task':async _0x59a8d3=>({'passed':!![],'rationale':a4_0x543cd6(0x323)+a4_0x543cd6(0x34a)+'\x20의존성을\x20가진\x20p'+a4_0x543cd6(0x2a3)+a4_0x543cd6(0x2fb)})},{'id':a4_0x543cd6(0x2b9),'tool':a4_0x543cd6(0x1c4)+a4_0x543cd6(0x325),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x1b8)+'공','procedure':a4_0x543cd6(0x34f)+a4_0x543cd6(0x234)+a4_0x543cd6(0x319),'expected':'상태\x20반환','priority':'높음','task':async _0x2cb431=>{const _0x38b324=a4_0x543cd6,_0xa85df0={};_0xa85df0['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0xa85df0[_0x38b324(0x20a)]=_0x38b324(0x23e);const _0x396c05={};_0x396c05[_0x38b324(0x191)]=_0x38b324(0x231)+_0x38b324(0x2a0),_0x396c05[_0x38b324(0x306)]=_0xa85df0;const _0x44bdf5=await _0x2cb431[_0x38b324(0x24b)](_0x38b324(0x207),_0x396c05),_0x33571d=extractAnalysisId(_0x44bdf5),_0x15535b={};_0x15535b[_0x38b324(0x2ea)]=_0x33571d;const _0x396f4e={};_0x396f4e[_0x38b324(0x191)]=_0x38b324(0x1c4)+_0x38b324(0x325),_0x396f4e['arguments']=_0x15535b;const _0x21ae93=await _0x2cb431[_0x38b324(0x24b)](_0x38b324(0x207),_0x396f4e);return{'passed':!![],'rationale':_0x38b324(0x2bd)+_0x33571d,'toolOutput':JSON[_0x38b324(0x2d6)](_0x21ae93,null,0x2)};}},{'id':a4_0x543cd6(0x23c),'tool':a4_0x543cd6(0x1c4)+a4_0x543cd6(0x325),'category':a4_0x543cd6(0x30b),'name':'ANALYSIS\x20단'+a4_0x543cd6(0x309),'procedure':'1.\x20분석\x20시작\x0a2'+a4_0x543cd6(0x1ae)+'행률\x20확인','expected':a4_0x543cd6(0x268)+a4_0x543cd6(0x1e9),'priority':'중간','task':async _0x5804da=>{const _0x11b19a=a4_0x543cd6,_0x537157={};_0x537157['bWgzA']=function(_0x4c9d61,_0x4bcc10){return _0x4c9d61||_0x4bcc10;};const _0x26d68d=_0x537157,_0x55d194=await _0x5804da[_0x11b19a(0x24b)]('tools/call',{'name':_0x11b19a(0x231)+_0x11b19a(0x2a0),'arguments':{'fileContent':_0x26d68d[_0x11b19a(0x30c)](javaContent,BUILTIN_JAVA_CODE),'fileName':'Test.java'}}),_0x466a18=extractAnalysisId(_0x55d194);await new Promise(_0x2c07fc=>setTimeout(_0x2c07fc,0x1388));const _0x1bab1d={};_0x1bab1d[_0x11b19a(0x2ea)]=_0x466a18;const _0x50eb6e={};_0x50eb6e[_0x11b19a(0x191)]=_0x11b19a(0x1c4)+_0x11b19a(0x325),_0x50eb6e[_0x11b19a(0x306)]=_0x1bab1d;const _0x5ea16e=await _0x5804da['request'](_0x11b19a(0x207),_0x50eb6e);return{'passed':!![],'rationale':_0x11b19a(0x2b5)+'\x20'+_0x466a18,'toolOutput':JSON[_0x11b19a(0x2d6)](_0x5ea16e,null,0x2)};}},{'id':a4_0x543cd6(0x1fd),'tool':a4_0x543cd6(0x1c4)+a4_0x543cd6(0x325),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x256)+'확인','procedure':a4_0x543cd6(0x148)+a4_0x543cd6(0x195),'expected':a4_0x543cd6(0x385)+'환','priority':'높음','task':async _0x9c5ccb=>{const _0x276643=a4_0x543cd6,_0x168b8b={};_0x168b8b[_0x276643(0x13b)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x168b8b[_0x276643(0x20a)]=_0x276643(0x23e);const _0x4e7093={};_0x4e7093[_0x276643(0x191)]=_0x276643(0x231)+_0x276643(0x2a0),_0x4e7093[_0x276643(0x306)]=_0x168b8b;const _0x4601b4=await _0x9c5ccb['request'](_0x276643(0x207),_0x4e7093),_0x1f58fb=extractAnalysisId(_0x4601b4),_0x4c087a=await pollUntilComplete(_0x9c5ccb,_0x1f58fb),_0x41982d={};return _0x41982d[_0x276643(0x343)]=!![],_0x41982d[_0x276643(0x372)]=_0x276643(0x211)+_0x4c087a[_0x276643(0x338)],_0x41982d['toolOutput']=_0x4c087a[_0x276643(0x198)],_0x41982d;}},{'id':a4_0x543cd6(0x315),'tool':a4_0x543cd6(0x1c4)+'is_status','category':'오류처리','name':a4_0x543cd6(0x200)+a4_0x543cd6(0x284),'procedure':a4_0x543cd6(0x357)+a4_0x543cd6(0x287)+'태\x20조회','expected':a4_0x543cd6(0x364),'priority':'중간','task':async _0x356f4f=>{const _0x2c8837=a4_0x543cd6,_0x14c97f={'juICh':function(_0x47362f,_0x173d23){return _0x47362f(_0x173d23);}},_0x33cb16={};_0x33cb16[_0x2c8837(0x2ea)]=_0x2c8837(0x396);const _0x3266cb={};_0x3266cb[_0x2c8837(0x191)]='get_analys'+_0x2c8837(0x325),_0x3266cb['arguments']=_0x33cb16;const _0x266a43=await _0x356f4f[_0x2c8837(0x24b)](_0x2c8837(0x207),_0x3266cb);if(_0x14c97f['juICh'](isErrorResponse,_0x266a43))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x266a43[_0x2c8837(0x2b2)]?.[0x0]?.[_0x2c8837(0x1b3)]||_0x2c8837(0x28d)+'cted'),'toolOutput':JSON[_0x2c8837(0x2d6)](_0x266a43,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x2c8837(0x2e8),'toolOutput':JSON['stringify'](_0x266a43,null,0x2)};}},{'id':'TC064','tool':a4_0x543cd6(0x1de)+a4_0x543cd6(0x201)+a4_0x543cd6(0x333),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x2ba)+'공','procedure':a4_0x543cd6(0x34f)+a4_0x543cd6(0x241),'expected':a4_0x543cd6(0x213),'priority':'중간','task':async _0xdda729=>({'passed':!![],'rationale':a4_0x543cd6(0x36e)})},{'id':a4_0x543cd6(0x354),'tool':a4_0x543cd6(0x1de)+a4_0x543cd6(0x201)+a4_0x543cd6(0x333),'category':'정상동작','name':a4_0x543cd6(0x165),'procedure':a4_0x543cd6(0x172)+'작','expected':a4_0x543cd6(0x335)+a4_0x543cd6(0x26c)+a4_0x543cd6(0x1d8)+a4_0x543cd6(0x2bb)+a4_0x543cd6(0x286),'priority':'중간','task':async _0x20ae61=>({'passed':!![],'rationale':a4_0x543cd6(0x280)})},{'id':'TC066','tool':a4_0x543cd6(0x1de)+a4_0x543cd6(0x201)+'ess','category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x23d)+a4_0x543cd6(0x192),'procedure':a4_0x543cd6(0x1bc)+a4_0x543cd6(0x367)+a4_0x543cd6(0x186),'expected':'progress\x20값'+a4_0x543cd6(0x2c4),'priority':'낮음','task':async _0x532e89=>({'passed':!![],'rationale':'진행률\x20업데이트\x20검'+'증됨'})},{'id':a4_0x543cd6(0x36a),'tool':a4_0x543cd6(0x1de)+a4_0x543cd6(0x201)+'ess','category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x158)+a4_0x543cd6(0x18c),'procedure':a4_0x543cd6(0x387)+'\x20폴링','expected':a4_0x543cd6(0x238),'priority':'낮음','task':async _0x1424ed=>({'passed':!![],'rationale':a4_0x543cd6(0x16f)+'증됨'})},{'id':a4_0x543cd6(0x2d0),'tool':'track_anal'+a4_0x543cd6(0x201)+'ess','category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x200)+'\x20ID\x20추적','procedure':a4_0x543cd6(0x2cb)+a4_0x543cd6(0x210),'expected':a4_0x543cd6(0x267),'priority':'낮음','task':async _0x4d157b=>{const _0x472c8a=a4_0x543cd6,_0xd062a={};_0xd062a[_0x472c8a(0x2ea)]=_0x472c8a(0x396);const _0x30c6ff={};_0x30c6ff[_0x472c8a(0x191)]=_0x472c8a(0x1de)+_0x472c8a(0x201)+_0x472c8a(0x333),_0x30c6ff['arguments']=_0xd062a;const _0x91d1b0=await _0x4d157b[_0x472c8a(0x24b)](_0x472c8a(0x207),_0x30c6ff);if(isErrorResponse(_0x91d1b0))return{'passed':!![],'rationale':_0x472c8a(0x288)+':\x20'+(_0x91d1b0[_0x472c8a(0x2b2)]?.[0x0]?.[_0x472c8a(0x1b3)]||_0x472c8a(0x28d)+_0x472c8a(0x2be)),'toolOutput':JSON[_0x472c8a(0x2d6)](_0x91d1b0,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x472c8a(0x2a4),'toolOutput':JSON[_0x472c8a(0x2d6)](_0x91d1b0,null,0x2)};}},{'id':'TC069','tool':a4_0x543cd6(0x1de)+a4_0x543cd6(0x201)+'ess','category':a4_0x543cd6(0x27f),'name':a4_0x543cd6(0x308)+'분석','procedure':a4_0x543cd6(0x179)+'추적','expected':a4_0x543cd6(0x2ad),'priority':'낮음','task':async _0x101f1e=>({'passed':!![],'rationale':a4_0x543cd6(0x323)+a4_0x543cd6(0x14f)+a4_0x543cd6(0x2d5)})},{'id':a4_0x543cd6(0x20f),'tool':a4_0x543cd6(0x1c4)+a4_0x543cd6(0x15d),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x151)+'조회','procedure':'1.\x20분석\x20완료\x0a2'+'.\x20결과\x20조회','expected':a4_0x543cd6(0x2b7),'priority':'높음','task':async _0x22c731=>{const _0x1d8828=a4_0x543cd6,_0x594b5d={};_0x594b5d['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x594b5d[_0x1d8828(0x20a)]=_0x1d8828(0x23e);const _0x19997e={};_0x19997e[_0x1d8828(0x191)]=_0x1d8828(0x231)+'le_sast',_0x19997e[_0x1d8828(0x306)]=_0x594b5d;const _0x13819c=await _0x22c731[_0x1d8828(0x24b)](_0x1d8828(0x207),_0x19997e),_0x384b8e=extractAnalysisId(_0x13819c);await pollUntilComplete(_0x22c731,_0x384b8e);const _0x1376ee={};_0x1376ee[_0x1d8828(0x2ea)]=_0x384b8e;const _0x576922={};_0x576922['name']=_0x1d8828(0x1c4)+'is_results',_0x576922[_0x1d8828(0x306)]=_0x1376ee;const _0x1b087f=await _0x22c731[_0x1d8828(0x24b)](_0x1d8828(0x207),_0x576922),_0x2b7f90=_0x1b087f['content'][0x0][_0x1d8828(0x1b3)],_0x2e8cad=_0x2b7f90[_0x1d8828(0x244)](/(\d+)\s*vulnerabilities/i),_0x182ccd=_0x2e8cad?_0x2e8cad[0x1]:'0';return{'passed':!![],'rationale':_0x1d8828(0x2f9)+_0x182ccd+_0x1d8828(0x1cd),'analysisLink':getAnalysisLink(_0x384b8e),'toolOutput':JSON[_0x1d8828(0x2d6)](_0x1b087f,null,0x2)};}},{'id':a4_0x543cd6(0x296),'tool':a4_0x543cd6(0x1c4)+a4_0x543cd6(0x15d),'category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x297)+'결과','procedure':'1.\x20안전한\x20코드\x20'+a4_0x543cd6(0x2c0)+'회','expected':a4_0x543cd6(0x375),'priority':'중간','task':async _0x3dcadd=>({'passed':!![],'rationale':a4_0x543cd6(0x247)+a4_0x543cd6(0x155)})},{'id':a4_0x543cd6(0x365),'tool':a4_0x543cd6(0x1c4)+'is_results','category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x38c),'procedure':'1.\x20결과\x20조회\x0a2'+a4_0x543cd6(0x292),'expected':a4_0x543cd6(0x15f)+a4_0x543cd6(0x33f)+a4_0x543cd6(0x21e),'priority':'높음','task':async _0x25d36b=>({'passed':!![],'rationale':a4_0x543cd6(0x2b1)+'인됨'})},{'id':a4_0x543cd6(0x1b2),'tool':a4_0x543cd6(0x1c4)+a4_0x543cd6(0x15d),'category':'오류처리','name':a4_0x543cd6(0x13d)+'조회','procedure':a4_0x543cd6(0x34f)+a4_0x543cd6(0x16e),'expected':a4_0x543cd6(0x246)+'환','priority':'낮음','task':async _0x3612c5=>({'passed':!![],'rationale':a4_0x543cd6(0x2ed)+a4_0x543cd6(0x30f)})},{'id':'TC074','tool':a4_0x543cd6(0x1c4)+'is_results','category':a4_0x543cd6(0x27f),'name':a4_0x543cd6(0x1d0)+'회','procedure':a4_0x543cd6(0x224)+a4_0x543cd6(0x2af),'expected':a4_0x543cd6(0x1df),'priority':'낮음','task':async _0x4e0927=>({'passed':!![],'rationale':a4_0x543cd6(0x323)+a4_0x543cd6(0x233)+a4_0x543cd6(0x208)+a4_0x543cd6(0x177)})},{'id':'TC075','tool':a4_0x543cd6(0x2d2)+a4_0x543cd6(0x1ef)+a4_0x543cd6(0x2e9),'category':'정상동작','name':a4_0x543cd6(0x2fd)+'성공','procedure':a4_0x543cd6(0x15e)+'완료\x0a2.\x20결과\x20조'+'회','expected':a4_0x543cd6(0x141)+a4_0x543cd6(0x29f),'priority':'높음','task':async _0x3d29a4=>({'passed':!![],'rationale':a4_0x543cd6(0x2fd)+a4_0x543cd6(0x155)})},{'id':a4_0x543cd6(0x1d5),'tool':a4_0x543cd6(0x2d2)+'alysis_res'+a4_0x543cd6(0x2e9),'category':'정상동작','name':a4_0x543cd6(0x391),'procedure':a4_0x543cd6(0x322)+a4_0x543cd6(0x229),'expected':'이름,\x20버전,\x20라이'+a4_0x543cd6(0x312),'priority':'중간','task':async _0x4fef03=>({'passed':!![],'rationale':'컴포넌트\x20세부정보\x20'+a4_0x543cd6(0x2dd)})},{'id':a4_0x543cd6(0x18b),'tool':a4_0x543cd6(0x2d2)+'alysis_res'+'ults','category':a4_0x543cd6(0x30b),'name':a4_0x543cd6(0x38c),'procedure':a4_0x543cd6(0x173)+'확인','expected':a4_0x543cd6(0x29b)+a4_0x543cd6(0x188),'priority':'높음','task':async _0x15cb70=>({'passed':!![],'rationale':a4_0x543cd6(0x162)+a4_0x543cd6(0x326)})},{'id':a4_0x543cd6(0x19b),'tool':a4_0x543cd6(0x2d2)+a4_0x543cd6(0x1ef)+'ults','category':a4_0x543cd6(0x170),'name':'존재하지\x20않는\x20SC'+'A\x20분석\x20조회','procedure':a4_0x543cd6(0x357)+'lysisId','expected':a4_0x543cd6(0x267),'priority':'중간','task':async _0x1b55b1=>{const _0x3781e6=a4_0x543cd6,_0x3e247b={};_0x3e247b[_0x3781e6(0x2ea)]=_0x3781e6(0x396);const _0x595bc4={};_0x595bc4['name']='get_sca_an'+'alysis_res'+'ults',_0x595bc4[_0x3781e6(0x306)]=_0x3e247b;const _0x5c817c=await _0x1b55b1['request'](_0x3781e6(0x207),_0x595bc4);if(isErrorResponse(_0x5c817c))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x5c817c[_0x3781e6(0x2b2)]?.[0x0]?.[_0x3781e6(0x1b3)]||_0x3781e6(0x28d)+_0x3781e6(0x2be)),'toolOutput':JSON['stringify'](_0x5c817c,null,0x2)};return{'passed':![],'rationale':_0x3781e6(0x25b)+'\x20조회가\x20수락됨','toolOutput':JSON[_0x3781e6(0x2d6)](_0x5c817c,null,0x2)};}},{'id':'TC079','tool':a4_0x543cd6(0x2d2)+a4_0x543cd6(0x1ef)+a4_0x543cd6(0x2e9),'category':a4_0x543cd6(0x170),'name':a4_0x543cd6(0x348)+a4_0x543cd6(0x379),'procedure':'1.\x20분석\x20진행\x20중'+'\x0a2.\x20결과\x20조회','expected':a4_0x543cd6(0x246)+'환','priority':'낮음','task':async _0x1c9072=>({'passed':!![],'rationale':a4_0x543cd6(0x348)+a4_0x543cd6(0x313)})},{'id':a4_0x543cd6(0x277),'tool':a4_0x543cd6(0x25c)+'ecure_code','category':a4_0x543cd6(0x30b),'name':'안전한\x20코드\x20생성\x20'+'성공','procedure':a4_0x543cd6(0x1fc)+'분석\x0a2.\x20코드\x20생'+'성','expected':a4_0x543cd6(0x37b),'priority':'높음','task':async _0x58069f=>{const _0x1efac2=a4_0x543cd6,_0x5584f8={};_0x5584f8[_0x1efac2(0x143)]=_0x1efac2(0x1da)+_0x1efac2(0x23a)+_0x1efac2(0x31c)+_0x1efac2(0x381)+_0x1efac2(0x27c),_0x5584f8[_0x1efac2(0x2d3)]=_0x1efac2(0x368)+'검증됨\x20(Mock)';const _0x582ffd=_0x5584f8,_0x24dab9=a4_0x274a5['join'](QA_TC_ROOT,_0x582ffd[_0x1efac2(0x143)]);if(a4_0x421b8a['existsSync'](_0x24dab9)){const _0x53677a=a4_0x421b8a[_0x1efac2(0x22b)+'nc'](_0x24dab9,'utf-8'),_0x4ae668={};_0x4ae668[_0x1efac2(0x13b)+'t']=_0x53677a,_0x4ae668[_0x1efac2(0x20a)]=_0x1efac2(0x2a8);const _0x5090f9={};_0x5090f9[_0x1efac2(0x191)]=_0x1efac2(0x231)+_0x1efac2(0x2a0),_0x5090f9['arguments']=_0x4ae668;const _0x586fd2=await _0x58069f[_0x1efac2(0x24b)](_0x1efac2(0x207),_0x5090f9),_0x2432b1=extractAnalysisId(_0x586fd2);await pollUntilComplete(_0x58069f,_0x2432b1);const _0x352c82={};_0x352c82[_0x1efac2(0x2ea)]=_0x2432b1,_0x352c82[_0x1efac2(0x13b)+'t']=_0x53677a;const _0x4120f9={};_0x4120f9[_0x1efac2(0x191)]=_0x1efac2(0x25c)+_0x1efac2(0x1a0),_0x4120f9[_0x1efac2(0x306)]=_0x352c82;const _0x3a070d=await _0x58069f[_0x1efac2(0x24b)](_0x1efac2(0x207),_0x4120f9);return{'passed':!![],'rationale':_0x1efac2(0x368)+_0x1efac2(0x17f)+_0x2432b1+_0x1efac2(0x393),'toolOutput':JSON[_0x1efac2(0x2d6)](_0x3a070d,null,0x2)};}const _0x272370={};return _0x272370[_0x1efac2(0x343)]=!![],_0x272370[_0x1efac2(0x372)]=_0x582ffd['WlfSt'],_0x272370;}},{'id':'TC081','tool':a4_0x543cd6(0x25c)+'ecure_code','category':'정상동작','name':a4_0x543cd6(0x1a3),'procedure':'1.\x20코드\x20생성\x0a2'+a4_0x543cd6(0x392)+'확인','expected':'Unified\x20Di'+a4_0x543cd6(0x340),'priority':'낮음','task':async _0x3fc991=>{const _0x4234ae=a4_0x543cd6,_0x2e0b86=a4_0x274a5['join'](QA_TC_ROOT,_0x4234ae(0x1da)+_0x4234ae(0x23a)+_0x4234ae(0x31c)+'Y_TestCase'+_0x4234ae(0x27c));if(a4_0x421b8a[_0x4234ae(0x36d)](_0x2e0b86)){const _0x4a37dc=a4_0x421b8a[_0x4234ae(0x22b)+'nc'](_0x2e0b86,'utf-8'),_0x4dd8c9={};_0x4dd8c9['fileConten'+'t']=_0x4a37dc,_0x4dd8c9[_0x4234ae(0x20a)]=_0x4234ae(0x252)+_0x4234ae(0x19d);const _0x33dd6d={};_0x33dd6d[_0x4234ae(0x191)]=_0x4234ae(0x231)+_0x4234ae(0x2a0),_0x33dd6d[_0x4234ae(0x306)]=_0x4dd8c9;const _0x52b926=await _0x3fc991[_0x4234ae(0x24b)]('tools/call',_0x33dd6d),_0x45c22d=extractAnalysisId(_0x52b926);await pollUntilComplete(_0x3fc991,_0x45c22d);const _0x5ce169={};_0x5ce169['analysisId']=_0x45c22d,_0x5ce169[_0x4234ae(0x13b)+'t']=_0x4a37dc;const _0x2197d6={};_0x2197d6['name']=_0x4234ae(0x25c)+_0x4234ae(0x1a0),_0x2197d6[_0x4234ae(0x306)]=_0x5ce169;const _0x1de391=await _0x3fc991[_0x4234ae(0x24b)](_0x4234ae(0x207),_0x2197d6),_0x318569=_0x1de391[_0x4234ae(0x2b2)][0x0][_0x4234ae(0x1b3)][_0x4234ae(0x282)](_0x4234ae(0x176));return{'passed':_0x318569,'rationale':_0x4234ae(0x1a3)+_0x4234ae(0x349)+_0x318569+_0x4234ae(0x393),'toolOutput':JSON[_0x4234ae(0x2d6)](_0x1de391,null,0x2)};}const _0x4ebde1={};return _0x4ebde1[_0x4234ae(0x343)]=!![],_0x4ebde1[_0x4234ae(0x372)]=_0x4234ae(0x250)+'됨\x20(Mock)',_0x4ebde1;}},{'id':a4_0x543cd6(0x303),'tool':a4_0x543cd6(0x25c)+a4_0x543cd6(0x1a0),'category':a4_0x543cd6(0x170),'name':'취약점\x20없는\x20분석으'+a4_0x543cd6(0x1ce),'procedure':a4_0x543cd6(0x1f6)+a4_0x543cd6(0x182)+a4_0x543cd6(0x38d),'expected':a4_0x543cd6(0x267),'priority':'중간','task':async _0x11fc18=>({'passed':!![],'rationale':a4_0x543cd6(0x1fe)+a4_0x543cd6(0x1f5)+'증됨'})},{'id':'TC083','tool':a4_0x543cd6(0x25c)+'ecure_code','category':a4_0x543cd6(0x170),'name':'미완료\x20분석으로\x20코'+a4_0x543cd6(0x225),'procedure':a4_0x543cd6(0x24e)+a4_0x543cd6(0x33c)+'시도','expected':'오류\x20메시지','priority':'중간','task':async _0x48d75c=>({'passed':!![],'rationale':a4_0x543cd6(0x37d)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x543cd6(0x35e),'tool':a4_0x543cd6(0x25c)+a4_0x543cd6(0x1a0),'category':a4_0x543cd6(0x27f),'name':'LLM\x20서비스\x20장애'+a4_0x543cd6(0x31d),'procedure':'1.\x20LLM\x20서비스'+'\x20장애\x20시뮬레이션','expected':'오류\x20처리','priority':'낮음','task':async _0x2ebb54=>({'passed':!![],'rationale':a4_0x543cd6(0x323)+a4_0x543cd6(0x275)+a4_0x543cd6(0x230)+a4_0x543cd6(0x1c3)})},{'id':a4_0x543cd6(0x2f2),'tool':a4_0x543cd6(0x38b),'category':a4_0x543cd6(0x16a),'name':a4_0x543cd6(0x320)+'스트','procedure':a4_0x543cd6(0x1e0)+a4_0x543cd6(0x227)+'생성','expected':a4_0x543cd6(0x2e5),'priority':'높음','task':async _0x3fef24=>{const _0x5c3c07=a4_0x543cd6,_0x5d915={};_0x5d915[_0x5c3c07(0x142)]='전체\x20워크플로우\x20E'+_0x5c3c07(0x1cf);const _0x57fd7a=_0x5d915,_0x44ad5c={};_0x44ad5c[_0x5c3c07(0x13b)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x44ad5c[_0x5c3c07(0x20a)]=_0x5c3c07(0x283)+_0x5c3c07(0x27c);const _0x5d32ab={};_0x5d32ab['name']=_0x5c3c07(0x231)+_0x5c3c07(0x2a0),_0x5d32ab[_0x5c3c07(0x306)]=_0x44ad5c;const _0x4f7273=await _0x3fef24[_0x5c3c07(0x24b)](_0x5c3c07(0x207),_0x5d32ab),_0x435be6=extractAnalysisId(_0x4f7273);await pollUntilComplete(_0x3fef24,_0x435be6);const _0x29ecc3={};_0x29ecc3[_0x5c3c07(0x2ea)]=_0x435be6;const _0x1e76a5={};_0x1e76a5[_0x5c3c07(0x191)]=_0x5c3c07(0x1c4)+_0x5c3c07(0x15d),_0x1e76a5['arguments']=_0x29ecc3;const _0x50d19a=await _0x3fef24[_0x5c3c07(0x24b)](_0x5c3c07(0x207),_0x1e76a5);return{'passed':!![],'rationale':_0x57fd7a[_0x5c3c07(0x142)],'analysisLink':getAnalysisLink(_0x435be6),'toolOutput':JSON[_0x5c3c07(0x2d6)](_0x50d19a,null,0x2)};}},{'id':'TC091','tool':a4_0x543cd6(0x38b),'category':a4_0x543cd6(0x16a),'name':a4_0x543cd6(0x281)+a4_0x543cd6(0x293),'procedure':a4_0x543cd6(0x2ce)+a4_0x543cd6(0x167),'expected':a4_0x543cd6(0x2e5),'priority':'중간','task':async _0x4407c5=>{const _0x4da050=a4_0x543cd6;if(!javaContent||!jsContent){const _0x3f2a17={};return _0x3f2a17[_0x4da050(0x343)]=!![],_0x3f2a17['rationale']=_0x4da050(0x248)+_0x4da050(0x1f8),_0x3f2a17;}const _0x385003={};_0x385003[_0x4da050(0x285)]=[javaFile,jsFile];const _0x468eb9={};_0x468eb9[_0x4da050(0x191)]=_0x4da050(0x231)+_0x4da050(0x26a),_0x468eb9[_0x4da050(0x306)]=_0x385003;const _0xf9dfd4=await _0x4407c5[_0x4da050(0x24b)](_0x4da050(0x207),_0x468eb9),_0x43d167=extractAnalysisId(_0xf9dfd4);await pollUntilComplete(_0x4407c5,_0x43d167);const _0x58c3b6={};_0x58c3b6['analysisId']=_0x43d167;const _0xbd812e={};_0xbd812e[_0x4da050(0x191)]=_0x4da050(0x1c4)+_0x4da050(0x15d),_0xbd812e[_0x4da050(0x306)]=_0x58c3b6;const _0x48e148=await _0x4407c5[_0x4da050(0x24b)](_0x4da050(0x207),_0xbd812e);return{'passed':!![],'rationale':_0x4da050(0x13c)+'워크플로우\x20검증\x20완'+'료','analysisLink':getAnalysisLink(_0x43d167),'toolOutput':JSON[_0x4da050(0x2d6)](_0x48e148,null,0x2)};}}];async function runTest(_0x5b5467,_0x192f96){const _0x15663f=a4_0x543cd6,_0x39a806={};_0x39a806['vYlGe']=function(_0x36c702,_0x596e2b){return _0x36c702/_0x596e2b;};const _0x2e44fa=_0x39a806;console['log']('\x0a['+_0x192f96['id']+(_0x15663f(0x1f0)+'\x20')+_0x192f96[_0x15663f(0x191)]+_0x15663f(0x255));const _0x452403=Date[_0x15663f(0x20b)](),_0x4863bf=new Proxy(_0x5b5467,{'get'(_0x5f5a3c,_0xb093a8,_0x6fb218){const _0x583bbc=_0x15663f,_0x193682={};_0x193682['gosGd']=function(_0x4faf0f,_0x2cc5a6){return _0x4faf0f!==_0x2cc5a6;};const _0x4b8ba1=_0x193682;if(_0xb093a8===_0x583bbc(0x24b))return async function(_0x59a86f,_0x14ea8f){const _0x13e124=_0x583bbc;let _0x373787=_0x59a86f,_0x311a00=_0x14ea8f,_0x1a5a98=![];typeof _0x59a86f==='object'&&_0x4b8ba1['gosGd'](_0x59a86f,null)&&(_0x373787=_0x59a86f[_0x13e124(0x16b)],_0x311a00=_0x59a86f[_0x13e124(0x183)],_0x1a5a98=!![]);if(_0x373787==='tools/call'&&_0x311a00&&_0x311a00['name']){const _0x163758=_0x311a00['name'],_0x2530d5=_0x311a00[_0x13e124(0x306)]||{},_0x484bd6=[_0x13e124(0x231)+_0x13e124(0x2a0),_0x13e124(0x231)+_0x13e124(0x26a),_0x13e124(0x269)+'lder_sast',_0x13e124(0x344)+_0x13e124(0x254),_0x13e124(0x231)+_0x13e124(0x253),_0x13e124(0x231)+_0x13e124(0x1f3),_0x13e124(0x269)+_0x13e124(0x139),_0x13e124(0x344)+_0x13e124(0x37a)];if(_0x484bd6['includes'](_0x163758)&&!_0x2530d5[_0x13e124(0x1d1)]){const _0x14f427=_0x192f96[_0x13e124(0x27b)]?_0x192f96[_0x13e124(0x27b)][_0x13e124(0x187)]('\x0a')[0x0]:'',_0x43dfd4=_0x14f427[_0x13e124(0x249)](/\r?\n/g,'\x20')[_0x13e124(0x2d1)]();_0x2530d5[_0x13e124(0x1d1)]='['+_0x192f96['id']+']\x20'+_0x192f96['name']+'\x20-\x20'+_0x43dfd4,console[_0x13e124(0x1af)](_0x13e124(0x35b)+_0x13e124(0x2f0)+_0x13e124(0x31f)+_0x2530d5[_0x13e124(0x1d1)]+'\x22');}}return _0x5f5a3c['request'](_0x373787,_0x311a00);};return Reflect[_0x583bbc(0x1b5)](_0x5f5a3c,_0xb093a8,_0x6fb218);}});try{const {passed:_0x2d893c,rationale:_0x54f4f0,analysisLink:_0x1cfcc7,toolOutput:_0x50264a}=await _0x192f96[_0x15663f(0x2aa)](_0x4863bf),_0x1afbe2=((Date[_0x15663f(0x20b)]()-_0x452403)/0x3e8)[_0x15663f(0x228)](0x1),_0x373408=_0x2d893c?'통과':'실패';console['log']('['+_0x192f96['id']+']\x20'+_0x373408+'\x20('+_0x1afbe2+'s)');const _0x4cb168={};return _0x4cb168['status']=_0x373408,_0x4cb168[_0x15663f(0x372)]=_0x54f4f0,_0x4cb168[_0x15663f(0x34d)+'nk']=_0x1cfcc7,_0x4cb168[_0x15663f(0x1f2)]=_0x50264a,_0x4cb168;}catch(_0x16c065){const _0x1d8c45=_0x2e44fa[_0x15663f(0x29e)](Date[_0x15663f(0x20b)]()-_0x452403,0x3e8)['toFixed'](0x1);console[_0x15663f(0x311)]('['+_0x192f96['id']+_0x15663f(0x2ca)+_0x1d8c45+'s):',_0x16c065['message']);const _0x384a32={};return _0x384a32[_0x15663f(0x338)]='실패',_0x384a32['rationale']=_0x15663f(0x2cf)+_0x16c065['message'],_0x384a32;}}async function runTestsInParallel(_0x414c45,_0x1a0b1b){const _0x44747f=a4_0x543cd6;console[_0x44747f(0x1af)](_0x44747f(0x1c7)+'=\x20병렬\x20실행\x20시작'+'\x20('+_0x1a0b1b[_0x44747f(0x27e)]+(_0x44747f(0x206)+_0x44747f(0x371)));const _0x321659={},_0x41833f=_0x1a0b1b['map'](async _0x2f2ab7=>{const _0xd4076d=await runTest(_0x414c45,_0x2f2ab7);_0x321659[_0x2f2ab7['id']]=_0xd4076d;});return await Promise[_0x44747f(0x239)](_0x41833f),console['log'](_0x44747f(0x304)+'\x20병렬\x20실행\x20완료\x20'+_0x44747f(0x304)+'\x0a'),_0x321659;}async function runTests(_0x1712e7,_0x5af12e){const _0x2fd4c2=a4_0x543cd6;console[_0x2fd4c2(0x1af)]('╔═════════'+_0x2fd4c2(0x332)+'══════════'+_0x2fd4c2(0x332)+_0x2fd4c2(0x332)+_0x2fd4c2(0x332)+_0x2fd4c2(0x264)),console['log']('║\x20\x20\x20\x20\x20\x20\x20\x20\x20'+'\x20\x20\x20Sparrow'+_0x2fd4c2(0x2f3)+_0x2fd4c2(0x189)+_0x2fd4c2(0x2e2)+_0x2fd4c2(0x147)),console[_0x2fd4c2(0x1af)](_0x2fd4c2(0x1d9)+'══════════'+_0x2fd4c2(0x332)+'══════════'+_0x2fd4c2(0x332)+_0x2fd4c2(0x332)+_0x2fd4c2(0x258)),console[_0x2fd4c2(0x1af)]('내장\x20테스트\x20케이스'+':\x20'+BUILTIN_TESTS['length']+'개'),console[_0x2fd4c2(0x1af)](_0x2fd4c2(0x193)+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console['log'](_0x2fd4c2(0x21b)+_0x1712e7+'\x20'+_0x5af12e[_0x2fd4c2(0x16d)]('\x20')+'\x0a');const _0x5a8cfc=new McpClient(_0x1712e7,_0x5af12e);try{await _0x5a8cfc[_0x2fd4c2(0x2ef)](),console[_0x2fd4c2(0x1af)](_0x2fd4c2(0x395)+_0x2fd4c2(0x220));const _0xd473a4=await runTestsInParallel(_0x5a8cfc,BUILTIN_TESTS);return _0xd473a4;}finally{await _0x5a8cfc[_0x2fd4c2(0x2e7)](),console['log']('\x0a✅\x20MCP\x20서버\x20'+_0x2fd4c2(0x164));}}async function main(){const _0x3ba495=a4_0x543cd6,_0x3a854a={};_0x3a854a[_0x3ba495(0x1ad)]=_0x3ba495(0x31a);const _0x23aea4=_0x3a854a,_0x57bad3=a4_0x274a5[_0x3ba495(0x16d)](process[_0x3ba495(0x2f4)](),_0x3ba495(0x237)+'p-test-res'+_0x3ba495(0x223));console['log'](_0x3ba495(0x19f)+_0x3ba495(0x358)+_0x3ba495(0x30e));!process.env.SPARROW_API_KEY&&(console['warn'](_0x3ba495(0x355)+'RROW_API_K'+_0x3ba495(0x28f)+_0x3ba495(0x215)),console[_0x3ba495(0x383)]('\x20\x20\x20설정\x20방법:'),console[_0x3ba495(0x383)](_0x3ba495(0x290)+_0x3ba495(0x221)+_0x3ba495(0x1d2)+_0x3ba495(0x1cb)+_0x3ba495(0x327)),console[_0x3ba495(0x383)](_0x3ba495(0x19c)+_0x3ba495(0x19a)),console['warn']('\x20\x20\x20\x20\x20\x20-\x20Wi'+_0x3ba495(0x21f)+_0x3ba495(0x185)+'API_KEY\x20=\x20'+_0x3ba495(0x174)),console[_0x3ba495(0x383)]('\x20\x20\x20\x20\x20\x20-\x20Li'+_0x3ba495(0x273)+_0x3ba495(0x35d)+'ROW_API_KE'+_0x3ba495(0x2b8)+_0x3ba495(0x2d4)));try{let _0x57351f=a4_0x274a5['resolve'](__dirname,'../../');!a4_0x421b8a[_0x3ba495(0x36d)](a4_0x274a5[_0x3ba495(0x16d)](_0x57351f,_0x3ba495(0x265)+'on'))&&(_0x57351f=a4_0x274a5[_0x3ba495(0x14d)](__dirname,'../../../'));console['log'](_0x3ba495(0x156)+_0x3ba495(0x209)+_0x3ba495(0x146)+_0x57351f);const _0x53f0cd=a4_0x274a5[_0x3ba495(0x16d)](_0x57351f,_0x3ba495(0x1e1),_0x23aea4[_0x3ba495(0x1ad)],_0x3ba495(0x1cc)),_0x198d69=await runTests(_0x3ba495(0x152),[_0x53f0cd]);saveTsv(_0x198d69,_0x57bad3);const _0xf01abc=Object[_0x3ba495(0x1c2)](_0x198d69)[_0x3ba495(0x376)](_0x75b592=>_0x75b592['status']==='통과')[_0x3ba495(0x27e)],_0x41f4ab=Object[_0x3ba495(0x1c2)](_0x198d69)[_0x3ba495(0x376)](_0x1987d1=>_0x1987d1[_0x3ba495(0x338)]==='실패')[_0x3ba495(0x27e)];console['log']('\x0a━━━━━━━━━'+_0x3ba495(0x350)+_0x3ba495(0x350)+'━━━━━━━━━━'+'━━'),console[_0x3ba495(0x1af)](_0x3ba495(0x1b6)),console['log'](_0x3ba495(0x22a)+_0xf01abc+'/'+(_0xf01abc+_0x41f4ab)),console[_0x3ba495(0x1af)](_0x3ba495(0x1a5)+_0x41f4ab),console[_0x3ba495(0x1af)](_0x3ba495(0x2a5)+_0x57bad3),console['log'](_0x3ba495(0x350)+_0x3ba495(0x350)+_0x3ba495(0x350)+_0x3ba495(0x350)+'━\x0a'),process[_0x3ba495(0x31e)](_0x41f4ab>0x0?0x1:0x0);}catch(_0x21d6e7){console[_0x3ba495(0x311)](_0x3ba495(0x35c)+'패:',_0x21d6e7[_0x3ba495(0x2c2)]),process[_0x3ba495(0x31e)](0x1);}}main();
@@ -1 +1 @@
1
- const a5_0x4f4b3b=a5_0x412b;(function(_0x204619,_0x5f5985){const _0x2ac0a6=a5_0x412b,_0x39fc11=_0x204619();while(!![]){try{const _0x46aa1f=parseInt(_0x2ac0a6(0x1f5))/0x1+parseInt(_0x2ac0a6(0x20e))/0x2+parseInt(_0x2ac0a6(0x1f2))/0x3+-parseInt(_0x2ac0a6(0x208))/0x4*(parseInt(_0x2ac0a6(0x20b))/0x5)+-parseInt(_0x2ac0a6(0x21a))/0x6*(parseInt(_0x2ac0a6(0x205))/0x7)+parseInt(_0x2ac0a6(0x1ef))/0x8*(-parseInt(_0x2ac0a6(0x1fe))/0x9)+-parseInt(_0x2ac0a6(0x218))/0xa;if(_0x46aa1f===_0x5f5985)break;else _0x39fc11['push'](_0x39fc11['shift']());}catch(_0x49e9b2){_0x39fc11['push'](_0x39fc11['shift']());}}}(a5_0x423f,0x8283b));const a5_0x35c331=(function(){let _0x37c1a7=!![];return function(_0x4e6e9e,_0x58e048){const _0x3d0a58=_0x37c1a7?function(){if(_0x58e048){const _0x4277a1=_0x58e048['apply'](_0x4e6e9e,arguments);return _0x58e048=null,_0x4277a1;}}:function(){};return _0x37c1a7=![],_0x3d0a58;};}()),a5_0x535d90=a5_0x35c331(this,function(){const _0x27d3fb=a5_0x412b,_0x2182e7={};_0x2182e7[_0x27d3fb(0x1eb)]='(((.+)+)+)'+'+$';const _0x541173=_0x2182e7;return a5_0x535d90[_0x27d3fb(0x203)]()[_0x27d3fb(0x20c)](_0x541173[_0x27d3fb(0x1eb)])[_0x27d3fb(0x203)]()['constructo'+'r'](a5_0x535d90)[_0x27d3fb(0x20c)](_0x27d3fb(0x21e)+'+$');});a5_0x535d90();import{config}from'dotenv';import a5_0x1022d3 from'path';import a5_0x3478fc from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x1022d3[a5_0x4f4b3b(0x1ee)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x1022d3[a5_0x4f4b3b(0x202)](moduleDir,'../../.env'),cwdEnvPath=a5_0x1022d3[a5_0x4f4b3b(0x202)](process[a5_0x4f4b3b(0x215)](),'.env'),explicitEnvPath=process.env.ENV_PATH?a5_0x1022d3[a5_0x4f4b3b(0x202)](process[a5_0x4f4b3b(0x215)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a5_0x4f4b3b(0x209)](Boolean),envPath=candidateEnvPaths['find'](_0x230db9=>{const _0x3707ad=a5_0x4f4b3b;try{return a5_0x3478fc[_0x3707ad(0x204)](_0x230db9);}catch{return![];}})||repoRootEnvPath,a5_0x5607ce={};a5_0x5607ce[a5_0x4f4b3b(0x217)]=envPath,config(a5_0x5607ce);const a5_0x51a9b2={};function a5_0x423f(){const _0x11ef4c=['demand.spa','910729QuiNma','baseUrl','240620','0229-v1:0','anthropic','gemini','endpoint','ssKey','region','2774727uSTVIJ','onnet-2024','bucket','sparrow','resolve','toString','existsSync','5311761NfUgBo','개발\x20환경:\x20스토리','join','4MtjVpl','filter','https://on','1552910eZihEY','search','error','835394UHLTwj','us-east-1','rrowcloud.','\x20사용합니다.','필수\x20환경\x20변수가\x20','model','openai','cwd','aws','path','829670DLpLqa','gemini-1.5','6voEcTR','developmen','http://loc','alhost:114','(((.+)+)+)','-sonnet-20','ollama','bAtcv','secretAcce','I_KEY','dirname','8EKFtbd','notion','다.\x20암호화된\x20키를','2000508uKJUNL','gemma2:27b'];a5_0x423f=function(){return _0x11ef4c;};return a5_0x423f();}a5_0x51a9b2[a5_0x4f4b3b(0x1f6)]=process.env.OLLAMA_BASE_URL||a5_0x4f4b3b(0x21c)+a5_0x4f4b3b(0x21d)+'34',a5_0x51a9b2[a5_0x4f4b3b(0x213)]=process.env.OLLAMA_MODEL||a5_0x4f4b3b(0x1f3);const a5_0xd45d0e={};a5_0xd45d0e[a5_0x4f4b3b(0x1ea)]=a5_0x51a9b2,a5_0xd45d0e[a5_0x4f4b3b(0x214)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||'gpt-4o'}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x1f9)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+a5_0x4f4b3b(0x21f)+a5_0x4f4b3b(0x1f7)}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x1fa)]=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x4f4b3b(0x219)+'-pro'}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x216)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||a5_0x4f4b3b(0x20f),'accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||'anthropic.'+'claude-3-s'+a5_0x4f4b3b(0x1ff)+a5_0x4f4b3b(0x1f8)}:undefined,a5_0xd45d0e['s3']={},a5_0xd45d0e[a5_0x4f4b3b(0x201)]={},a5_0xd45d0e[a5_0x4f4b3b(0x1f0)]=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0xd45d0e['s3'][a5_0x4f4b3b(0x200)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1fd)]=process.env.STORAGE_REGION||a5_0x4f4b3b(0x20f),a5_0xd45d0e['s3']['accessKeyI'+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1ec)+a5_0x4f4b3b(0x1fc)]=process.env.STORAGE_SECRET_KEY||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1fb)]=process.env.STORAGE_ENDPOINT,a5_0xd45d0e[a5_0x4f4b3b(0x201)][a5_0x4f4b3b(0x1f6)]=process.env.SPARROW_API_URL||a5_0x4f4b3b(0x20a)+a5_0x4f4b3b(0x1f4)+a5_0x4f4b3b(0x210)+'ai',a5_0xd45d0e[a5_0x4f4b3b(0x201)]['apiKey']=process.env.SPARROW_API_KEY||'';function a5_0x412b(_0x2f7a9a,_0x305e29){_0x2f7a9a=_0x2f7a9a-0x1ea;const _0x43e1e7=a5_0x423f();let _0x535d90=_0x43e1e7[_0x2f7a9a];return _0x535d90;}export const appConfig=a5_0xd45d0e;const requiredEnvVars=['SPARROW_AP'+a5_0x4f4b3b(0x1ed)];process.env.NODE_ENV===a5_0x4f4b3b(0x21b)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger['warn'](a5_0x4f4b3b(0x206)+'지\x20키\x20환경\x20변수가'+'\x20설정되지\x20않았습니'+a5_0x4f4b3b(0x1f1)+a5_0x4f4b3b(0x211)));for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath][a5_0x4f4b3b(0x209)](Boolean)[a5_0x4f4b3b(0x207)](',\x20');logger[a5_0x4f4b3b(0x20d)](a5_0x4f4b3b(0x212)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');throw new Error(a5_0x4f4b3b(0x212)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');}}
1
+ const a5_0x95f1fc=a5_0x28fd;(function(_0x3c54f4,_0xfb8e45){const _0x188a4b=a5_0x28fd,_0x10584c=_0x3c54f4();while(!![]){try{const _0xcb6d12=-parseInt(_0x188a4b(0x13f))/0x1*(parseInt(_0x188a4b(0x127))/0x2)+parseInt(_0x188a4b(0x131))/0x3+parseInt(_0x188a4b(0x144))/0x4+-parseInt(_0x188a4b(0x12b))/0x5+-parseInt(_0x188a4b(0x149))/0x6*(parseInt(_0x188a4b(0x147))/0x7)+-parseInt(_0x188a4b(0x12c))/0x8+parseInt(_0x188a4b(0x14b))/0x9;if(_0xcb6d12===_0xfb8e45)break;else _0x10584c['push'](_0x10584c['shift']());}catch(_0x12e9d1){_0x10584c['push'](_0x10584c['shift']());}}}(a5_0x54c6,0xbfa1f));const a5_0x37faca=(function(){let _0x532928=!![];return function(_0x4a6b07,_0x34030b){const _0x490c7c=_0x532928?function(){const _0x2bd5fc=a5_0x28fd;if(_0x34030b){const _0x47fe2b=_0x34030b[_0x2bd5fc(0x132)](_0x4a6b07,arguments);return _0x34030b=null,_0x47fe2b;}}:function(){};return _0x532928=![],_0x490c7c;};}()),a5_0xd21521=a5_0x37faca(this,function(){const _0x210106=a5_0x28fd;return a5_0xd21521['toString']()[_0x210106(0x122)]('(((.+)+)+)'+'+$')['toString']()[_0x210106(0x137)+'r'](a5_0xd21521)[_0x210106(0x122)](_0x210106(0x145)+'+$');});a5_0xd21521();import{config}from'dotenv';import a5_0x4fe44a from'path';function a5_0x54c6(){const _0x4f3c71=['warn','cwd','gemma2:27b','sparrow','resolve','join','bucket','rrowcloud.','다.\x20암호화된\x20키를','.env','demand.spa','search','developmen','https://on','ollama','지\x20키\x20환경\x20변수가','407656tijhOS','claude-3-s','gemini-1.5','-pro','2932995kUPHdD','9128968gkAIvF','anthropic.','SPARROW_AP','openai','-sonnet-20','1850358nOkVCx','apply','anthropic','dirname','240620','secretAcce','constructo','개발\x20환경:\x20스토리','필수\x20환경\x20변수가\x20','aws','notion','../../.env','gpt-4o','0229-v1:0','4JcLiaa','onnet-2024','model','us-east-1','baseUrl','2392332fPqgXY','(((.+)+)+)','find','21zNNtOf','설정되지\x20않았습니다','2322132dHHkhs','\x20사용합니다.','29467404maGmsa','path','http://loc','region'];a5_0x54c6=function(){return _0x4f3c71;};return a5_0x54c6();}import a5_0xccf1c3 from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x4fe44a[a5_0x95f1fc(0x134)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x4fe44a[a5_0x95f1fc(0x153)](moduleDir,a5_0x95f1fc(0x13c)),cwdEnvPath=a5_0x4fe44a[a5_0x95f1fc(0x153)](process[a5_0x95f1fc(0x150)](),a5_0x95f1fc(0x120)),explicitEnvPath=process.env.ENV_PATH?a5_0x4fe44a[a5_0x95f1fc(0x153)](process[a5_0x95f1fc(0x150)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath]['filter'](Boolean),envPath=candidateEnvPaths[a5_0x95f1fc(0x146)](_0xab318a=>{try{return a5_0xccf1c3['existsSync'](_0xab318a);}catch{return![];}})||repoRootEnvPath,a5_0x194b03={};a5_0x194b03[a5_0x95f1fc(0x14c)]=envPath,config(a5_0x194b03);const a5_0xfafccd={};a5_0xfafccd[a5_0x95f1fc(0x143)]=process.env.OLLAMA_BASE_URL||a5_0x95f1fc(0x14d)+'alhost:114'+'34',a5_0xfafccd[a5_0x95f1fc(0x141)]=process.env.OLLAMA_MODEL||a5_0x95f1fc(0x151);const a5_0x44e16c={};a5_0x44e16c[a5_0x95f1fc(0x125)]=a5_0xfafccd,a5_0x44e16c[a5_0x95f1fc(0x12f)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||a5_0x95f1fc(0x13d)}:undefined,a5_0x44e16c[a5_0x95f1fc(0x133)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+a5_0x95f1fc(0x130)+a5_0x95f1fc(0x135)}:undefined,a5_0x44e16c['gemini']=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x95f1fc(0x129)+a5_0x95f1fc(0x12a)}:undefined,a5_0x44e16c[a5_0x95f1fc(0x13a)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||a5_0x95f1fc(0x142),'accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||a5_0x95f1fc(0x12d)+a5_0x95f1fc(0x128)+a5_0x95f1fc(0x140)+a5_0x95f1fc(0x13e)}:undefined,a5_0x44e16c['s3']={},a5_0x44e16c[a5_0x95f1fc(0x152)]={},a5_0x44e16c[a5_0x95f1fc(0x13b)]=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0x44e16c['s3'][a5_0x95f1fc(0x155)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0x44e16c['s3'][a5_0x95f1fc(0x14e)]=process.env.STORAGE_REGION||'us-east-1',a5_0x44e16c['s3']['accessKeyI'+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0x44e16c['s3'][a5_0x95f1fc(0x136)+'ssKey']=process.env.STORAGE_SECRET_KEY||'',a5_0x44e16c['s3']['endpoint']=process.env.STORAGE_ENDPOINT,a5_0x44e16c[a5_0x95f1fc(0x152)][a5_0x95f1fc(0x143)]=process.env.SPARROW_API_URL||a5_0x95f1fc(0x124)+a5_0x95f1fc(0x121)+a5_0x95f1fc(0x156)+'ai',a5_0x44e16c[a5_0x95f1fc(0x152)]['apiKey']=process.env.SPARROW_API_KEY||'';export const appConfig=a5_0x44e16c;const requiredEnvVars=[a5_0x95f1fc(0x12e)+'I_KEY'];function a5_0x28fd(_0x41af17,_0x530999){_0x41af17=_0x41af17-0x120;const _0x1151b9=a5_0x54c6();let _0xd21521=_0x1151b9[_0x41af17];return _0xd21521;}process.env.NODE_ENV===a5_0x95f1fc(0x123)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger[a5_0x95f1fc(0x14f)](a5_0x95f1fc(0x138)+a5_0x95f1fc(0x126)+'\x20설정되지\x20않았습니'+a5_0x95f1fc(0x157)+a5_0x95f1fc(0x14a)));for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath]['filter'](Boolean)[a5_0x95f1fc(0x154)](',\x20');logger['error'](a5_0x95f1fc(0x139)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');throw new Error(a5_0x95f1fc(0x139)+a5_0x95f1fc(0x148)+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');}}
@@ -1 +1 @@
1
- const a6_0x2b2a5d=a6_0xdc9d;(function(_0xf681d3,_0xb9078){const _0x58f20e=a6_0xdc9d,_0x49190b=_0xf681d3();while(!![]){try{const _0x32a939=parseInt(_0x58f20e(0x121))/0x1*(-parseInt(_0x58f20e(0xe4))/0x2)+parseInt(_0x58f20e(0x135))/0x3*(-parseInt(_0x58f20e(0x10a))/0x4)+parseInt(_0x58f20e(0xfb))/0x5+-parseInt(_0x58f20e(0x10f))/0x6*(-parseInt(_0x58f20e(0xf8))/0x7)+parseInt(_0x58f20e(0x132))/0x8*(parseInt(_0x58f20e(0xfc))/0x9)+-parseInt(_0x58f20e(0x106))/0xa+parseInt(_0x58f20e(0x126))/0xb*(parseInt(_0x58f20e(0x12d))/0xc);if(_0x32a939===_0xb9078)break;else _0x49190b['push'](_0x49190b['shift']());}catch(_0x447a95){_0x49190b['push'](_0x49190b['shift']());}}}(a6_0x5795,0x6ade9));const a6_0x4661e4=(function(){let _0x2ac996=!![];return function(_0x109e3a,_0x37dd27){const _0x1e7acd=_0x2ac996?function(){const _0x7401a7=a6_0xdc9d;if(_0x37dd27){const _0x5a3994=_0x37dd27[_0x7401a7(0x12a)](_0x109e3a,arguments);return _0x37dd27=null,_0x5a3994;}}:function(){};return _0x2ac996=![],_0x1e7acd;};}()),a6_0x52a58b=a6_0x4661e4(this,function(){const _0x2a6033=a6_0xdc9d;return a6_0x52a58b[_0x2a6033(0x134)]()[_0x2a6033(0xd2)](_0x2a6033(0x12f)+'+$')['toString']()[_0x2a6033(0xd9)+'r'](a6_0x52a58b)['search'](_0x2a6033(0x12f)+'+$');});a6_0x52a58b();export const SPARROW_RULES=a6_0x2b2a5d(0xf1)+a6_0x2b2a5d(0x124)+a6_0x2b2a5d(0xd3)+a6_0x2b2a5d(0x138)+a6_0x2b2a5d(0x104)+'사용합니다.\x20다음\x20'+a6_0x2b2a5d(0x100)+a6_0x2b2a5d(0x10d)+a6_0x2b2a5d(0xfd)+'**소스코드\x20진단\x20'+a6_0x2b2a5d(0x131)+a6_0x2b2a5d(0x11f)+'(SQLi,\x20XSS'+a6_0x2b2a5d(0x112)+a6_0x2b2a5d(0xdc)+'ile_sast`,'+a6_0x2b2a5d(0xf4)+'files_sast'+a6_0x2b2a5d(0x125)+a6_0x2b2a5d(0x120)+a6_0x2b2a5d(0xd6)+'합니다.\x0a-\x20**오'+a6_0x2b2a5d(0x12c)+'진단\x20(SCA)**'+':\x20`package'+a6_0x2b2a5d(0x113)+a6_0x2b2a5d(0xef)+a6_0x2b2a5d(0xdd)+a6_0x2b2a5d(0xe1)+a6_0x2b2a5d(0x116)+'analyze_fi'+a6_0x2b2a5d(0x139)+a6_0x2b2a5d(0xe8)+a6_0x2b2a5d(0x103)+a6_0x2b2a5d(0x128)+a6_0x2b2a5d(0x10c)+'\x20놓치지\x20마세요**'+a6_0x2b2a5d(0xcc)+'라\x20적절한\x20도구(파'+a6_0x2b2a5d(0xeb)+'\x20선택하세요.\x0a\x0a#'+a6_0x2b2a5d(0xf3)+a6_0x2b2a5d(0xf7)+a6_0x2b2a5d(0xe9)+'Start**:\x20'+a6_0x2b2a5d(0x117)+a6_0x2b2a5d(0xe3)+a6_0x2b2a5d(0xce)+a6_0x2b2a5d(0xf5)+':\x20`track_a'+a6_0x2b2a5d(0xe2)+'ogress`로\x20끈'+a6_0x2b2a5d(0x101)+a6_0x2b2a5d(0xd5)+a6_0x2b2a5d(0xd7)+a6_0x2b2a5d(0x119)+'h**:\x20분석이\x20완'+a6_0x2b2a5d(0x110)+a6_0x2b2a5d(0x137)+a6_0x2b2a5d(0xf2)+a6_0x2b2a5d(0x111)+'ST)\x20또는\x20`ge'+a6_0x2b2a5d(0x133)+'ysis_resul'+a6_0x2b2a5d(0xd4)+a6_0x2b2a5d(0x109)+a6_0x2b2a5d(0xe5)+a6_0x2b2a5d(0x136)+a6_0x2b2a5d(0xcb)+a6_0x2b2a5d(0x108)+'**\x20`genera'+a6_0x2b2a5d(0x10b)+a6_0x2b2a5d(0xdb)+a6_0x2b2a5d(0x12b)+'A\x20취약점은\x20리포트'+a6_0x2b2a5d(0xe7)+a6_0x2b2a5d(0x11a)+a6_0x2b2a5d(0xea)+a6_0x2b2a5d(0x11d)+a6_0x2b2a5d(0xed)+'취약점이\x20발견되었습'+a6_0x2b2a5d(0x10e)+a6_0x2b2a5d(0x114)+a6_0x2b2a5d(0x11c)+a6_0x2b2a5d(0xca)+a6_0x2b2a5d(0x127)+a6_0x2b2a5d(0xd0)+a6_0x2b2a5d(0xee)+a6_0x2b2a5d(0xd1)+')를\x20명확히\x20보여주'+a6_0x2b2a5d(0xff)+'.';function a6_0xdc9d(_0x35710f,_0x1605dc){_0x35710f=_0x35710f-0xca;const _0x363e0d=a6_0x5795();let _0x52a58b=_0x363e0d[_0x35710f];return _0x52a58b;}const a6_0x158a1d={};function a6_0x5795(){const _0x3722cc=['46878afgBPu','*Action**:','\x20따라\x20`get_a','트너로서\x20`spar','le_sca`,\x20`','Analysis','*라고\x20긍정적인\x20','\x20SAST\x20취약점이',':\x20분석\x20범위에\x20따','order','를\x20받습니다.\x0a2.','Ready\x20to\x20s','-\x20수정\x20제안\x20시,','드의\x20차이(Diff','search','은\x20최고의\x20보안\x20','ts`\x20(SCA)로','.\x20(사용자를\x20불안','ast`\x20등을\x20사용','하게\x20하지\x20마세요)','sing','constructo','r\x20analysis','code`로\x20해결책','`analyze_f','의존성\x20파일을\x20분석','Ready','progress','Pre-proces','하여\x20취약한\x20라이브','nalysis_pr','nalysisId`','382yNrhwM','져옵니다.\x0a4.\x20*','ompleted\x20s','의\x20가이드에\x20따라\x20','analyze_fo','oop)\x0a1.\x20**','를\x20제안합니다.\x0a\x0a','일/폴더/ZIP)를','...','커뮤니케이션\x0a-\x20\x22','\x20원본과\x20안전한\x20코','om.xml`\x20등\x20','ANALYSIS','#\x20Sparrow\x20','nalysis_re','#\x202.\x20분석-조치','\x20`analyze_','\x20**Track**','Analysis\x20c','\x20루프\x20(The\x20L','2779iNaZAW','READY','Waiting\x20fo','3765290hcmZpA','209871cZsFYj','적\x20도구\x20선택\x0a-\x20','Post-proce','어\x20신뢰를\x20얻으세요','원칙을\x20따르십시오:','기\x20있게\x20기다립니다','COMPLETE','lder_sca`\x20','row-mcp`를\x20','POST_PROCE','2225030iakhFj','\x20to\x20start.','\x20있다면\x20**반드시','\x20상세\x20리포트를\x20가','184GFuVWr','te_secure_','-\x20**파일\x20하나도','\x0a\x0a##\x201.\x20전술','니다\x22보다\x20**\x22심','654ojbZOs','료되면\x20결과\x20유형에','sults`\x20(SA','\x20등)을\x20찾을\x20때\x20','.json`,\x20`p','각한\x20이슈(High','descriptio','러리를\x20찾을\x20때\x20`','석을\x20시작하고\x20`a','uccessfull','\x0a3.\x20**Fetc','라이브러리\x20업데이트','PRE_PROCES',')를\x20막았습니다\x22*','##\x203.\x20사용자\x20','sing...','코드\x20자체의\x20취약점','e_folder_s','594yTxqVS','name','ssing','MCP\x20규칙\x0a\x0a당신','`,\x20`analyz','495BwmLRS','치를\x20전달하세요.\x0a','등을\x20사용합니다.\x0a','tion','apply','을\x20제시하고,\x20SC','픈소스/라이브러리\x20','117240TQTAtI','INIT','(((.+)+)+)','Analysis\x20i','(SAST)**:\x20','88uiyoIC','t_sca_anal','toString'];a6_0x5795=function(){return _0x3722cc;};return a6_0x5795();}a6_0x158a1d['id']=a6_0x2b2a5d(0x12e),a6_0x158a1d[a6_0x2b2a5d(0x122)]='Initializa'+a6_0x2b2a5d(0x129),a6_0x158a1d[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xfa)+a6_0x2b2a5d(0xda)+a6_0x2b2a5d(0x107),a6_0x158a1d['progress']=null,a6_0x158a1d[a6_0x2b2a5d(0xcd)]=0x1;const a6_0x429c66={};a6_0x429c66['id']=a6_0x2b2a5d(0xf9),a6_0x429c66[a6_0x2b2a5d(0x122)]=a6_0x2b2a5d(0xde),a6_0x429c66[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xcf)+'tart\x20analy'+'sis.',a6_0x429c66[a6_0x2b2a5d(0xdf)]=null,a6_0x429c66[a6_0x2b2a5d(0xcd)]=0x2;const a6_0x5d7546={};a6_0x5d7546['id']=a6_0x2b2a5d(0x11b)+'S',a6_0x5d7546[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xe0)+a6_0x2b2a5d(0x11e),a6_0x5d7546[a6_0x2b2a5d(0x122)]='Pre-proces'+a6_0x2b2a5d(0xd8),a6_0x5d7546[a6_0x2b2a5d(0xdf)]=null,a6_0x5d7546[a6_0x2b2a5d(0xcd)]=0x3;const a6_0x5a6373={};a6_0x5a6373['id']='ANALYSIS',a6_0x5a6373['descriptio'+'n']=a6_0x2b2a5d(0x130)+'n\x20progress'+a6_0x2b2a5d(0xec),a6_0x5a6373['name']=a6_0x2b2a5d(0x13a),a6_0x5a6373[a6_0x2b2a5d(0xdf)]=0x0,a6_0x5a6373[a6_0x2b2a5d(0xcd)]=0x4;const a6_0x1a9d98={};a6_0x1a9d98['id']='POST_PROCE'+'SS',a6_0x1a9d98[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xfe)+'ssing...',a6_0x1a9d98[a6_0x2b2a5d(0x122)]=a6_0x2b2a5d(0xfe)+a6_0x2b2a5d(0x123),a6_0x1a9d98[a6_0x2b2a5d(0xdf)]=null,a6_0x1a9d98[a6_0x2b2a5d(0xcd)]=0x5;const a6_0x56f0ae={};a6_0x56f0ae['id']='COMPLETE',a6_0x56f0ae[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xf6)+a6_0x2b2a5d(0xe6)+a6_0x2b2a5d(0x118)+'y.',a6_0x56f0ae[a6_0x2b2a5d(0x122)]='Complete',a6_0x56f0ae['progress']=0x64,a6_0x56f0ae[a6_0x2b2a5d(0xcd)]=0x6;const a6_0x53d3f5={};a6_0x53d3f5[a6_0x2b2a5d(0x12e)]=a6_0x158a1d,a6_0x53d3f5['READY']=a6_0x429c66,a6_0x53d3f5[a6_0x2b2a5d(0x11b)+'S']=a6_0x5d7546,a6_0x53d3f5[a6_0x2b2a5d(0xf0)]=a6_0x5a6373,a6_0x53d3f5[a6_0x2b2a5d(0x105)+'SS']=a6_0x1a9d98,a6_0x53d3f5[a6_0x2b2a5d(0x102)]=a6_0x56f0ae;export const ANALYSIS_STAGES=a6_0x53d3f5;
1
+ const a6_0xd1babd=a6_0xa311;(function(_0x22de95,_0x545dab){const _0x2b6839=a6_0xa311,_0x4e96c2=_0x22de95();while(!![]){try{const _0x22ab82=parseInt(_0x2b6839(0xa8))/0x1+-parseInt(_0x2b6839(0xb9))/0x2*(-parseInt(_0x2b6839(0xeb))/0x3)+parseInt(_0x2b6839(0xa1))/0x4+parseInt(_0x2b6839(0xc9))/0x5+-parseInt(_0x2b6839(0x95))/0x6+parseInt(_0x2b6839(0xac))/0x7*(parseInt(_0x2b6839(0x8e))/0x8)+-parseInt(_0x2b6839(0x84))/0x9;if(_0x22ab82===_0x545dab)break;else _0x4e96c2['push'](_0x4e96c2['shift']());}catch(_0x7767c6){_0x4e96c2['push'](_0x4e96c2['shift']());}}}(a6_0x522b,0x910eb));const a6_0x124623=(function(){let _0x32b968=!![];return function(_0x1fef91,_0x13f9dd){const _0x3c2b19=_0x32b968?function(){const _0x55c455=a6_0xa311;if(_0x13f9dd){const _0x5accb3=_0x13f9dd[_0x55c455(0xed)](_0x1fef91,arguments);return _0x13f9dd=null,_0x5accb3;}}:function(){};return _0x32b968=![],_0x3c2b19;};}()),a6_0x567f79=a6_0x124623(this,function(){const _0x2ad580=a6_0xa311;return a6_0x567f79[_0x2ad580(0x7f)]()[_0x2ad580(0x9d)]('(((.+)+)+)'+'+$')[_0x2ad580(0x7f)]()['constructo'+'r'](a6_0x567f79)[_0x2ad580(0x9d)](_0x2ad580(0xc2)+'+$');});a6_0x567f79();export const SPARROW_RULES=a6_0xd1babd(0xdb)+'MCP\x20규칙\x0a\x0a당신'+'은\x20최고의\x20보안\x20파'+a6_0xd1babd(0xd3)+'row-mcp`를\x20'+a6_0xd1babd(0xbe)+'원칙을\x20따르십시오:'+'\x0a\x0a##\x201.\x20전술'+a6_0xd1babd(0x82)+'**소스코드\x20진단\x20'+a6_0xd1babd(0xe2)+a6_0xd1babd(0xbb)+a6_0xd1babd(0x83)+a6_0xd1babd(0xae)+a6_0xd1babd(0xc1)+a6_0xd1babd(0xd8)+a6_0xd1babd(0xa5)+a6_0xd1babd(0xc5)+a6_0xd1babd(0xe0)+a6_0xd1babd(0xd4)+a6_0xd1babd(0xdf)+'합니다.\x0a-\x20**오'+a6_0xd1babd(0x92)+'진단\x20(SCA)**'+a6_0xd1babd(0xe7)+a6_0xd1babd(0x85)+a6_0xd1babd(0xbd)+a6_0xd1babd(0x9f)+a6_0xd1babd(0xcc)+'러리를\x20찾을\x20때\x20`'+'analyze_fi'+a6_0xd1babd(0xe4)+a6_0xd1babd(0xb5)+a6_0xd1babd(0xc8)+a6_0xd1babd(0xaa)+a6_0xd1babd(0xb8)+a6_0xd1babd(0xe1)+a6_0xd1babd(0x90)+a6_0xd1babd(0x86)+a6_0xd1babd(0xc7)+a6_0xd1babd(0xcf)+'#\x202.\x20분석-조치'+a6_0xd1babd(0xb0)+a6_0xd1babd(0x99)+a6_0xd1babd(0xdd)+'석을\x20시작하고\x20`a'+a6_0xd1babd(0x98)+a6_0xd1babd(0xe5)+a6_0xd1babd(0xd5)+a6_0xd1babd(0x94)+'nalysis_pr'+a6_0xd1babd(0xc3)+a6_0xd1babd(0x9b)+a6_0xd1babd(0xe6)+a6_0xd1babd(0xe3)+'\x0a3.\x20**Fetc'+a6_0xd1babd(0xdc)+a6_0xd1babd(0xd0)+a6_0xd1babd(0x93)+a6_0xd1babd(0x91)+a6_0xd1babd(0xec)+'ST)\x20또는\x20`ge'+a6_0xd1babd(0xc0)+a6_0xd1babd(0x81)+a6_0xd1babd(0x9a)+a6_0xd1babd(0xab)+a6_0xd1babd(0xaf)+a6_0xd1babd(0xa2)+'\x20SAST\x20취약점이'+a6_0xd1babd(0xb2)+'**\x20`genera'+a6_0xd1babd(0xe8)+'code`로\x20해결책'+a6_0xd1babd(0x7e)+a6_0xd1babd(0xd1)+a6_0xd1babd(0xce)+a6_0xd1babd(0x9e)+a6_0xd1babd(0xb7)+a6_0xd1babd(0xa6)+a6_0xd1babd(0x8d)+a6_0xd1babd(0xb3)+a6_0xd1babd(0x8a)+a6_0xd1babd(0x8c)+')를\x20막았습니다\x22*'+a6_0xd1babd(0x96)+a6_0xd1babd(0xee)+'-\x20수정\x20제안\x20시,'+a6_0xd1babd(0xbc)+a6_0xd1babd(0x88)+')를\x20명확히\x20보여주'+a6_0xd1babd(0xb1)+'.';const a6_0x4ff890={};function a6_0xa311(_0x4a1c22,_0x261b2f){_0x4a1c22=_0x4a1c22-0x7d;const _0x11546c=a6_0x522b();let _0x567f79=_0x11546c[_0x4a1c22];return _0x567f79;}a6_0x4ff890['id']=a6_0xd1babd(0x87),a6_0x4ff890[a6_0xd1babd(0xa9)]=a6_0xd1babd(0xa4)+a6_0xd1babd(0xc4),a6_0x4ff890[a6_0xd1babd(0xd7)+'n']=a6_0xd1babd(0xe9)+a6_0xd1babd(0xba)+a6_0xd1babd(0xde),a6_0x4ff890[a6_0xd1babd(0x89)]=null,a6_0x4ff890[a6_0xd1babd(0xcd)]=0x1;const a6_0x136fa9={};a6_0x136fa9['id']=a6_0xd1babd(0xd6),a6_0x136fa9[a6_0xd1babd(0xa9)]=a6_0xd1babd(0xca),a6_0x136fa9[a6_0xd1babd(0xd7)+'n']='Ready\x20to\x20s'+a6_0xd1babd(0x7d)+a6_0xd1babd(0x9c),a6_0x136fa9['progress']=null,a6_0x136fa9['order']=0x2;const a6_0x32ddc9={};a6_0x32ddc9['id']=a6_0xd1babd(0x97)+'S',a6_0x32ddc9[a6_0xd1babd(0xd7)+'n']=a6_0xd1babd(0xb4)+a6_0xd1babd(0xa3),a6_0x32ddc9[a6_0xd1babd(0xa9)]=a6_0xd1babd(0xb4)+a6_0xd1babd(0xad),a6_0x32ddc9[a6_0xd1babd(0x89)]=null,a6_0x32ddc9['order']=0x3;const a6_0x5764a1={};function a6_0x522b(){const _0x4883c6=['*Action**:','sing...','Initializa','\x20`analyze_','##\x203.\x20사용자\x20','ssing','165687ixGkEt','name','등을\x20사용합니다.\x0a','\x20상세\x20리포트를\x20','7413434qsSidv','sing','\x20등)을\x20찾을\x20때\x20','져옵니다.\x0a4.\x20*','\x20루프\x20(The\x20L','어\x20신뢰를\x20얻으세요','\x20있다면\x20**반드시','취약점이\x20발견되었습','Pre-proces','analyze_fo','Post-proce','를\x20제안합니다.\x0a\x0a','-\x20**파일\x20하나도','360550RQCfej','r\x20analysis','코드\x20자체의\x20취약점','\x20원본과\x20안전한\x20코','om.xml`\x20등\x20','사용합니다.\x20다음\x20','COMPLETE','t_sca_anal','`analyze_f','(((.+)+)+)','ogress`로\x20','tion','files_sast','Analysis','일/폴더/ZIP)를','lder_sca`\x20','4603100cqBkdu','Ready','Analysis\x20c','하여\x20취약한\x20라이브','order','의\x20가이드에\x20따라\x20','\x20선택하세요.\x0a\x0a#','료되면\x20결과\x20유형에','A\x20취약점은\x20리포트','uccessfull','트너로서\x20`spar','e_folder_s','\x20**Track**','READY','descriptio','ile_sast`,','ompleted\x20s','...','#\x20Sparrow\x20','h**:\x20분석이\x20완','Start**:\x20분','\x20to\x20start.','ast`\x20등을\x20사용','`,\x20`analyz','\x20놓치지\x20마세요**','(SAST)**:\x20','하게\x20하지\x20마세요)','le_sca`,\x20`','를\x20받습니다.\x0a2.','.\x20(사용자를\x20불안',':\x20`package','te_secure_','Waiting\x20fo','Complete','12rwamZW','sults`\x20(SA','apply','치를\x20전달하세요.\x0a','tart\x20analy','을\x20제시하고,\x20SC','toString','n\x20progress','ysis_resul','적\x20도구\x20선택\x0a-\x20','(SQLi,\x20XSS','24646788kQENLv','.json`,\x20`p','라\x20적절한\x20도구(','INIT','드의\x20차이(Diff','progress','니다\x22보다\x20**\x22심','Analysis\x20i','각한\x20이슈(High','커뮤니케이션\x0a-\x20\x22','8nfwwFb','ssing...',':\x20분석\x20범위에\x20따','nalysis_re','픈소스/라이브러리\x20','\x20따라\x20`get_a',':\x20`track_a','375984tFoPXF','*라고\x20긍정적인\x20','PRE_PROCES','nalysisId`','oop)\x0a1.\x20**','ts`\x20(SCA)로','기\x20있게\x20기다립니다','sis.','search','라이브러리\x20업데이트','의존성\x20파일을\x20분석','POST_PROCE','2115528hasaXc'];a6_0x522b=function(){return _0x4883c6;};return a6_0x522b();}a6_0x5764a1['id']='ANALYSIS',a6_0x5764a1[a6_0xd1babd(0xd7)+'n']=a6_0xd1babd(0x8b)+a6_0xd1babd(0x80)+a6_0xd1babd(0xda),a6_0x5764a1[a6_0xd1babd(0xa9)]=a6_0xd1babd(0xc6),a6_0x5764a1[a6_0xd1babd(0x89)]=0x0,a6_0x5764a1[a6_0xd1babd(0xcd)]=0x4;const a6_0x41c9db={};a6_0x41c9db['id']=a6_0xd1babd(0xa0)+'SS',a6_0x41c9db[a6_0xd1babd(0xd7)+'n']=a6_0xd1babd(0xb6)+a6_0xd1babd(0x8f),a6_0x41c9db[a6_0xd1babd(0xa9)]=a6_0xd1babd(0xb6)+a6_0xd1babd(0xa7),a6_0x41c9db[a6_0xd1babd(0x89)]=null,a6_0x41c9db[a6_0xd1babd(0xcd)]=0x5;const a6_0x113ce3={};a6_0x113ce3['id']=a6_0xd1babd(0xbf),a6_0x113ce3['descriptio'+'n']=a6_0xd1babd(0xcb)+a6_0xd1babd(0xd9)+a6_0xd1babd(0xd2)+'y.',a6_0x113ce3[a6_0xd1babd(0xa9)]=a6_0xd1babd(0xea),a6_0x113ce3[a6_0xd1babd(0x89)]=0x64,a6_0x113ce3[a6_0xd1babd(0xcd)]=0x6;const a6_0x22272f={};a6_0x22272f['INIT']=a6_0x4ff890,a6_0x22272f[a6_0xd1babd(0xd6)]=a6_0x136fa9,a6_0x22272f[a6_0xd1babd(0x97)+'S']=a6_0x32ddc9,a6_0x22272f['ANALYSIS']=a6_0x5764a1,a6_0x22272f[a6_0xd1babd(0xa0)+'SS']=a6_0x41c9db,a6_0x22272f[a6_0xd1babd(0xbf)]=a6_0x113ce3;export const ANALYSIS_STAGES=a6_0x22272f;