@tangle-network/sandbox 0.9.1-develop.20260624210934.e2730e8 → 0.9.2-develop.20260625093856.35d47c0

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.
@@ -1 +1,1026 @@
1
- const a0_0x429239=a0_0x49e7;(function(_0x338da1,_0x4bf136){const _0x109e22=a0_0x49e7,_0x37f523=_0x338da1();while(!![]){try{const _0x506b1d=-parseInt(_0x109e22(0x156))/0x1+parseInt(_0x109e22(0x19a))/0x2*(parseInt(_0x109e22(0x189))/0x3)+parseInt(_0x109e22(0x1a3))/0x4*(-parseInt(_0x109e22(0x177))/0x5)+parseInt(_0x109e22(0x172))/0x6*(parseInt(_0x109e22(0x14c))/0x7)+parseInt(_0x109e22(0x181))/0x8*(parseInt(_0x109e22(0x1e4))/0x9)+parseInt(_0x109e22(0x1d4))/0xa+-parseInt(_0x109e22(0x15d))/0xb;if(_0x506b1d===_0x4bf136)break;else _0x37f523['push'](_0x37f523['shift']());}catch(_0x740bdf){_0x37f523['push'](_0x37f523['shift']());}}}(a0_0x53b8,0xabed6));import{createRequire}from'\x6e\x6f\x64\x65\x3a\x6d\x6f\x64\x75\x6c\x65';const TOOL_SPECS={'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x72\x75\x6e\x5f\x63\x6f\x64\x65':{'\x6e\x61\x6d\x65':a0_0x429239(0x152),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x14f),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x6c\x61\x6e\x67\x75\x61\x67\x65':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x65\x6e\x75\x6d':[a0_0x429239(0x1a9),'\x6e\x6f\x64\x65','\x74\x79\x70\x65\x73\x63\x72\x69\x70\x74',a0_0x429239(0x1c5)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x198)},'\x73\x6f\x75\x72\x63\x65':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x17b)},'\x74\x69\x6d\x65\x6f\x75\x74\x5f\x6d\x73':{'\x74\x79\x70\x65':'\x6e\x75\x6d\x62\x65\x72','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x50\x65\x72\x2d\x63\x61\x6c\x6c\x20\x74\x69\x6d\x65\x6f\x75\x74\x2e\x20\x30\x20\x64\x69\x73\x61\x62\x6c\x65\x73\x2e\x20\x44\x65\x66\x61\x75\x6c\x74\x20\x36\x30\x30\x30\x30\x2e'}},'\x72\x65\x71\x75\x69\x72\x65\x64':['\x6c\x61\x6e\x67\x75\x61\x67\x65',a0_0x429239(0x18e)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({box:_0x5e3834,sessionId:_0x3c2ffa})=>async _0x31f70a=>{const _0x46ab1e=a0_0x429239;return await _0x5e3834[_0x46ab1e(0x194)](_0x31f70a[_0x46ab1e(0x1a8)],_0x31f70a[_0x46ab1e(0x18e)],{'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x3c2ffa,'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x31f70a[_0x46ab1e(0x19b)]});}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x65\x78\x65\x63':{'\x6e\x61\x6d\x65':a0_0x429239(0x1f0),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1d8),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x63\x6f\x6d\x6d\x61\x6e\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x143)},'\x63\x77\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x18b)},'\x74\x69\x6d\x65\x6f\x75\x74\x5f\x6d\x73':{'\x74\x79\x70\x65':a0_0x429239(0x1a2),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x16c)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x1ee)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({box:_0x116c4d,sessionId:_0x4c5ff4})=>async _0x4b7a70=>{const _0x482f6a=a0_0x429239;return await _0x116c4d[_0x482f6a(0x17d)](_0x4b7a70[_0x482f6a(0x1ee)],{'\x63\x77\x64':_0x4b7a70[_0x482f6a(0x1b0)],'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x4b7a70[_0x482f6a(0x19b)],'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x4c5ff4});}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x72\x65\x61\x64':{'\x6e\x61\x6d\x65':a0_0x429239(0x17c),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1da),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x70\x61\x74\x68':{'\x74\x79\x70\x65':a0_0x429239(0x1a7)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x14d)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({box:_0x49bb35,sessionId:_0x412650})=>async _0x44167f=>{const _0x22362b=a0_0x429239;return{'\x63\x6f\x6e\x74\x65\x6e\x74':await _0x49bb35[_0x22362b(0x1a1)](_0x44167f[_0x22362b(0x14d)],{'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x412650})};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x77\x72\x69\x74\x65':{'\x6e\x61\x6d\x65':a0_0x429239(0x19e),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x150),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':'\x6f\x62\x6a\x65\x63\x74','\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x70\x61\x74\x68':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67'},'\x63\x6f\x6e\x74\x65\x6e\x74':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x191)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x14d),a0_0x429239(0x1c2)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({box:_0x426462})=>async _0x1a91ab=>{const _0x6bf3e2=a0_0x429239;return await _0x426462[_0x6bf3e2(0x16d)](_0x1a91ab['\x70\x61\x74\x68'],_0x1a91ab[_0x6bf3e2(0x1c2)]),{'\x6f\x6b':!![]};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x6c\x69\x73\x74':{'\x6e\x61\x6d\x65':'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x6c\x69\x73\x74','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x171),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x70\x61\x74\x68':{'\x74\x79\x70\x65':a0_0x429239(0x1a7)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x14d)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({box:_0x48511e})=>async _0x1ef805=>{const _0x358b5c=a0_0x429239;return{'\x65\x6e\x74\x72\x69\x65\x73':await _0x48511e['\x66\x73'][_0x358b5c(0x163)](_0x1ef805['\x70\x61\x74\x68'])};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x73\x65\x61\x72\x63\x68':{'\x6e\x61\x6d\x65':'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x73\x65\x61\x72\x63\x68','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x52\x69\x70\x67\x72\x65\x70\x2d\x73\x74\x79\x6c\x65\x20\x63\x6f\x64\x65\x20\x73\x65\x61\x72\x63\x68\x2e\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x20\x77\x69\x74\x68\x20\x73\x75\x72\x72\x6f\x75\x6e\x64\x69\x6e\x67\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e','\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':'\x6f\x62\x6a\x65\x63\x74','\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x70\x61\x74\x74\x65\x72\x6e':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1e2)},'\x70\x61\x74\x68':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1c7)},'\x6d\x61\x78\x5f\x72\x65\x73\x75\x6c\x74\x73':{'\x74\x79\x70\x65':a0_0x429239(0x1a2),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x43\x61\x70\x2e\x20\x44\x65\x66\x61\x75\x6c\x74\x20\x31\x30\x30\x2e'}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x1c9)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({box:_0x372c0a})=>async _0x4033e5=>{const _0xc543fd=a0_0x429239,_0x52d516=[],_0x1a1a9f=_0x4033e5[_0xc543fd(0x1b3)]??0x64;for await(const _0x1b4cc9 of _0x372c0a[_0xc543fd(0x1cf)](_0x4033e5[_0xc543fd(0x1c9)],{'\x63\x77\x64':_0x4033e5[_0xc543fd(0x14d)],'\x6d\x61\x78\x52\x65\x73\x75\x6c\x74\x73':_0x1a1a9f})){_0x52d516[_0xc543fd(0x1db)](_0x1b4cc9);if(_0x52d516[_0xc543fd(0x186)]>=_0x1a1a9f)break;}return{'\x6d\x61\x74\x63\x68\x65\x73':_0x52d516};}}},ALL_TOOL_SPECS=Object[a0_0x429239(0x1e1)](TOOL_SPECS);function selectSpecs(_0x5d3745){const _0x2b33d6=a0_0x429239;if(!_0x5d3745||_0x5d3745[_0x2b33d6(0x186)]===0x0)return ALL_TOOL_SPECS;const _0x204bb4=new Set(_0x5d3745);return Object[_0x2b33d6(0x16f)](TOOL_SPECS)[_0x2b33d6(0x1b1)](_0x4ec96b=>_0x204bb4[_0x2b33d6(0x144)](_0x4ec96b))[_0x2b33d6(0x16b)](_0x405189=>TOOL_SPECS[_0x405189]);}function serializeToolResult(_0x283102){const _0x140523=a0_0x429239;if(typeof _0x283102===_0x140523(0x1a7))return _0x283102;try{return JSON[_0x140523(0x176)](_0x283102,null,0x2);}catch{return String(_0x283102);}}const SDK_VERSION=((()=>{const _0x269758=a0_0x429239,_0x5a6f8a={'\x4f\x6a\x4c\x7a\x71':_0x269758(0x1a4)};try{return createRequire(import.meta.url)(_0x5a6f8a['\x4f\x6a\x4c\x7a\x71'])[_0x269758(0x1c4)]??_0x269758(0x1e9);}catch{return _0x269758(0x1e9);}})());async function createMcpServer(_0x3f6165,_0x13c0a6={}){const _0x5004fd=a0_0x429239,_0x8e29e9={'\x52\x74\x63\x52\x45':function(_0x4867f8,_0x55867b){return _0x4867f8(_0x55867b);},'\x56\x74\x48\x4b\x62':function(_0x82003e,_0xcf067f){return _0x82003e(_0xcf067f);},'\x52\x4e\x59\x6b\x56':'\x40\x6d\x6f\x64\x65\x6c\x63\x6f\x6e\x74\x65\x78\x74\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x73\x64\x6b\x2f\x74\x79\x70\x65\x73\x2e\x6a\x73'};let _0x5a0609,_0x1b4753;try{[_0x5a0609,_0x1b4753]=await Promise[_0x5004fd(0x1ba)]([import(_0x5004fd(0x1bf)),import(_0x8e29e9[_0x5004fd(0x1ac)])]);}catch{throw new Error(_0x5004fd(0x183));}const _0x1aa2c4=selectSpecs(_0x13c0a6['\x61\x6c\x6c\x6f\x77']),_0x201d11={'\x62\x6f\x78':_0x3f6165,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x13c0a6[_0x5004fd(0x16e)]},_0x2501ea=new Map();for(const _0x236ec8 of _0x1aa2c4)_0x2501ea[_0x5004fd(0x1b7)](_0x236ec8[_0x5004fd(0x1e3)],_0x236ec8[_0x5004fd(0x18a)](_0x201d11));const _0x5c3cea=new _0x5a0609[(_0x5004fd(0x1ea))]({'\x6e\x61\x6d\x65':_0x13c0a6['\x6e\x61\x6d\x65']??'\x74\x61\x6e\x67\x6c\x65\x2d\x73\x61\x6e\x64\x62\x6f\x78','\x76\x65\x72\x73\x69\x6f\x6e':_0x13c0a6[_0x5004fd(0x1c4)]??SDK_VERSION},{'\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73':{'\x74\x6f\x6f\x6c\x73':{}}});return _0x5c3cea[_0x5004fd(0x1a0)](_0x1b4753[_0x5004fd(0x1d9)],async()=>({'\x74\x6f\x6f\x6c\x73':_0x1aa2c4[_0x5004fd(0x16b)](_0x1c8c45=>({'\x6e\x61\x6d\x65':_0x1c8c45[_0x5004fd(0x1e3)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x1c8c45[_0x5004fd(0x1af)],'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':_0x1c8c45[_0x5004fd(0x170)]}))})),_0x5c3cea[_0x5004fd(0x1a0)](_0x1b4753[_0x5004fd(0x1cb)],async _0x20d7d3=>{const _0x25b7ca=_0x5004fd,_0x464bcf=_0x20d7d3,_0x221f72=_0x2501ea[_0x25b7ca(0x1d2)](_0x464bcf[_0x25b7ca(0x165)][_0x25b7ca(0x1e3)]);if(!_0x221f72)return{'\x69\x73\x45\x72\x72\x6f\x72':!![],'\x63\x6f\x6e\x74\x65\x6e\x74':[{'\x74\x79\x70\x65':_0x25b7ca(0x188),'\x74\x65\x78\x74':_0x25b7ca(0x19d)+_0x464bcf[_0x25b7ca(0x165)][_0x25b7ca(0x1e3)]}]};try{return{'\x63\x6f\x6e\x74\x65\x6e\x74':[{'\x74\x79\x70\x65':_0x25b7ca(0x188),'\x74\x65\x78\x74':_0x8e29e9['\x52\x74\x63\x52\x45'](serializeToolResult,await _0x8e29e9[_0x25b7ca(0x1b2)](_0x221f72,_0x464bcf[_0x25b7ca(0x165)]['\x61\x72\x67\x75\x6d\x65\x6e\x74\x73']??{}))}]};}catch(_0xdf19e9){return{'\x69\x73\x45\x72\x72\x6f\x72':!![],'\x63\x6f\x6e\x74\x65\x6e\x74':[{'\x74\x79\x70\x65':_0x25b7ca(0x188),'\x74\x65\x78\x74':_0xdf19e9 instanceof Error?_0xdf19e9[_0x25b7ca(0x17e)]:String(_0xdf19e9)}]};}}),{'\x73\x65\x72\x76\x65\x72':_0x5c3cea,'\x63\x6f\x6e\x6e\x65\x63\x74':_0x36a2c=>_0x5c3cea[_0x5004fd(0x1cc)](_0x36a2c),'\x63\x6c\x6f\x73\x65':()=>_0x5c3cea[_0x5004fd(0x1df)]()};}function a0_0x53b8(){const _0x2c0ed1=['\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x59\x44\x77\x35\x46\x79\x32\x39\x4b\x7a\x71','\x44\x4d\x7a\x6f\x43\x77\x34','\x42\x77\x66\x5a\x44\x68\x6a\x48\x76\x67\x39\x56\x42\x68\x6d\x4f\x6b\x74\x4f\x47\x44\x67\x48\x4c\x69\x67\x62\x61\x42\x77\x66\x5a\x44\x68\x6a\x48\x6c\x32\x6e\x56\x43\x4d\x76\x47\x69\x68\x62\x48\x79\x32\x54\x48\x7a\x32\x75\x47\x41\x78\x6d\x47\x42\x4d\x39\x30\x69\x67\x4c\x55\x43\x33\x72\x48\x42\x67\x58\x4c\x7a\x63\x34\x47\x73\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x62\x50\x44\x63\x62\x32\x41\x77\x65\x47\x79\x68\x62\x55\x43\x67\x30\x47\x79\x77\x72\x4b\x69\x65\x62\x54\x79\x78\x6e\x30\x43\x4d\x65\x56\x79\x32\x39\x59\x7a\x77\x61\x55','\x7a\x4d\x58\x4c\x7a\x78\x72\x5a','\x6e\x5a\x43\x31\x6f\x74\x6d\x30\x74\x78\x7a\x52\x79\x75\x39\x53','\x72\x4b\x66\x6e\x71\x32\x71','\x41\x77\x72\x5a','\x75\x32\x66\x73\x41\x4c\x47','\x79\x4d\x66\x5a\x7a\x74\x79\x30','\x72\x67\x76\x53\x7a\x78\x72\x4c\x69\x68\x72\x4f\x7a\x73\x62\x4d\x42\x67\x76\x4c\x44\x63\x62\x48\x42\x4d\x71\x47\x7a\x78\x7a\x4c\x43\x4e\x4b\x47\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x73\x62\x50\x42\x49\x62\x50\x44\x63\x34\x47\x75\x33\x72\x56\x43\x68\x6d\x47\x79\x4d\x4c\x53\x42\x67\x4c\x55\x7a\x59\x62\x50\x42\x77\x31\x4c\x7a\x67\x4c\x48\x44\x67\x76\x53\x45\x73\x34\x47\x71\x32\x66\x53\x42\x63\x62\x30\x41\x67\x4c\x5a\x69\x68\x44\x4f\x7a\x77\x34\x47\x44\x67\x48\x4c\x69\x67\x6e\x48\x42\x78\x62\x48\x41\x77\x44\x55\x69\x67\x4c\x5a\x69\x67\x72\x56\x42\x4d\x75\x37\x69\x67\x39\x59\x43\x67\x48\x48\x42\x4d\x76\x4b\x69\x67\x7a\x53\x7a\x77\x76\x30\x43\x59\x62\x52\x7a\x77\x76\x57\x69\x67\x6a\x31\x43\x4d\x35\x50\x42\x4d\x43\x47\x79\x33\x6a\x4c\x7a\x67\x4c\x30\x43\x59\x34','\x44\x68\x4c\x57\x7a\x71','\x6d\x4a\x75\x31\x6e\x4a\x47\x32\x6d\x64\x4c\x32\x42\x66\x6a\x34\x79\x77\x71','\x72\x78\x50\x4a\x72\x66\x65','\x44\x4d\x76\x59\x79\x32\x76\x53\x71\x77\x4c\x67\x42\x67\x76\x4c\x44\x66\x72\x56\x42\x32\x58\x5a\x6b\x63\x4b\x36\x69\x68\x72\x4f\x7a\x73\x62\x47\x79\x77\x4c\x47\x69\x68\x62\x48\x79\x32\x54\x48\x7a\x32\x75\x47\x41\x78\x6d\x47\x42\x4d\x39\x30\x69\x67\x4c\x55\x43\x33\x72\x48\x42\x67\x58\x4c\x7a\x63\x34\x47\x73\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x62\x32\x41\x77\x65\x47\x79\x68\x62\x55\x43\x67\x30\x47\x79\x77\x72\x4b\x69\x67\x66\x50\x79\x63\x34','\x74\x67\x4c\x5a\x44\x63\x62\x30\x41\x67\x75\x47\x7a\x4d\x58\x4c\x7a\x78\x71\x4e\x43\x59\x62\x54\x79\x77\x6e\x4f\x41\x77\x35\x4c\x43\x59\x62\x48\x42\x4d\x71\x47\x44\x67\x48\x4c\x41\x78\x69\x47\x43\x67\x76\x59\x6c\x77\x31\x48\x79\x32\x48\x50\x42\x4d\x75\x47\x43\x33\x72\x48\x44\x67\x75\x47\x6b\x68\x6a\x31\x42\x4d\x35\x50\x42\x4d\x43\x47\x6c\x59\x62\x5a\x44\x67\x39\x57\x43\x67\x76\x4b\x69\x63\x38\x47\x7a\x4d\x66\x50\x42\x67\x76\x4b\x6b\x73\x62\x57\x42\x68\x76\x5a\x69\x67\x58\x48\x43\x33\x71\x54\x44\x78\x6e\x4c\x7a\x63\x62\x30\x41\x77\x31\x4c\x43\x33\x72\x48\x42\x78\x62\x5a\x6c\x47','\x79\x32\x39\x55\x44\x67\x76\x34\x44\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4d\x42\x67\x76\x4c\x44\x66\x39\x4b\x7a\x78\x6e\x30\x43\x4d\x39\x35','\x42\x67\x4c\x5a\x44\x61','\x74\x33\x62\x30\x41\x77\x39\x55\x79\x77\x57\x47\x42\x77\x76\x30\x79\x77\x72\x48\x44\x67\x65\x47\x43\x33\x72\x48\x42\x78\x62\x4c\x7a\x63\x62\x56\x42\x49\x62\x4c\x44\x4d\x76\x59\x45\x73\x62\x4d\x42\x67\x76\x4c\x44\x63\x62\x54\x7a\x77\x31\x49\x7a\x78\x69\x55','\x43\x67\x66\x59\x79\x77\x31\x5a','\x44\x67\x39\x56\x42\x66\x39\x4a\x79\x77\x58\x53\x43\x57','\x76\x67\x4c\x54\x7a\x77\x39\x31\x44\x63\x62\x50\x42\x49\x62\x54\x41\x77\x58\x53\x41\x78\x6e\x4c\x79\x32\x39\x55\x7a\x68\x6d\x55\x69\x65\x72\x4c\x7a\x4d\x66\x31\x42\x68\x71\x47\x6e\x4a\x61\x57\x6d\x64\x61\x55','\x41\x77\x31\x48\x7a\x32\x75','\x75\x68\x76\x49\x42\x67\x4c\x4a\x69\x68\x72\x4c\x42\x78\x62\x53\x79\x78\x72\x4c\x69\x68\x6e\x53\x44\x77\x43\x47\x42\x33\x69\x47\x41\x77\x71\x47\x6b\x67\x75\x55\x7a\x59\x34\x47\x6a\x33\x62\x35\x44\x67\x48\x56\x42\x49\x31\x4b\x79\x78\x72\x48\x6c\x78\x6e\x4a\x41\x77\x76\x55\x79\x32\x75\x4e\x6b\x73\x34','\x44\x77\x35\x50\x44\x4d\x76\x59\x43\x32\x66\x53','\x42\x77\x66\x57','\x72\x67\x76\x4d\x79\x78\x76\x53\x44\x63\x61\x32\x6d\x64\x61\x57\x6d\x63\x34','\x44\x33\x6a\x50\x44\x67\x75','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x4b\x4c\x4b','\x41\x32\x76\x35\x43\x57','\x41\x77\x35\x57\x44\x78\x72\x74\x79\x32\x48\x4c\x42\x77\x65','\x74\x67\x4c\x5a\x44\x63\x62\x4c\x42\x4e\x72\x59\x41\x77\x76\x5a\x69\x67\x4c\x55\x69\x67\x65\x47\x7a\x67\x4c\x59\x7a\x77\x6e\x30\x42\x33\x6a\x35\x69\x68\x44\x50\x44\x67\x47\x47\x43\x32\x4c\x36\x7a\x73\x57\x47\x44\x68\x4c\x57\x7a\x73\x57\x47\x79\x77\x35\x4b\x69\x67\x31\x56\x7a\x67\x75\x55','\x6d\x74\x65\x33\x6d\x4a\x47\x32\x6d\x4b\x35\x65\x72\x66\x66\x58\x77\x47','\x42\x77\x76\x30\x79\x77\x72\x48\x44\x67\x65','\x79\x33\x6a\x4c\x79\x78\x72\x4c','\x44\x65\x7a\x57\x41\x67\x4b','\x43\x33\x72\x59\x41\x77\x35\x4e\x41\x77\x7a\x35','\x6d\x74\x76\x59\x71\x4d\x54\x62\x72\x77\x53','\x43\x33\x72\x48\x44\x68\x76\x5a','\x43\x33\x72\x4b\x42\x33\x76\x30','\x41\x77\x31\x48\x7a\x32\x75\x56\x41\x4e\x62\x4c\x7a\x57','\x75\x32\x39\x31\x43\x4d\x6e\x4c\x69\x67\x6e\x56\x7a\x67\x75\x47\x44\x67\x38\x47\x43\x4e\x76\x55\x6c\x49\x62\x6e\x44\x77\x58\x30\x41\x73\x31\x53\x41\x77\x35\x4c\x69\x68\x6e\x31\x43\x68\x62\x56\x43\x4e\x72\x4c\x7a\x63\x34','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x59\x7a\x77\x66\x4b','\x7a\x78\x48\x4c\x79\x57','\x42\x77\x76\x5a\x43\x32\x66\x4e\x7a\x71','\x74\x66\x76\x53\x77\x65\x47','\x45\x4c\x7a\x65\x41\x4d\x53','\x6d\x74\x61\x30\x76\x67\x7a\x56\x44\x30\x50\x32','\x72\x30\x31\x70\x72\x67\x4f','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x74\x77\x6e\x57\x75\x32\x76\x59\x44\x4d\x76\x59\x6b\x63\x4b\x36\x69\x68\x72\x4f\x7a\x73\x62\x47\x71\x67\x31\x56\x7a\x67\x76\x53\x79\x32\x39\x55\x44\x67\x76\x34\x44\x68\x62\x59\x42\x33\x72\x56\x79\x32\x39\x53\x6c\x33\x6e\x4b\x41\x32\x61\x47\x43\x67\x66\x4a\x41\x32\x66\x4e\x7a\x73\x62\x50\x43\x59\x62\x55\x42\x33\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x67\x76\x4b\x6c\x49\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x67\x4c\x30\x69\x68\x7a\x50\x79\x73\x62\x47\x43\x67\x35\x57\x42\x73\x62\x48\x7a\x67\x71\x47\x71\x67\x31\x56\x7a\x67\x76\x53\x79\x32\x39\x55\x44\x67\x76\x34\x44\x68\x62\x59\x42\x33\x72\x56\x79\x32\x39\x53\x6c\x33\x6e\x4b\x41\x32\x61\x55','\x74\x31\x66\x4c\x41\x77\x75','\x44\x67\x39\x56\x42\x61','\x42\x67\x76\x55\x7a\x33\x72\x4f','\x79\x77\x58\x53\x42\x33\x43','\x44\x67\x76\x34\x44\x61','\x6d\x4a\x66\x30\x41\x31\x4c\x7a\x76\x4e\x43','\x42\x77\x66\x52\x7a\x75\x48\x48\x42\x4d\x72\x53\x7a\x78\x69','\x76\x32\x39\x59\x41\x32\x4c\x55\x7a\x59\x62\x4b\x41\x78\x6a\x4c\x79\x33\x72\x56\x43\x4e\x4b\x55\x69\x65\x39\x57\x44\x67\x4c\x56\x42\x4d\x66\x53\x6c\x47','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x76\x32\x4c\x30\x41\x65\x6e\x56\x42\x33\x6a\x4b\x41\x77\x35\x48\x44\x67\x39\x59','\x76\x77\x35\x52\x42\x4d\x39\x33\x42\x49\x62\x4d\x42\x67\x76\x4c\x44\x63\x62\x30\x42\x32\x39\x53\x6f\x49\x61','\x43\x32\x39\x31\x43\x4d\x6e\x4c','\x7a\x77\x35\x32\x41\x78\x6a\x56\x42\x4d\x31\x4c\x42\x4e\x71','\x71\x33\x6a\x4c\x79\x78\x72\x4c\x69\x67\x66\x55\x69\x67\x4c\x5a\x42\x32\x58\x48\x44\x67\x76\x4b\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x47\x47\x7a\x77\x35\x32\x41\x78\x6a\x56\x42\x4d\x31\x4c\x42\x4e\x71\x47\x79\x77\x35\x4b\x69\x68\x6a\x4c\x44\x68\x76\x59\x42\x49\x62\x50\x44\x68\x6d\x47\x41\x77\x71\x47\x7a\x4d\x39\x59\x69\x68\x76\x5a\x7a\x73\x62\x33\x41\x78\x72\x4f\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x48\x46\x43\x4e\x76\x55\x78\x32\x6e\x56\x42\x77\x31\x48\x42\x4d\x71\x55\x69\x66\x76\x5a\x7a\x73\x62\x30\x41\x67\x4c\x5a\x69\x68\x44\x4f\x7a\x77\x34\x47\x44\x67\x48\x4c\x69\x68\x76\x5a\x7a\x78\x69\x47\x42\x4d\x76\x4c\x7a\x68\x6d\x47\x79\x32\x39\x4b\x7a\x73\x62\x4c\x45\x67\x76\x4a\x44\x78\x72\x4c\x7a\x63\x57\x47\x7a\x4d\x4c\x53\x7a\x78\x6d\x47\x79\x77\x35\x48\x42\x68\x4c\x36\x7a\x77\x71\x53\x69\x67\x39\x59\x69\x67\x6e\x56\x42\x77\x31\x48\x42\x4d\x72\x5a\x69\x68\x6a\x31\x42\x49\x62\x50\x42\x49\x62\x48\x69\x68\x6e\x4c\x79\x33\x76\x59\x7a\x73\x62\x4c\x42\x4e\x7a\x50\x43\x4d\x39\x55\x42\x77\x76\x55\x44\x63\x34\x47\x76\x67\x48\x4c\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x47\x47\x71\x4b\x4c\x6d\x74\x66\x6d\x47\x44\x77\x35\x30\x41\x77\x57\x47\x7a\x67\x76\x5a\x44\x68\x6a\x56\x45\x77\x76\x4b\x69\x6f\x6b\x61\x4c\x63\x62\x4a\x79\x77\x58\x53\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x48\x46\x7a\x67\x76\x5a\x44\x68\x6a\x56\x45\x73\x62\x33\x41\x67\x76\x55\x69\x68\x72\x4f\x7a\x73\x62\x33\x42\x33\x6a\x52\x69\x67\x4c\x5a\x69\x67\x72\x56\x42\x4d\x75\x55','\x72\x4e\x76\x53\x42\x63\x62\x4d\x41\x77\x58\x4c\x69\x67\x6e\x56\x42\x4e\x72\x4c\x42\x4e\x72\x5a\x6c\x47','\x75\x67\x76\x59\x6c\x77\x31\x48\x79\x32\x48\x50\x42\x4d\x75\x47\x44\x67\x4c\x54\x7a\x77\x39\x31\x44\x63\x34\x47\x72\x67\x76\x4d\x79\x78\x76\x53\x44\x63\x61\x32\x6d\x64\x61\x57\x6d\x63\x34','\x42\x32\x6a\x51\x7a\x77\x6e\x30','\x43\x4e\x76\x55\x71\x32\x39\x4b\x7a\x71','\x44\x30\x66\x59\x73\x76\x61','\x75\x4e\x76\x55\x69\x67\x65\x47\x43\x32\x48\x4c\x42\x67\x57\x47\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x63\x62\x56\x42\x49\x62\x48\x69\x67\x7a\x53\x7a\x77\x76\x30\x6a\x33\x6d\x47\x44\x32\x39\x59\x41\x32\x76\x59\x43\x59\x62\x50\x42\x49\x62\x57\x79\x78\x6a\x48\x42\x67\x58\x4c\x42\x63\x34\x47\x72\x67\x76\x4d\x79\x78\x76\x53\x44\x68\x6d\x47\x44\x67\x38\x47\x79\x77\x58\x53\x69\x68\x44\x56\x43\x4d\x54\x4c\x43\x4e\x6d\x37\x69\x68\x62\x48\x43\x33\x6d\x47\x79\x67\x31\x48\x79\x32\x48\x50\x42\x4d\x76\x5a\x79\x63\x62\x30\x42\x59\x62\x30\x79\x78\x6a\x4e\x7a\x78\x71\x47\x43\x33\x62\x4c\x79\x32\x4c\x4d\x41\x77\x6d\x47\x42\x32\x35\x4c\x43\x59\x34\x47\x75\x4d\x76\x30\x44\x78\x6a\x55\x43\x59\x62\x57\x7a\x78\x69\x54\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x73\x62\x37\x42\x32\x53\x53\x69\x68\x6a\x4c\x43\x33\x76\x53\x44\x64\x38\x53\x69\x67\x76\x59\x43\x4d\x39\x59\x70\x33\x30\x47\x7a\x77\x35\x30\x43\x4d\x4c\x4c\x43\x59\x34','\x44\x30\x48\x68\x74\x67\x34','\x73\x32\x76\x59\x42\x4d\x76\x53\x69\x67\x58\x48\x42\x4d\x44\x31\x79\x77\x44\x4c\x6c\x47','\x7a\x67\x4c\x5a\x43\x67\x66\x30\x79\x32\x48\x66\x45\x67\x76\x4a','\x6d\x4a\x61\x33\x6d\x64\x65\x30\x77\x68\x76\x74\x76\x65\x35\x50','\x44\x67\x4c\x54\x7a\x77\x39\x31\x44\x66\x39\x54\x43\x57','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x76\x67\x39\x56\x42\x61','\x76\x77\x35\x52\x42\x4d\x39\x33\x42\x49\x62\x30\x42\x32\x39\x53\x6f\x49\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x33\x43\x4d\x4c\x30\x7a\x71','\x42\x67\x76\x53\x75\x78\x43','\x43\x32\x76\x30\x75\x4d\x76\x58\x44\x77\x76\x5a\x44\x65\x48\x48\x42\x4d\x72\x53\x7a\x78\x69','\x43\x4d\x76\x48\x7a\x61','\x42\x4e\x76\x54\x79\x4d\x76\x59','\x6d\x74\x61\x57\x6e\x74\x61\x59\x6f\x66\x7a\x58\x42\x76\x6e\x75\x42\x61','\x6c\x49\x34\x56\x6c\x49\x34\x56\x43\x67\x66\x4a\x41\x32\x66\x4e\x7a\x73\x35\x51\x43\x32\x39\x55','\x44\x67\x76\x54\x43\x67\x58\x48\x44\x67\x76\x46\x41\x77\x71','\x75\x4e\x7a\x4e\x45\x68\x61','\x43\x33\x72\x59\x41\x77\x35\x4e','\x42\x67\x66\x55\x7a\x33\x76\x48\x7a\x32\x75','\x43\x68\x4c\x30\x41\x67\x39\x55','\x72\x4c\x72\x71\x75\x78\x65','\x41\x77\x31\x48\x7a\x32\x75\x56\x43\x67\x35\x4e','\x75\x4b\x35\x7a\x41\x31\x79','\x74\x33\x62\x30\x41\x77\x39\x55\x79\x77\x57\x47\x7a\x67\x4c\x5a\x43\x67\x58\x48\x45\x73\x62\x55\x79\x77\x31\x4c\x69\x67\x7a\x56\x43\x49\x62\x30\x41\x67\x75\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x34','\x7a\x4e\x6a\x56\x42\x71','\x7a\x67\x76\x5a\x79\x33\x6a\x50\x43\x68\x72\x50\x42\x32\x34','\x79\x33\x44\x4b','\x7a\x4d\x4c\x53\x44\x67\x76\x59','\x76\x4e\x72\x69\x73\x32\x69','\x42\x77\x66\x34\x78\x33\x6a\x4c\x43\x33\x76\x53\x44\x68\x6d','\x74\x4b\x48\x64\x72\x78\x71','\x73\x32\x31\x66\x43\x77\x69','\x7a\x4d\x58\x4c\x7a\x78\x72\x46\x41\x77\x71','\x43\x32\x76\x30','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x59\x44\x77\x35\x46\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x61','\x41\x66\x4c\x75\x75\x75\x75','\x79\x77\x58\x53','\x43\x33\x7a\x4e','\x43\x4d\x76\x5a\x44\x77\x58\x30\x43\x57','\x76\x66\x50\x4d\x79\x4b\x47','\x43\x67\x66\x59\x43\x32\x75','\x71\x67\x31\x56\x7a\x67\x76\x53\x79\x32\x39\x55\x44\x67\x76\x34\x44\x68\x62\x59\x42\x33\x72\x56\x79\x32\x39\x53\x6c\x33\x6e\x4b\x41\x59\x39\x5a\x7a\x78\x6a\x32\x7a\x78\x69\x56\x41\x77\x35\x4b\x7a\x78\x47\x55\x41\x4e\x6d','\x44\x32\x39\x59\x41\x32\x76\x59\x43\x57','\x41\x66\x44\x4a\x75\x4d\x69','\x79\x32\x39\x55\x44\x67\x76\x55\x44\x61','\x72\x78\x48\x4c\x79\x33\x76\x30\x7a\x73\x62\x48\x69\x68\x6e\x4f\x7a\x77\x58\x53\x69\x67\x6e\x56\x42\x77\x31\x48\x42\x4d\x71\x47\x41\x77\x34\x47\x79\x73\x62\x57\x43\x4d\x76\x32\x41\x77\x39\x31\x43\x32\x58\x35\x69\x67\x6e\x59\x7a\x77\x66\x30\x7a\x77\x71\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x48\x42\x4d\x71\x47\x43\x4d\x76\x30\x44\x78\x6a\x55\x69\x68\x54\x5a\x44\x67\x72\x56\x44\x78\x71\x53\x69\x68\x6e\x30\x7a\x67\x76\x59\x43\x49\x57\x47\x7a\x78\x48\x50\x44\x65\x6e\x56\x7a\x67\x76\x39\x6c\x49\x62\x75\x41\x67\x75\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x54\x44\x78\x6e\x30\x69\x67\x76\x34\x41\x78\x6e\x30\x69\x6f\x6b\x61\x4c\x63\x62\x4a\x43\x4d\x76\x48\x44\x67\x75\x47\x41\x78\x71\x47\x7a\x4d\x4c\x59\x43\x33\x71\x47\x44\x32\x4c\x30\x41\x63\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x78\x32\x6e\x59\x7a\x77\x66\x30\x7a\x73\x34','\x44\x4d\x76\x59\x43\x32\x4c\x56\x42\x47','\x79\x4d\x66\x5a\x41\x61','\x76\x67\x39\x41\x43\x4d\x69','\x75\x33\x76\x49\x7a\x67\x4c\x59\x7a\x77\x6e\x30\x42\x33\x6a\x35\x69\x68\x72\x56\x69\x68\x6e\x4c\x79\x78\x6a\x4a\x41\x63\x34\x47\x74\x33\x62\x30\x41\x77\x39\x55\x79\x77\x57\x55','\x43\x32\x39\x54\x7a\x71','\x43\x67\x66\x30\x44\x67\x76\x59\x42\x47','\x7a\x67\x76\x53\x7a\x78\x72\x4c','\x71\x32\x66\x53\x42\x66\x72\x56\x42\x32\x58\x73\x7a\x78\x66\x31\x7a\x78\x6e\x30\x75\x32\x6e\x4f\x7a\x77\x31\x48','\x79\x32\x39\x55\x42\x4d\x76\x4a\x44\x61','\x71\x32\x39\x55\x44\x67\x4c\x55\x44\x77\x75\x47\x7a\x67\x76\x53\x7a\x78\x72\x50\x42\x4d\x43\x47\x43\x4d\x76\x54\x79\x77\x4c\x55\x41\x77\x35\x4e\x69\x67\x31\x48\x79\x32\x48\x50\x42\x4d\x76\x5a\x69\x67\x4c\x4d\x69\x67\x39\x55\x7a\x73\x62\x4d\x79\x77\x4c\x53\x43\x59\x34','\x79\x78\x6a\x4e\x44\x77\x31\x4c\x42\x4e\x72\x5a','\x43\x32\x76\x48\x43\x4d\x6e\x4f','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4b\x7a\x78\x6e\x30\x43\x4d\x39\x35','\x72\x77\x54\x70\x77\x4c\x6d','\x7a\x32\x76\x30','\x71\x67\x31\x48\x43\x33\x72\x59\x79\x73\x39\x4a\x42\x33\x6a\x4c','\x6d\x74\x71\x57\x6d\x64\x6d\x5a\x6d\x64\x62\x59\x42\x4b\x58\x59\x71\x76\x79','\x79\x78\x6a\x59\x79\x78\x4b','\x45\x78\x48\x33\x41\x66\x47','\x72\x77\x35\x32\x41\x78\x6a\x56\x42\x4d\x31\x4c\x42\x4e\x71\x47\x42\x4d\x66\x54\x7a\x73\x61\x4f\x7a\x73\x35\x4e\x6c\x49\x61\x4e\x44\x77\x35\x50\x44\x4d\x76\x59\x43\x32\x66\x53\x6a\x59\x62\x4d\x42\x33\x69\x47\x42\x78\x76\x53\x44\x67\x4b\x54\x42\x67\x66\x55\x7a\x33\x76\x48\x7a\x32\x75\x47\x74\x4d\x39\x4b\x7a\x73\x39\x71\x45\x78\x72\x4f\x42\x32\x34\x50\x6c\x49\x62\x65\x7a\x77\x7a\x48\x44\x77\x58\x30\x69\x63\x44\x31\x42\x4d\x4c\x32\x7a\x78\x6a\x5a\x79\x77\x57\x4e\x6c\x47','\x75\x4e\x76\x55\x69\x67\x65\x47\x43\x32\x48\x4c\x42\x67\x57\x47\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x63\x61\x4f\x42\x4d\x38\x47\x43\x67\x76\x59\x43\x32\x4c\x5a\x44\x67\x76\x55\x44\x63\x62\x5a\x44\x67\x66\x30\x7a\x73\x4b\x47\x41\x77\x34\x47\x44\x67\x48\x4c\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x47\x55\x69\x66\x76\x5a\x7a\x73\x62\x4d\x42\x33\x69\x47\x42\x32\x35\x4c\x6c\x78\x6e\x4f\x42\x33\x71\x47\x44\x67\x66\x5a\x41\x33\x6d\x47\x42\x67\x4c\x52\x7a\x73\x61\x4e\x43\x67\x35\x57\x42\x73\x62\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x6a\x59\x62\x56\x43\x49\x61\x4e\x42\x68\x6d\x4e\x6c\x49\x62\x67\x42\x33\x69\x47\x79\x32\x39\x4b\x7a\x73\x62\x30\x41\x67\x66\x30\x69\x68\x6e\x4f\x42\x33\x76\x53\x7a\x63\x62\x5a\x41\x67\x66\x59\x7a\x73\x62\x5a\x44\x67\x66\x30\x7a\x73\x62\x48\x79\x33\x6a\x56\x43\x33\x6d\x47\x79\x32\x66\x53\x42\x68\x6d\x53\x69\x68\x62\x59\x7a\x77\x7a\x4c\x43\x49\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x78\x33\x6a\x31\x42\x4c\x39\x4a\x42\x32\x72\x4c\x69\x68\x44\x50\x44\x67\x47\x47\x79\x73\x62\x5a\x7a\x78\x6e\x5a\x41\x77\x39\x55\x73\x77\x71\x55','\x74\x67\x4c\x5a\x44\x66\x72\x56\x42\x32\x58\x5a\x75\x4d\x76\x58\x44\x77\x76\x5a\x44\x66\x6e\x4a\x41\x67\x76\x54\x79\x71','\x75\x4d\x76\x48\x7a\x63\x62\x48\x69\x67\x7a\x50\x42\x67\x75\x47\x7a\x4e\x6a\x56\x42\x73\x62\x30\x41\x67\x75\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x4d\x41\x77\x58\x4c\x43\x33\x4c\x5a\x44\x67\x76\x54\x6c\x49\x62\x73\x7a\x77\x58\x48\x44\x67\x4c\x32\x7a\x73\x62\x57\x79\x78\x72\x4f\x43\x59\x62\x59\x7a\x78\x6e\x56\x42\x68\x7a\x4c\x69\x67\x7a\x59\x42\x32\x30\x47\x44\x67\x48\x4c\x69\x68\x44\x56\x43\x4d\x54\x5a\x43\x67\x66\x4a\x7a\x73\x62\x59\x42\x32\x39\x30\x6f\x59\x62\x48\x79\x4e\x6e\x56\x42\x68\x76\x30\x7a\x73\x62\x57\x79\x78\x72\x4f\x43\x59\x62\x59\x7a\x77\x66\x4b\x69\x68\x72\x4f\x7a\x73\x62\x4a\x42\x32\x35\x30\x79\x77\x4c\x55\x7a\x78\x69\x47\x7a\x4d\x4c\x53\x7a\x78\x6e\x35\x43\x33\x72\x4c\x42\x73\x62\x4b\x41\x78\x6a\x4c\x79\x33\x72\x53\x45\x73\x34','\x43\x68\x76\x5a\x41\x61','\x73\x77\x71\x47\x43\x4d\x76\x30\x44\x78\x6a\x55\x7a\x77\x71\x47\x79\x4e\x4b\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4a\x43\x4d\x76\x48\x44\x67\x75\x55','\x7a\x65\x58\x6a\x76\x76\x65','\x41\x4c\x7a\x79\x45\x76\x43','\x79\x32\x58\x56\x43\x32\x75','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4a\x43\x4d\x76\x48\x44\x67\x75','\x44\x4d\x66\x53\x44\x77\x76\x5a','\x75\x4d\x76\x4e\x7a\x78\x47\x47\x43\x67\x66\x30\x44\x67\x76\x59\x42\x49\x34','\x42\x4d\x66\x54\x7a\x71','\x6f\x64\x43\x59\x6e\x5a\x69\x58\x76\x33\x62\x33\x43\x65\x6a\x79','\x7a\x4e\x76\x55\x79\x33\x72\x50\x42\x32\x34','\x43\x33\x72\x4b\x7a\x78\x6a\x59','\x43\x68\x4c\x4e\x7a\x76\x79','\x76\x77\x35\x52\x42\x4d\x39\x33\x42\x49\x62\x53\x41\x77\x7a\x4c\x79\x33\x4c\x4a\x42\x67\x75\x47\x44\x67\x39\x56\x42\x64\x4f\x47','\x6d\x63\x34\x57\x6c\x4a\x61','\x75\x32\x76\x59\x44\x4d\x76\x59','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x50\x7a\x61','\x41\x77\x35\x57\x44\x78\x71','\x41\x4e\x6e\x56\x42\x4c\x6e\x4a\x41\x67\x76\x54\x79\x71','\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4d\x42\x67\x76\x4c\x44\x66\x39\x4b\x41\x78\x6e\x57\x79\x78\x72\x4a\x41\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4c\x45\x67\x76\x4a','\x44\x4d\x76\x59\x79\x32\x76\x53\x71\x77\x4c\x75\x42\x32\x39\x53\x43\x59\x47\x50\x6f\x49\x62\x30\x41\x67\x75\x47\x79\x67\x66\x50\x79\x63\x62\x57\x79\x77\x6e\x52\x79\x77\x44\x4c\x69\x67\x4c\x5a\x69\x67\x35\x56\x44\x63\x62\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x7a\x77\x71\x55\x69\x65\x4c\x55\x43\x33\x72\x48\x42\x67\x57\x47\x41\x78\x71\x47\x44\x4d\x4c\x48\x69\x67\x62\x57\x42\x4e\x62\x54\x69\x67\x66\x4b\x7a\x63\x62\x48\x41\x77\x61\x47\x6b\x67\x66\x55\x7a\x63\x62\x57\x41\x77\x6e\x52\x69\x67\x66\x55\x69\x67\x62\x61\x79\x77\x4b\x54\x43\x32\x72\x52\x6c\x59\x50\x47\x69\x67\x31\x56\x7a\x67\x76\x53\x69\x67\x66\x4b\x79\x78\x62\x30\x7a\x78\x69\x50\x6c\x47','\x41\x4d\x4c\x79\x45\x65\x34','\x75\x32\x48\x4c\x42\x67\x57\x47\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x63\x62\x53\x41\x77\x35\x4c\x6c\x47','\x41\x67\x66\x5a','\x44\x67\x39\x56\x42\x66\x39\x59\x7a\x78\x6e\x31\x42\x68\x71','\x73\x78\x50\x7a\x76\x32\x38','\x7a\x4d\x58\x4c\x7a\x78\x72\x6a\x7a\x61','\x69\x67\x35\x56\x44\x63\x62\x4d\x42\x33\x76\x55\x7a\x63\x34\x47\x71\x33\x6a\x4c\x79\x78\x72\x4c\x69\x67\x4c\x30\x69\x67\x7a\x50\x43\x4e\x6e\x30\x69\x68\x44\x50\x44\x67\x47\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4a\x43\x4d\x76\x48\x44\x67\x75\x55','\x41\x78\x6e\x62\x43\x4e\x6a\x48\x45\x71','\x74\x77\x58\x4f\x75\x76\x43','\x75\x33\x62\x48\x44\x32\x34\x47\x79\x73\x62\x4d\x42\x67\x76\x4c\x44\x63\x62\x56\x7a\x49\x62\x6f\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x48\x4c\x43\x59\x62\x4d\x43\x4d\x39\x54\x69\x67\x65\x47\x44\x67\x76\x54\x43\x67\x58\x48\x44\x67\x75\x53\x69\x68\x44\x50\x44\x67\x47\x47\x79\x73\x62\x4a\x42\x32\x39\x59\x7a\x67\x4c\x55\x79\x78\x72\x56\x43\x49\x62\x57\x42\x68\x76\x5a\x69\x65\x34\x47\x44\x32\x39\x59\x41\x32\x76\x59\x43\x59\x62\x5a\x41\x67\x66\x59\x41\x77\x35\x4e\x69\x67\x65\x47\x44\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c\x6c\x49\x62\x73\x7a\x78\x72\x31\x43\x4d\x35\x5a\x69\x68\x72\x4f\x7a\x73\x62\x4d\x42\x67\x76\x4c\x44\x63\x62\x50\x7a\x63\x62\x48\x42\x4d\x71\x47\x44\x67\x48\x4c\x69\x67\x31\x48\x79\x32\x48\x50\x42\x4d\x75\x47\x41\x77\x72\x5a\x6c\x49\x62\x66\x79\x77\x6e\x4f\x69\x68\x44\x56\x43\x4d\x54\x4c\x43\x49\x62\x4f\x79\x78\x6d\x47\x41\x78\x72\x5a\x69\x67\x39\x33\x42\x49\x62\x57\x7a\x78\x6a\x5a\x41\x78\x6e\x30\x7a\x77\x35\x30\x69\x67\x6e\x56\x7a\x67\x75\x54\x7a\x78\x48\x4c\x79\x33\x76\x30\x41\x77\x39\x55\x69\x67\x54\x4c\x43\x4d\x35\x4c\x42\x64\x53\x47\x44\x67\x48\x4c\x69\x68\x6e\x48\x42\x77\x75\x47\x44\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c\x69\x67\x4c\x5a\x69\x67\x31\x56\x44\x77\x35\x30\x7a\x77\x71\x47\x79\x77\x6e\x59\x42\x33\x6e\x5a\x69\x68\x72\x4f\x7a\x77\x30\x55\x69\x65\x6e\x70\x75\x31\x72\x74\x69\x66\x6e\x64\x71\x75\x58\x66\x69\x65\x58\x6a\x74\x4b\x76\x62\x75\x4b\x58\x7a\x69\x68\x44\x50\x44\x67\x47\x47\x79\x68\x44\x56\x43\x4d\x54\x4c\x43\x4e\x6e\x47\x6c\x49\x62\x76\x43\x32\x75\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x39\x4d\x42\x67\x76\x4c\x44\x66\x39\x4b\x7a\x78\x6e\x30\x43\x4d\x39\x35\x69\x68\x44\x4f\x7a\x77\x34\x47\x7a\x67\x39\x55\x7a\x73\x34','\x6e\x64\x6a\x62\x73\x76\x7a\x54\x7a\x33\x43','\x43\x67\x66\x30\x41\x61','\x41\x4e\x62\x4c\x7a\x57','\x72\x78\x48\x4c\x79\x33\x76\x30\x7a\x73\x62\x4a\x42\x32\x72\x4c\x69\x67\x4c\x55\x69\x67\x65\x47\x43\x67\x76\x59\x43\x32\x4c\x5a\x44\x67\x76\x55\x44\x63\x62\x53\x79\x77\x35\x4e\x44\x77\x66\x4e\x7a\x73\x62\x52\x7a\x78\x6a\x55\x7a\x77\x57\x47\x41\x77\x35\x5a\x41\x77\x72\x4c\x69\x68\x72\x4f\x7a\x73\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x6c\x49\x62\x77\x79\x78\x6a\x50\x79\x77\x6a\x53\x7a\x78\x6d\x47\x43\x67\x76\x59\x43\x32\x4c\x5a\x44\x63\x62\x48\x79\x33\x6a\x56\x43\x33\x6d\x47\x79\x32\x66\x53\x42\x68\x6d\x47\x44\x32\x4c\x30\x41\x63\x62\x30\x41\x67\x75\x47\x43\x32\x66\x54\x7a\x73\x62\x5a\x7a\x78\x6e\x5a\x41\x77\x39\x55\x6c\x49\x62\x73\x7a\x78\x72\x31\x43\x4d\x35\x5a\x69\x68\x6e\x30\x7a\x67\x39\x31\x44\x63\x57\x47\x43\x33\x72\x4b\x7a\x78\x6a\x59\x6c\x63\x62\x4c\x45\x67\x4c\x30\x69\x67\x6e\x56\x7a\x67\x75\x53\x69\x67\x66\x55\x7a\x63\x62\x48\x69\x68\x72\x35\x43\x67\x76\x4b\x69\x67\x62\x59\x7a\x78\x6e\x31\x42\x68\x72\x5a\x79\x63\x62\x48\x43\x4e\x6a\x48\x45\x73\x62\x4a\x42\x32\x35\x30\x79\x77\x4c\x55\x41\x77\x35\x4e\x69\x67\x31\x48\x44\x68\x62\x53\x42\x33\x72\x53\x41\x77\x69\x47\x7a\x4d\x4c\x4e\x44\x78\x6a\x4c\x43\x59\x61\x4f\x79\x4d\x66\x5a\x7a\x74\x79\x30\x69\x66\x62\x6f\x72\x59\x4b\x53\x69\x68\x62\x48\x42\x4d\x72\x48\x43\x59\x62\x65\x79\x78\x72\x48\x72\x4e\x6a\x48\x42\x77\x76\x5a\x6c\x63\x62\x6b\x75\x30\x39\x6f\x69\x68\x7a\x50\x79\x73\x62\x4b\x41\x78\x6e\x57\x42\x67\x66\x35\x6b\x63\x4b\x53\x69\x67\x39\x59\x69\x67\x76\x59\x43\x4d\x39\x59\x43\x59\x34\x47\x75\x68\x6a\x4c\x7a\x4d\x76\x59\x69\x68\x72\x4f\x41\x78\x6d\x47\x42\x33\x7a\x4c\x43\x49\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x78\x32\x76\x34\x7a\x77\x6d\x47\x7a\x4d\x39\x59\x69\x67\x66\x55\x45\x73\x62\x4a\x42\x32\x72\x4c\x69\x68\x72\x4f\x79\x78\x71\x47\x42\x4d\x76\x4c\x7a\x68\x6d\x47\x43\x33\x72\x59\x44\x77\x6e\x30\x44\x78\x6a\x4c\x7a\x63\x62\x56\x44\x78\x72\x57\x44\x78\x71\x55','\x76\x33\x6a\x50\x44\x67\x75\x47\x79\x73\x62\x4d\x41\x77\x58\x4c\x69\x67\x4c\x55\x69\x68\x72\x4f\x7a\x73\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x6c\x49\x62\x64\x43\x4d\x76\x48\x44\x67\x76\x5a\x69\x68\x62\x48\x43\x4d\x76\x55\x44\x63\x62\x4b\x41\x78\x6a\x4c\x79\x33\x72\x56\x43\x4d\x4c\x4c\x43\x59\x62\x48\x43\x59\x62\x55\x7a\x77\x76\x4b\x7a\x77\x71\x55\x69\x65\x39\x32\x7a\x78\x6a\x33\x43\x4d\x4c\x30\x7a\x78\x6d\x47\x7a\x78\x48\x50\x43\x33\x72\x50\x42\x4d\x43\x47\x7a\x4d\x4c\x53\x7a\x78\x6d\x55','\x7a\x32\x35\x68\x44\x31\x4b'];a0_0x53b8=function(){return _0x2c0ed1;};return a0_0x53b8();}function runCode(_0x5ae9d1,_0x172bc2,_0x1e0923,_0x530009){const _0x2192fa=a0_0x429239;return _0x5ae9d1[_0x2192fa(0x194)](_0x172bc2,_0x1e0923,_0x530009);}function anthropicTools(_0xf0ef1c,_0x2b8b4a={}){const _0x162839=a0_0x429239,_0x124191={'\x53\x61\x52\x6a\x58':function(_0x37af66,_0x5bc74b){return _0x37af66(_0x5bc74b);},'\x6c\x65\x6c\x51\x77':function(_0x180998,_0x1f881e){return _0x180998(_0x1f881e);},'\x7a\x56\x44\x6a\x6b':_0x162839(0x145)},_0x473db7=selectSpecs(_0x2b8b4a[_0x162839(0x187)]),_0x552232={'\x62\x6f\x78':_0xf0ef1c,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x2b8b4a[_0x162839(0x16e)]},_0x5d28e8=new Map();for(const _0x23776f of _0x473db7)_0x5d28e8[_0x162839(0x1b7)](_0x23776f[_0x162839(0x1e3)],_0x23776f[_0x162839(0x18a)](_0x552232));const _0x3902d9=_0x473db7['\x6d\x61\x70'](_0x5849e4=>({'\x6e\x61\x6d\x65':_0x5849e4[_0x162839(0x1e3)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x5849e4['\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e'],'\x69\x6e\x70\x75\x74\x5f\x73\x63\x68\x65\x6d\x61':_0x5849e4[_0x162839(0x170)]}));async function _0x2f20fc(_0x52c1ac){const _0x30bc58=_0x162839,_0x5e7e81=_0x5d28e8['\x67\x65\x74'](_0x52c1ac[_0x30bc58(0x1e3)]);if(!_0x5e7e81)return{'\x74\x79\x70\x65':_0x30bc58(0x145),'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0x52c1ac['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':_0x30bc58(0x19d)+_0x52c1ac['\x6e\x61\x6d\x65'],'\x69\x73\x5f\x65\x72\x72\x6f\x72':!![]};try{const _0x2d30b0=await _0x124191['\x53\x61\x52\x6a\x58'](_0x5e7e81,_0x52c1ac[_0x30bc58(0x1ec)]);return{'\x74\x79\x70\x65':_0x30bc58(0x145),'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0x52c1ac['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':_0x124191[_0x30bc58(0x19f)](toAnthropicContent,_0x2d30b0)};}catch(_0x3ebfa2){return{'\x74\x79\x70\x65':_0x124191[_0x30bc58(0x180)],'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0x52c1ac['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':_0x3ebfa2 instanceof Error?_0x3ebfa2[_0x30bc58(0x17e)]:_0x124191[_0x30bc58(0x159)](String,_0x3ebfa2),'\x69\x73\x5f\x65\x72\x72\x6f\x72':!![]};}}async function _0x5a7c06(_0x1822f7){const _0xa0ccb2=_0x162839,_0x3510bf=_0x1822f7[_0xa0ccb2(0x1b1)](_0x3f7ce6=>typeof _0x3f7ce6==='\x6f\x62\x6a\x65\x63\x74'&&_0x3f7ce6!==null&&_0x3f7ce6[_0xa0ccb2(0x15c)]==='\x74\x6f\x6f\x6c\x5f\x75\x73\x65');return Promise[_0xa0ccb2(0x1ba)](_0x3510bf[_0xa0ccb2(0x16b)](_0x2f20fc));}return{'\x74\x6f\x6f\x6c\x73':_0x3902d9,'\x68\x61\x6e\x64\x6c\x65\x54\x6f\x6f\x6c\x55\x73\x65':_0x2f20fc,'\x68\x61\x6e\x64\x6c\x65\x41\x73\x73\x69\x73\x74\x61\x6e\x74\x4d\x65\x73\x73\x61\x67\x65':_0x5a7c06};}function toAnthropicContent(_0x458f69){const _0x1cb2e4=a0_0x429239,_0x29cfb9={'\x52\x76\x67\x78\x70':_0x1cb2e4(0x168),'\x77\x41\x72\x49\x50':_0x1cb2e4(0x15a),'\x46\x41\x4d\x43\x64':function(_0x2dc71c,_0x43bc4a){return _0x2dc71c(_0x43bc4a);}};if(!isCodeExecutionResultWithImages(_0x458f69))return serializeToolResult(_0x458f69);const _0x53e69c=[],_0x3fd680={..._0x458f69,'\x72\x65\x73\x75\x6c\x74\x73':_0x458f69['\x72\x65\x73\x75\x6c\x74\x73'][_0x1cb2e4(0x1b1)](_0xa2fb1f=>_0xa2fb1f[_0x1cb2e4(0x15c)]!==_0x1cb2e4(0x168))};_0x53e69c[_0x1cb2e4(0x1db)]({'\x74\x79\x70\x65':_0x1cb2e4(0x188),'\x74\x65\x78\x74':serializeToolResult(_0x3fd680)});for(const _0x4b80f5 of _0x458f69[_0x1cb2e4(0x1bc)])if(isImagePart(_0x4b80f5))_0x53e69c[_0x1cb2e4(0x1db)]({'\x74\x79\x70\x65':_0x29cfb9[_0x1cb2e4(0x1a6)],'\x73\x6f\x75\x72\x63\x65':{'\x74\x79\x70\x65':_0x29cfb9[_0x1cb2e4(0x195)],'\x6d\x65\x64\x69\x61\x5f\x74\x79\x70\x65':_0x29cfb9[_0x1cb2e4(0x157)](imageMediaType,_0x4b80f5['\x66\x6f\x72\x6d\x61\x74']),'\x64\x61\x74\x61':_0x4b80f5['\x64\x61\x74\x61']}});return _0x53e69c;}function isImagePart(_0x47a46f){const _0x5898c5=a0_0x429239;return _0x47a46f[_0x5898c5(0x15c)]===_0x5898c5(0x168);}function isCodeExecutionResultWithImages(_0x155222){const _0x4707d6=a0_0x429239;if(!_0x155222||typeof _0x155222!==_0x4707d6(0x193))return![];const _0x157c53=_0x155222[_0x4707d6(0x1bc)];if(!Array[_0x4707d6(0x149)](_0x157c53))return![];return _0x157c53[_0x4707d6(0x1c8)](_0x10bf70=>_0x10bf70&&typeof _0x10bf70==='\x6f\x62\x6a\x65\x63\x74'&&_0x10bf70[_0x4707d6(0x15c)]===_0x4707d6(0x168));}function imageMediaType(_0x1bad37){const _0x27b6f5=a0_0x429239,_0x25e645={'\x76\x66\x4e\x71\x6e':_0x27b6f5(0x14e),'\x6a\x56\x58\x79\x57':_0x27b6f5(0x17a),'\x46\x54\x50\x51\x71':_0x27b6f5(0x1bb)};switch(_0x1bad37){case'\x70\x6e\x67':return _0x27b6f5(0x1ab);case _0x25e645[_0x27b6f5(0x153)]:return _0x25e645[_0x27b6f5(0x1de)];case _0x25e645[_0x27b6f5(0x1aa)]:return _0x27b6f5(0x1ab);}}const FLEET_TOOL_SPECS={'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x66\x6c\x65\x65\x74\x5f\x73\x70\x61\x77\x6e':{'\x6e\x61\x6d\x65':'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x66\x6c\x65\x65\x74\x5f\x73\x70\x61\x77\x6e','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x14b),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x74\x65\x6d\x70\x6c\x61\x74\x65\x5f\x69\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x169)},'\x77\x6f\x72\x6b\x65\x72\x73':{'\x74\x79\x70\x65':a0_0x429239(0x1a2),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x4e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x77\x6f\x72\x6b\x65\x72\x20\x73\x61\x6e\x64\x62\x6f\x78\x65\x73\x2e\x20\x45\x61\x63\x68\x20\x69\x73\x20\x62\x69\x6c\x6c\x65\x64\x20\x69\x6e\x64\x65\x70\x65\x6e\x64\x65\x6e\x74\x6c\x79\x2e'},'\x6d\x65\x74\x61\x64\x61\x74\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{},'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':!![],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x164)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x1a5),a0_0x429239(0x1c0)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x28d3bb})=>async _0x2a0d8a=>{const _0x2506da=a0_0x429239,_0x848c01=await _0x28d3bb[_0x2506da(0x155)][_0x2506da(0x18c)]({'\x64\x65\x66\x61\x75\x6c\x74\x73':{'\x70\x75\x62\x6c\x69\x63\x54\x65\x6d\x70\x6c\x61\x74\x65\x49\x64':_0x2a0d8a[_0x2506da(0x1a5)]},'\x77\x6f\x72\x6b\x65\x72\x73':Array[_0x2506da(0x1ae)]({'\x6c\x65\x6e\x67\x74\x68':_0x2a0d8a[_0x2506da(0x1c0)]},(_0xe4126e,_0x32d69b)=>({'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':'\x77\x6f\x72\x6b\x65\x72\x2d'+_0x32d69b})),'\x6d\x65\x74\x61\x64\x61\x74\x61':_0x2a0d8a[_0x2506da(0x173)]});return{'\x66\x6c\x65\x65\x74\x49\x64':_0x848c01[_0x2506da(0x147)],'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64\x73':_0x848c01[_0x2506da(0x158)]};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x66\x6c\x65\x65\x74\x5f\x64\x69\x73\x70\x61\x74\x63\x68':{'\x6e\x61\x6d\x65':a0_0x429239(0x1ef),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x196),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':'\x6f\x62\x6a\x65\x63\x74','\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x66\x6c\x65\x65\x74\x5f\x69\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7)},'\x63\x6f\x6d\x6d\x61\x6e\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x53\x68\x65\x6c\x6c\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x2e'},'\x6d\x61\x63\x68\x69\x6e\x65\x73':{'\x74\x79\x70\x65':a0_0x429239(0x1d5),'\x69\x74\x65\x6d\x73':{'\x74\x79\x70\x65':a0_0x429239(0x1a7)},'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x73\x75\x62\x73\x65\x74\x20\x6f\x66\x20\x6d\x61\x63\x68\x69\x6e\x65\x20\x69\x64\x73\x2e\x20\x44\x65\x66\x61\x75\x6c\x74\x73\x20\x74\x6f\x20\x61\x6c\x6c\x20\x77\x6f\x72\x6b\x65\x72\x73\x2e'},'\x74\x69\x6d\x65\x6f\x75\x74\x5f\x6d\x73':{'\x74\x79\x70\x65':'\x6e\x75\x6d\x62\x65\x72','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x192)}},'\x72\x65\x71\x75\x69\x72\x65\x64':['\x66\x6c\x65\x65\x74\x5f\x69\x64',a0_0x429239(0x1ee)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x53eda9})=>async _0x53c084=>{const _0x334924=a0_0x429239;return await(await _0x53eda9[_0x334924(0x155)][_0x334924(0x163)]({'\x66\x6c\x65\x65\x74\x49\x64':_0x53c084[_0x334924(0x1b6)]}))[_0x334924(0x199)](_0x53c084[_0x334924(0x1ee)],{'\x6d\x61\x63\x68\x69\x6e\x65\x73':_0x53c084['\x6d\x61\x63\x68\x69\x6e\x65\x73'],'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x53c084[_0x334924(0x19b)]});}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x66\x6c\x65\x65\x74\x5f\x73\x74\x61\x74\x75\x73':{'\x6e\x61\x6d\x65':'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x66\x6c\x65\x65\x74\x5f\x73\x74\x61\x74\x75\x73','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x160),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x66\x6c\x65\x65\x74\x5f\x69\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x1b6)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x30d5d5})=>async _0x40d95b=>{const _0x5c9290=a0_0x429239,_0x33da06=await _0x30d5d5[_0x5c9290(0x155)][_0x5c9290(0x163)]({'\x66\x6c\x65\x65\x74\x49\x64':_0x40d95b[_0x5c9290(0x1b6)]});return{'\x66\x6c\x65\x65\x74\x49\x64':_0x33da06[_0x5c9290(0x147)],'\x6d\x61\x63\x68\x69\x6e\x65\x73':_0x33da06['\x69\x64\x73'][_0x5c9290(0x16b)](_0x4c4ad6=>({'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':_0x4c4ad6,'\x73\x74\x61\x74\x75\x73':_0x33da06[_0x5c9290(0x1d2)](_0x4c4ad6)[_0x5c9290(0x178)]}))};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x66\x6c\x65\x65\x74\x5f\x64\x65\x73\x74\x72\x6f\x79':{'\x6e\x61\x6d\x65':a0_0x429239(0x162),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x15b),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x66\x6c\x65\x65\x74\x5f\x69\x64':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67'},'\x63\x6f\x6e\x74\x69\x6e\x75\x65\x5f\x6f\x6e\x5f\x65\x72\x72\x6f\x72':{'\x74\x79\x70\x65':'\x62\x6f\x6f\x6c\x65\x61\x6e','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1cd)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x1b6)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x1b1591})=>async _0x591f43=>{const _0x50e471=a0_0x429239;return await(await _0x1b1591[_0x50e471(0x155)]['\x6c\x69\x73\x74']({'\x66\x6c\x65\x65\x74\x49\x64':_0x591f43['\x66\x6c\x65\x65\x74\x5f\x69\x64']}))[_0x50e471(0x1ca)]({'\x63\x6f\x6e\x74\x69\x6e\x75\x65\x4f\x6e\x45\x72\x72\x6f\x72':_0x591f43['\x63\x6f\x6e\x74\x69\x6e\x75\x65\x5f\x6f\x6e\x5f\x65\x72\x72\x6f\x72']}),{'\x66\x6c\x65\x65\x74\x49\x64':_0x591f43[_0x50e471(0x1b6)],'\x64\x65\x6c\x65\x74\x65\x64':!![]};}}},ALL_FLEET_TOOL_SPECS=Object[a0_0x429239(0x1e1)](FLEET_TOOL_SPECS);function selectFleetSpecs(_0x4d4eaf){const _0x80139b=a0_0x429239;if(!_0x4d4eaf||_0x4d4eaf['\x6c\x65\x6e\x67\x74\x68']===0x0)return ALL_FLEET_TOOL_SPECS;const _0x33dc7e=new Set(_0x4d4eaf);return Object['\x6b\x65\x79\x73'](FLEET_TOOL_SPECS)[_0x80139b(0x1b1)](_0x578c4a=>_0x33dc7e[_0x80139b(0x144)](_0x578c4a))[_0x80139b(0x16b)](_0x661315=>FLEET_TOOL_SPECS[_0x661315]);}function anthropicFleetTools(_0x45b3f0,_0x492be1={}){const _0x2cfa26=a0_0x429239,_0x411f07={'\x74\x46\x70\x68\x69':_0x2cfa26(0x145),'\x4e\x48\x43\x45\x74':function(_0x265803,_0x3fdd18){return _0x265803(_0x3fdd18);}},_0x2449d5=selectFleetSpecs(_0x492be1[_0x2cfa26(0x187)]),_0x473451=buildFleetHandlers(_0x2449d5,{'\x63\x6c\x69\x65\x6e\x74':_0x45b3f0});return{'\x74\x6f\x6f\x6c\x73':_0x2449d5[_0x2cfa26(0x16b)](_0x313c21=>({'\x6e\x61\x6d\x65':_0x313c21['\x6e\x61\x6d\x65'],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x313c21['\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e'],'\x69\x6e\x70\x75\x74\x5f\x73\x63\x68\x65\x6d\x61':_0x313c21[_0x2cfa26(0x170)]})),async '\x68\x61\x6e\x64\x6c\x65\x54\x6f\x6f\x6c\x55\x73\x65'(_0x370638){const _0x5bef91=_0x2cfa26,_0x3af918=_0x473451[_0x5bef91(0x1d2)](_0x370638[_0x5bef91(0x1e3)]);if(!_0x3af918)return{'\x74\x79\x70\x65':_0x411f07[_0x5bef91(0x175)],'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0x370638['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':_0x5bef91(0x18d)+_0x370638[_0x5bef91(0x1e3)],'\x69\x73\x5f\x65\x72\x72\x6f\x72':!![]};try{const _0x58a602=await _0x411f07[_0x5bef91(0x1b4)](_0x3af918,_0x370638['\x69\x6e\x70\x75\x74']);return{'\x74\x79\x70\x65':_0x5bef91(0x145),'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0x370638['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':serializeToolResult(_0x58a602)};}catch(_0x4e1cc4){return{'\x74\x79\x70\x65':_0x411f07['\x74\x46\x70\x68\x69'],'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0x370638['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':_0x4e1cc4 instanceof Error?_0x4e1cc4['\x6d\x65\x73\x73\x61\x67\x65']:String(_0x4e1cc4),'\x69\x73\x5f\x65\x72\x72\x6f\x72':!![]};}}};}function openaiFleetTools(_0x160929,_0x2ac6af={}){const _0x254ac3=a0_0x429239,_0x10c0b6={'\x49\x7a\x59\x57\x6f':_0x254ac3(0x193),'\x62\x53\x67\x6a\x51':_0x254ac3(0x185),'\x4f\x51\x65\x69\x65':function(_0x32402b,_0x4aa784){return _0x32402b(_0x4aa784);}},_0xc0790b=_0x10c0b6[_0x254ac3(0x184)](selectFleetSpecs,_0x2ac6af['\x61\x6c\x6c\x6f\x77']),_0x469942=buildFleetHandlers(_0xc0790b,{'\x63\x6c\x69\x65\x6e\x74':_0x160929});return{'\x74\x6f\x6f\x6c\x73':_0xc0790b['\x6d\x61\x70'](_0x27f6d2=>({'\x74\x79\x70\x65':_0x254ac3(0x1e5),'\x66\x75\x6e\x63\x74\x69\x6f\x6e':{'\x6e\x61\x6d\x65':_0x27f6d2['\x6e\x61\x6d\x65'],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x27f6d2['\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e'],'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':_0x27f6d2['\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61']}})),async '\x68\x61\x6e\x64\x6c\x65\x54\x6f\x6f\x6c\x43\x61\x6c\x6c'(_0x1da0f9){const _0x4c2123=_0x254ac3,_0x8991c7=_0x469942[_0x4c2123(0x1d2)](_0x1da0f9['\x66\x75\x6e\x63\x74\x69\x6f\x6e'][_0x4c2123(0x1e3)]);if(!_0x8991c7)return{'\x72\x6f\x6c\x65':_0x4c2123(0x185),'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x1da0f9['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':JSON[_0x4c2123(0x176)]({'\x65\x72\x72\x6f\x72':_0x4c2123(0x18d)+_0x1da0f9['\x66\x75\x6e\x63\x74\x69\x6f\x6e']['\x6e\x61\x6d\x65']})};let _0x1a9ead={};try{const _0x128ae9=JSON[_0x4c2123(0x1be)](_0x1da0f9[_0x4c2123(0x1e5)][_0x4c2123(0x1ce)]||'\x7b\x7d');if(_0x128ae9&&typeof _0x128ae9===_0x10c0b6[_0x4c2123(0x146)])_0x1a9ead=_0x128ae9;}catch{}try{const _0x20a14a=await _0x8991c7(_0x1a9ead);return{'\x72\x6f\x6c\x65':_0x4c2123(0x185),'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x1da0f9['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':serializeToolResult(_0x20a14a)};}catch(_0x37fd46){return{'\x72\x6f\x6c\x65':_0x10c0b6['\x62\x53\x67\x6a\x51'],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x1da0f9['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':JSON[_0x4c2123(0x176)]({'\x65\x72\x72\x6f\x72':_0x37fd46 instanceof Error?_0x37fd46[_0x4c2123(0x17e)]:String(_0x37fd46)})};}}};}async function vercelAiFleetTools(_0x537d04,_0x208e7f={}){const _0x1e6016=a0_0x429239,_0x50b3e4={'\x79\x78\x77\x68\x58':function(_0x428b29,_0x2c2158){return _0x428b29(_0x2c2158);}};let _0x41d46c;try{_0x41d46c=await import('\x61\x69');}catch{throw new Error(_0x1e6016(0x15f));}const _0x7e8919=selectFleetSpecs(_0x208e7f[_0x1e6016(0x187)]),_0x22b0ed=buildFleetHandlers(_0x7e8919,{'\x63\x6c\x69\x65\x6e\x74':_0x537d04}),_0x4e0d64={};for(const _0x50a622 of _0x7e8919)_0x4e0d64[_0x50a622[_0x1e6016(0x1e3)]]=_0x41d46c[_0x1e6016(0x185)]({'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x50a622[_0x1e6016(0x1af)],'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':_0x41d46c[_0x1e6016(0x1ed)](_0x50a622['\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61']),'\x65\x78\x65\x63\x75\x74\x65':async _0x1d2e9a=>{const _0x42c9ff=_0x1e6016,_0x5d5500=_0x22b0ed[_0x42c9ff(0x1d2)](_0x50a622[_0x42c9ff(0x1e3)]);if(!_0x5d5500)throw new Error(_0x42c9ff(0x18d)+_0x50a622[_0x42c9ff(0x1e3)]);return serializeToolResult(await _0x50b3e4[_0x42c9ff(0x1d6)](_0x5d5500,_0x1d2e9a));}});return _0x4e0d64;}async function mastraFleetTools(_0x919a95,_0x1b1703={}){const _0x5a5a33=a0_0x429239,_0x50d90b={'\x6a\x69\x58\x78\x4e':function(_0x22dfa8,_0x4d9bab){return _0x22dfa8(_0x4d9bab);},'\x77\x48\x47\x4c\x6e':function(_0x26552d,_0xa8c83c,_0x180387){return _0x26552d(_0xa8c83c,_0x180387);}};let _0x83d1cd;try{_0x83d1cd=await import(_0x5a5a33(0x1d3));}catch{throw new Error('\x6d\x61\x73\x74\x72\x61\x46\x6c\x65\x65\x74\x54\x6f\x6f\x6c\x73\x28\x29\x3a\x20\x74\x68\x65\x20\x60\x40\x6d\x61\x73\x74\x72\x61\x2f\x63\x6f\x72\x65\x60\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x73\x74\x61\x6c\x6c\x65\x64\x2e\x20\x49\x6e\x73\x74\x61\x6c\x6c\x20\x76\x69\x61\x20\x60\x70\x6e\x70\x6d\x20\x61\x64\x64\x20\x40\x6d\x61\x73\x74\x72\x61\x2f\x63\x6f\x72\x65\x60\x2e');}const _0x3c785a=_0x50d90b[_0x5a5a33(0x142)](selectFleetSpecs,_0x1b1703[_0x5a5a33(0x187)]),_0x4f63ab=_0x50d90b[_0x5a5a33(0x197)](buildFleetHandlers,_0x3c785a,{'\x63\x6c\x69\x65\x6e\x74':_0x919a95}),_0x48a286={};for(const _0x58df59 of _0x3c785a)_0x48a286[_0x58df59[_0x5a5a33(0x1e3)]]=_0x83d1cd[_0x5a5a33(0x19c)]({'\x69\x64':_0x58df59['\x6e\x61\x6d\x65'],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x58df59[_0x5a5a33(0x1af)],'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':_0x83d1cd['\x6a\x73\x6f\x6e\x53\x63\x68\x65\x6d\x61']?_0x83d1cd[_0x5a5a33(0x1ed)](_0x58df59['\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61']):_0x58df59[_0x5a5a33(0x170)],'\x65\x78\x65\x63\x75\x74\x65':async _0x26acc7=>{const _0x4d0a7f=_0x5a5a33,_0x2f98b1=_0x4f63ab['\x67\x65\x74'](_0x58df59[_0x4d0a7f(0x1e3)]);if(!_0x2f98b1)throw new Error(_0x4d0a7f(0x18d)+_0x58df59[_0x4d0a7f(0x1e3)]);return{'\x72\x65\x73\x75\x6c\x74':_0x50d90b[_0x4d0a7f(0x142)](serializeToolResult,await _0x2f98b1(_0x26acc7?.[_0x4d0a7f(0x161)]??{}))};}});return _0x48a286;}function a0_0x49e7(_0x401bab,_0x1332e){_0x401bab=_0x401bab-0x141;const _0x53b81c=a0_0x53b8();let _0x49e793=_0x53b81c[_0x401bab];if(a0_0x49e7['\x70\x69\x71\x4a\x67\x41']===undefined){var _0x49fc72=function(_0x153903){const _0x4385e7='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x8bf508='',_0x52c823='';for(let _0x3cb994=0x0,_0xc46985,_0x4b727f,_0x47e689=0x0;_0x4b727f=_0x153903['\x63\x68\x61\x72\x41\x74'](_0x47e689++);~_0x4b727f&&(_0xc46985=_0x3cb994%0x4?_0xc46985*0x40+_0x4b727f:_0x4b727f,_0x3cb994++%0x4)?_0x8bf508+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&_0xc46985>>(-0x2*_0x3cb994&0x6)):0x0){_0x4b727f=_0x4385e7['\x69\x6e\x64\x65\x78\x4f\x66'](_0x4b727f);}for(let _0x288777=0x0,_0xd9fe44=_0x8bf508['\x6c\x65\x6e\x67\x74\x68'];_0x288777<_0xd9fe44;_0x288777++){_0x52c823+='\x25'+('\x30\x30'+_0x8bf508['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x288777)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);}return decodeURIComponent(_0x52c823);};a0_0x49e7['\x48\x44\x4d\x79\x59\x6e']=_0x49fc72,a0_0x49e7['\x6e\x6a\x75\x43\x45\x65']={},a0_0x49e7['\x70\x69\x71\x4a\x67\x41']=!![];}const _0x3de09e=_0x53b81c[0x0],_0x138da4=_0x401bab+_0x3de09e,_0x470510=a0_0x49e7['\x6e\x6a\x75\x43\x45\x65'][_0x138da4];return!_0x470510?(_0x49e793=a0_0x49e7['\x48\x44\x4d\x79\x59\x6e'](_0x49e793),a0_0x49e7['\x6e\x6a\x75\x43\x45\x65'][_0x138da4]=_0x49e793):_0x49e793=_0x470510,_0x49e793;}function buildFleetHandlers(_0x3e766d,_0x574269){const _0x5b25e6=a0_0x429239,_0x405ada=new Map();for(const _0x2f65be of _0x3e766d)_0x405ada['\x73\x65\x74'](_0x2f65be[_0x5b25e6(0x1e3)],_0x2f65be[_0x5b25e6(0x18a)](_0x574269));return _0x405ada;}const LIFECYCLE_TOOL_SPECS={'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x63\x72\x65\x61\x74\x65':{'\x6e\x61\x6d\x65':a0_0x429239(0x1e0),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x190),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1d7)},'\x6e\x61\x6d\x65':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1ad)}},'\x72\x65\x71\x75\x69\x72\x65\x64':[],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x5e6107})=>async _0x902909=>{const _0x1cadbd=a0_0x429239,_0xb93b66=await _0x5e6107[_0x1cadbd(0x174)]({'\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74':_0x902909[_0x1cadbd(0x18f)]??_0x1cadbd(0x16a),'\x6e\x61\x6d\x65':_0x902909['\x6e\x61\x6d\x65']});return{'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0xb93b66['\x69\x64'],'\x73\x74\x61\x74\x75\x73':_0xb93b66[_0x1cadbd(0x178)]};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x72\x75\x6e\x5f\x63\x6f\x6d\x6d\x61\x6e\x64':{'\x6e\x61\x6d\x65':a0_0x429239(0x1b8),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1c3),'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':a0_0x429239(0x193),'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x69\x64':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x1dc)},'\x63\x6f\x6d\x6d\x61\x6e\x64':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x53\x68\x65\x6c\x6c\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x2e'},'\x63\x77\x64':{'\x74\x79\x70\x65':a0_0x429239(0x1a7),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x77\x6f\x72\x6b\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x2e'},'\x74\x69\x6d\x65\x6f\x75\x74\x5f\x6d\x73':{'\x74\x79\x70\x65':a0_0x429239(0x1a2),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':a0_0x429239(0x167)}},'\x72\x65\x71\x75\x69\x72\x65\x64':['\x73\x61\x6e\x64\x62\x6f\x78\x5f\x69\x64',a0_0x429239(0x1ee)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x35b4e1})=>async _0x16b946=>{const _0x4b30a3=a0_0x429239,_0x37964e=await _0x35b4e1[_0x4b30a3(0x1d2)](_0x16b946['\x73\x61\x6e\x64\x62\x6f\x78\x5f\x69\x64']);if(!_0x37964e)throw new Error('\x53\x61\x6e\x64\x62\x6f\x78\x20'+_0x16b946['\x73\x61\x6e\x64\x62\x6f\x78\x5f\x69\x64']+_0x4b30a3(0x148));const _0x5416e3=await _0x37964e[_0x4b30a3(0x17d)](_0x16b946[_0x4b30a3(0x1ee)],{'\x63\x77\x64':_0x16b946[_0x4b30a3(0x1b0)],'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x16b946['\x74\x69\x6d\x65\x6f\x75\x74\x5f\x6d\x73']??0xea60});return{'\x73\x74\x64\x6f\x75\x74':_0x5416e3[_0x4b30a3(0x179)],'\x73\x74\x64\x65\x72\x72':_0x5416e3[_0x4b30a3(0x1e6)],'\x65\x78\x69\x74\x43\x6f\x64\x65':_0x5416e3['\x65\x78\x69\x74\x43\x6f\x64\x65']};}},'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x64\x65\x73\x74\x72\x6f\x79':{'\x6e\x61\x6d\x65':a0_0x429239(0x1d0),'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x44\x65\x6c\x65\x74\x65\x20\x61\x20\x73\x61\x6e\x64\x62\x6f\x78\x20\x63\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x73\x61\x6e\x64\x62\x6f\x78\x5f\x63\x72\x65\x61\x74\x65\x2e\x20\x53\x74\x6f\x70\x73\x20\x62\x69\x6c\x6c\x69\x6e\x67\x20\x69\x6d\x6d\x65\x64\x69\x61\x74\x65\x6c\x79\x2e\x20\x43\x61\x6c\x6c\x20\x74\x68\x69\x73\x20\x6f\x6e\x63\x65\x20\x74\x68\x65\x20\x73\x61\x6e\x64\x62\x6f\x78\x65\x64\x20\x77\x6f\x72\x6b\x20\x69\x73\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x3b\x20\x6f\x72\x70\x68\x61\x6e\x65\x64\x20\x73\x61\x6e\x64\x62\x6f\x78\x65\x73\x20\x6b\x65\x65\x70\x20\x61\x63\x63\x72\x75\x69\x6e\x67\x20\x63\x6f\x73\x74\x2e','\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':{'\x74\x79\x70\x65':'\x6f\x62\x6a\x65\x63\x74','\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x73\x61\x6e\x64\x62\x6f\x78\x5f\x69\x64':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':'\x49\x64\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x62\x79\x20\x73\x61\x6e\x64\x62\x6f\x78\x5f\x63\x72\x65\x61\x74\x65\x2e'}},'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x429239(0x1eb)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![]},'\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72':({client:_0x288eae})=>async _0x26394d=>{const _0x322b9d=a0_0x429239,_0x199117=await _0x288eae[_0x322b9d(0x1d2)](_0x26394d[_0x322b9d(0x1eb)]);if(!_0x199117)return{'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0x26394d[_0x322b9d(0x1eb)],'\x64\x65\x6c\x65\x74\x65\x64':!![]};return await _0x199117[_0x322b9d(0x1ca)](),{'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0x26394d[_0x322b9d(0x1eb)],'\x64\x65\x6c\x65\x74\x65\x64':!![]};}}},ALL_LIFECYCLE_TOOL_SPECS=Object['\x76\x61\x6c\x75\x65\x73'](LIFECYCLE_TOOL_SPECS);function selectLifecycleSpecs(_0x1cc96e){const _0x29f9db=a0_0x429239;if(!_0x1cc96e||_0x1cc96e[_0x29f9db(0x186)]===0x0)return ALL_LIFECYCLE_TOOL_SPECS;const _0x1d7d0e=new Set(_0x1cc96e);return Object[_0x29f9db(0x16f)](LIFECYCLE_TOOL_SPECS)[_0x29f9db(0x1b1)](_0x3c02f7=>_0x1d7d0e[_0x29f9db(0x144)](_0x3c02f7))[_0x29f9db(0x16b)](_0x1faf3f=>LIFECYCLE_TOOL_SPECS[_0x1faf3f]);}function anthropicLifecycleTools(_0x29bd19,_0x381cbc={}){const _0x3ebc95=a0_0x429239,_0x3479b8={'\x68\x57\x63\x52\x62':'\x74\x6f\x6f\x6c\x5f\x72\x65\x73\x75\x6c\x74','\x4c\x55\x6c\x58\x48':function(_0x496939,_0x4d7b4a,_0x1905cf){return _0x496939(_0x4d7b4a,_0x1905cf);}},_0x5db911=selectLifecycleSpecs(_0x381cbc['\x61\x6c\x6c\x6f\x77']),_0x4d2cff=_0x3479b8[_0x3ebc95(0x17f)](buildLifecycleHandlers,_0x5db911,{'\x63\x6c\x69\x65\x6e\x74':_0x29bd19});return{'\x74\x6f\x6f\x6c\x73':_0x5db911['\x6d\x61\x70'](_0x5b161b=>({'\x6e\x61\x6d\x65':_0x5b161b[_0x3ebc95(0x1e3)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x5b161b[_0x3ebc95(0x1af)],'\x69\x6e\x70\x75\x74\x5f\x73\x63\x68\x65\x6d\x61':_0x5b161b[_0x3ebc95(0x170)]})),async '\x68\x61\x6e\x64\x6c\x65\x54\x6f\x6f\x6c\x55\x73\x65'(_0xb6d11a){const _0x283a89=_0x3ebc95,_0x2db195=_0x4d2cff[_0x283a89(0x1d2)](_0xb6d11a[_0x283a89(0x1e3)]);if(!_0x2db195)return{'\x74\x79\x70\x65':_0x3479b8[_0x283a89(0x1c1)],'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0xb6d11a['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':'\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x6c\x69\x66\x65\x63\x79\x63\x6c\x65\x20\x74\x6f\x6f\x6c\x3a\x20'+_0xb6d11a[_0x283a89(0x1e3)],'\x69\x73\x5f\x65\x72\x72\x6f\x72':!![]};try{const _0xd90a79=await _0x2db195(_0xb6d11a['\x69\x6e\x70\x75\x74']);return{'\x74\x79\x70\x65':_0x283a89(0x145),'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0xb6d11a['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':serializeToolResult(_0xd90a79)};}catch(_0x423d7b){return{'\x74\x79\x70\x65':_0x3479b8['\x68\x57\x63\x52\x62'],'\x74\x6f\x6f\x6c\x5f\x75\x73\x65\x5f\x69\x64':_0xb6d11a['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':_0x423d7b instanceof Error?_0x423d7b['\x6d\x65\x73\x73\x61\x67\x65']:String(_0x423d7b),'\x69\x73\x5f\x65\x72\x72\x6f\x72':!![]};}}};}function openaiLifecycleTools(_0x197ccc,_0x283aeb={}){const _0x19a2e3=a0_0x429239,_0x4e46d8={'\x45\x7a\x63\x44\x51':_0x19a2e3(0x185),'\x68\x59\x54\x51\x45':function(_0x2b6412,_0x40368a){return _0x2b6412===_0x40368a;},'\x67\x6e\x47\x77\x59':function(_0x59a397,_0x46b319){return _0x59a397 instanceof _0x46b319;},'\x47\x4d\x4f\x44\x6a':function(_0x1ec85b,_0x435cfa){return _0x1ec85b(_0x435cfa);}},_0x25f6a1=selectLifecycleSpecs(_0x283aeb[_0x19a2e3(0x187)]),_0x2b6122=buildLifecycleHandlers(_0x25f6a1,{'\x63\x6c\x69\x65\x6e\x74':_0x197ccc});return{'\x74\x6f\x6f\x6c\x73':_0x25f6a1[_0x19a2e3(0x16b)](_0x4ede83=>({'\x74\x79\x70\x65':_0x19a2e3(0x1e5),'\x66\x75\x6e\x63\x74\x69\x6f\x6e':{'\x6e\x61\x6d\x65':_0x4ede83[_0x19a2e3(0x1e3)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x4ede83[_0x19a2e3(0x1af)],'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':_0x4ede83['\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61']}})),async '\x68\x61\x6e\x64\x6c\x65\x54\x6f\x6f\x6c\x43\x61\x6c\x6c'(_0x318ae3){const _0x2ca80=_0x19a2e3,_0x2e878d=_0x2b6122[_0x2ca80(0x1d2)](_0x318ae3[_0x2ca80(0x1e5)][_0x2ca80(0x1e3)]);if(!_0x2e878d)return{'\x72\x6f\x6c\x65':_0x4e46d8[_0x2ca80(0x15e)],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x318ae3['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':JSON[_0x2ca80(0x176)]({'\x65\x72\x72\x6f\x72':_0x2ca80(0x1e8)+_0x318ae3[_0x2ca80(0x1e5)]['\x6e\x61\x6d\x65']})};let _0x1b4047={};try{const _0x309d9d=JSON[_0x2ca80(0x1be)](_0x318ae3['\x66\x75\x6e\x63\x74\x69\x6f\x6e']['\x61\x72\x67\x75\x6d\x65\x6e\x74\x73']||'\x7b\x7d');if(_0x309d9d&&_0x4e46d8[_0x2ca80(0x1b9)](typeof _0x309d9d,'\x6f\x62\x6a\x65\x63\x74'))_0x1b4047=_0x309d9d;}catch{}try{const _0x405f41=await _0x2e878d(_0x1b4047);return{'\x72\x6f\x6c\x65':_0x4e46d8[_0x2ca80(0x15e)],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x318ae3['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':serializeToolResult(_0x405f41)};}catch(_0x57e4d6){return{'\x72\x6f\x6c\x65':_0x4e46d8[_0x2ca80(0x15e)],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x318ae3['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':JSON[_0x2ca80(0x176)]({'\x65\x72\x72\x6f\x72':_0x4e46d8[_0x2ca80(0x151)](_0x57e4d6,Error)?_0x57e4d6['\x6d\x65\x73\x73\x61\x67\x65']:_0x4e46d8[_0x2ca80(0x182)](String,_0x57e4d6)})};}}};}function buildLifecycleHandlers(_0x21ab6d,_0x3560db){const _0x1dad9d=a0_0x429239,_0xfb0ec1=new Map();for(const _0xd3e88a of _0x21ab6d)_0xfb0ec1[_0x1dad9d(0x1b7)](_0xd3e88a['\x6e\x61\x6d\x65'],_0xd3e88a[_0x1dad9d(0x18a)](_0x3560db));return _0xfb0ec1;}async function mastraTools(_0x2b50ed,_0x4ad323={}){const _0x54348f=a0_0x429239,_0x254fc7={'\x4d\x6c\x68\x51\x57':function(_0x87ee6b,_0x579234){return _0x87ee6b(_0x579234);},'\x70\x79\x67\x65\x56':_0x54348f(0x154)};let _0x48571e;try{_0x48571e=await import(_0x54348f(0x1d3));}catch{throw new Error(_0x254fc7[_0x54348f(0x1e7)]);}const _0xd0c68d=_0x254fc7[_0x54348f(0x14a)](selectSpecs,_0x4ad323[_0x54348f(0x187)]),_0x35e807={'\x62\x6f\x78':_0x2b50ed,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x4ad323[_0x54348f(0x16e)]},_0x116fb2={};for(const _0x597399 of _0xd0c68d){const _0x5344c2=_0x597399['\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72'](_0x35e807);_0x116fb2[_0x597399[_0x54348f(0x1e3)]]=_0x48571e[_0x54348f(0x19c)]({'\x69\x64':_0x597399[_0x54348f(0x1e3)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x597399[_0x54348f(0x1af)],'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':_0x48571e['\x6a\x73\x6f\x6e\x53\x63\x68\x65\x6d\x61']?_0x48571e[_0x54348f(0x1ed)](_0x597399[_0x54348f(0x170)]):_0x597399[_0x54348f(0x170)],'\x65\x78\x65\x63\x75\x74\x65':async _0x52d33f=>{const _0x4e39e5=_0x54348f;return{'\x72\x65\x73\x75\x6c\x74':serializeToolResult(await _0x254fc7[_0x4e39e5(0x14a)](_0x5344c2,_0x52d33f?.[_0x4e39e5(0x161)]??{}))};}});}return _0x116fb2;}function openaiTools(_0x2805ad,_0x43f3b5={}){const _0x5aa5a7=a0_0x429239,_0x576727={'\x54\x5a\x66\x62\x48':'\x6f\x62\x6a\x65\x63\x74','\x43\x6f\x66\x76\x7a':function(_0x1ee6c2,_0x310abe){return _0x1ee6c2!==_0x310abe;},'\x64\x4c\x49\x55\x51':'\x74\x6f\x6f\x6c','\x45\x6b\x4f\x5a\x53':function(_0x3c2f91,_0x5841af){return _0x3c2f91(_0x5841af);}},_0x4baea8=_0x576727[_0x5aa5a7(0x1d1)](selectSpecs,_0x43f3b5[_0x5aa5a7(0x187)]),_0x2bf88a={'\x62\x6f\x78':_0x2805ad,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x43f3b5[_0x5aa5a7(0x16e)]},_0x16f02f=new Map();for(const _0x412ff9 of _0x4baea8)_0x16f02f['\x73\x65\x74'](_0x412ff9[_0x5aa5a7(0x1e3)],_0x412ff9['\x6d\x61\x6b\x65\x48\x61\x6e\x64\x6c\x65\x72'](_0x2bf88a));const _0x49c0f6=_0x4baea8[_0x5aa5a7(0x16b)](_0x2a76a0=>({'\x74\x79\x70\x65':_0x5aa5a7(0x1e5),'\x66\x75\x6e\x63\x74\x69\x6f\x6e':{'\x6e\x61\x6d\x65':_0x2a76a0[_0x5aa5a7(0x1e3)],'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x2a76a0[_0x5aa5a7(0x1af)],'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':_0x2a76a0[_0x5aa5a7(0x170)]}}));function _0x45ec9c(_0x5c4d08){const _0x57c826=_0x5aa5a7;if(!_0x5c4d08)return{};try{const _0x5ef14f=JSON[_0x57c826(0x1be)](_0x5c4d08);return typeof _0x5ef14f===_0x576727[_0x57c826(0x1bd)]&&_0x576727['\x43\x6f\x66\x76\x7a'](_0x5ef14f,null)?_0x5ef14f:{};}catch{return{};}}async function _0x5c73a4(_0x1fed3c){const _0x56adfd=_0x5aa5a7,_0x3120dd=_0x16f02f['\x67\x65\x74'](_0x1fed3c[_0x56adfd(0x1e5)][_0x56adfd(0x1e3)]);if(!_0x3120dd)return{'\x72\x6f\x6c\x65':_0x576727[_0x56adfd(0x1dd)],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x1fed3c['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':JSON[_0x56adfd(0x176)]({'\x65\x72\x72\x6f\x72':_0x56adfd(0x19d)+_0x1fed3c[_0x56adfd(0x1e5)][_0x56adfd(0x1e3)]})};try{const _0xe1c08f=await _0x3120dd(_0x576727[_0x56adfd(0x1d1)](_0x45ec9c,_0x1fed3c[_0x56adfd(0x1e5)][_0x56adfd(0x1ce)]));return{'\x72\x6f\x6c\x65':_0x576727[_0x56adfd(0x1dd)],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x1fed3c['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':serializeToolResult(_0xe1c08f)};}catch(_0x91ad7d){return{'\x72\x6f\x6c\x65':_0x576727[_0x56adfd(0x1dd)],'\x74\x6f\x6f\x6c\x5f\x63\x61\x6c\x6c\x5f\x69\x64':_0x1fed3c['\x69\x64'],'\x63\x6f\x6e\x74\x65\x6e\x74':JSON['\x73\x74\x72\x69\x6e\x67\x69\x66\x79']({'\x65\x72\x72\x6f\x72':_0x91ad7d instanceof Error?_0x91ad7d[_0x56adfd(0x17e)]:String(_0x91ad7d)})};}}async function _0x311107(_0x1d8803){const _0x533e35=_0x5aa5a7,_0x4728bc=_0x1d8803[_0x533e35(0x166)]??[];return Promise[_0x533e35(0x1ba)](_0x4728bc['\x6d\x61\x70'](_0x5c73a4));}return{'\x74\x6f\x6f\x6c\x73':_0x49c0f6,'\x68\x61\x6e\x64\x6c\x65\x54\x6f\x6f\x6c\x43\x61\x6c\x6c':_0x5c73a4,'\x68\x61\x6e\x64\x6c\x65\x41\x73\x73\x69\x73\x74\x61\x6e\x74\x4d\x65\x73\x73\x61\x67\x65':_0x311107};}async function vercelAiTools(_0x4b42bf,_0x33d803={}){const _0x581ac0=a0_0x429239,_0x3b34c4={'\x4b\x6d\x45\x71\x62':function(_0x2b2cfd,_0x2a0380){return _0x2b2cfd(_0x2a0380);},'\x54\x6f\x5a\x72\x62':_0x581ac0(0x141)};let _0x2fb056;try{_0x2fb056=await import('\x61\x69');}catch{throw new Error(_0x3b34c4[_0x581ac0(0x1c6)]);}const _0x18ea2b=selectSpecs(_0x33d803[_0x581ac0(0x187)]),_0x19bd72={'\x62\x6f\x78':_0x4b42bf,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x33d803['\x73\x65\x73\x73\x69\x6f\x6e\x49\x64']},_0x24d718={};for(const _0x5589eb of _0x18ea2b){const _0x11e555=_0x5589eb[_0x581ac0(0x18a)](_0x19bd72);_0x24d718[_0x5589eb[_0x581ac0(0x1e3)]]=_0x2fb056[_0x581ac0(0x185)]({'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x5589eb['\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e'],'\x69\x6e\x70\x75\x74\x53\x63\x68\x65\x6d\x61':_0x2fb056[_0x581ac0(0x1ed)](_0x5589eb[_0x581ac0(0x170)]),'\x65\x78\x65\x63\x75\x74\x65':async _0x5e9c8d=>{const _0x567e06=_0x581ac0;return serializeToolResult(await _0x3b34c4[_0x567e06(0x1b5)](_0x11e555,_0x5e9c8d));}});}return _0x24d718;}export{ALL_FLEET_TOOL_SPECS,ALL_LIFECYCLE_TOOL_SPECS,ALL_TOOL_SPECS,FLEET_TOOL_SPECS,LIFECYCLE_TOOL_SPECS,TOOL_SPECS,anthropicFleetTools,anthropicLifecycleTools,anthropicTools,createMcpServer,mastraFleetTools,mastraTools,openaiFleetTools,openaiLifecycleTools,openaiTools,runCode,vercelAiFleetTools,vercelAiTools};
1
+ import { createRequire } from "node:module";
2
+ /**
3
+ * Keyed registry. `as const` preserves per-tool TArgs/TResult through the
4
+ * type system — `TOOL_SPECS.sandbox_run_code.makeHandler` returns a handler
5
+ * whose args parameter is the runCodeSpec's typed `{language, source, ...}`,
6
+ * not the erased `Record<string, unknown>` that an array-of-ToolSpec loses.
7
+ *
8
+ * Iteration order matches the order entries are declared here (V8 preserves
9
+ * string-key insertion order), so the public surface is stable.
10
+ */
11
+ const TOOL_SPECS = {
12
+ sandbox_run_code: {
13
+ name: "sandbox_run_code",
14
+ description: "Execute code in a persistent language kernel inside the sandbox. Variables persist across calls with the same session. Returns stdout, stderr, exit code, and a typed `results` array containing matplotlib figures (base64 PNG), pandas DataFrames, JSON via display(), or errors. Prefer this over sandbox_exec for any code that needs structured output.",
15
+ inputSchema: {
16
+ type: "object",
17
+ properties: {
18
+ language: {
19
+ type: "string",
20
+ enum: [
21
+ "python",
22
+ "node",
23
+ "typescript",
24
+ "bash"
25
+ ],
26
+ description: "Kernel language."
27
+ },
28
+ source: {
29
+ type: "string",
30
+ description: "Source code to run. Multi-line supported."
31
+ },
32
+ timeout_ms: {
33
+ type: "number",
34
+ description: "Per-call timeout. 0 disables. Default 60000."
35
+ }
36
+ },
37
+ required: ["language", "source"],
38
+ additionalProperties: false
39
+ },
40
+ makeHandler: ({ box, sessionId }) => async (args) => {
41
+ return await box.runCode(args.language, args.source, {
42
+ sessionId,
43
+ timeoutMs: args.timeout_ms
44
+ });
45
+ }
46
+ },
47
+ sandbox_exec: {
48
+ name: "sandbox_exec",
49
+ description: "Run a shell command (no persistent state) in the sandbox. Use for one-shot tasks like 'pnpm install' or 'ls'. For code that should share state across calls, prefer sandbox_run_code with a sessionId.",
50
+ inputSchema: {
51
+ type: "object",
52
+ properties: {
53
+ command: {
54
+ type: "string",
55
+ description: "Shell command line."
56
+ },
57
+ cwd: {
58
+ type: "string",
59
+ description: "Working directory. Optional."
60
+ },
61
+ timeout_ms: {
62
+ type: "number",
63
+ description: "Default 60000."
64
+ }
65
+ },
66
+ required: ["command"],
67
+ additionalProperties: false
68
+ },
69
+ makeHandler: ({ box, sessionId }) => async (args) => {
70
+ return await box.exec(args.command, {
71
+ cwd: args.cwd,
72
+ timeoutMs: args.timeout_ms,
73
+ sessionId
74
+ });
75
+ }
76
+ },
77
+ sandbox_read: {
78
+ name: "sandbox_read",
79
+ description: "Read a file from the sandbox filesystem. Relative paths resolve from the workspace root; absolute paths read the container filesystem directly.",
80
+ inputSchema: {
81
+ type: "object",
82
+ properties: { path: { type: "string" } },
83
+ required: ["path"],
84
+ additionalProperties: false
85
+ },
86
+ makeHandler: ({ box, sessionId }) => async (args) => {
87
+ return { content: await box.read(args.path, { sessionId }) };
88
+ }
89
+ },
90
+ sandbox_write: {
91
+ name: "sandbox_write",
92
+ description: "Write a file in the sandbox. Creates parent directories as needed. Overwrites existing files.",
93
+ inputSchema: {
94
+ type: "object",
95
+ properties: {
96
+ path: { type: "string" },
97
+ content: {
98
+ type: "string",
99
+ description: "Full file contents."
100
+ }
101
+ },
102
+ required: ["path", "content"],
103
+ additionalProperties: false
104
+ },
105
+ makeHandler: ({ box }) => async (args) => {
106
+ await box.write(args.path, args.content);
107
+ return { ok: true };
108
+ }
109
+ },
110
+ sandbox_list: {
111
+ name: "sandbox_list",
112
+ description: "List entries in a directory with size, type, and mode.",
113
+ inputSchema: {
114
+ type: "object",
115
+ properties: { path: { type: "string" } },
116
+ required: ["path"],
117
+ additionalProperties: false
118
+ },
119
+ makeHandler: ({ box }) => async (args) => {
120
+ return { entries: await box.fs.list(args.path) };
121
+ }
122
+ },
123
+ sandbox_search: {
124
+ name: "sandbox_search",
125
+ description: "Ripgrep-style code search. Returns matching lines with surrounding context.",
126
+ inputSchema: {
127
+ type: "object",
128
+ properties: {
129
+ pattern: {
130
+ type: "string",
131
+ description: "Regex pattern."
132
+ },
133
+ path: {
134
+ type: "string",
135
+ description: "Subdirectory to search. Optional."
136
+ },
137
+ max_results: {
138
+ type: "number",
139
+ description: "Cap. Default 100."
140
+ }
141
+ },
142
+ required: ["pattern"],
143
+ additionalProperties: false
144
+ },
145
+ makeHandler: ({ box }) => async (args) => {
146
+ const matches = [];
147
+ const cap = args.max_results ?? 100;
148
+ for await (const m of box.search(args.pattern, {
149
+ cwd: args.path,
150
+ maxResults: cap
151
+ })) {
152
+ matches.push(m);
153
+ if (matches.length >= cap) break;
154
+ }
155
+ return { matches };
156
+ }
157
+ }
158
+ };
159
+ /** Canonical ordered list. Packs use this to emit tools in a stable order. */
160
+ const ALL_TOOL_SPECS = Object.values(TOOL_SPECS);
161
+ /** Pack-side helper: filter the registry by an optional allow-list. */
162
+ function selectSpecs(allow) {
163
+ if (!allow || allow.length === 0) return ALL_TOOL_SPECS;
164
+ const set = new Set(allow);
165
+ return Object.keys(TOOL_SPECS).filter((name) => set.has(name)).map((name) => TOOL_SPECS[name]);
166
+ }
167
+ /**
168
+ * Best-effort serialization of a tool handler's return value into a string
169
+ * tool-result payload. Each pack uses this when its target API expects a
170
+ * string `content` field; packs that support structured content (Anthropic
171
+ * multi-block) can opt out and serialize differently.
172
+ *
173
+ * `CodeExecutionResult` is serialized as JSON because the LLM benefits from
174
+ * seeing the structured results array; images come through as base64 strings
175
+ * which the model can read or hand back to the user.
176
+ */
177
+ function serializeToolResult(value) {
178
+ if (typeof value === "string") return value;
179
+ try {
180
+ return JSON.stringify(value, null, 2);
181
+ } catch {
182
+ return String(value);
183
+ }
184
+ }
185
+ //#endregion
186
+ //#region src/agent/mcp-local.ts
187
+ /**
188
+ * Local MCP (Model Context Protocol) server bridge.
189
+ *
190
+ * `createMcpServer(box, { allow })` returns an MCP `Server` instance wired
191
+ * with the same tool registry the framework packs use. Pair it with a
192
+ * transport (most commonly stdio) and your sandbox becomes a paste-able
193
+ * MCP source for Claude Desktop, Cursor, Zed, or any other MCP client.
194
+ *
195
+ * Complements `box.getMcpEndpoint()` — that returns a hosted HTTPS+JWT MCP
196
+ * URL for users who can expose one; this gives users a fully local server
197
+ * that runs inside their own process.
198
+ *
199
+ * `@modelcontextprotocol/sdk` is dynamically imported (optional peer dep).
200
+ * Install in your app:
201
+ * pnpm add @modelcontextprotocol/sdk
202
+ */
203
+ const SDK_VERSION = (() => {
204
+ try {
205
+ return createRequire(import.meta.url)("../../package.json").version ?? "0.0.0";
206
+ } catch {
207
+ return "0.0.0";
208
+ }
209
+ })();
210
+ /**
211
+ * Build an MCP server backed by one sandbox. The server registers
212
+ * `tools/list` and `tools/call` handlers populated from the same registry
213
+ * the framework packs use.
214
+ *
215
+ * @example
216
+ * ```ts
217
+ * // tangle-mcp-server.ts — used as the command in your MCP client config.
218
+ * import { Sandbox } from "@tangle-network/sandbox";
219
+ * import { createMcpServer } from "@tangle-network/sandbox/agent";
220
+ * import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
221
+ *
222
+ * const client = new Sandbox({ apiKey: process.env.TANGLE_API_KEY });
223
+ * const box = await client.get(process.env.SANDBOX_ID!);
224
+ * const { connect } = await createMcpServer(box, { sessionId: "claude-desktop" });
225
+ * await connect(new StdioServerTransport());
226
+ * ```
227
+ *
228
+ * Claude Desktop config snippet:
229
+ * ```json
230
+ * {
231
+ * "mcpServers": {
232
+ * "tangle-sandbox": {
233
+ * "command": "node",
234
+ * "args": ["./tangle-mcp-server.js"],
235
+ * "env": { "TANGLE_API_KEY": "...", "SANDBOX_ID": "..." }
236
+ * }
237
+ * }
238
+ * }
239
+ * ```
240
+ */
241
+ async function createMcpServer(box, options = {}) {
242
+ let serverModule;
243
+ let typesModule;
244
+ try {
245
+ [serverModule, typesModule] = await Promise.all([import("@modelcontextprotocol/sdk/server/index.js"), import("@modelcontextprotocol/sdk/types.js")]);
246
+ } catch {
247
+ throw new Error("createMcpServer(): the `@modelcontextprotocol/sdk` package is not installed. Install it via `pnpm add @modelcontextprotocol/sdk`.");
248
+ }
249
+ const specs = selectSpecs(options.allow);
250
+ const ctx = {
251
+ box,
252
+ sessionId: options.sessionId
253
+ };
254
+ const handlers = /* @__PURE__ */ new Map();
255
+ for (const spec of specs) handlers.set(spec.name, spec.makeHandler(ctx));
256
+ const server = new serverModule.Server({
257
+ name: options.name ?? "tangle-sandbox",
258
+ version: options.version ?? SDK_VERSION
259
+ }, { capabilities: { tools: {} } });
260
+ server.setRequestHandler(typesModule.ListToolsRequestSchema, async () => ({ tools: specs.map((s) => ({
261
+ name: s.name,
262
+ description: s.description,
263
+ inputSchema: s.inputSchema
264
+ })) }));
265
+ server.setRequestHandler(typesModule.CallToolRequestSchema, async (req) => {
266
+ const r = req;
267
+ const handler = handlers.get(r.params.name);
268
+ if (!handler) return {
269
+ isError: true,
270
+ content: [{
271
+ type: "text",
272
+ text: `Unknown tool: ${r.params.name}`
273
+ }]
274
+ };
275
+ try {
276
+ return { content: [{
277
+ type: "text",
278
+ text: serializeToolResult(await handler(r.params.arguments ?? {}))
279
+ }] };
280
+ } catch (err) {
281
+ return {
282
+ isError: true,
283
+ content: [{
284
+ type: "text",
285
+ text: err instanceof Error ? err.message : String(err)
286
+ }]
287
+ };
288
+ }
289
+ });
290
+ return {
291
+ server,
292
+ connect: (transport) => server.connect(transport),
293
+ close: () => server.close()
294
+ };
295
+ }
296
+ //#endregion
297
+ //#region src/agent/run-code.ts
298
+ /**
299
+ * Functional form of `box.runCode(...)`. Useful when only the function is in
300
+ * scope (e.g., when wiring into a framework tool definition that captures
301
+ * the callable but not the surrounding instance).
302
+ *
303
+ * Identical semantics to {@link SandboxInstance.runCode}.
304
+ */
305
+ function runCode(box, language, source, options) {
306
+ return box.runCode(language, source, options);
307
+ }
308
+ //#endregion
309
+ //#region src/agent/tools/anthropic.ts
310
+ /**
311
+ * Build an Anthropic tool pack bound to one sandbox.
312
+ *
313
+ * @example
314
+ * ```ts
315
+ * import Anthropic from "@anthropic-ai/sdk";
316
+ * import { anthropicTools } from "@tangle-network/sandbox/agent";
317
+ *
318
+ * const claude = new Anthropic();
319
+ * const { tools, handleAssistantMessage } = anthropicTools(box, { sessionId: "s1" });
320
+ *
321
+ * const messages = [{ role: "user", content: "Plot sin(x) for x in [0, 2π]." }];
322
+ * for (let i = 0; i < 6; i++) {
323
+ * const r = await claude.messages.create({
324
+ * model: "claude-opus-4-7",
325
+ * max_tokens: 4096,
326
+ * tools,
327
+ * messages,
328
+ * });
329
+ * messages.push({ role: "assistant", content: r.content });
330
+ * if (r.stop_reason !== "tool_use") break;
331
+ * const results = await handleAssistantMessage(r.content);
332
+ * messages.push({ role: "user", content: results });
333
+ * }
334
+ * ```
335
+ */
336
+ function anthropicTools(box, options = {}) {
337
+ const specs = selectSpecs(options.allow);
338
+ const ctx = {
339
+ box,
340
+ sessionId: options.sessionId
341
+ };
342
+ const handlers = /* @__PURE__ */ new Map();
343
+ for (const spec of specs) handlers.set(spec.name, spec.makeHandler(ctx));
344
+ const tools = specs.map((s) => ({
345
+ name: s.name,
346
+ description: s.description,
347
+ input_schema: s.inputSchema
348
+ }));
349
+ async function handleToolUse(block) {
350
+ const handler = handlers.get(block.name);
351
+ if (!handler) return {
352
+ type: "tool_result",
353
+ tool_use_id: block.id,
354
+ content: `Unknown tool: ${block.name}`,
355
+ is_error: true
356
+ };
357
+ try {
358
+ const result = await handler(block.input);
359
+ return {
360
+ type: "tool_result",
361
+ tool_use_id: block.id,
362
+ content: toAnthropicContent(result)
363
+ };
364
+ } catch (err) {
365
+ return {
366
+ type: "tool_result",
367
+ tool_use_id: block.id,
368
+ content: err instanceof Error ? err.message : String(err),
369
+ is_error: true
370
+ };
371
+ }
372
+ }
373
+ async function handleAssistantMessage(content) {
374
+ const calls = content.filter((b) => typeof b === "object" && b !== null && b.type === "tool_use");
375
+ return Promise.all(calls.map(handleToolUse));
376
+ }
377
+ return {
378
+ tools,
379
+ handleToolUse,
380
+ handleAssistantMessage
381
+ };
382
+ }
383
+ /**
384
+ * Serialize a tool handler's return value into Anthropic content blocks.
385
+ * If the result is a `CodeExecutionResult` carrying image parts, those land
386
+ * as native `image` blocks (base64, no JSON-stringify overhead). Everything
387
+ * else (and the non-image fields of the result) collapses to a single text
388
+ * block via `serializeToolResult` so the model sees a stable shape.
389
+ */
390
+ function toAnthropicContent(value) {
391
+ if (!isCodeExecutionResultWithImages(value)) return serializeToolResult(value);
392
+ const blocks = [];
393
+ const trimmed = {
394
+ ...value,
395
+ results: value.results.filter((p) => p.type !== "image")
396
+ };
397
+ blocks.push({
398
+ type: "text",
399
+ text: serializeToolResult(trimmed)
400
+ });
401
+ for (const p of value.results) if (isImagePart(p)) blocks.push({
402
+ type: "image",
403
+ source: {
404
+ type: "base64",
405
+ media_type: imageMediaType(p.format),
406
+ data: p.data
407
+ }
408
+ });
409
+ return blocks;
410
+ }
411
+ function isImagePart(p) {
412
+ return p.type === "image";
413
+ }
414
+ function isCodeExecutionResultWithImages(v) {
415
+ if (!v || typeof v !== "object") return false;
416
+ const r = v.results;
417
+ if (!Array.isArray(r)) return false;
418
+ return r.some((p) => p && typeof p === "object" && p.type === "image");
419
+ }
420
+ function imageMediaType(format) {
421
+ switch (format) {
422
+ case "png": return "image/png";
423
+ case "jpeg": return "image/jpeg";
424
+ case "svg": return "image/png";
425
+ }
426
+ }
427
+ const FLEET_TOOL_SPECS = {
428
+ sandbox_fleet_spawn: {
429
+ name: "sandbox_fleet_spawn",
430
+ description: "Spawn a fleet of N sandboxes from a template, with a coordinator plus N workers sharing a workspace. Returns the fleet id and the machine ids. Each worker has its own persistent code-execution kernel; the same workspace is mounted across them. COSTS SCALE LINEARLY with `workers`. Use sandbox_fleet_destroy when done.",
431
+ inputSchema: {
432
+ type: "object",
433
+ properties: {
434
+ template_id: {
435
+ type: "string",
436
+ description: "Public template slug or id (e.g. 'python-data-science')."
437
+ },
438
+ workers: {
439
+ type: "number",
440
+ description: "Number of worker sandboxes. Each is billed independently."
441
+ },
442
+ metadata: {
443
+ type: "object",
444
+ properties: {},
445
+ additionalProperties: true,
446
+ description: "Optional metadata stamped on every fleet member."
447
+ }
448
+ },
449
+ required: ["template_id", "workers"],
450
+ additionalProperties: false
451
+ },
452
+ makeHandler: ({ client }) => async (args) => {
453
+ const fleet = await client.fleets.createWithCoordinator({
454
+ defaults: { publicTemplateId: args.template_id },
455
+ workers: Array.from({ length: args.workers }, (_, i) => ({ machineId: `worker-${i}` })),
456
+ metadata: args.metadata
457
+ });
458
+ return {
459
+ fleetId: fleet.fleetId,
460
+ machineIds: fleet.ids
461
+ };
462
+ }
463
+ },
464
+ sandbox_fleet_dispatch: {
465
+ name: "sandbox_fleet_dispatch",
466
+ description: "Run a shell command on a fleet's workers in parallel. Defaults to all workers; pass `machines` to target specific ones. Returns per-machine {ok, result?, error?} entries.",
467
+ inputSchema: {
468
+ type: "object",
469
+ properties: {
470
+ fleet_id: { type: "string" },
471
+ command: {
472
+ type: "string",
473
+ description: "Shell command line."
474
+ },
475
+ machines: {
476
+ type: "array",
477
+ items: { type: "string" },
478
+ description: "Optional subset of machine ids. Defaults to all workers."
479
+ },
480
+ timeout_ms: {
481
+ type: "number",
482
+ description: "Per-machine timeout. Default 60000."
483
+ }
484
+ },
485
+ required: ["fleet_id", "command"],
486
+ additionalProperties: false
487
+ },
488
+ makeHandler: ({ client }) => async (args) => {
489
+ return await (await client.fleets.list({ fleetId: args.fleet_id })).dispatchExec(args.command, {
490
+ machines: args.machines,
491
+ timeoutMs: args.timeout_ms
492
+ });
493
+ }
494
+ },
495
+ sandbox_fleet_status: {
496
+ name: "sandbox_fleet_status",
497
+ description: "List the fleet's machines and their per-machine state (running / stopped / failed) plus last-used timestamps.",
498
+ inputSchema: {
499
+ type: "object",
500
+ properties: { fleet_id: { type: "string" } },
501
+ required: ["fleet_id"],
502
+ additionalProperties: false
503
+ },
504
+ makeHandler: ({ client }) => async (args) => {
505
+ const fleet = await client.fleets.list({ fleetId: args.fleet_id });
506
+ return {
507
+ fleetId: fleet.fleetId,
508
+ machines: fleet.ids.map((machineId) => ({
509
+ machineId,
510
+ status: fleet.get(machineId).status
511
+ }))
512
+ };
513
+ }
514
+ },
515
+ sandbox_fleet_destroy: {
516
+ name: "sandbox_fleet_destroy",
517
+ description: "Delete the fleet and every machine in it. Stops billing immediately. Call this when the campaign is done; orphaned fleets keep burning credits.",
518
+ inputSchema: {
519
+ type: "object",
520
+ properties: {
521
+ fleet_id: { type: "string" },
522
+ continue_on_error: {
523
+ type: "boolean",
524
+ description: "Continue deleting remaining machines if one fails."
525
+ }
526
+ },
527
+ required: ["fleet_id"],
528
+ additionalProperties: false
529
+ },
530
+ makeHandler: ({ client }) => async (args) => {
531
+ await (await client.fleets.list({ fleetId: args.fleet_id })).delete({ continueOnError: args.continue_on_error });
532
+ return {
533
+ fleetId: args.fleet_id,
534
+ deleted: true
535
+ };
536
+ }
537
+ }
538
+ };
539
+ const ALL_FLEET_TOOL_SPECS = Object.values(FLEET_TOOL_SPECS);
540
+ function selectFleetSpecs(allow) {
541
+ if (!allow || allow.length === 0) return ALL_FLEET_TOOL_SPECS;
542
+ const set = new Set(allow);
543
+ return Object.keys(FLEET_TOOL_SPECS).filter((name) => set.has(name)).map((name) => FLEET_TOOL_SPECS[name]);
544
+ }
545
+ //#endregion
546
+ //#region src/agent/tools/fleet/index.ts
547
+ function anthropicFleetTools(client, options = {}) {
548
+ const specs = selectFleetSpecs(options.allow);
549
+ const handlers = buildFleetHandlers(specs, { client });
550
+ return {
551
+ tools: specs.map((s) => ({
552
+ name: s.name,
553
+ description: s.description,
554
+ input_schema: s.inputSchema
555
+ })),
556
+ async handleToolUse(block) {
557
+ const h = handlers.get(block.name);
558
+ if (!h) return {
559
+ type: "tool_result",
560
+ tool_use_id: block.id,
561
+ content: `Unknown fleet tool: ${block.name}`,
562
+ is_error: true
563
+ };
564
+ try {
565
+ const result = await h(block.input);
566
+ return {
567
+ type: "tool_result",
568
+ tool_use_id: block.id,
569
+ content: serializeToolResult(result)
570
+ };
571
+ } catch (err) {
572
+ return {
573
+ type: "tool_result",
574
+ tool_use_id: block.id,
575
+ content: err instanceof Error ? err.message : String(err),
576
+ is_error: true
577
+ };
578
+ }
579
+ }
580
+ };
581
+ }
582
+ function openaiFleetTools(client, options = {}) {
583
+ const specs = selectFleetSpecs(options.allow);
584
+ const handlers = buildFleetHandlers(specs, { client });
585
+ return {
586
+ tools: specs.map((s) => ({
587
+ type: "function",
588
+ function: {
589
+ name: s.name,
590
+ description: s.description,
591
+ parameters: s.inputSchema
592
+ }
593
+ })),
594
+ async handleToolCall(call) {
595
+ const h = handlers.get(call.function.name);
596
+ if (!h) return {
597
+ role: "tool",
598
+ tool_call_id: call.id,
599
+ content: JSON.stringify({ error: `Unknown fleet tool: ${call.function.name}` })
600
+ };
601
+ let args = {};
602
+ try {
603
+ const v = JSON.parse(call.function.arguments || "{}");
604
+ if (v && typeof v === "object") args = v;
605
+ } catch {}
606
+ try {
607
+ const result = await h(args);
608
+ return {
609
+ role: "tool",
610
+ tool_call_id: call.id,
611
+ content: serializeToolResult(result)
612
+ };
613
+ } catch (err) {
614
+ return {
615
+ role: "tool",
616
+ tool_call_id: call.id,
617
+ content: JSON.stringify({ error: err instanceof Error ? err.message : String(err) })
618
+ };
619
+ }
620
+ }
621
+ };
622
+ }
623
+ async function vercelAiFleetTools(client, options = {}) {
624
+ let ai;
625
+ try {
626
+ ai = await import("ai");
627
+ } catch {
628
+ throw new Error("vercelAiFleetTools(): the `ai` package is not installed. Install via `pnpm add ai`.");
629
+ }
630
+ const specs = selectFleetSpecs(options.allow);
631
+ const handlers = buildFleetHandlers(specs, { client });
632
+ const result = {};
633
+ for (const spec of specs) result[spec.name] = ai.tool({
634
+ description: spec.description,
635
+ inputSchema: ai.jsonSchema(spec.inputSchema),
636
+ execute: async (args) => {
637
+ const h = handlers.get(spec.name);
638
+ if (!h) throw new Error(`Unknown fleet tool: ${spec.name}`);
639
+ return serializeToolResult(await h(args));
640
+ }
641
+ });
642
+ return result;
643
+ }
644
+ async function mastraFleetTools(client, options = {}) {
645
+ let mastra;
646
+ try {
647
+ mastra = await import("@mastra/core");
648
+ } catch {
649
+ throw new Error("mastraFleetTools(): the `@mastra/core` package is not installed. Install via `pnpm add @mastra/core`.");
650
+ }
651
+ const specs = selectFleetSpecs(options.allow);
652
+ const handlers = buildFleetHandlers(specs, { client });
653
+ const result = {};
654
+ for (const spec of specs) result[spec.name] = mastra.createTool({
655
+ id: spec.name,
656
+ description: spec.description,
657
+ inputSchema: mastra.jsonSchema ? mastra.jsonSchema(spec.inputSchema) : spec.inputSchema,
658
+ execute: async (input) => {
659
+ const h = handlers.get(spec.name);
660
+ if (!h) throw new Error(`Unknown fleet tool: ${spec.name}`);
661
+ return { result: serializeToolResult(await h(input?.context ?? {})) };
662
+ }
663
+ });
664
+ return result;
665
+ }
666
+ function buildFleetHandlers(specs, ctx) {
667
+ const m = /* @__PURE__ */ new Map();
668
+ for (const spec of specs) m.set(spec.name, spec.makeHandler(ctx));
669
+ return m;
670
+ }
671
+ const LIFECYCLE_TOOL_SPECS = {
672
+ sandbox_create: {
673
+ name: "sandbox_create",
674
+ description: "Create an isolated sandbox environment and return its id for use with sandbox_run_command. Use this when the user needs code executed, files analyzed, or commands run in a secure environment. The sandbox BILLS until destroyed — call sandbox_destroy when the work is done.",
675
+ inputSchema: {
676
+ type: "object",
677
+ properties: {
678
+ environment: {
679
+ type: "string",
680
+ description: "Environment name (e.g. 'universal' for multi-language Node/Python). Default 'universal'."
681
+ },
682
+ name: {
683
+ type: "string",
684
+ description: "Optional display name for the sandbox."
685
+ }
686
+ },
687
+ required: [],
688
+ additionalProperties: false
689
+ },
690
+ makeHandler: ({ client }) => async (args) => {
691
+ const box = await client.create({
692
+ environment: args.environment ?? "universal",
693
+ name: args.name
694
+ });
695
+ return {
696
+ sandboxId: box.id,
697
+ status: box.status
698
+ };
699
+ }
700
+ },
701
+ sandbox_run_command: {
702
+ name: "sandbox_run_command",
703
+ description: "Execute a shell command in a previously created sandbox and return {stdout, stderr, exitCode}. The sandbox must exist — create it first with sandbox_create.",
704
+ inputSchema: {
705
+ type: "object",
706
+ properties: {
707
+ sandbox_id: {
708
+ type: "string",
709
+ description: "Id returned by sandbox_create."
710
+ },
711
+ command: {
712
+ type: "string",
713
+ description: "Shell command line."
714
+ },
715
+ cwd: {
716
+ type: "string",
717
+ description: "Optional working directory for the command."
718
+ },
719
+ timeout_ms: {
720
+ type: "number",
721
+ description: "Timeout in milliseconds. Default 60000."
722
+ }
723
+ },
724
+ required: ["sandbox_id", "command"],
725
+ additionalProperties: false
726
+ },
727
+ makeHandler: ({ client }) => async (args) => {
728
+ const box = await client.get(args.sandbox_id);
729
+ if (!box) throw new Error(`Sandbox ${args.sandbox_id} not found. Create it first with sandbox_create.`);
730
+ const result = await box.exec(args.command, {
731
+ cwd: args.cwd,
732
+ timeoutMs: args.timeout_ms ?? 6e4
733
+ });
734
+ return {
735
+ stdout: result.stdout,
736
+ stderr: result.stderr,
737
+ exitCode: result.exitCode
738
+ };
739
+ }
740
+ },
741
+ sandbox_destroy: {
742
+ name: "sandbox_destroy",
743
+ description: "Delete a sandbox created with sandbox_create. Stops billing immediately. Call this once the sandboxed work is finished; orphaned sandboxes keep accruing cost.",
744
+ inputSchema: {
745
+ type: "object",
746
+ properties: { sandbox_id: {
747
+ type: "string",
748
+ description: "Id returned by sandbox_create."
749
+ } },
750
+ required: ["sandbox_id"],
751
+ additionalProperties: false
752
+ },
753
+ makeHandler: ({ client }) => async (args) => {
754
+ const box = await client.get(args.sandbox_id);
755
+ if (!box) return {
756
+ sandboxId: args.sandbox_id,
757
+ deleted: true
758
+ };
759
+ await box.delete();
760
+ return {
761
+ sandboxId: args.sandbox_id,
762
+ deleted: true
763
+ };
764
+ }
765
+ }
766
+ };
767
+ const ALL_LIFECYCLE_TOOL_SPECS = Object.values(LIFECYCLE_TOOL_SPECS);
768
+ function selectLifecycleSpecs(allow) {
769
+ if (!allow || allow.length === 0) return ALL_LIFECYCLE_TOOL_SPECS;
770
+ const set = new Set(allow);
771
+ return Object.keys(LIFECYCLE_TOOL_SPECS).filter((name) => set.has(name)).map((name) => LIFECYCLE_TOOL_SPECS[name]);
772
+ }
773
+ //#endregion
774
+ //#region src/agent/tools/lifecycle/index.ts
775
+ function anthropicLifecycleTools(client, options = {}) {
776
+ const specs = selectLifecycleSpecs(options.allow);
777
+ const handlers = buildLifecycleHandlers(specs, { client });
778
+ return {
779
+ tools: specs.map((s) => ({
780
+ name: s.name,
781
+ description: s.description,
782
+ input_schema: s.inputSchema
783
+ })),
784
+ async handleToolUse(block) {
785
+ const h = handlers.get(block.name);
786
+ if (!h) return {
787
+ type: "tool_result",
788
+ tool_use_id: block.id,
789
+ content: `Unknown lifecycle tool: ${block.name}`,
790
+ is_error: true
791
+ };
792
+ try {
793
+ const result = await h(block.input);
794
+ return {
795
+ type: "tool_result",
796
+ tool_use_id: block.id,
797
+ content: serializeToolResult(result)
798
+ };
799
+ } catch (err) {
800
+ return {
801
+ type: "tool_result",
802
+ tool_use_id: block.id,
803
+ content: err instanceof Error ? err.message : String(err),
804
+ is_error: true
805
+ };
806
+ }
807
+ }
808
+ };
809
+ }
810
+ function openaiLifecycleTools(client, options = {}) {
811
+ const specs = selectLifecycleSpecs(options.allow);
812
+ const handlers = buildLifecycleHandlers(specs, { client });
813
+ return {
814
+ tools: specs.map((s) => ({
815
+ type: "function",
816
+ function: {
817
+ name: s.name,
818
+ description: s.description,
819
+ parameters: s.inputSchema
820
+ }
821
+ })),
822
+ async handleToolCall(call) {
823
+ const h = handlers.get(call.function.name);
824
+ if (!h) return {
825
+ role: "tool",
826
+ tool_call_id: call.id,
827
+ content: JSON.stringify({ error: `Unknown lifecycle tool: ${call.function.name}` })
828
+ };
829
+ let args = {};
830
+ try {
831
+ const v = JSON.parse(call.function.arguments || "{}");
832
+ if (v && typeof v === "object") args = v;
833
+ } catch {}
834
+ try {
835
+ const result = await h(args);
836
+ return {
837
+ role: "tool",
838
+ tool_call_id: call.id,
839
+ content: serializeToolResult(result)
840
+ };
841
+ } catch (err) {
842
+ return {
843
+ role: "tool",
844
+ tool_call_id: call.id,
845
+ content: JSON.stringify({ error: err instanceof Error ? err.message : String(err) })
846
+ };
847
+ }
848
+ }
849
+ };
850
+ }
851
+ function buildLifecycleHandlers(specs, ctx) {
852
+ const m = /* @__PURE__ */ new Map();
853
+ for (const spec of specs) m.set(spec.name, spec.makeHandler(ctx));
854
+ return m;
855
+ }
856
+ //#endregion
857
+ //#region src/agent/tools/mastra.ts
858
+ /**
859
+ * Build a Mastra tool pack bound to one sandbox.
860
+ *
861
+ * @example
862
+ * ```ts
863
+ * import { Agent } from "@mastra/core/agent";
864
+ * import { mastraTools } from "@tangle-network/sandbox/agent";
865
+ *
866
+ * const tools = await mastraTools(box, { sessionId: "s1" });
867
+ * const agent = new Agent({ name: "coder", instructions: "...", tools });
868
+ * await agent.generate("Plot sin(x).");
869
+ * ```
870
+ */
871
+ async function mastraTools(box, options = {}) {
872
+ let mastra;
873
+ try {
874
+ mastra = await import("@mastra/core");
875
+ } catch {
876
+ throw new Error("mastraTools(): the `@mastra/core` package is not installed. Install it via `pnpm add @mastra/core`.");
877
+ }
878
+ const specs = selectSpecs(options.allow);
879
+ const ctx = {
880
+ box,
881
+ sessionId: options.sessionId
882
+ };
883
+ const result = {};
884
+ for (const spec of specs) {
885
+ const handler = spec.makeHandler(ctx);
886
+ result[spec.name] = mastra.createTool({
887
+ id: spec.name,
888
+ description: spec.description,
889
+ inputSchema: mastra.jsonSchema ? mastra.jsonSchema(spec.inputSchema) : spec.inputSchema,
890
+ execute: async (input) => {
891
+ return { result: serializeToolResult(await handler(input?.context ?? {})) };
892
+ }
893
+ });
894
+ }
895
+ return result;
896
+ }
897
+ //#endregion
898
+ //#region src/agent/tools/openai.ts
899
+ /**
900
+ * Build an OpenAI tool pack bound to one sandbox.
901
+ *
902
+ * @example
903
+ * ```ts
904
+ * import OpenAI from "openai";
905
+ * import { openaiTools } from "@tangle-network/sandbox/agent";
906
+ *
907
+ * const openai = new OpenAI();
908
+ * const { tools, handleAssistantMessage } = openaiTools(box, { sessionId: "s1" });
909
+ *
910
+ * const messages: any[] = [{ role: "user", content: "Plot sin(x) for x in [0, 2π]." }];
911
+ * for (let i = 0; i < 6; i++) {
912
+ * const r = await openai.chat.completions.create({
913
+ * model: "gpt-5.4", tools, messages,
914
+ * });
915
+ * const m = r.choices[0].message;
916
+ * messages.push(m);
917
+ * if (!m.tool_calls?.length) break;
918
+ * messages.push(...(await handleAssistantMessage(m)));
919
+ * }
920
+ * ```
921
+ */
922
+ function openaiTools(box, options = {}) {
923
+ const specs = selectSpecs(options.allow);
924
+ const ctx = {
925
+ box,
926
+ sessionId: options.sessionId
927
+ };
928
+ const handlers = /* @__PURE__ */ new Map();
929
+ for (const spec of specs) handlers.set(spec.name, spec.makeHandler(ctx));
930
+ const tools = specs.map((s) => ({
931
+ type: "function",
932
+ function: {
933
+ name: s.name,
934
+ description: s.description,
935
+ parameters: s.inputSchema
936
+ }
937
+ }));
938
+ function parseArgs(raw) {
939
+ if (!raw) return {};
940
+ try {
941
+ const v = JSON.parse(raw);
942
+ return typeof v === "object" && v !== null ? v : {};
943
+ } catch {
944
+ return {};
945
+ }
946
+ }
947
+ async function handleToolCall(call) {
948
+ const handler = handlers.get(call.function.name);
949
+ if (!handler) return {
950
+ role: "tool",
951
+ tool_call_id: call.id,
952
+ content: JSON.stringify({ error: `Unknown tool: ${call.function.name}` })
953
+ };
954
+ try {
955
+ const result = await handler(parseArgs(call.function.arguments));
956
+ return {
957
+ role: "tool",
958
+ tool_call_id: call.id,
959
+ content: serializeToolResult(result)
960
+ };
961
+ } catch (err) {
962
+ return {
963
+ role: "tool",
964
+ tool_call_id: call.id,
965
+ content: JSON.stringify({ error: err instanceof Error ? err.message : String(err) })
966
+ };
967
+ }
968
+ }
969
+ async function handleAssistantMessage(message) {
970
+ const calls = message.tool_calls ?? [];
971
+ return Promise.all(calls.map(handleToolCall));
972
+ }
973
+ return {
974
+ tools,
975
+ handleToolCall,
976
+ handleAssistantMessage
977
+ };
978
+ }
979
+ //#endregion
980
+ //#region src/agent/tools/vercel-ai.ts
981
+ /**
982
+ * Build a Vercel AI SDK tool pack bound to one sandbox. The returned object
983
+ * is a `Record<toolName, ai.Tool>` ready for `generateText({ tools })`.
984
+ *
985
+ * @example
986
+ * ```ts
987
+ * import { generateText } from "ai";
988
+ * import { anthropic } from "@ai-sdk/anthropic";
989
+ * import { vercelAiTools } from "@tangle-network/sandbox/agent";
990
+ *
991
+ * const tools = await vercelAiTools(box, { sessionId: "s1" });
992
+ * const { text } = await generateText({
993
+ * model: anthropic("claude-opus-4-7"),
994
+ * tools,
995
+ * prompt: "Plot sin(x) for x in [0, 2π].",
996
+ * maxSteps: 6,
997
+ * });
998
+ * ```
999
+ */
1000
+ async function vercelAiTools(box, options = {}) {
1001
+ let ai;
1002
+ try {
1003
+ ai = await import("ai");
1004
+ } catch {
1005
+ throw new Error("vercelAiTools(): the `ai` package is not installed. Install it via `pnpm add ai` (and pick an `@ai-sdk/*` model adapter).");
1006
+ }
1007
+ const specs = selectSpecs(options.allow);
1008
+ const ctx = {
1009
+ box,
1010
+ sessionId: options.sessionId
1011
+ };
1012
+ const result = {};
1013
+ for (const spec of specs) {
1014
+ const handler = spec.makeHandler(ctx);
1015
+ result[spec.name] = ai.tool({
1016
+ description: spec.description,
1017
+ inputSchema: ai.jsonSchema(spec.inputSchema),
1018
+ execute: async (args) => {
1019
+ return serializeToolResult(await handler(args));
1020
+ }
1021
+ });
1022
+ }
1023
+ return result;
1024
+ }
1025
+ //#endregion
1026
+ export { ALL_FLEET_TOOL_SPECS, ALL_LIFECYCLE_TOOL_SPECS, ALL_TOOL_SPECS, FLEET_TOOL_SPECS, LIFECYCLE_TOOL_SPECS, TOOL_SPECS, anthropicFleetTools, anthropicLifecycleTools, anthropicTools, createMcpServer, mastraFleetTools, mastraTools, openaiFleetTools, openaiLifecycleTools, openaiTools, runCode, vercelAiFleetTools, vercelAiTools };