@tangle-network/sandbox 0.9.1 → 0.9.3

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.
package/dist/index.js CHANGED
@@ -1 +1,1180 @@
1
- const a0_0x58aa51=a0_0x7ea0;(function(_0x1b2364,_0x218bab){const _0x2e8fbe=a0_0x7ea0,_0x42bcf3=_0x1b2364();while(!![]){try{const _0x1c9ac8=parseInt(_0x2e8fbe(0x180))/0x1*(parseInt(_0x2e8fbe(0x1f7))/0x2)+parseInt(_0x2e8fbe(0x1c7))/0x3+-parseInt(_0x2e8fbe(0x13b))/0x4+parseInt(_0x2e8fbe(0x18b))/0x5+-parseInt(_0x2e8fbe(0x118))/0x6+parseInt(_0x2e8fbe(0x196))/0x7*(-parseInt(_0x2e8fbe(0x1f2))/0x8)+parseInt(_0x2e8fbe(0xff))/0x9;if(_0x1c9ac8===_0x218bab)break;else _0x42bcf3['push'](_0x42bcf3['shift']());}catch(_0x2336cc){_0x42bcf3['push'](_0x42bcf3['shift']());}}}(a0_0x1d60,0x793ca));import{a as a0_0x430f17,c as a0_0x47786e,d as a0_0x2e0597,h as a0_0x1e349c,i as a0_0x3b3faf,l as a0_0x10a40e,m as a0_0xb68920,n as a0_0x3535bc,o as a0_0x41982e,p as a0_0x58a498,r as a0_0x463cc5,t as a0_0x142ee6,u as a0_0xef8f38}from'\x2e\x2f\x73\x61\x6e\x64\x62\x6f\x78\x2d\x43\x66\x75\x78\x74\x42\x65\x44\x2e\x6a\x73';import{a as a0_0x511992,c as a0_0x150bd8,d as a0_0x423028,i as a0_0x513ab4,l as a0_0x4e8ecb,n as a0_0x55474e,o as a0_0x44ead1,r as a0_0x10debf,s as a0_0x33a7a5,t as a0_0x201f02,u as a0_0x2a755a}from'\x2e\x2f\x65\x72\x72\x6f\x72\x73\x2d\x44\x5a\x73\x66\x4a\x55\x75\x63\x2e\x6a\x73';import{a as a0_0x30fe18,c as a0_0x4fa2dc,i as a0_0x49b40a,l as a0_0x37a08a,n as a0_0xc7c26,o as a0_0xc5989d,r as a0_0x370d64,s as a0_0x18c01e,t as a0_0x23509f}from'\x2e\x2f\x63\x6c\x69\x65\x6e\x74\x2d\x42\x5a\x6e\x30\x73\x7a\x75\x38\x2e\x6a\x73';import{a as a0_0xadf879,i as a0_0x15079e,n as a0_0x91cd09,r as a0_0x73b65d,t as a0_0x290064}from'\x2e\x2f\x63\x6f\x6c\x6c\x61\x62\x6f\x72\x61\x74\x69\x6f\x6e\x2d\x42\x78\x6c\x66\x5a\x32\x55\x68\x2e\x6a\x73';import{t as a0_0xdb590b}from'\x2e\x2f\x74\x61\x6e\x67\x6c\x65\x2d\x44\x62\x58\x33\x32\x72\x2d\x35\x2e\x6a\x73';import{defineAgentProfile,defineGitHubResource,defineInlineResource,mergeAgentProfiles}from'\x40\x74\x61\x6e\x67\x6c\x65\x2d\x6e\x65\x74\x77\x6f\x72\x6b\x2f\x61\x67\x65\x6e\x74\x2d\x69\x6e\x74\x65\x72\x66\x61\x63\x65';function generateAttestationNonce(_0x32af0a=0x20){const _0x4289c0=a0_0x7ea0,_0x388b49={'\x43\x79\x7a\x48\x4d':function(_0x43fe2a,_0x4ff510){return _0x43fe2a===_0x4ff510;},'\x6b\x43\x4f\x41\x71':'\x53\x65\x63\x75\x72\x65\x20\x72\x61\x6e\x64\x6f\x6d\x20\x6e\x6f\x6e\x63\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65'},_0x7e2600=new Uint8Array(_0x32af0a);if(typeof globalThis[_0x4289c0(0x1b9)]!==_0x4289c0(0x1de)&&_0x388b49[_0x4289c0(0x139)](typeof globalThis['\x63\x72\x79\x70\x74\x6f'][_0x4289c0(0x13c)],_0x4289c0(0x161)))globalThis[_0x4289c0(0x1b9)][_0x4289c0(0x13c)](_0x7e2600);else throw new Error(_0x388b49[_0x4289c0(0x188)]);return Array[_0x4289c0(0x1c9)](_0x7e2600)[_0x4289c0(0x215)](_0x2b6dcd=>_0x2b6dcd['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10)[_0x4289c0(0x16f)](0x2,'\x30'))[_0x4289c0(0x14f)]('');}async function createConfidentialSandbox(_0x4854a5,_0x52a240){const _0x320aae=a0_0x7ea0,_0x20c073={'\x65\x7a\x66\x70\x71':function(_0x58cc9c,_0x37a24a){return _0x58cc9c===_0x37a24a;},'\x45\x79\x52\x4a\x70':_0x320aae(0x1bd),'\x54\x5a\x55\x64\x6d':function(_0x4a2d4b,_0x273a0c){return _0x4a2d4b(_0x273a0c);},'\x4e\x4b\x6a\x74\x4b':_0x320aae(0x111)},_0x3779a0=_0x20c073[_0x320aae(0xb8)](_0x52a240['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65'],_0x20c073[_0x320aae(0x103)])||_0x52a240[_0x320aae(0xd5)]&&!_0x52a240[_0x320aae(0x114)]&&!_0x52a240[_0x320aae(0x1b8)][_0x320aae(0x114)]?generateAttestationNonce():_0x52a240[_0x320aae(0x114)]??_0x52a240[_0x320aae(0x1b8)][_0x320aae(0x114)],_0x3e5fea=await _0x4854a5[_0x320aae(0x173)]({..._0x52a240,'\x63\x6f\x6e\x66\x69\x64\x65\x6e\x74\x69\x61\x6c':{..._0x52a240[_0x320aae(0x1b8)],..._0x3779a0?{'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x3779a0}:{},'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x52\x65\x66\x72\x65\x73\x68':_0x52a240['\x63\x6f\x6e\x66\x69\x64\x65\x6e\x74\x69\x61\x6c'][_0x320aae(0x11b)]||_0x20c073[_0x320aae(0x174)](Boolean,_0x3779a0)}});let _0x217690=attestationFromMetadata(_0x3e5fea[_0x320aae(0xd4)]);if(!_0x217690)try{_0x217690=(await _0x3e5fea[_0x320aae(0x20f)](_0x3779a0?{'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x3779a0}:void 0x0))[_0x320aae(0xb1)];}catch(_0x55e4b5){if(_0x52a240[_0x320aae(0xd5)])throw _0x55e4b5;}if(_0x52a240['\x72\x65\x71\x75\x69\x72\x65\x41\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e']&&!_0x217690)throw new Error(_0x20c073['\x4e\x4b\x6a\x74\x4b']);return{'\x73\x61\x6e\x64\x62\x6f\x78':_0x3e5fea,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e':_0x217690,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x3779a0};}function attestationFromMetadata(_0x30400d){const _0x1ebf19=a0_0x7ea0,_0x5a2ad5={'\x70\x5a\x5a\x50\x6f':_0x1ebf19(0xd3),'\x65\x50\x6c\x58\x7a':function(_0x2f1ec9,_0x42f162){return _0x2f1ec9===_0x42f162;}},_0x5c8ab2=_0x30400d?.['\x74\x65\x65\x41\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4a\x73\x6f\x6e'];if(typeof _0x5c8ab2!==_0x5a2ad5['\x70\x5a\x5a\x50\x6f']||_0x5a2ad5[_0x1ebf19(0x1ca)](_0x5c8ab2[_0x1ebf19(0xfb)](),''))return void 0x0;try{return JSON['\x70\x61\x72\x73\x65'](_0x5c8ab2);}catch{return;}}function startTeeAttestationHeartbeat(_0x29f0f8,_0x5e6b93={}){const _0x2f570f=a0_0x7ea0,_0x3371bb={'\x79\x4a\x6b\x7a\x64':_0x2f570f(0x168),'\x57\x49\x4f\x62\x57':function(_0x4caae5){return _0x4caae5();},'\x42\x6e\x72\x77\x55':function(_0x24c4ba){return _0x24c4ba();},'\x6a\x6e\x75\x52\x56':function(_0x156d41){return _0x156d41();},'\x41\x6e\x68\x62\x6e':'\x61\x62\x6f\x72\x74','\x50\x56\x70\x57\x4e':function(_0x24ba61,_0xf10d3b){return _0x24ba61===_0xf10d3b;}},_0x4c4c66=_0x5e6b93[_0x2f570f(0xb4)]??0xea60;let _0x48e2fa=![],_0x2344c5=0x0,_0x1f69f9=0x0,_0x534405,_0xc0fb45,_0xadd15a;const _0x4928d7=new Promise(_0x2b48a6=>{_0xadd15a=_0x2b48a6;}),_0x14b6f7=()=>{if(_0x48e2fa)return;_0x48e2fa=!![];if(_0xc0fb45)clearTimeout(_0xc0fb45);_0xadd15a?.();},_0x27ea0a=async()=>{const _0x4452c3=_0x2f570f;if(_0x48e2fa||_0x5e6b93['\x73\x69\x67\x6e\x61\x6c']?.[_0x4452c3(0x1d0)])throw new Error(_0x3371bb['\x79\x4a\x6b\x7a\x64']);const _0x4e6652=generateAttestationNonce(),_0xdacd1=await _0x29f0f8['\x67\x65\x74\x54\x65\x65\x41\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e']({'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x4e6652});if(_0xdacd1['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65']&&_0xdacd1[_0x4452c3(0x114)]!==_0x4e6652)throw new Error('\x54\x45\x45\x20\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x6e\x6f\x6e\x63\x65\x20\x64\x69\x64\x20\x6e\x6f\x74\x20\x6d\x61\x74\x63\x68\x20\x63\x68\x61\x6c\x6c\x65\x6e\x67\x65');const _0xc524eb={'\x73\x65\x71\x75\x65\x6e\x63\x65':++_0x1f69f9,'\x6e\x6f\x6e\x63\x65':_0x4e6652,'\x72\x65\x73\x70\x6f\x6e\x73\x65':{..._0xdacd1,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0xdacd1[_0x4452c3(0x114)]??_0x4e6652},'\x63\x68\x65\x63\x6b\x65\x64\x41\x74':new Date()};return await _0x5e6b93['\x76\x65\x72\x69\x66\x79']?.(_0xc524eb),_0x534405=_0xc524eb,_0x5e6b93[_0x4452c3(0x19f)]?.(_0xc524eb),_0xc524eb;},_0x336578=()=>{const _0x1e5926=_0x2f570f;if(_0x48e2fa||_0x5e6b93['\x73\x69\x67\x6e\x61\x6c']?.[_0x1e5926(0x1d0)]){_0x3371bb[_0x1e5926(0x197)](_0x14b6f7);return;}_0xc0fb45=setTimeout(()=>{_0x3371bb['\x57\x49\x4f\x62\x57'](_0x4ecb9c);},_0x4c4c66);},_0x4ecb9c=async()=>{const _0x4e5019=_0x2f570f;try{await _0x3371bb['\x6a\x6e\x75\x52\x56'](_0x27ea0a),_0x336578();}catch(_0x498f87){_0x2344c5+=0x1,_0x5e6b93['\x6f\x6e\x46\x61\x69\x6c\x75\x72\x65']?.(_0x498f87);if(_0x5e6b93[_0x4e5019(0xaa)])_0x3371bb['\x6a\x6e\x75\x52\x56'](_0x336578);else _0x14b6f7();}};_0x5e6b93['\x73\x69\x67\x6e\x61\x6c']?.[_0x2f570f(0x1ea)](_0x3371bb[_0x2f570f(0x1ec)],_0x14b6f7,{'\x6f\x6e\x63\x65':!![]});if(_0x3371bb[_0x2f570f(0xd8)](_0x5e6b93['\x69\x6d\x6d\x65\x64\x69\x61\x74\x65'],![]))_0x336578();else _0x3371bb[_0x2f570f(0x1b5)](_0x4ecb9c);return{'\x73\x74\x6f\x70':_0x14b6f7,'\x70\x69\x6e\x67':_0x27ea0a,get '\x73\x74\x6f\x70\x70\x65\x64'(){return _0x48e2fa;},get '\x66\x61\x69\x6c\x75\x72\x65\x73'(){return _0x2344c5;},get '\x6c\x61\x74\x65\x73\x74'(){return _0x534405;},'\x64\x6f\x6e\x65':_0x4928d7};}function isFetchClient(_0x9464b8){const _0x1912b5=a0_0x7ea0;return typeof _0x9464b8[_0x1912b5(0xb2)]===_0x1912b5(0x161);}function requestImageBuild(_0x520c93,_0x2917dd){const _0x2a15b0=a0_0x7ea0,_0x45d26f={'\x61\x49\x4e\x76\x75':_0x2a15b0(0x1c1)};if(isFetchClient(_0x520c93))return _0x520c93['\x66\x65\x74\x63\x68']('\x2f\x76\x31\x2f\x69\x6d\x61\x67\x65\x73',_0x2917dd);const _0x4af3e5=new Headers(_0x2917dd[_0x2a15b0(0x186)]);return _0x4af3e5[_0x2a15b0(0xd2)](_0x45d26f['\x61\x49\x4e\x76\x75'],_0x2a15b0(0x129)+_0x520c93[_0x2a15b0(0xbd)]),fetch(_0x520c93[_0x2a15b0(0x16d)][_0x2a15b0(0x102)](/\/+$/,'')+_0x2a15b0(0x20b),{..._0x2917dd,'\x68\x65\x61\x64\x65\x72\x73':_0x4af3e5});}var Image=class Image{constructor(_0x1339fc,_0x389842,_0xa79e7a,_0x5972e0){const _0x441050=a0_0x7ea0;this['\x69\x64']=_0x1339fc,this['\x74\x61\x67']=_0x389842,this[_0x441050(0xcb)]=_0xa79e7a,this[_0x441050(0x14a)]=_0x5972e0;}static[a0_0x58aa51(0x173)](_0x216fa7=a0_0x58aa51(0x1fb)){return new ImageBuilder({'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x216fa7});}static[a0_0x58aa51(0x1d7)](_0x4d9334){const _0x3847e5=a0_0x58aa51;return new Image(_0x4d9334,_0x4d9334[_0x3847e5(0x1c4)](_0x3847e5(0x20c))?_0x3847e5(0x1d3)+_0x4d9334['\x73\x6c\x69\x63\x65'](0x7,0x13):_0x4d9334,_0x4d9334);}static[a0_0x58aa51(0x9f)](_0x48f374,_0x5d2e6e){const _0x351a2f=a0_0x58aa51;return new ImageBuilder({'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x351a2f(0x143),'\x64\x6f\x63\x6b\x65\x72\x66\x69\x6c\x65':_0x48f374,'\x64\x6f\x63\x6b\x65\x72\x43\x6f\x6e\x74\x65\x78\x74':_0x5d2e6e||'\x2e'});}static[a0_0x58aa51(0x1da)](_0x255283){const _0x2992e7=a0_0x58aa51;return new Image(_0x255283['\x69\x64'],_0x255283[_0x2992e7(0x198)],_0x255283[_0x2992e7(0xcb)],_0x255283['\x73\x70\x65\x63']);}['\x74\x6f\x4a\x53\x4f\x4e'](){const _0x5262b7=a0_0x58aa51;return{'\x69\x64':this['\x69\x64'],'\x74\x61\x67':this['\x74\x61\x67'],'\x64\x69\x67\x65\x73\x74':this[_0x5262b7(0xcb)],'\x73\x70\x65\x63':this[_0x5262b7(0x14a)]};}},ImageBuilder=class{[a0_0x58aa51(0x14a)];[a0_0x58aa51(0x134)];constructor(_0x34341d){const _0x141d7c=a0_0x58aa51,_0x44e522={'\x65\x6f\x41\x48\x4f':_0x141d7c(0x1fb)};this[_0x141d7c(0x14a)]={'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x34341d['\x62\x61\x73\x65\x49\x6d\x61\x67\x65']||_0x44e522[_0x141d7c(0x1b6)],..._0x34341d};}['\x70\x79\x74\x68\x6f\x6e'](_0x44a3f2){const _0x4e2a1f=a0_0x58aa51;return this[_0x4e2a1f(0x14a)]['\x70\x79\x74\x68\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e']=_0x44a3f2,this;}['\x61\x64\x64\x50\x61\x63\x6b\x61\x67\x65\x73'](_0x3832ac){const _0x42b2a7=a0_0x58aa51;return this['\x73\x70\x65\x63'][_0x42b2a7(0xeb)]=[...this[_0x42b2a7(0x14a)]['\x70\x61\x63\x6b\x61\x67\x65\x73']||[],..._0x3832ac],this;}[a0_0x58aa51(0xf0)](_0x552632){const _0x66cccc=a0_0x58aa51;return this[_0x66cccc(0x14a)][_0x66cccc(0x164)]=[...this[_0x66cccc(0x14a)][_0x66cccc(0x164)]||[],_0x66cccc(0x123)+_0x552632],this;}[a0_0x58aa51(0xbc)](_0x10f245){const _0x5ebd67=a0_0x58aa51;return this['\x73\x70\x65\x63']['\x63\x6f\x6d\x6d\x61\x6e\x64\x73']=[...this[_0x5ebd67(0x14a)][_0x5ebd67(0x164)]||[],..._0x10f245],this;}[a0_0x58aa51(0x1a5)](_0x1a31a5){const _0x19ff5b=a0_0x58aa51;return this[_0x19ff5b(0x14a)][_0x19ff5b(0x19b)]=[...this[_0x19ff5b(0x14a)][_0x19ff5b(0x19b)]||[],..._0x1a31a5],this;}[a0_0x58aa51(0xfd)](_0x4d315d){const _0x398f69=a0_0x58aa51;return this[_0x398f69(0x14a)]['\x65\x6e\x76']={...this['\x73\x70\x65\x63']['\x65\x6e\x76'],..._0x4d315d},this;}[a0_0x58aa51(0x11d)](_0x16b3e0){const _0x5591c4=a0_0x58aa51;return this[_0x5591c4(0x14a)][_0x5591c4(0xa1)]=[...this['\x73\x70\x65\x63'][_0x5591c4(0xa1)]||[],..._0x16b3e0],this;}[a0_0x58aa51(0x145)](_0x5a99a9,_0x535a72){const _0x2874ac=a0_0x58aa51;return this[_0x2874ac(0x14a)][_0x2874ac(0x145)]={'\x70\x61\x63\x6b\x61\x67\x65\x73':[...this[_0x2874ac(0x14a)]['\x63\x6f\x6e\x64\x61']?.[_0x2874ac(0xeb)]||[],..._0x5a99a9],'\x63\x68\x61\x6e\x6e\x65\x6c\x73':_0x535a72||this['\x73\x70\x65\x63'][_0x2874ac(0x145)]?.[_0x2874ac(0xb6)]||['\x63\x6f\x6e\x64\x61\x2d\x66\x6f\x72\x67\x65']},this;}[a0_0x58aa51(0x205)](_0x26e1d8){const _0x4ee877=a0_0x58aa51;return this[_0x4ee877(0x14a)]['\x77\x6f\x72\x6b\x64\x69\x72']=_0x26e1d8,this;}['\x75\x73\x65\x72'](_0x220413){const _0x2b39ee=a0_0x58aa51;return this[_0x2b39ee(0x14a)]['\x75\x73\x65\x72']=_0x220413,this;}[a0_0x58aa51(0x1a8)](_0x2a7442){const _0x2119d7=a0_0x58aa51;return this[_0x2119d7(0x14a)][_0x2119d7(0x1a8)]={...this[_0x2119d7(0x14a)][_0x2119d7(0x1a8)],..._0x2a7442},this;}[a0_0x58aa51(0x112)](_0x169a21){const _0x64b655=a0_0x58aa51;return this[_0x64b655(0x14a)][_0x64b655(0x112)]={...this[_0x64b655(0x14a)][_0x64b655(0x112)],..._0x169a21},this;}[a0_0x58aa51(0x1fc)](){return{...this['\x73\x70\x65\x63']};}async[a0_0x58aa51(0xc5)](){const _0x56c496=a0_0x58aa51,_0x2e8e2f={'\x4f\x66\x4c\x63\x72':_0x56c496(0x127),'\x59\x58\x59\x63\x57':'\x6e\x6f\x64\x65\x3a\x63\x72\x79\x70\x74\x6f','\x5a\x4c\x6c\x4b\x45':'\x68\x65\x78'},_0x497fb0=JSON[_0x56c496(0xdf)](this['\x73\x70\x65\x63'],Object[_0x56c496(0x16b)](this[_0x56c496(0x14a)])[_0x56c496(0xf2)]()),_0x2e51be=globalThis[_0x56c496(0x1b9)]?.['\x73\x75\x62\x74\x6c\x65'];if(_0x2e51be){const _0x349f68=await _0x2e51be[_0x56c496(0xcb)](_0x2e8e2f[_0x56c496(0x172)],new TextEncoder()[_0x56c496(0x101)](_0x497fb0));return Array[_0x56c496(0x1c9)](new Uint8Array(_0x349f68))[_0x56c496(0x215)](_0x43e47d=>_0x43e47d[_0x56c496(0xb0)](0x10)['\x70\x61\x64\x53\x74\x61\x72\x74'](0x2,'\x30'))['\x6a\x6f\x69\x6e']('');}const {createHash:_0x312c0c}=await import(_0x2e8e2f[_0x56c496(0x18a)]);return _0x312c0c(_0x56c496(0x18d))[_0x56c496(0x104)](_0x497fb0)[_0x56c496(0xcb)](_0x2e8e2f[_0x56c496(0xf8)]);}[a0_0x58aa51(0x144)](_0x51099f){return this['\x63\x6c\x69\x65\x6e\x74\x43\x6f\x6e\x66\x69\x67']=_0x51099f,this;}async[a0_0x58aa51(0xf3)](_0x4f6995){const _0x53ec48=a0_0x58aa51,_0x52b3f0={'\x79\x56\x46\x4e\x54':function(_0x33c3bc,_0x28ff90){return _0x33c3bc>_0x28ff90;},'\x55\x43\x51\x78\x50':function(_0x24eac3,_0x398931,_0x525058){return _0x24eac3(_0x398931,_0x525058);},'\x4b\x5a\x66\x78\x50':_0x53ec48(0x106),'\x67\x53\x42\x54\x70':function(_0x5e7b28,_0x3c1bcf){return _0x5e7b28===_0x3c1bcf;},'\x75\x41\x75\x75\x5a':_0x53ec48(0xc2),'\x73\x6b\x74\x53\x44':function(_0x1a71fe,_0x58651e){return _0x1a71fe(_0x58651e);},'\x69\x54\x6b\x72\x65':'\x49\x6d\x61\x67\x65\x20\x62\x75\x69\x6c\x64\x20\x66\x61\x69\x6c\x65\x64'},_0x3b4d83=_0x4f6995?.[_0x53ec48(0xd1)]||this[_0x53ec48(0x134)];if(!_0x3b4d83)throw new Error(_0x53ec48(0x138));const _0x1bbc2c=_0x4f6995?.[_0x53ec48(0x119)]??0x927c0,_0x45a319=_0x52b3f0[_0x53ec48(0xb3)](_0x1bbc2c,0x0)?new AbortController():void 0x0,_0x17b117=_0x45a319?setTimeout(()=>_0x45a319[_0x53ec48(0x108)](),_0x1bbc2c):void 0x0;let _0xd388ad;try{_0xd388ad=await _0x52b3f0[_0x53ec48(0x11c)](requestImageBuild,_0x3b4d83,{'\x6d\x65\x74\x68\x6f\x64':_0x53ec48(0x211),'\x68\x65\x61\x64\x65\x72\x73':{'\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65':_0x53ec48(0xb7)},'\x73\x69\x67\x6e\x61\x6c':_0x45a319?.[_0x53ec48(0x1df)],'\x62\x6f\x64\x79':JSON[_0x53ec48(0xdf)]({'\x73\x70\x65\x63':this['\x73\x70\x65\x63'],'\x6f\x70\x74\x69\x6f\x6e\x73':{'\x6e\x6f\x43\x61\x63\x68\x65':_0x4f6995?.[_0x53ec48(0xf7)],'\x70\x6c\x61\x74\x66\x6f\x72\x6d':_0x4f6995?.[_0x53ec48(0xa2)],'\x74\x61\x67':_0x4f6995?.[_0x53ec48(0x198)],'\x73\x74\x72\x65\x61\x6d':!!_0x4f6995?.[_0x53ec48(0xfe)]}})});if(!_0xd388ad['\x6f\x6b']){const _0x2f4844=await _0xd388ad[_0x53ec48(0x21b)]();throw new Error(_0x53ec48(0x10a)+_0x2f4844);}if(_0x4f6995?.['\x6f\x6e\x50\x72\x6f\x67\x72\x65\x73\x73']&&_0xd388ad[_0x53ec48(0x186)][_0x53ec48(0x1d9)](_0x53ec48(0x17b))?.['\x69\x6e\x63\x6c\x75\x64\x65\x73'](_0x53ec48(0x1d4))){let _0x3d7b9f;for await(const _0xae3a15 of a0_0x58a498(_0xd388ad['\x62\x6f\x64\x79'],{'\x73\x69\x67\x6e\x61\x6c':_0x45a319?.[_0x53ec48(0x1df)]})){const _0x4eeaa3=_0xae3a15[_0x53ec48(0x184)];if(_0x4eeaa3[_0x53ec48(0x1e1)]===_0x52b3f0[_0x53ec48(0x1f1)])_0x4f6995[_0x53ec48(0xfe)](_0x4eeaa3[_0x53ec48(0x1f9)]);else{if(_0x52b3f0[_0x53ec48(0xf1)](_0x4eeaa3[_0x53ec48(0x1e1)],'\x63\x6f\x6d\x70\x6c\x65\x74\x65')){const _0x16d733=_0x4eeaa3[_0x53ec48(0x10c)];_0x3d7b9f={..._0x16d733,'\x63\x72\x65\x61\x74\x65\x64\x41\x74':new Date(_0x16d733[_0x53ec48(0x1ab)])};}else{if(_0x4eeaa3[_0x53ec48(0x1e1)]===_0x52b3f0[_0x53ec48(0xe0)])throw new Error(_0x52b3f0[_0x53ec48(0xf5)](String,_0x4eeaa3[_0x53ec48(0xd6)]??_0x52b3f0[_0x53ec48(0x1b0)]));}}}if(!_0x3d7b9f)throw new Error(_0x53ec48(0xf9));return Image[_0x53ec48(0x1da)](_0x3d7b9f);}const _0x204580=await _0xd388ad[_0x53ec48(0xae)](),_0x1a8994={..._0x204580,'\x63\x72\x65\x61\x74\x65\x64\x41\x74':new Date(_0x204580['\x63\x72\x65\x61\x74\x65\x64\x41\x74'])};return Image['\x66\x72\x6f\x6d\x42\x75\x69\x6c\x64\x52\x65\x73\x75\x6c\x74'](_0x1a8994);}catch(_0x3a77c8){if(_0x45a319?.[_0x53ec48(0x1df)][_0x53ec48(0x1d0)])throw new Error(_0x53ec48(0x201)+_0x1bbc2c+'\x6d\x73');throw _0x3a77c8;}finally{if(_0x17b117)clearTimeout(_0x17b117);}}['\x67\x65\x6e\x65\x72\x61\x74\x65\x44\x6f\x63\x6b\x65\x72\x66\x69\x6c\x65'](){return generateDockerfile(this['\x73\x70\x65\x63']);}};function generateDockerfile(_0x28d4bb){const _0x29f1d4=a0_0x58aa51,_0x5026d6={'\x4b\x75\x50\x52\x4a':_0x29f1d4(0x179),'\x66\x7a\x67\x42\x76':'\x20\x20\x20\x20\x61\x70\x74\x2d\x67\x65\x74\x20\x63\x6c\x65\x61\x6e\x20\x26\x26\x20\x72\x6d\x20\x2d\x72\x66\x20\x2f\x76\x61\x72\x2f\x6c\x69\x62\x2f\x61\x70\x74\x2f\x6c\x69\x73\x74\x73\x2f\x2a','\x77\x54\x78\x69\x63':_0x29f1d4(0xe2),'\x72\x69\x72\x61\x51':_0x29f1d4(0x213),'\x41\x5a\x6b\x62\x70':_0x29f1d4(0x212),'\x79\x5a\x58\x4a\x43':_0x29f1d4(0x117),'\x58\x72\x62\x73\x77':_0x29f1d4(0x126),'\x6d\x48\x73\x5a\x47':_0x29f1d4(0x107),'\x64\x4b\x6e\x41\x50':_0x29f1d4(0x169),'\x55\x6b\x59\x48\x6d':_0x29f1d4(0x1b4)},_0x3ad375=[];_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x1b1)+_0x28d4bb[_0x29f1d4(0x1be)]),_0x3ad375[_0x29f1d4(0x221)]('');if(_0x28d4bb['\x6c\x61\x62\x65\x6c\x73']&&Object[_0x29f1d4(0x16b)](_0x28d4bb['\x6c\x61\x62\x65\x6c\x73'])[_0x29f1d4(0xad)]>0x0){for(const [_0x4b355c,_0x3bac67]of Object[_0x29f1d4(0xfa)](_0x28d4bb[_0x29f1d4(0x112)]))_0x3ad375[_0x29f1d4(0x221)]('\x4c\x41\x42\x45\x4c\x20'+_0x4b355c+'\x3d\x22'+_0x3bac67+'\x22');_0x3ad375[_0x29f1d4(0x221)]('');}if(_0x28d4bb['\x62\x75\x69\x6c\x64\x41\x72\x67\x73']&&Object['\x6b\x65\x79\x73'](_0x28d4bb[_0x29f1d4(0x1a8)])[_0x29f1d4(0xad)]>0x0){for(const [_0x52a539,_0x136509]of Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x28d4bb[_0x29f1d4(0x1a8)]))_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x148)+_0x52a539+'\x3d'+_0x136509);_0x3ad375['\x70\x75\x73\x68']('');}if(_0x28d4bb[_0x29f1d4(0x1f0)]&&Object[_0x29f1d4(0x16b)](_0x28d4bb[_0x29f1d4(0x1f0)])[_0x29f1d4(0xad)]>0x0){for(const [_0x203954,_0x107fe5]of Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x28d4bb['\x65\x6e\x76']))_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x128)+_0x203954+'\x3d\x22'+_0x107fe5+'\x22');_0x3ad375['\x70\x75\x73\x68']('');}_0x28d4bb[_0x29f1d4(0x205)]&&(_0x3ad375[_0x29f1d4(0x221)]('\x57\x4f\x52\x4b\x44\x49\x52\x20'+_0x28d4bb[_0x29f1d4(0x205)]),_0x3ad375[_0x29f1d4(0x221)](''));_0x28d4bb[_0x29f1d4(0x19b)]&&_0x28d4bb[_0x29f1d4(0x19b)][_0x29f1d4(0xad)]>0x0&&(_0x3ad375['\x70\x75\x73\x68'](_0x29f1d4(0x1ff)),_0x3ad375[_0x29f1d4(0x221)](_0x5026d6[_0x29f1d4(0x1a3)]),_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0xb5)+_0x28d4bb[_0x29f1d4(0x19b)][_0x29f1d4(0x14f)]('\x20')+_0x29f1d4(0x1ae)),_0x3ad375[_0x29f1d4(0x221)](_0x5026d6[_0x29f1d4(0x185)]),_0x3ad375[_0x29f1d4(0x221)](''));if(_0x28d4bb[_0x29f1d4(0x13d)]){_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0xbe)+_0x28d4bb[_0x29f1d4(0x13d)]);if(!(_0x28d4bb[_0x29f1d4(0x1be)][_0x29f1d4(0x21e)](_0x29f1d4(0x124))||_0x28d4bb['\x62\x61\x73\x65\x49\x6d\x61\x67\x65'][_0x29f1d4(0x21e)](_0x5026d6['\x77\x54\x78\x69\x63'])||_0x28d4bb[_0x29f1d4(0x1be)][_0x29f1d4(0x21e)](_0x29f1d4(0xca)))&&_0x28d4bb['\x62\x61\x73\x65\x49\x6d\x61\x67\x65'][_0x29f1d4(0x21e)](_0x5026d6[_0x29f1d4(0x203)])){const _0x763cdf=_0x5026d6[_0x29f1d4(0x155)]['\x73\x70\x6c\x69\x74']('\x7c');let _0x4f45bb=0x0;while(!![]){switch(_0x763cdf[_0x4f45bb++]){case'\x30':_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x19e));continue;case'\x31':_0x3ad375['\x70\x75\x73\x68']('\x20\x20\x20\x20\x75\x70\x64\x61\x74\x65\x2d\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x73\x20\x2d\x2d\x69\x6e\x73\x74\x61\x6c\x6c\x20\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x79\x74\x68\x6f\x6e\x33\x20\x70\x79\x74\x68\x6f\x6e\x33\x20\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x79\x74\x68\x6f\x6e'+_0x28d4bb['\x70\x79\x74\x68\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e']+'\x20\x31');continue;case'\x32':_0x3ad375[_0x29f1d4(0x221)](_0x5026d6[_0x29f1d4(0x17f)]);continue;case'\x33':_0x3ad375[_0x29f1d4(0x221)]('');continue;case'\x34':_0x3ad375[_0x29f1d4(0x221)](_0x5026d6[_0x29f1d4(0x1f5)]);continue;case'\x35':_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x12d)+_0x28d4bb[_0x29f1d4(0x13d)]+'\x20\x31\x20\x26\x26\x20\x5c');continue;case'\x36':_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x11f)+_0x28d4bb[_0x29f1d4(0x13d)]+_0x29f1d4(0xe7)+_0x28d4bb[_0x29f1d4(0x13d)]+_0x29f1d4(0x1a4)+_0x28d4bb['\x70\x79\x74\x68\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e']+_0x29f1d4(0xa5));continue;case'\x37':_0x3ad375[_0x29f1d4(0x221)]('');continue;case'\x38':_0x3ad375[_0x29f1d4(0x221)](_0x5026d6[_0x29f1d4(0x1a3)]);continue;case'\x39':_0x3ad375[_0x29f1d4(0x221)]('\x20\x20\x20\x20\x61\x70\x74\x2d\x67\x65\x74\x20\x63\x6c\x65\x61\x6e\x20\x26\x26\x20\x72\x6d\x20\x2d\x72\x66\x20\x2f\x76\x61\x72\x2f\x6c\x69\x62\x2f\x61\x70\x74\x2f\x6c\x69\x73\x74\x73\x2f\x2a');continue;}break;}}_0x3ad375[_0x29f1d4(0x221)]('');}if(_0x28d4bb[_0x29f1d4(0x145)]&&_0x28d4bb[_0x29f1d4(0x145)][_0x29f1d4(0xeb)][_0x29f1d4(0xad)]>0x0){_0x3ad375[_0x29f1d4(0x221)]('\x23\x20\x49\x6e\x73\x74\x61\x6c\x6c\x20\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x20\x61\x6e\x64\x20\x63\x6f\x6e\x64\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x73'),_0x3ad375['\x70\x75\x73\x68'](_0x5026d6['\x6d\x48\x73\x5a\x47']),_0x3ad375['\x70\x75\x73\x68'](_0x29f1d4(0xaf)),_0x3ad375['\x70\x75\x73\x68']('\x20\x20\x20\x20\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x20\x73\x68\x65\x6c\x6c\x20\x69\x6e\x69\x74\x20\x2d\x73\x20\x62\x61\x73\x68\x20\x2d\x70\x20\x2f\x6f\x70\x74\x2f\x63\x6f\x6e\x64\x61'),_0x3ad375['\x70\x75\x73\x68']('');const _0x56726d=(_0x28d4bb[_0x29f1d4(0x145)][_0x29f1d4(0xb6)]||[_0x29f1d4(0x1fd)])[_0x29f1d4(0x215)](_0x183e5a=>_0x29f1d4(0x1ac)+_0x183e5a)['\x6a\x6f\x69\x6e']('\x20');_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0xc3)+_0x56726d+'\x20'+_0x28d4bb['\x63\x6f\x6e\x64\x61'][_0x29f1d4(0xeb)][_0x29f1d4(0x14f)]('\x20')+_0x29f1d4(0x1ae)),_0x3ad375['\x70\x75\x73\x68'](_0x29f1d4(0x1cc)),_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x15d)),_0x3ad375[_0x29f1d4(0x221)]('');}_0x28d4bb[_0x29f1d4(0xeb)]&&_0x28d4bb[_0x29f1d4(0xeb)][_0x29f1d4(0xad)]>0x0&&(_0x3ad375[_0x29f1d4(0x221)](_0x5026d6['\x64\x4b\x6e\x41\x50']),_0x3ad375['\x70\x75\x73\x68'](_0x29f1d4(0xf4)+_0x28d4bb['\x70\x61\x63\x6b\x61\x67\x65\x73']['\x6a\x6f\x69\x6e']('\x20')),_0x3ad375[_0x29f1d4(0x221)](''));if(_0x28d4bb[_0x29f1d4(0x164)]&&_0x28d4bb[_0x29f1d4(0x164)][_0x29f1d4(0xad)]>0x0){_0x3ad375[_0x29f1d4(0x221)](_0x5026d6[_0x29f1d4(0x147)]);for(const _0x197bed of _0x28d4bb[_0x29f1d4(0x164)])_0x3ad375[_0x29f1d4(0x221)](_0x29f1d4(0x1ce)+_0x197bed);_0x3ad375[_0x29f1d4(0x221)]('');}if(_0x28d4bb[_0x29f1d4(0xa4)])_0x3ad375['\x70\x75\x73\x68']('\x55\x53\x45\x52\x20'+_0x28d4bb[_0x29f1d4(0xa4)]);return _0x3ad375[_0x29f1d4(0x14f)]('\x0a');}const MANAGE_SANDBOXES_TOOL_NAME='\x6d\x61\x6e\x61\x67\x65\x53\x61\x6e\x64\x62\x6f\x78\x65\x73';function createManageSandboxesTool(_0xb3c0a2,_0x2796cb={}){const _0x1fdc92=a0_0x58aa51,_0x5b6a42={'\x77\x66\x44\x75\x76':function(_0x3ab816,_0x34a50c){return _0x3ab816(_0x34a50c);},'\x4e\x6f\x41\x59\x49':function(_0x507d8f,_0x5b4e1a,_0x43c6c5){return _0x507d8f(_0x5b4e1a,_0x43c6c5);},'\x72\x68\x78\x73\x7a':function(_0x56461f,_0x3fdddb,_0x23c51b){return _0x56461f(_0x3fdddb,_0x23c51b);},'\x4e\x74\x6a\x6e\x56':_0x1fdc92(0xab),'\x4e\x5a\x4b\x54\x46':_0x1fdc92(0x1db),'\x64\x53\x4d\x68\x63':'\x66\x6c\x65\x65\x74\x49\x64','\x77\x4a\x54\x51\x4f':_0x1fdc92(0xc4),'\x4e\x76\x55\x41\x55':_0x1fdc92(0x18c),'\x54\x7a\x49\x78\x6e':_0x1fdc92(0x220)};return{'\x6e\x61\x6d\x65':MANAGE_SANDBOXES_TOOL_NAME,'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x1fdc92(0x1c0),'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':MANAGE_SANDBOXES_PARAMETERS,async '\x65\x78\x65\x63\x75\x74\x65'(_0x308a42){const _0x29f20c=_0x1fdc92;switch(_0x308a42[_0x29f20c(0x19a)]){case'\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73':return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0xc0)]();case _0x29f20c(0x173):return _0xb3c0a2[_0x29f20c(0x152)]['\x63\x72\x65\x61\x74\x65'](applyToolPolicy(_0x5b6a42['\x77\x66\x44\x75\x76'](requireCreateOptions,_0x308a42),_0x2796cb[_0x29f20c(0x1eb)]));case'\x63\x72\x65\x61\x74\x65\x57\x69\x74\x68\x43\x6f\x6f\x72\x64\x69\x6e\x61\x74\x6f\x72':return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0x15b)](_0x5b6a42['\x4e\x6f\x41\x59\x49'](applyToolPolicy,requireCreateWithCoordinatorOptions(_0x308a42),_0x2796cb[_0x29f20c(0x1eb)]));case'\x6c\x69\x73\x74':return _0xb3c0a2['\x66\x6c\x65\x65\x74\x73'][_0x29f20c(0x166)]({'\x66\x6c\x65\x65\x74\x49\x64':requireString(_0x308a42,_0x29f20c(0x187))});case _0x29f20c(0xd7):return _0xb3c0a2['\x66\x6c\x65\x65\x74\x73'][_0x29f20c(0xd7)](_0x5b6a42['\x72\x68\x78\x73\x7a'](requireString,_0x308a42,_0x29f20c(0x187)));case _0x5b6a42[_0x29f20c(0xa8)]:return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0xab)](requireString(_0x308a42,_0x29f20c(0x187)),requireMachine(_0x308a42));case _0x29f20c(0x1bf):return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0x1bf)](requireString(_0x308a42,'\x66\x6c\x65\x65\x74\x49\x64'),_0x5b6a42['\x4e\x6f\x41\x59\x49'](requireString,_0x308a42,_0x29f20c(0x12c)));case _0x5b6a42['\x4e\x5a\x4b\x54\x46']:return _0xb3c0a2[_0x29f20c(0x152)]['\x6d\x61\x6e\x69\x66\x65\x73\x74'](requireString(_0x308a42,_0x5b6a42[_0x29f20c(0xce)]));case _0x29f20c(0x202):return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0x202)](_0x5b6a42[_0x29f20c(0xef)](requireString,_0x308a42,_0x5b6a42[_0x29f20c(0xce)]));case _0x5b6a42[_0x29f20c(0x1a1)]:return _0xb3c0a2['\x66\x6c\x65\x65\x74\x73'][_0x29f20c(0xc4)](requireString(_0x308a42,_0x5b6a42[_0x29f20c(0xce)]));case _0x29f20c(0xe5):return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0xe5)](requireString(_0x308a42,_0x29f20c(0x187)));case _0x29f20c(0x141):return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0x141)](requireString(_0x308a42,_0x5b6a42[_0x29f20c(0xce)]));case _0x29f20c(0x136):return _0xb3c0a2[_0x29f20c(0x152)][_0x29f20c(0x136)](requireString(_0x308a42,_0x5b6a42[_0x29f20c(0xce)]));case _0x5b6a42[_0x29f20c(0x1f8)]:return _0xb3c0a2['\x66\x6c\x65\x65\x74\x73']['\x72\x65\x73\x74\x6f\x72\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65\x53\x6e\x61\x70\x73\x68\x6f\x74'](_0x5b6a42[_0x29f20c(0xef)](requireString,_0x308a42,'\x66\x6c\x65\x65\x74\x49\x64'),requireString(_0x308a42,_0x5b6a42[_0x29f20c(0x159)]));case _0x29f20c(0x140):return _0xb3c0a2[_0x29f20c(0x152)]['\x72\x65\x63\x6f\x6e\x63\x69\x6c\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65'](_0x5b6a42[_0x29f20c(0x11e)](requireString,_0x308a42,_0x5b6a42['\x64\x53\x4d\x68\x63']));default:throw new Error('\x55\x6e\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x6d\x61\x6e\x61\x67\x65\x53\x61\x6e\x64\x62\x6f\x78\x65\x73\x20\x61\x63\x74\x69\x6f\x6e\x3a\x20'+String(_0x308a42[_0x29f20c(0x19a)]));}}};}function requireString(_0x472024,_0x2134d6){const _0x2d42e2=a0_0x58aa51,_0x2fb8c9={'\x6a\x54\x68\x45\x44':'\x73\x74\x72\x69\x6e\x67'},_0x459582=_0x472024[_0x2134d6];if(typeof _0x459582!==_0x2fb8c9[_0x2d42e2(0x1af)]||_0x459582[_0x2d42e2(0xad)]===0x0)throw new Error(_0x2d42e2(0xe1)+_0x2134d6);return _0x459582;}function requireCreateOptions(_0x292fa3){const _0x38e1c6=a0_0x58aa51,_0x241128={'\x73\x64\x6d\x57\x79':function(_0x1b6311,_0x233e4b){return _0x1b6311(_0x233e4b);}},_0x2d73bd=_0x292fa3[_0x38e1c6(0x10d)];if(!_0x2d73bd||typeof _0x2d73bd!==_0x38e1c6(0xde))throw new Error(_0x38e1c6(0xa0));return _0x241128['\x73\x64\x6d\x57\x79'](rejectUserPolicy,_0x2d73bd);}function requireCreateWithCoordinatorOptions(_0x2c5577){const _0x1cac8e=a0_0x58aa51,_0x40559f={'\x44\x4b\x7a\x6c\x4c':_0x1cac8e(0xa0),'\x70\x75\x71\x75\x47':function(_0x56438f,_0x4315b0){return _0x56438f(_0x4315b0);}},_0x3c9f86=_0x2c5577[_0x1cac8e(0x10d)];if(!_0x3c9f86||typeof _0x3c9f86!==_0x1cac8e(0xde))throw new Error(_0x40559f[_0x1cac8e(0x182)]);return _0x40559f[_0x1cac8e(0x1e2)](rejectUserPolicy,_0x3c9f86);}function rejectUserPolicy(_0xf37422){const _0x1c794b=a0_0x58aa51,_0x1a68a1={'\x51\x47\x52\x4b\x43':_0x1c794b(0x1eb),'\x63\x49\x73\x6e\x65':'\x6d\x61\x6e\x61\x67\x65\x53\x61\x6e\x64\x62\x6f\x78\x65\x73\x20\x70\x6f\x6c\x69\x63\x79\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x73\x75\x70\x70\x6c\x69\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x74\x6f\x6f\x6c\x20\x68\x6f\x73\x74'};if(_0x1a68a1[_0x1c794b(0x120)]in _0xf37422&&_0xf37422['\x70\x6f\x6c\x69\x63\x79']!==void 0x0)throw new Error(_0x1a68a1[_0x1c794b(0x1a2)]);return _0xf37422;}function applyToolPolicy(_0x1b4962,_0x543644){const _0x1a8de9=a0_0x58aa51,_0x58d1dd={'\x73\x43\x7a\x73\x4a':_0x1a8de9(0x1a6)};if(!_0x543644)throw new Error(_0x58d1dd[_0x1a8de9(0x1bb)]);return{..._0x1b4962,'\x70\x6f\x6c\x69\x63\x79':_0x543644};}function requireMachine(_0x22027){const _0x5e33e9=a0_0x58aa51,_0xf6aa7f={'\x57\x63\x6b\x6f\x69':_0x5e33e9(0x1e3),'\x43\x53\x4c\x54\x78':_0x5e33e9(0x12c),'\x54\x75\x78\x63\x62':function(_0x188309,_0x1846b4,_0x421d3d){return _0x188309(_0x1846b4,_0x421d3d);}},_0x2a79a5=_0x22027[_0x5e33e9(0x146)];if(!_0x2a79a5||typeof _0x2a79a5!==_0x5e33e9(0xde))throw new Error(_0xf6aa7f[_0x5e33e9(0x190)]);const _0x158362=_0x2a79a5;return requireString(_0x158362,_0xf6aa7f[_0x5e33e9(0x1bc)]),_0xf6aa7f[_0x5e33e9(0x162)](requireString,_0x158362,_0x5e33e9(0x1ad)),_0x2a79a5;}const fleetId={'\x74\x79\x70\x65':a0_0x58aa51(0xd3),'\x70\x61\x74\x74\x65\x72\x6e':'\x5e\x5b\x41\x2d\x5a\x61\x2d\x7a\x30\x2d\x39\x5d\x5b\x41\x2d\x5a\x61\x2d\x7a\x30\x2d\x39\x2e\x5f\x2d\x5d\x7b\x30\x2c\x36\x33\x7d\x24'},MANAGE_SANDBOXES_PARAMETERS={'\x74\x79\x70\x65':a0_0x58aa51(0xde),'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![],'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x58aa51(0x19a)],'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x61\x63\x74\x69\x6f\x6e':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x65\x6e\x75\x6d':['\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73',a0_0x58aa51(0x173),'\x63\x72\x65\x61\x74\x65\x57\x69\x74\x68\x43\x6f\x6f\x72\x64\x69\x6e\x61\x74\x6f\x72','\x6c\x69\x73\x74','\x64\x65\x6c\x65\x74\x65',a0_0x58aa51(0xab),a0_0x58aa51(0x1bf),a0_0x58aa51(0x1db),a0_0x58aa51(0x202),a0_0x58aa51(0xc4),a0_0x58aa51(0xe5),a0_0x58aa51(0x141),a0_0x58aa51(0x136),a0_0x58aa51(0x18c),'\x72\x65\x63\x6f\x6e\x63\x69\x6c\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65']},'\x66\x6c\x65\x65\x74\x49\x64':fleetId,'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':fleetId,'\x73\x6e\x61\x70\x73\x68\x6f\x74\x49\x64':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x6d\x69\x6e\x4c\x65\x6e\x67\x74\x68':0x1},'\x6f\x70\x74\x69\x6f\x6e\x73':{'\x74\x79\x70\x65':a0_0x58aa51(0xde)},'\x6d\x61\x63\x68\x69\x6e\x65':{'\x74\x79\x70\x65':'\x6f\x62\x6a\x65\x63\x74','\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x58aa51(0x12c),a0_0x58aa51(0x1ad)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':!![],'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':fleetId,'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':{'\x74\x79\x70\x65':'\x73\x74\x72\x69\x6e\x67','\x6d\x69\x6e\x4c\x65\x6e\x67\x74\x68':0x1,'\x6d\x61\x78\x4c\x65\x6e\x67\x74\x68':0x80}}}}},SANDBOX_MCP_SERVER_NAME='\x74\x61\x6e\x67\x6c\x65\x2d\x73\x61\x6e\x64\x62\x6f\x78';function buildSandboxMcpConfig(_0x127228){const _0xb7e202=a0_0x58aa51;if(!_0x127228[_0xb7e202(0x17c)])throw new Error(_0xb7e202(0xe9));if(!_0x127228['\x61\x75\x74\x68\x54\x6f\x6b\x65\x6e'])throw new Error(_0xb7e202(0x171));const _0x40185a=_0x127228[_0xb7e202(0xa6)]??_0xb7e202(0x1b7),_0x54a263=_0x127228[_0xb7e202(0x17c)]['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,'');return{'\x73\x65\x72\x76\x65\x72\x4e\x61\x6d\x65':_0x40185a,'\x63\x6f\x6e\x66\x69\x67':{'\x6d\x63\x70\x53\x65\x72\x76\x65\x72\x73':{[_0x40185a]:{'\x74\x79\x70\x65':_0xb7e202(0xdd),'\x75\x72\x6c':_0x54a263+_0xb7e202(0xe3),'\x68\x65\x61\x64\x65\x72\x73':{'\x41\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0xb7e202(0x129)+_0x127228[_0xb7e202(0xa9)]}}}}};}const CONTROL_PLANE_MCP_SERVER_NAME=a0_0x58aa51(0x132);function buildControlPlaneMcpConfig(_0x5332aa){const _0x3a4af9=a0_0x58aa51,_0x465cef={'\x46\x6b\x6c\x64\x65':_0x3a4af9(0xdd)};if(!_0x5332aa[_0x3a4af9(0x131)])throw new Error(_0x3a4af9(0x156));if(!_0x5332aa[_0x3a4af9(0xbd)])throw new Error(_0x3a4af9(0x17d));const _0x1c64dd=_0x5332aa[_0x3a4af9(0xa6)]??_0x3a4af9(0x132),_0x9740b8=_0x5332aa[_0x3a4af9(0x131)][_0x3a4af9(0x102)](/\/+$/,'');return{'\x73\x65\x72\x76\x65\x72\x4e\x61\x6d\x65':_0x1c64dd,'\x63\x6f\x6e\x66\x69\x67':{'\x6d\x63\x70\x53\x65\x72\x76\x65\x72\x73':{[_0x1c64dd]:{'\x74\x79\x70\x65':_0x465cef[_0x3a4af9(0x209)],'\x75\x72\x6c':_0x9740b8+_0x3a4af9(0xe3),'\x68\x65\x61\x64\x65\x72\x73':{'\x41\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0x3a4af9(0x129)+_0x5332aa['\x61\x70\x69\x4b\x65\x79']}}}}};}const DEFAULT_ROUTER_URL='\x68\x74\x74\x70\x73\x3a\x2f\x2f\x72\x6f\x75\x74\x65\x72\x2e\x74\x61\x6e\x67\x6c\x65\x2e\x74\x6f\x6f\x6c\x73';async function fetchTangleRouterSearchConfig(_0x4d14ea={}){const _0x556d44=a0_0x58aa51,_0x24c45b={'\x52\x4d\x57\x79\x75':_0x556d44(0x100),'\x5a\x44\x6b\x6e\x57':function(_0x284934,_0x2f15da){return _0x284934!==_0x2f15da;},'\x71\x59\x67\x51\x65':_0x556d44(0x1c8)},_0x4a12d5=(_0x4d14ea[_0x556d44(0x1c3)]??DEFAULT_ROUTER_URL)['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,''),_0x1c8ab5=new URL(_0x4a12d5+'\x2f\x76\x31\x2f\x73\x65\x61\x72\x63\x68\x2f\x63\x6f\x6e\x66\x69\x67');if(_0x4d14ea['\x70\x72\x6f\x76\x69\x64\x65\x72'])_0x1c8ab5[_0x556d44(0xc7)][_0x556d44(0xd2)](_0x556d44(0x20d),_0x4d14ea[_0x556d44(0x20d)]);if(_0x4d14ea[_0x556d44(0x17e)])_0x1c8ab5[_0x556d44(0xc7)][_0x556d44(0xd2)](_0x24c45b[_0x556d44(0x1ed)],_0x4d14ea[_0x556d44(0x17e)]);if(_0x4d14ea[_0x556d44(0x219)])_0x1c8ab5['\x73\x65\x61\x72\x63\x68\x50\x61\x72\x61\x6d\x73']['\x73\x65\x74'](_0x556d44(0x219),_0x4d14ea[_0x556d44(0x219)]);const _0x2a6547=await(_0x4d14ea[_0x556d44(0x154)]??fetch)(_0x1c8ab5);if(!_0x2a6547['\x6f\x6b'])throw new Error('\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x6c\x6f\x61\x64\x20\x54\x61\x6e\x67\x6c\x65\x20\x52\x6f\x75\x74\x65\x72\x20\x73\x65\x61\x72\x63\x68\x20\x63\x6f\x6e\x66\x69\x67\x3a\x20'+_0x2a6547['\x73\x74\x61\x74\x75\x73']);const _0x5bfae5=await _0x2a6547[_0x556d44(0xae)]();if(_0x24c45b[_0x556d44(0xc8)](_0x5bfae5[_0x556d44(0xde)],_0x24c45b[_0x556d44(0x13e)]))throw new Error(_0x556d44(0x1c5));return _0x5bfae5;}function buildTangleRouterSearchProfile(_0x619e8f,_0x4b7273={}){const _0x5c8f24=a0_0x58aa51,_0x5161ad={'\x69\x43\x61\x7a\x6a':_0x5c8f24(0xdd)};return{'\x6e\x61\x6d\x65':_0x4b7273['\x6e\x61\x6d\x65']??_0x5c8f24(0x175),'\x6d\x6f\x64\x65\x6c':{'\x64\x65\x66\x61\x75\x6c\x74':_0x4b7273['\x6d\x6f\x64\x65\x6c']??_0x619e8f[_0x5c8f24(0x199)][_0x5c8f24(0x1cd)][_0x5c8f24(0x219)][_0x5c8f24(0x219)]},'\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73':{'\x6e\x65\x74\x77\x6f\x72\x6b':_0x5c8f24(0xd0),'\x6d\x63\x70':_0x5c8f24(0xd0)},'\x6d\x63\x70':{'\x74\x61\x6e\x67\x6c\x65\x5f\x77\x65\x62\x5f\x73\x65\x61\x72\x63\x68':{'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0x5161ad[_0x5c8f24(0xc6)],'\x75\x72\x6c':_0x619e8f[_0x5c8f24(0x167)][_0x5c8f24(0x12e)],'\x68\x65\x61\x64\x65\x72\x73':_0x619e8f[_0x5c8f24(0x167)]['\x68\x65\x61\x64\x65\x72\x73'],'\x65\x6e\x61\x62\x6c\x65\x64':!![]}},'\x6d\x65\x74\x61\x64\x61\x74\x61':{'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x50\x72\x6f\x76\x69\x64\x65\x72':_0x619e8f['\x64\x65\x66\x61\x75\x6c\x74\x5f\x70\x72\x6f\x76\x69\x64\x65\x72'],'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x45\x6e\x64\x70\x6f\x69\x6e\x74':_0x619e8f[_0x5c8f24(0x1f3)]['\x75\x72\x6c']}};}function buildTangleRouterSearchBackend(_0x4f4db7,_0x1cfe52={}){const _0x517dfd=a0_0x58aa51,_0x630a12={'\x4b\x7a\x63\x65\x67':_0x517dfd(0xed)},_0x1c4b6d=_0x4f4db7[_0x517dfd(0x199)]['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64'][_0x517dfd(0x219)];return{'\x74\x79\x70\x65':_0x1cfe52[_0x517dfd(0x1e1)]??_0x630a12[_0x517dfd(0x1c2)],'\x70\x72\x6f\x66\x69\x6c\x65':_0x1cfe52[_0x517dfd(0x1b3)]??buildTangleRouterSearchProfile(_0x4f4db7),'\x6d\x6f\x64\x65\x6c':{'\x70\x72\x6f\x76\x69\x64\x65\x72':_0x1c4b6d[_0x517dfd(0x20d)],'\x6d\x6f\x64\x65\x6c':_0x1c4b6d['\x6d\x6f\x64\x65\x6c'],'\x62\x61\x73\x65\x55\x72\x6c':_0x1c4b6d[_0x517dfd(0x16d)],..._0x1cfe52[_0x517dfd(0xbd)]?{'\x61\x70\x69\x4b\x65\x79':_0x1cfe52[_0x517dfd(0xbd)]}:{}}};}function buildTangleRouterEvalMatrixRequest(_0x2bd6a5,_0x544abf={}){const _0x29174e=a0_0x58aa51;return{'\x75\x72\x6c':_0x2bd6a5[_0x29174e(0x176)]['\x75\x72\x6c'],'\x62\x6f\x64\x79':{..._0x2bd6a5[_0x29174e(0x176)][_0x29174e(0x1d5)],..._0x544abf}};}function a0_0x7ea0(_0x37adf9,_0x132544){_0x37adf9=_0x37adf9-0x9f;const _0x1d60d5=a0_0x1d60();let _0x7ea0df=_0x1d60d5[_0x37adf9];if(a0_0x7ea0['\x6f\x49\x62\x42\x5a\x71']===undefined){var _0x56fecf=function(_0x54f82d){const _0x2cb4a3='\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 _0x57c0a9='',_0x4e46db='';for(let _0x1ca717=0x0,_0x59c8cc,_0x674fa6,_0x320d24=0x0;_0x674fa6=_0x54f82d['\x63\x68\x61\x72\x41\x74'](_0x320d24++);~_0x674fa6&&(_0x59c8cc=_0x1ca717%0x4?_0x59c8cc*0x40+_0x674fa6:_0x674fa6,_0x1ca717++%0x4)?_0x57c0a9+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&_0x59c8cc>>(-0x2*_0x1ca717&0x6)):0x0){_0x674fa6=_0x2cb4a3['\x69\x6e\x64\x65\x78\x4f\x66'](_0x674fa6);}for(let _0x45dad6=0x0,_0x585c67=_0x57c0a9['\x6c\x65\x6e\x67\x74\x68'];_0x45dad6<_0x585c67;_0x45dad6++){_0x4e46db+='\x25'+('\x30\x30'+_0x57c0a9['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x45dad6)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);}return decodeURIComponent(_0x4e46db);};a0_0x7ea0['\x65\x4e\x77\x6d\x61\x67']=_0x56fecf,a0_0x7ea0['\x49\x6c\x41\x76\x56\x61']={},a0_0x7ea0['\x6f\x49\x62\x42\x5a\x71']=!![];}const _0x41d54a=_0x1d60d5[0x0],_0x1d6148=_0x37adf9+_0x41d54a,_0x7ff825=a0_0x7ea0['\x49\x6c\x41\x76\x56\x61'][_0x1d6148];return!_0x7ff825?(_0x7ea0df=a0_0x7ea0['\x65\x4e\x77\x6d\x61\x67'](_0x7ea0df),a0_0x7ea0['\x49\x6c\x41\x76\x56\x61'][_0x1d6148]=_0x7ea0df):_0x7ea0df=_0x7ff825,_0x7ea0df;}function buildTangleRouterResponsesWebSearchRequest(_0x4cdd05,_0xe517df={}){const _0xf67342=a0_0x58aa51,_0x8b4a4c={'\x6d\x70\x70\x4c\x6c':'\x53\x65\x61\x72\x63\x68\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x6c\x61\x74\x65\x73\x74\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x6e\x73\x77\x65\x72\x20\x77\x69\x74\x68\x20\x63\x69\x74\x61\x74\x69\x6f\x6e\x73\x2e'},_0x3ba3a5=_0x4cdd05[_0xf67342(0x16a)]?.[_0xf67342(0x16e)];if(_0x3ba3a5)return{'\x75\x72\x6c':_0x3ba3a5[_0xf67342(0xcd)],'\x62\x6f\x64\x79':{..._0x3ba3a5['\x62\x6f\x64\x79'],..._0xe517df}};const _0x3315fc=_0x4cdd05['\x74\x63\x6c\x6f\x75\x64']['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64'][_0xf67342(0x219)];return{'\x75\x72\x6c':_0x3315fc[_0xf67342(0x16d)][_0xf67342(0x102)](/\/+$/,'')+_0xf67342(0xf6),'\x62\x6f\x64\x79':{'\x6d\x6f\x64\x65\x6c':_0x3315fc[_0xf67342(0x219)],'\x69\x6e\x70\x75\x74':_0x8b4a4c[_0xf67342(0x217)],'\x74\x6f\x6f\x6c\x73':[{'\x74\x79\x70\x65':_0xf67342(0xa7),'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':{'\x70\x72\x6f\x76\x69\x64\x65\x72':_0x4cdd05[_0xf67342(0x1fa)],'\x6d\x61\x78\x5f\x72\x65\x73\x75\x6c\x74\x73':0x5}}],..._0xe517df}};}async function runTangleRouterEvalMatrixInSandbox(_0x296ab8){const _0x19684b=a0_0x58aa51,_0x1be37b={'\x63\x44\x78\x70\x72':function(_0x443a49,_0x2c73bf,_0x1c97af){return _0x443a49(_0x2c73bf,_0x1c97af);},'\x78\x49\x46\x72\x6f':function(_0x136789,_0x40c8bd,_0x56cbaf,_0x411106,_0x563452){return _0x136789(_0x40c8bd,_0x56cbaf,_0x411106,_0x563452);},'\x76\x74\x70\x4b\x6c':function(_0xbcdc8d,_0x2eed6a){return _0xbcdc8d(_0x2eed6a);}},_0x26560b=_0x296ab8[_0x19684b(0x154)]??fetch,_0xf2b780=_0x1be37b[_0x19684b(0x10e)](buildTangleRouterEvalMatrixRequest,_0x296ab8[_0x19684b(0x15e)],{'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':'\x73\x61\x6e\x64\x62\x6f\x78\x2d\x73\x64\x6b',..._0x296ab8[_0x19684b(0x21c)]}),_0x2db8bd=await _0x1be37b[_0x19684b(0x1e7)](postJson,_0x26560b,_0xf2b780[_0x19684b(0xcd)],_0x296ab8[_0x19684b(0xbd)],_0xf2b780[_0x19684b(0x157)]),_0x4580f8=_0x2db8bd[_0x19684b(0x158)],_0x30a06a=await runMatrixCases({'\x6d\x61\x74\x72\x69\x78':_0x4580f8,'\x63\x6f\x6e\x66\x69\x67':_0x296ab8[_0x19684b(0x15e)],'\x61\x70\x69\x4b\x65\x79':_0x296ab8[_0x19684b(0xbd)],'\x73\x61\x6e\x64\x62\x6f\x78\x43\x6c\x69\x65\x6e\x74':_0x296ab8[_0x19684b(0x216)],'\x63\x6f\x6e\x63\x75\x72\x72\x65\x6e\x63\x79':_0x296ab8['\x63\x6f\x6e\x63\x75\x72\x72\x65\x6e\x63\x79']??0x3,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64\x50\x72\x65\x66\x69\x78':_0x296ab8[_0x19684b(0x178)]??'\x65\x76\x61\x6c\x5f'+_0x2db8bd['\x73\x75\x69\x74\x65']['\x69\x64']}),_0x166e10=await postJson(_0x26560b,_0xf2b780[_0x19684b(0xcd)][_0x19684b(0x102)](/\/api\/eval\/matrix$/,'')+_0x19684b(0x191)+encodeURIComponent(_0x1be37b[_0x19684b(0xcc)](String,_0x2db8bd[_0x19684b(0x149)]['\x69\x64']))+_0x19684b(0x16c),_0x296ab8[_0x19684b(0xbd)],{'\x62\x61\x73\x65\x6c\x69\x6e\x65':_0x296ab8['\x62\x61\x73\x65\x6c\x69\x6e\x65']===!![],'\x63\x61\x73\x65\x73':_0x30a06a});return{'\x73\x75\x69\x74\x65':_0x2db8bd['\x73\x75\x69\x74\x65'],'\x6d\x61\x74\x72\x69\x78':_0x4580f8,'\x63\x61\x73\x65\x73':_0x30a06a,'\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b':_0x166e10['\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b']??[],'\x69\x6d\x70\x6f\x72\x74\x52\x65\x73\x75\x6c\x74':_0x166e10};}async function runMatrixCases(_0xf95400){const _0x20dedc=a0_0x58aa51,_0x39bfae={'\x6a\x49\x62\x45\x76':function(_0x4d8e9f,_0x83c076){return _0x4d8e9f<_0x83c076;}},_0x3c50b9=new Map(_0xf95400[_0x20dedc(0x158)]['\x61\x67\x65\x6e\x74\x50\x72\x6f\x66\x69\x6c\x65\x73']['\x6d\x61\x70'](_0xd2f8bf=>[_0xd2f8bf['\x69\x64'],_0xd2f8bf])),_0x4cb63c=new Map(_0xf95400['\x6d\x61\x74\x72\x69\x78'][_0x20dedc(0xdb)]['\x6d\x61\x70'](_0x3883a0=>[_0x3883a0['\x69\x64'],_0x3883a0])),_0x42e16a=Math['\x6d\x61\x78'](0x1,Math[_0x20dedc(0xba)](0xa,_0xf95400[_0x20dedc(0x158)][_0x20dedc(0x1a7)]??0x1)),_0x408341=[];for(let _0x43dfd5=0x0;_0x39bfae[_0x20dedc(0x1e0)](_0x43dfd5,_0x42e16a);_0x43dfd5++)for(const _0x571c81 of _0xf95400['\x6d\x61\x74\x72\x69\x78'][_0x20dedc(0x17a)])_0x408341['\x70\x75\x73\x68'](()=>runOneCase({'\x73\x63\x65\x6e\x61\x72\x69\x6f':_0x571c81,'\x69\x74\x65\x72\x61\x74\x69\x6f\x6e':_0x43dfd5,'\x70\x72\x6f\x66\x69\x6c\x65':_0x571c81[_0x20dedc(0x1b3)]?_0x3c50b9[_0x20dedc(0x1d9)](_0x571c81['\x70\x72\x6f\x66\x69\x6c\x65']):void 0x0,'\x68\x61\x72\x6e\x65\x73\x73':_0x571c81['\x68\x61\x72\x6e\x65\x73\x73']?_0x4cb63c['\x67\x65\x74'](_0x571c81[_0x20dedc(0x192)]):void 0x0,'\x63\x6f\x6e\x66\x69\x67':_0xf95400[_0x20dedc(0x15e)],'\x61\x70\x69\x4b\x65\x79':_0xf95400[_0x20dedc(0xbd)],'\x73\x61\x6e\x64\x62\x6f\x78\x43\x6c\x69\x65\x6e\x74':_0xf95400['\x73\x61\x6e\x64\x62\x6f\x78\x43\x6c\x69\x65\x6e\x74'],'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64\x50\x72\x65\x66\x69\x78':_0xf95400[_0x20dedc(0x178)]}));return parallelLimit(_0x408341,_0xf95400[_0x20dedc(0x1dd)]);}async function runOneCase(_0x4b45fa){const _0x2ae9fe=a0_0x58aa51,_0xfcc723={'\x49\x50\x42\x71\x76':function(_0x543062,_0x14cf6e){return _0x543062(_0x14cf6e);},'\x50\x51\x51\x57\x6d':function(_0x204a0c,_0x2eef70){return _0x204a0c(_0x2eef70);},'\x6c\x4b\x47\x50\x6b':function(_0x45407a,_0x3fc70b){return _0x45407a-_0x3fc70b;},'\x4a\x56\x77\x66\x78':function(_0x22c7d9,_0x24fb5e,_0x20e4f8,_0x278f90){return _0x22c7d9(_0x24fb5e,_0x20e4f8,_0x278f90);},'\x65\x4e\x71\x57\x57':function(_0x3e99dc,_0x2a666e){return _0x3e99dc(_0x2a666e);}},_0x101956=Date[_0x2ae9fe(0x1c6)](),_0x5457c2=_0xfcc723[_0x2ae9fe(0x137)](buildSandboxBackend,_0x4b45fa),_0x2e8593=await _0x4b45fa[_0x2ae9fe(0x216)]['\x63\x72\x65\x61\x74\x65']({'\x6e\x61\x6d\x65':_0x2ae9fe(0xa3)+safeId(_0x4b45fa['\x73\x63\x65\x6e\x61\x72\x69\x6f']['\x69\x64'])[_0x2ae9fe(0x20a)](0x0,0x28),'\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74':_0x4b45fa['\x68\x61\x72\x6e\x65\x73\x73']?.[_0x2ae9fe(0x160)],'\x69\x6d\x61\x67\x65':_0x4b45fa[_0x2ae9fe(0x192)]?.[_0x2ae9fe(0x160)],'\x62\x61\x63\x6b\x65\x6e\x64':_0x5457c2,'\x65\x6e\x76':materializeHarnessEnv(_0x4b45fa[_0x2ae9fe(0x15e)],_0x4b45fa[_0x2ae9fe(0x192)]?.['\x65\x6e\x76\x56\x61\x72\x73'],_0x4b45fa[_0x2ae9fe(0xbd)]),..._0x4b45fa[_0x2ae9fe(0x192)]?.['\x67\x69\x74\x52\x65\x70\x6f']?{'\x67\x69\x74':{'\x75\x72\x6c':_0x4b45fa[_0x2ae9fe(0x192)]['\x67\x69\x74\x52\x65\x70\x6f'],'\x72\x65\x66':_0x4b45fa[_0x2ae9fe(0x192)][_0x2ae9fe(0x11a)]}}:{}}),_0x4080a3=safeId(_0x4b45fa['\x73\x65\x73\x73\x69\x6f\x6e\x49\x64\x50\x72\x65\x66\x69\x78'])+'\x5f'+safeId(_0x4b45fa[_0x2ae9fe(0x153)]['\x69\x64'])+'\x5f'+_0x4b45fa[_0x2ae9fe(0xfc)];try{const _0x23a683=await _0x2e8593[_0x2ae9fe(0xd9)](_0x4b45fa[_0x2ae9fe(0x153)][_0x2ae9fe(0x200)],{'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x4080a3}),_0x42f0c6=await _0x2e8593[_0x2ae9fe(0x1f6)](_0x23a683[_0x2ae9fe(0x14c)])['\x72\x65\x73\x75\x6c\x74'](),_0x5a3ae4=_0x4b45fa['\x73\x63\x65\x6e\x61\x72\x69\x6f'][_0x2ae9fe(0x1e6)]?.[_0x2ae9fe(0x1ba)]??_0x4b45fa[_0x2ae9fe(0x192)]?.[_0x2ae9fe(0x1ba)],_0x19da55=_0x5a3ae4&&_0x2e8593[_0x2ae9fe(0x12f)]?await runTestCommand(_0x2e8593,_0x23a683[_0x2ae9fe(0x14c)],_0x5a3ae4,_0x4b45fa[_0x2ae9fe(0x192)]?.['\x74\x69\x6d\x65\x6f\x75\x74']):void 0x0;return _0xfcc723['\x50\x51\x51\x57\x6d'](buildCaseResult,{'\x73\x63\x65\x6e\x61\x72\x69\x6f':_0x4b45fa[_0x2ae9fe(0x153)],'\x69\x74\x65\x72\x61\x74\x69\x6f\x6e':_0x4b45fa[_0x2ae9fe(0xfc)],'\x70\x72\x6f\x66\x69\x6c\x65':_0x4b45fa[_0x2ae9fe(0x1b3)],'\x68\x61\x72\x6e\x65\x73\x73':_0x4b45fa['\x68\x61\x72\x6e\x65\x73\x73'],'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x23a683[_0x2ae9fe(0x14c)],'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0x2e8593['\x69\x64'],'\x72\x65\x73\x75\x6c\x74':_0x42f0c6,'\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74':_0x19da55,'\x64\x75\x72\x61\x74\x69\x6f\x6e\x4d\x73':_0xfcc723[_0x2ae9fe(0xe4)](Date[_0x2ae9fe(0x1c6)](),_0x101956),'\x65\x6e\x76':_0xfcc723[_0x2ae9fe(0x1f4)](materializeHarnessEnv,_0x4b45fa[_0x2ae9fe(0x15e)],_0x4b45fa[_0x2ae9fe(0x192)]?.['\x65\x6e\x76\x56\x61\x72\x73'],_0x4b45fa[_0x2ae9fe(0xbd)])});}finally{await _0xfcc723['\x65\x4e\x71\x57\x57'](cleanupBox,_0x2e8593);}}function buildSandboxBackend(_0x47b1f5){const _0x584f32=a0_0x58aa51,_0x18a3c8={'\x42\x62\x69\x6c\x4f':'\x74\x61\x6e\x67\x6c\x65\x2d\x72\x6f\x75\x74\x65\x72\x2d\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b','\x54\x57\x57\x53\x77':_0x584f32(0xd0),'\x6a\x6f\x4d\x6c\x73':'\x68\x74\x74\x70','\x74\x6f\x79\x51\x77':function(_0x12a295,_0x427115){return _0x12a295!==_0x427115;},'\x4c\x62\x54\x49\x44':_0x584f32(0x110)},_0x155712=_0x47b1f5[_0x584f32(0x15e)][_0x584f32(0x199)]['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64']['\x6d\x6f\x64\x65\x6c'],_0x3bffaf=inferSearchProvider(_0x47b1f5[_0x584f32(0x1b3)]),_0x1032b5={'\x6e\x61\x6d\x65':_0x47b1f5[_0x584f32(0x1b3)]?.['\x6e\x61\x6d\x65']??_0x47b1f5[_0x584f32(0x1b3)]?.['\x69\x64']??_0x18a3c8[_0x584f32(0x150)],'\x6d\x6f\x64\x65\x6c':{'\x64\x65\x66\x61\x75\x6c\x74':_0x47b1f5[_0x584f32(0x1b3)]?.['\x6d\x6f\x64\x65\x6c']??_0x155712[_0x584f32(0x219)]},'\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73':{'\x6e\x65\x74\x77\x6f\x72\x6b':_0x584f32(0xd0),'\x6d\x63\x70':_0x18a3c8[_0x584f32(0x12a)]},'\x6d\x63\x70':{'\x74\x61\x6e\x67\x6c\x65\x5f\x77\x65\x62\x5f\x73\x65\x61\x72\x63\x68':{'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0x18a3c8['\x6a\x6f\x4d\x6c\x73'],'\x75\x72\x6c':_0x47b1f5['\x63\x6f\x6e\x66\x69\x67']['\x6d\x63\x70'][_0x584f32(0x12e)],'\x68\x65\x61\x64\x65\x72\x73':_0x47b1f5[_0x584f32(0x15e)][_0x584f32(0x167)][_0x584f32(0x186)],'\x65\x6e\x61\x62\x6c\x65\x64':_0x18a3c8['\x74\x6f\x79\x51\x77'](_0x3bffaf,_0x18a3c8[_0x584f32(0x214)])}},'\x6d\x65\x74\x61\x64\x61\x74\x61':{'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x50\x72\x6f\x76\x69\x64\x65\x72':_0x3bffaf,'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x45\x6e\x64\x70\x6f\x69\x6e\x74':_0x47b1f5[_0x584f32(0x15e)][_0x584f32(0x1f3)][_0x584f32(0xcd)],'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x45\x76\x61\x6c\x48\x61\x72\x6e\x65\x73\x73':_0x47b1f5[_0x584f32(0x192)]?.['\x69\x64']},'\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x73':{'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72':{'\x70\x72\x6f\x76\x69\x64\x65\x72\x4f\x70\x74\x69\x6f\x6e\x73':_0x47b1f5['\x70\x72\x6f\x66\x69\x6c\x65']?.[_0x584f32(0x18e)]}}};return{'\x74\x79\x70\x65':backendType(_0x47b1f5[_0x584f32(0x192)]?.['\x69\x64']),'\x70\x72\x6f\x66\x69\x6c\x65':_0x1032b5,'\x6d\x6f\x64\x65\x6c':{'\x70\x72\x6f\x76\x69\x64\x65\x72':_0x155712[_0x584f32(0x20d)],'\x6d\x6f\x64\x65\x6c':_0x47b1f5[_0x584f32(0x1b3)]?.[_0x584f32(0x219)]??_0x155712[_0x584f32(0x219)],'\x62\x61\x73\x65\x55\x72\x6c':_0x155712[_0x584f32(0x16d)],'\x61\x70\x69\x4b\x65\x79':_0x47b1f5['\x61\x70\x69\x4b\x65\x79']}};}function buildCaseResult(_0x267269){const _0x1615a7=a0_0x58aa51,_0x424110={'\x4d\x75\x74\x77\x72':'\x53\x61\x6e\x64\x62\x6f\x78\x20\x73\x65\x73\x73\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64','\x4e\x77\x4e\x44\x69':'\x75\x6e\x6b\x6e\x6f\x77\x6e','\x56\x79\x70\x57\x61':_0x1615a7(0x177),'\x71\x51\x73\x54\x7a':_0x1615a7(0xb9),'\x53\x47\x78\x68\x71':function(_0x1345e3,_0x3a86c4){return _0x1345e3(_0x3a86c4);},'\x50\x58\x46\x65\x4a':function(_0x358207,_0x481149){return _0x358207(_0x481149);},'\x77\x6f\x74\x56\x63':'\x53\x61\x6e\x64\x62\x6f\x78\x20\x74\x65\x73\x74\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x66\x61\x69\x6c\x65\x64'},_0x270da9=_0x267269[_0x1615a7(0x10c)][_0x1615a7(0x202)],_0x30fae4=_0x267269[_0x1615a7(0x10c)][_0x1615a7(0xc2)]??_0x424110[_0x1615a7(0x122)],_0xd846ae=_0x267269['\x72\x65\x73\x75\x6c\x74'][_0x1615a7(0x163)]?void 0x0:_0x30fae4,_0x3f66b9=_0x267269[_0x1615a7(0x10c)][_0x1615a7(0x163)]&&(_0x267269[_0x1615a7(0x1ef)]?_0x267269['\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74'][_0x1615a7(0x1cb)]:!![]),_0x34cd2c=_0x267269[_0x1615a7(0x153)]['\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b'],_0x147285=promptToolCalls(_0x267269[_0x1615a7(0x10c)]);return{'\x73\x63\x65\x6e\x61\x72\x69\x6f\x49\x64':_0x267269['\x73\x63\x65\x6e\x61\x72\x69\x6f']['\x69\x64'],'\x70\x72\x6f\x6d\x70\x74':_0x267269[_0x1615a7(0x153)][_0x1615a7(0x200)],'\x6d\x6f\x64\x65\x6c':_0x267269[_0x1615a7(0x1b3)]?.[_0x1615a7(0x219)]??_0x424110['\x4e\x77\x4e\x44\x69'],'\x72\x65\x73\x70\x6f\x6e\x73\x65':_0x267269['\x72\x65\x73\x75\x6c\x74'][_0x1615a7(0xee)]??'','\x74\x69\x6d\x69\x6e\x67':{'\x74\x6f\x74\x61\x6c\x4d\x73':_0x267269[_0x1615a7(0x133)]},'\x74\x6f\x6b\x65\x6e\x73':{'\x69\x6e\x70\x75\x74':_0x270da9?.[_0x1615a7(0x13f)]??0x0,'\x6f\x75\x74\x70\x75\x74':_0x270da9?.[_0x1615a7(0x121)]??0x0,'\x63\x61\x63\x68\x65\x64':0x0,'\x72\x65\x61\x73\x6f\x6e\x69\x6e\x67':0x0},'\x63\x6f\x73\x74':promptCost(_0x267269['\x72\x65\x73\x75\x6c\x74']),'\x6a\x75\x64\x67\x65\x43\x6f\x73\x74':0x0,'\x73\x63\x6f\x72\x65':_0x3f66b9?0x8:0x1,'\x6a\x75\x64\x67\x65\x52\x65\x61\x73\x6f\x6e\x69\x6e\x67':_0x3f66b9?_0x424110[_0x1615a7(0x1d2)]:_0x267269[_0x1615a7(0x1ef)]&&!_0x267269['\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74']['\x74\x65\x73\x74\x73\x50\x61\x73\x73\x65\x64']?'\x53\x61\x6e\x64\x62\x6f\x78\x20\x74\x65\x73\x74\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x66\x61\x69\x6c\x65\x64\x2e':_0x30fae4,'\x70\x61\x73\x73\x65\x64':_0x3f66b9,'\x74\x6f\x6f\x6c\x43\x61\x6c\x6c\x73':_0x147285,'\x61\x73\x73\x65\x72\x74\x69\x6f\x6e\x73':[{'\x63\x68\x65\x63\x6b':_0x424110['\x71\x51\x73\x54\x7a'],'\x70\x61\x73\x73\x65\x64':_0x267269[_0x1615a7(0x10c)][_0x1615a7(0x163)]},..._0x267269[_0x1615a7(0x1ef)]?[{'\x63\x68\x65\x63\x6b':_0x1615a7(0xe8),'\x70\x61\x73\x73\x65\x64':_0x267269[_0x1615a7(0x1ef)][_0x1615a7(0x1cb)]}]:[]],'\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b':{'\x70\x72\x6f\x66\x69\x6c\x65\x49\x64':_0x34cd2c?.[_0x1615a7(0x19d)]??_0x267269['\x70\x72\x6f\x66\x69\x6c\x65']?.['\x69\x64'],'\x68\x61\x72\x6e\x65\x73\x73\x49\x64':_0x34cd2c?.[_0x1615a7(0x21d)]??_0x267269[_0x1615a7(0x192)]?.['\x69\x64'],'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0x34cd2c?.[_0x1615a7(0xec)]??_0x267269[_0x1615a7(0x192)]?.['\x74\x72\x61\x6e\x73\x70\x6f\x72\x74']??_0x1615a7(0x142),'\x73\x65\x61\x72\x63\x68\x50\x72\x6f\x76\x69\x64\x65\x72':_0x34cd2c?.[_0x1615a7(0xe6)]??inferSearchProvider(_0x267269[_0x1615a7(0x1b3)]),'\x73\x65\x61\x72\x63\x68\x52\x65\x71\x75\x65\x73\x74\x73':benchmarkSearchRequests(_0x267269[_0x1615a7(0x10c)],_0x147285),'\x63\x69\x74\x61\x74\x69\x6f\x6e\x43\x6f\x75\x6e\x74':_0x424110[_0x1615a7(0x207)](benchmarkCitationCount,_0x267269[_0x1615a7(0x10c)]),'\x61\x72\x74\x69\x66\x61\x63\x74\x73':{..._0x34cd2c?.[_0x1615a7(0x109)]??{},'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x267269['\x73\x65\x73\x73\x69\x6f\x6e\x49\x64'],'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0x267269[_0x1615a7(0x1ad)],..._0x424110[_0x1615a7(0x1b2)](benchmarkEnvArtifacts,_0x267269[_0x1615a7(0x1f0)]),..._0x267269[_0x1615a7(0x10c)]['\x74\x72\x61\x63\x65\x49\x64']?{'\x74\x72\x61\x63\x65\x49\x64':_0x267269[_0x1615a7(0x10c)][_0x1615a7(0xac)]}:{}}},'\x69\x74\x65\x72\x61\x74\x69\x6f\x6e':_0x267269[_0x1615a7(0xfc)],'\x65\x72\x72\x6f\x72':_0x267269[_0x1615a7(0x1ef)]&&!_0x267269[_0x1615a7(0x1ef)][_0x1615a7(0x1cb)]?_0x424110['\x77\x6f\x74\x56\x63']:_0xd846ae,'\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74':_0x267269['\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74']};}async function runTestCommand(_0x42f592,_0x4325e0,_0x54c07d,_0x27d97e){const _0x3b46d8=a0_0x58aa51;if(!_0x42f592[_0x3b46d8(0x12f)])throw new Error(_0x3b46d8(0x218));const _0x6acaa7=await _0x42f592[_0x3b46d8(0x12f)](_0x54c07d,{'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x4325e0,'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':Math[_0x3b46d8(0x10b)](0x1,_0x27d97e??0x78)*0x3e8});return{'\x65\x78\x69\x74\x43\x6f\x64\x65':_0x6acaa7[_0x3b46d8(0x14d)],'\x73\x74\x64\x6f\x75\x74':_0x6acaa7[_0x3b46d8(0x1d6)][_0x3b46d8(0x20a)](0x0,0x7d0),'\x73\x74\x64\x65\x72\x72':_0x6acaa7[_0x3b46d8(0x18f)]['\x73\x6c\x69\x63\x65'](0x0,0x3e8),'\x74\x65\x73\x74\x73\x50\x61\x73\x73\x65\x64':_0x6acaa7[_0x3b46d8(0x14d)]===0x0};}async function postJson(_0x25066e,_0x22f2ae,_0x49f58f,_0x2eaa65){const _0x2dceba=a0_0x58aa51,_0x231002={'\x4b\x6c\x45\x77\x42':function(_0x1ac161,_0x5c1595,_0x1f6856){return _0x1ac161(_0x5c1595,_0x1f6856);},'\x45\x6e\x4b\x53\x70':_0x2dceba(0xb7),'\x75\x4f\x5a\x5a\x61':function(_0x364ec7,_0x1fc4b0){return _0x364ec7(_0x1fc4b0);},'\x43\x4a\x79\x43\x4f':_0x2dceba(0xd3)},_0xd70c23=await _0x231002[_0x2dceba(0xbb)](_0x25066e,_0x22f2ae,{'\x6d\x65\x74\x68\x6f\x64':_0x2dceba(0x211),'\x68\x65\x61\x64\x65\x72\x73':{'\x61\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0x2dceba(0x129)+_0x49f58f,'\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x74\x79\x70\x65':_0x2dceba(0xb7),'\x61\x63\x63\x65\x70\x74':_0x231002['\x45\x6e\x4b\x53\x70']},'\x62\x6f\x64\x79':JSON[_0x2dceba(0xdf)](_0x231002[_0x2dceba(0x193)](stripUndefined,_0x2eaa65))}),_0x1f138e=await _0xd70c23[_0x2dceba(0x21b)](),_0x1b762d=_0x1f138e?JSON[_0x2dceba(0x10f)](_0x1f138e):null;if(!_0xd70c23['\x6f\x6b']){const _0x201fe8=typeof _0x1b762d?.[_0x2dceba(0xc2)]===_0x231002[_0x2dceba(0x1d1)]?_0x1b762d[_0x2dceba(0xc2)]:_0x1f138e[_0x2dceba(0x20a)](0x0,0xc8);throw new Error(_0x22f2ae+_0x2dceba(0x116)+_0xd70c23[_0x2dceba(0x181)]+_0x2dceba(0xbf)+_0x201fe8);}return _0x1b762d;}async function parallelLimit(_0x4812f2,_0x16d1d0){const _0x56d391=a0_0x58aa51,_0x2ec5d0={'\x78\x52\x62\x45\x69':function(_0x25b8e3,_0x2605d0){return _0x25b8e3===_0x2605d0;}},_0x3451da=[];let _0x4322cc=0x0;const _0x56eb1f=Array[_0x56d391(0x1c9)]({'\x6c\x65\x6e\x67\x74\x68':Math[_0x56d391(0xba)](Math['\x6d\x61\x78'](0x1,_0x16d1d0),_0x4812f2[_0x56d391(0xad)])},async()=>{const _0x3b5e78=_0x56d391;while(_0x4322cc<_0x4812f2[_0x3b5e78(0xad)]){const _0x101122=_0x4322cc++,_0x50c4e1=_0x4812f2[_0x101122];if(_0x2ec5d0[_0x3b5e78(0x1ee)](_0x50c4e1,void 0x0))throw new Error(_0x3b5e78(0x1d8)+_0x101122);_0x3451da[_0x101122]=await _0x50c4e1();}});return await Promise[_0x56d391(0x1aa)](_0x56eb1f),_0x3451da;}function materializeHarnessEnv(_0x5efcd9,_0x398914,_0x134486){const _0x4feef8=a0_0x58aa51,_0x31df9e={'\x74\x46\x4c\x4e\x67':function(_0x5365a1,_0x5874db){return _0x5365a1??_0x5874db;}};return materializeEnv({..._0x5efcd9[_0x4feef8(0xc1)]??{},..._0x31df9e[_0x4feef8(0x204)](_0x398914,{})},_0x5efcd9,_0x134486);}function materializeEnv(_0x4587a2,_0x5a462a,_0x37b9d7){const _0x3db037=a0_0x58aa51,_0x378ea8=_0x5a462a['\x74\x63\x6c\x6f\x75\x64'][_0x3db037(0x1cd)]['\x6d\x6f\x64\x65\x6c']['\x62\x61\x73\x65\x55\x72\x6c'][_0x3db037(0x102)](/\/v1\/?$/,''),_0x485b01=new Map();for(const [_0x213aa3,_0x539750]of Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x4587a2))_0x485b01['\x73\x65\x74'](_0x213aa3,replaceEnvTokens(_0x539750,_0x37b9d7,_0x378ea8,_0x485b01));return Object[_0x3db037(0x14b)](_0x485b01);}function replaceEnvTokens(_0x2cca10,_0x3b0f6e,_0x38298b,_0x48c63d){const _0x2bca5c=a0_0x58aa51;let _0xe17880=_0x2cca10['\x72\x65\x70\x6c\x61\x63\x65'](/<tangle-api-key>/g,_0x3b0f6e)[_0x2bca5c(0x102)](/\$\{TANGLE_API_KEY\}/g,_0x3b0f6e)[_0x2bca5c(0x102)](/\$\{TANGLE_ROUTER_URL\}/g,_0x38298b);for(const [_0x547edd,_0x3b65e1]of _0x48c63d)_0xe17880=_0xe17880['\x72\x65\x70\x6c\x61\x63\x65'](new RegExp(_0x2bca5c(0x1e9)+escapeRegExp(_0x547edd)+'\x5c\x7d','\x67'),_0x3b65e1);return _0xe17880;}function benchmarkEnvArtifacts(_0x14a5e8){const _0x55a992=a0_0x58aa51,_0x5c4426=Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x14a5e8)[_0x55a992(0xf2)](([_0x462b32],[_0x8ac44b])=>_0x462b32[_0x55a992(0x1fe)](_0x8ac44b));return{'\x68\x61\x72\x6e\x65\x73\x73\x45\x6e\x76\x4b\x65\x79\x73':_0x5c4426[_0x55a992(0x215)](([_0x578b0c])=>_0x578b0c)[_0x55a992(0x14f)]('\x2c'),'\x68\x61\x72\x6e\x65\x73\x73\x45\x6e\x76\x48\x61\x73\x68':stableHash(_0x5c4426[_0x55a992(0x215)](([_0x323f8a,_0x347f36])=>_0x323f8a+'\x3d'+redactEnvValue(_0x323f8a,_0x347f36))['\x6a\x6f\x69\x6e']('\x0a')),'\x68\x61\x72\x6e\x65\x73\x73\x45\x6e\x76':JSON['\x73\x74\x72\x69\x6e\x67\x69\x66\x79'](Object[_0x55a992(0x14b)](_0x5c4426['\x6d\x61\x70'](([_0x1b538a,_0x467b75])=>[_0x1b538a,redactEnvValue(_0x1b538a,_0x467b75)])))};}function a0_0x1d60(){const _0x39563c=['\x43\x4d\x76\x4a\x42\x32\x35\x4a\x41\x77\x58\x4c\x76\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c','\x79\x32\x39\x5a\x44\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x31\x5a\x7a\x67\x53','\x43\x32\x6e\x59\x79\x78\x72\x4a\x41\x61','\x44\x32\x4c\x30\x41\x65\x6e\x53\x41\x77\x76\x55\x44\x61','\x79\x32\x39\x55\x7a\x67\x65','\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x76\x77\x54\x7a\x73\x67\x30','\x71\x76\x6a\x68\x69\x61','\x43\x33\x76\x50\x44\x67\x75','\x43\x33\x62\x4c\x79\x57','\x7a\x4e\x6a\x56\x42\x75\x76\x55\x44\x68\x6a\x50\x7a\x78\x6d','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x4b\x4c\x4b','\x7a\x78\x48\x50\x44\x65\x6e\x56\x7a\x67\x75','\x79\x32\x4c\x30\x79\x78\x72\x50\x42\x32\x35\x64\x42\x33\x76\x55\x44\x61','\x41\x4d\x39\x50\x42\x47','\x71\x4d\x6a\x50\x42\x65\x38','\x41\x78\x6e\x67\x41\x77\x35\x50\x44\x67\x75','\x7a\x4d\x58\x4c\x7a\x78\x72\x5a','\x43\x32\x6e\x4c\x42\x4d\x66\x59\x41\x77\x38','\x7a\x4d\x76\x30\x79\x32\x48\x6a\x42\x78\x62\x53','\x71\x76\x50\x52\x79\x4e\x61','\x79\x4e\x76\x50\x42\x67\x72\x64\x42\x32\x35\x30\x43\x4d\x39\x53\x75\x67\x58\x48\x42\x4d\x76\x6e\x79\x33\x62\x64\x42\x32\x35\x4d\x41\x77\x43\x36\x69\x68\x62\x53\x79\x78\x72\x4d\x42\x33\x6a\x54\x76\x78\x6a\x53\x69\x67\x4c\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b','\x79\x4d\x39\x4b\x45\x71','\x42\x77\x66\x30\x43\x4d\x4c\x34','\x76\x68\x50\x6a\x45\x67\x34','\x71\x4d\x76\x48\x43\x4d\x76\x59\x69\x64\x58\x59\x7a\x77\x72\x48\x79\x33\x72\x4c\x7a\x64\x34','\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','\x73\x33\x50\x4e\x71\x4b\x53','\x72\x75\x35\x77\x69\x66\x62\x62\x76\x65\x47\x39\x69\x49\x39\x56\x43\x68\x71\x56\x79\x32\x39\x55\x7a\x67\x65\x56\x79\x4d\x4c\x55\x6f\x49\x72\x71\x71\x76\x72\x69\x69\x47','\x79\x32\x39\x55\x7a\x4d\x4c\x4e','\x42\x4e\x76\x54\x79\x4d\x76\x59','\x41\x77\x31\x48\x7a\x32\x75','\x7a\x4e\x76\x55\x79\x33\x72\x50\x42\x32\x34','\x76\x68\x76\x34\x79\x32\x69','\x43\x33\x76\x4a\x79\x32\x76\x5a\x43\x57','\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x44\x67\x39\x6d\x42\x33\x44\x4c\x43\x4b\x6e\x48\x43\x32\x75','\x42\x67\x4c\x5a\x44\x61','\x42\x77\x6e\x57','\x76\x65\x76\x66\x69\x67\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55\x69\x67\x48\x4c\x79\x78\x6a\x30\x79\x4d\x76\x48\x44\x63\x62\x50\x43\x59\x62\x5a\x44\x67\x39\x57\x43\x67\x76\x4b','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x66\x62\x35\x44\x67\x48\x56\x42\x49\x62\x57\x79\x77\x6e\x52\x79\x77\x44\x4c\x43\x57','\x42\x33\x62\x4c\x42\x4e\x6a\x56\x44\x78\x72\x4c\x43\x4c\x39\x4a\x42\x32\x31\x57\x79\x78\x71','\x41\x32\x76\x35\x43\x57','\x6c\x33\x6a\x31\x42\x4e\x6d\x56\x41\x77\x31\x57\x42\x33\x6a\x30','\x79\x4d\x66\x5a\x7a\x76\x76\x59\x42\x61','\x43\x4d\x76\x5a\x43\x67\x39\x55\x43\x32\x76\x5a','\x43\x67\x66\x4b\x75\x33\x72\x48\x43\x4e\x71','\x72\x4d\x48\x41\x43\x30\x79','\x79\x4e\x76\x50\x42\x67\x72\x74\x79\x77\x35\x4b\x79\x4d\x39\x34\x74\x77\x6e\x57\x71\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x62\x48\x44\x78\x72\x4f\x76\x67\x39\x52\x7a\x77\x34\x47\x41\x78\x6d\x47\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x77\x71','\x74\x32\x7a\x6d\x79\x33\x69','\x79\x33\x6a\x4c\x79\x78\x72\x4c','\x76\x66\x50\x76\x7a\x67\x30','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x78\x6a\x56\x44\x78\x72\x4c\x43\x49\x31\x33\x7a\x77\x69\x54\x43\x32\x76\x48\x43\x4d\x6e\x4f','\x7a\x78\x7a\x48\x42\x66\x39\x54\x79\x78\x72\x59\x41\x78\x47','\x76\x67\x76\x59\x42\x77\x4c\x55\x79\x77\x57\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x79\x77\x35\x4b\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b\x69\x68\x72\x4c\x43\x33\x72\x5a\x69\x68\x62\x48\x43\x33\x6e\x4c\x7a\x63\x34','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x4b\x4c\x4b\x75\x68\x6a\x4c\x7a\x4d\x4c\x34','\x75\x4c\x76\x6f\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x44\x78\x62\x4b\x79\x78\x72\x4c\x69\x63\x79\x4d\x69\x66\x57','\x43\x32\x6e\x4c\x42\x4d\x66\x59\x41\x77\x39\x5a','\x79\x32\x39\x55\x44\x67\x76\x55\x44\x63\x31\x30\x45\x78\x62\x4c','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x76\x59\x42\x61','\x79\x4e\x76\x50\x42\x67\x72\x64\x42\x32\x35\x30\x43\x4d\x39\x53\x75\x67\x58\x48\x42\x4d\x76\x6e\x79\x33\x62\x64\x42\x32\x35\x4d\x41\x77\x43\x36\x69\x67\x66\x57\x41\x75\x54\x4c\x45\x73\x62\x50\x43\x59\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x7a\x61','\x79\x78\x62\x50\x73\x32\x76\x35\x72\x77\x35\x32','\x45\x76\x50\x79\x73\x4b\x6d','\x6d\x5a\x4b\x59\x6f\x64\x75\x33\x43\x66\x6e\x5a\x75\x78\x72\x62','\x43\x33\x72\x48\x44\x68\x76\x5a','\x72\x65\x54\x36\x42\x65\x57','\x41\x4e\x44\x7a\x7a\x32\x38','\x7a\x67\x66\x30\x79\x71','\x7a\x4e\x50\x4e\x71\x4e\x79','\x41\x67\x76\x48\x7a\x67\x76\x59\x43\x57','\x7a\x4d\x58\x4c\x7a\x78\x72\x6a\x7a\x61','\x41\x30\x6e\x70\x71\x78\x65','\x78\x63\x71\x4d','\x77\x76\x48\x7a\x79\x31\x43','\x6d\x74\x65\x58\x6d\x5a\x47\x57\x6e\x76\x76\x65\x79\x76\x6e\x5a\x75\x47','\x43\x4d\x76\x5a\x44\x67\x39\x59\x7a\x76\x44\x56\x43\x4d\x54\x5a\x43\x67\x66\x4a\x7a\x76\x6e\x55\x79\x78\x62\x5a\x41\x67\x39\x30','\x43\x32\x48\x48\x6d\x4a\x75\x32','\x43\x68\x6a\x56\x44\x4d\x4c\x4b\x7a\x78\x6a\x70\x43\x68\x72\x50\x42\x32\x35\x5a','\x43\x33\x72\x4b\x7a\x78\x6a\x59','\x76\x32\x6e\x52\x42\x32\x4b','\x6c\x32\x66\x57\x41\x73\x39\x4c\x44\x4d\x66\x53\x6c\x33\x6e\x31\x41\x78\x72\x4c\x43\x59\x38','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x57','\x44\x75\x39\x41\x77\x4d\x65','\x73\x32\x6a\x6c\x74\x67\x65','\x44\x78\x6a\x53\x78\x32\x6e\x50\x44\x67\x66\x30\x41\x77\x39\x55','\x6e\x5a\x62\x71\x74\x65\x44\x52\x42\x67\x53','\x71\x4d\x35\x59\x44\x31\x75','\x44\x67\x66\x4e','\x44\x67\x6e\x53\x42\x33\x76\x4b','\x79\x77\x6e\x30\x41\x77\x39\x55','\x79\x78\x62\x30\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x41\x78\x6e\x62\x43\x4e\x6a\x48\x45\x71','\x43\x68\x6a\x56\x7a\x4d\x4c\x53\x7a\x75\x4c\x4b','\x69\x63\x61\x47\x69\x67\x66\x4b\x7a\x63\x31\x48\x43\x68\x71\x54\x43\x4d\x76\x57\x42\x33\x6e\x50\x44\x67\x39\x59\x45\x73\x61\x54\x45\x73\x62\x57\x43\x67\x65\x36\x7a\x67\x76\x48\x7a\x68\x6e\x55\x79\x77\x54\x4c\x43\x59\x39\x57\x43\x67\x65\x47\x6a\x49\x79\x47\x78\x61','\x42\x32\x35\x74\x44\x77\x6e\x4a\x7a\x78\x6e\x5a','\x79\x32\x4c\x30\x79\x78\x72\x50\x42\x32\x35\x5a','\x44\x30\x50\x75\x75\x75\x38','\x79\x30\x4c\x5a\x42\x4d\x75','\x73\x33\x76\x71\x75\x4b\x4f','\x6c\x78\x7a\x4c\x42\x4e\x79\x47\x43\x68\x4c\x30\x41\x67\x39\x55','\x79\x77\x72\x4b\x71\x78\x62\x30\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x67\x6e\x59\x7a\x77\x66\x30\x7a\x73\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x43\x59\x62\x48\x69\x67\x48\x56\x43\x33\x71\x54\x42\x33\x44\x55\x7a\x77\x71\x47\x43\x67\x39\x53\x41\x77\x6e\x35','\x41\x78\x72\x4c\x43\x4d\x66\x30\x41\x77\x39\x55\x43\x57','\x79\x4e\x76\x50\x42\x67\x72\x62\x43\x4d\x44\x5a','\x43\x32\x6e\x32\x43\x65\x71','\x79\x77\x58\x53','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x7a\x65\x66\x30','\x6c\x77\x6d\x47','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x4c\x4b','\x69\x63\x79\x4d\x69\x66\x57','\x41\x4c\x72\x4f\x72\x75\x71','\x41\x76\x72\x52\x43\x4d\x75','\x72\x4c\x6a\x70\x74\x73\x61','\x75\x66\x48\x67\x7a\x75\x4f','\x43\x68\x6a\x56\x7a\x4d\x4c\x53\x7a\x71','\x69\x59\x62\x64\x44\x78\x6e\x30\x42\x32\x30\x47\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x76\x30\x4c\x70\x79\x4c\x43','\x7a\x77\x39\x62\x73\x65\x38','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x78\x6e\x48\x42\x4d\x72\x49\x42\x33\x47','\x79\x32\x39\x55\x7a\x4d\x4c\x4b\x7a\x77\x35\x30\x41\x77\x66\x53','\x79\x33\x6a\x35\x43\x68\x72\x56','\x44\x67\x76\x5a\x44\x65\x6e\x56\x42\x77\x31\x48\x42\x4d\x71','\x43\x30\x6e\x36\x43\x30\x4f','\x71\x31\x6e\x6d\x76\x68\x47','\x79\x78\x76\x30\x42\x57','\x79\x4d\x66\x5a\x7a\x75\x4c\x54\x79\x77\x44\x4c','\x7a\x67\x76\x30\x79\x77\x6e\x4f\x74\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x71\x33\x6a\x4c\x79\x78\x72\x4c\x6c\x63\x62\x50\x42\x4e\x6e\x57\x7a\x77\x6e\x30\x6c\x63\x62\x48\x42\x4d\x71\x47\x42\x77\x66\x55\x79\x77\x44\x4c\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x47\x47\x7a\x4d\x58\x4c\x7a\x78\x72\x5a\x69\x67\x7a\x56\x43\x49\x62\x57\x79\x78\x6a\x48\x42\x67\x58\x4c\x42\x63\x62\x48\x7a\x32\x76\x55\x44\x63\x62\x33\x42\x33\x6a\x52\x42\x67\x39\x48\x7a\x68\x6d\x55','\x71\x78\x76\x30\x41\x67\x39\x59\x41\x78\x50\x48\x44\x67\x4c\x56\x42\x47','\x73\x33\x50\x4a\x7a\x77\x43','\x43\x4d\x39\x31\x44\x67\x76\x59\x76\x78\x6a\x53','\x43\x33\x72\x48\x43\x4e\x72\x5a\x76\x32\x4c\x30\x41\x61','\x73\x77\x35\x32\x79\x77\x58\x50\x7a\x63\x62\x75\x79\x77\x35\x4e\x42\x67\x75\x47\x75\x4d\x39\x31\x44\x67\x76\x59\x69\x68\x6e\x4c\x79\x78\x6a\x4a\x41\x63\x62\x4a\x42\x32\x35\x4d\x41\x77\x43\x47\x43\x4d\x76\x5a\x43\x67\x39\x55\x43\x32\x75','\x42\x4d\x39\x33','\x6d\x4a\x71\x31\x6d\x4a\x61\x59\x6f\x76\x62\x58\x44\x4e\x44\x65\x45\x61','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x6c\x4d\x6e\x56\x42\x4d\x7a\x50\x7a\x57','\x7a\x4e\x6a\x56\x42\x71','\x7a\x76\x62\x53\x77\x68\x4f','\x44\x67\x76\x5a\x44\x68\x6e\x71\x79\x78\x6e\x5a\x7a\x77\x71','\x69\x63\x61\x47\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x79\x32\x58\x4c\x79\x77\x34\x47\x6c\x73\x31\x48\x42\x67\x57\x47\x6c\x73\x31\x35\x7a\x78\x6d','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x6a\x48\x79\x32\x54\x4c\x42\x4d\x71','\x75\x4c\x76\x6f\x69\x61','\x44\x67\x39\x56\x42\x65\x35\x48\x42\x77\x75','\x79\x77\x6a\x56\x43\x4e\x72\x4c\x7a\x61','\x71\x30\x50\x35\x71\x30\x38','\x76\x4e\x4c\x57\x76\x32\x65','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x77\x4c\x54\x79\x77\x44\x4c\x6f\x47','\x44\x67\x76\x34\x44\x63\x39\x4c\x44\x4d\x76\x55\x44\x63\x31\x5a\x44\x68\x6a\x4c\x79\x77\x30','\x79\x4d\x39\x4b\x45\x76\x39\x30\x7a\x77\x31\x57\x42\x67\x66\x30\x7a\x71','\x43\x33\x72\x4b\x42\x33\x76\x30','\x7a\x4e\x6a\x56\x42\x75\x4c\x4b','\x74\x77\x4c\x5a\x43\x32\x4c\x55\x7a\x59\x62\x59\x42\x33\x76\x30\x7a\x78\x69\x47\x7a\x78\x7a\x48\x42\x63\x62\x30\x79\x78\x6e\x52\x69\x67\x66\x30\x69\x67\x4c\x55\x7a\x67\x76\x34\x69\x61','\x7a\x32\x76\x30','\x7a\x4e\x6a\x56\x42\x75\x6a\x31\x41\x77\x58\x4b\x75\x4d\x76\x5a\x44\x77\x58\x30','\x42\x77\x66\x55\x41\x77\x7a\x4c\x43\x33\x71','\x42\x32\x35\x6b\x7a\x33\x61','\x79\x32\x39\x55\x79\x33\x76\x59\x43\x4d\x76\x55\x79\x33\x4b','\x44\x77\x35\x4b\x7a\x77\x7a\x50\x42\x4d\x76\x4b','\x43\x32\x4c\x4e\x42\x4d\x66\x53','\x41\x4b\x4c\x49\x72\x78\x79','\x44\x68\x4c\x57\x7a\x71','\x43\x68\x76\x58\x44\x75\x43','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x67\x31\x48\x79\x32\x48\x50\x42\x4d\x75','\x79\x4b\x6a\x78\x42\x4b\x43','\x44\x67\x76\x5a\x44\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x61','\x45\x65\x4c\x67\x43\x4d\x38','\x7a\x32\x66\x30\x7a\x78\x44\x48\x45\x71','\x78\x63\x72\x43\x45\x57','\x79\x77\x72\x4b\x72\x78\x7a\x4c\x42\x4e\x72\x6d\x41\x78\x6e\x30\x7a\x77\x35\x4c\x43\x47','\x43\x67\x39\x53\x41\x77\x6e\x35','\x71\x77\x35\x4f\x79\x4d\x34','\x75\x4b\x31\x78\x45\x78\x75','\x45\x66\x6a\x49\x72\x77\x4b','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x6a\x4c\x43\x33\x76\x53\x44\x61','\x7a\x77\x35\x32','\x73\x31\x50\x4d\x45\x66\x61','\x6d\x74\x75\x5a\x6d\x5a\x43\x32\x76\x31\x72\x4d\x44\x30\x35\x78','\x7a\x77\x35\x4b\x43\x67\x39\x50\x42\x4e\x71','\x73\x4c\x7a\x33\x7a\x4e\x47','\x77\x68\x6a\x49\x43\x33\x43','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x47','\x6d\x4d\x31\x6b\x74\x67\x58\x68\x45\x61','\x74\x4e\x7a\x76\x71\x76\x75','\x7a\x78\x7a\x4c\x42\x4e\x71','\x7a\x67\x76\x4d\x79\x78\x76\x53\x44\x66\x39\x57\x43\x4d\x39\x32\x41\x77\x72\x4c\x43\x47','\x44\x77\x6a\x31\x42\x4e\x72\x31\x6f\x4a\x69\x59\x6c\x4a\x61\x30','\x44\x67\x39\x74\x43\x67\x76\x4a','\x79\x32\x39\x55\x7a\x67\x65\x54\x7a\x4d\x39\x59\x7a\x32\x75','\x42\x67\x39\x4a\x79\x77\x58\x4c\x71\x32\x39\x54\x43\x67\x66\x59\x7a\x71','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x68\x6e\x35\x43\x33\x72\x4c\x42\x73\x62\x57\x79\x77\x6e\x52\x79\x77\x44\x4c\x43\x57','\x43\x68\x6a\x56\x42\x78\x62\x30','\x73\x77\x31\x48\x7a\x32\x75\x47\x79\x4e\x76\x50\x42\x67\x71\x47\x44\x67\x4c\x54\x7a\x77\x71\x47\x42\x33\x76\x30\x69\x67\x66\x4d\x44\x67\x76\x59\x69\x61','\x44\x78\x6e\x48\x7a\x32\x75','\x43\x4d\x4c\x59\x79\x76\x65','\x44\x65\x7a\x6d\x74\x4d\x43','\x44\x32\x39\x59\x41\x32\x72\x50\x43\x47','\x79\x32\x58\x48\x44\x77\x72\x4c\x6c\x77\x6e\x56\x7a\x67\x75','\x75\x30\x44\x34\x41\x68\x65','\x79\x32\x39\x5a\x44\x66\x76\x5a\x7a\x61','\x72\x4d\x54\x53\x7a\x67\x75','\x43\x32\x58\x50\x79\x32\x75','\x6c\x33\x79\x58\x6c\x32\x4c\x54\x79\x77\x44\x4c\x43\x57','\x43\x32\x48\x48\x6d\x4a\x75\x32\x6f\x47','\x43\x68\x6a\x56\x44\x4d\x4c\x4b\x7a\x78\x69','\x7a\x4b\x66\x48\x42\x30\x69','\x7a\x32\x76\x30\x76\x67\x76\x4c\x71\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x34','\x79\x77\x35\x55\x42\x33\x72\x48\x44\x67\x4c\x56\x42\x4e\x6d','\x75\x65\x39\x74\x76\x61','\x6f\x68\x57\x30\x46\x64\x62\x38\x6e\x4e\x57\x35\x46\x64\x44\x38\x6e\x78\x57\x58\x46\x64\x6e\x38\x6d\x47','\x44\x77\x6a\x31\x42\x4e\x72\x31','\x74\x67\x6a\x75\x73\x75\x71','\x42\x77\x66\x57','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x6e\x53\x41\x77\x76\x55\x44\x61','\x42\x78\x62\x57\x74\x67\x57','\x75\x4d\x39\x31\x44\x67\x76\x59\x69\x67\x76\x32\x79\x77\x57\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x4b\x42\x32\x76\x5a\x69\x67\x35\x56\x44\x63\x62\x5a\x44\x78\x62\x57\x42\x33\x6a\x30\x69\x67\x76\x34\x7a\x77\x6d','\x42\x77\x39\x4b\x7a\x77\x57','\x41\x77\x31\x31\x42\x61','\x44\x67\x76\x34\x44\x61','\x41\x77\x35\x57\x44\x78\x72\x70\x44\x4d\x76\x59\x43\x4d\x4c\x4b\x7a\x78\x6d','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x30\x4c\x4b','\x41\x77\x35\x4a\x42\x68\x76\x4b\x7a\x78\x6d','\x79\x32\x39\x4b\x7a\x78\x47','\x43\x32\x35\x48\x43\x68\x6e\x4f\x42\x33\x72\x6a\x7a\x61','\x43\x68\x76\x5a\x41\x61','\x7a\x4e\x6a\x56\x42\x75\x72\x56\x79\x32\x54\x4c\x43\x4d\x7a\x50\x42\x67\x75','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x67\x39\x57\x44\x67\x4c\x56\x42\x4e\x6d','\x43\x32\x76\x4a\x43\x4d\x76\x30\x43\x57','\x43\x67\x58\x48\x44\x67\x7a\x56\x43\x4d\x30','\x7a\x78\x7a\x48\x42\x63\x30','\x44\x78\x6e\x4c\x43\x47','\x6c\x77\x72\x50\x43\x33\x72\x31\x44\x67\x4c\x53\x43\x59\x61\x4d\x6a\x49\x62\x43','\x43\x32\x76\x59\x44\x4d\x76\x59\x74\x4d\x66\x54\x7a\x71','\x42\x33\x62\x4c\x42\x4e\x6a\x56\x44\x78\x72\x4c\x43\x4a\x50\x33\x7a\x77\x6a\x46\x43\x32\x76\x48\x43\x4d\x6e\x4f','\x74\x4e\x72\x51\x42\x4c\x79','\x79\x78\x76\x30\x41\x66\x72\x56\x41\x32\x76\x55','\x79\x32\x39\x55\x44\x67\x4c\x55\x44\x77\x76\x70\x42\x4b\x7a\x48\x41\x77\x58\x31\x43\x4d\x75','\x79\x78\x72\x30\x79\x77\x6e\x4f\x74\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x44\x68\x6a\x48\x79\x32\x76\x6a\x7a\x61','\x42\x67\x76\x55\x7a\x33\x72\x4f','\x41\x4e\x6e\x56\x42\x47','\x69\x63\x61\x47\x69\x67\x31\x32\x69\x67\x6a\x50\x42\x49\x39\x54\x41\x77\x6e\x59\x42\x32\x31\x48\x42\x77\x6a\x48\x69\x63\x39\x31\x43\x33\x69\x56\x42\x67\x39\x4a\x79\x77\x57\x56\x79\x4d\x4c\x55\x6c\x59\x61\x4d\x6a\x49\x62\x43','\x44\x67\x39\x74\x44\x68\x6a\x50\x42\x4d\x43','\x79\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x34','\x7a\x4d\x76\x30\x79\x32\x47','\x45\x76\x7a\x67\x74\x4c\x71','\x41\x77\x35\x30\x7a\x78\x6a\x32\x79\x77\x58\x6e\x43\x57','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x61\x54\x6c\x77\x35\x56\x6c\x77\x4c\x55\x43\x33\x72\x48\x42\x67\x57\x54\x43\x4d\x76\x4a\x42\x32\x31\x54\x7a\x77\x35\x4b\x43\x59\x61','\x79\x32\x48\x48\x42\x4d\x35\x4c\x42\x68\x6d','\x79\x78\x62\x57\x42\x67\x4c\x4a\x79\x78\x72\x50\x42\x32\x34\x56\x41\x4e\x6e\x56\x42\x47','\x7a\x78\x50\x4d\x43\x68\x65','\x76\x67\x76\x59\x42\x77\x4c\x55\x79\x77\x57\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x42\x32\x6a\x5a\x7a\x78\x6a\x32\x7a\x77\x71','\x42\x77\x4c\x55','\x73\x32\x58\x66\x44\x30\x69','\x79\x77\x72\x4b\x71\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x79\x78\x62\x50\x73\x32\x76\x35','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x66\x62\x35\x44\x67\x48\x56\x42\x49\x61','\x6b\x74\x4f\x47','\x79\x32\x66\x57\x79\x77\x6a\x50\x42\x67\x4c\x30\x41\x77\x76\x5a','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x31\x39\x4c\x42\x4e\x79','\x7a\x78\x6a\x59\x42\x33\x69','\x75\x4c\x76\x6f\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x61\x54\x42\x49\x62\x49\x79\x78\x6e\x4c\x69\x61','\x44\x68\x6a\x48\x79\x32\x75','\x79\x32\x39\x54\x43\x68\x76\x30\x7a\x75\x4c\x4b','\x41\x75\x6e\x48\x45\x4d\x4f','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x75\x67\x66\x59\x79\x77\x31\x5a','\x77\x4b\x72\x52\x42\x4c\x43','\x7a\x67\x76\x4d\x79\x78\x76\x53\x44\x61','\x42\x77\x4c\x55\x41\x77\x6e\x56\x42\x4d\x72\x48','\x7a\x67\x4c\x4e\x7a\x78\x6e\x30','\x44\x4e\x72\x57\x73\x32\x57','\x44\x78\x6a\x53','\x7a\x66\x6e\x6e\x41\x67\x6d','\x76\x76\x6a\x6d\x43\x78\x43','\x79\x77\x58\x53\x42\x33\x43','\x79\x32\x58\x50\x7a\x77\x35\x30','\x43\x32\x76\x30','\x43\x33\x72\x59\x41\x77\x35\x4e','\x42\x77\x76\x30\x79\x77\x72\x48\x44\x67\x65','\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x75\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55','\x42\x77\x76\x5a\x43\x32\x66\x4e\x7a\x71','\x7a\x67\x76\x53\x7a\x78\x72\x4c','\x75\x66\x7a\x57\x76\x30\x34','\x7a\x67\x4c\x5a\x43\x67\x66\x30\x79\x32\x48\x71\x43\x4d\x39\x54\x43\x68\x71','\x44\x67\x39\x56\x42\x65\x4c\x55\x44\x4d\x39\x4a\x79\x78\x72\x50\x42\x32\x35\x5a','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x32\x76\x5a','\x44\x32\x66\x34\x74\x33\x71','\x41\x68\x72\x30\x43\x61','\x42\x32\x6a\x51\x7a\x77\x6e\x30','\x43\x33\x72\x59\x41\x77\x35\x4e\x41\x77\x7a\x35','\x44\x75\x66\x31\x44\x76\x4f','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x61','\x79\x77\x35\x48\x79\x32\x39\x55\x7a\x67\x65','\x6c\x32\x31\x4a\x43\x61','\x42\x65\x54\x68\x75\x67\x53','\x41\x77\x35\x30\x7a\x77\x58\x53\x41\x77\x44\x4c\x42\x4d\x6e\x4c','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x75\x68\x6a\x56\x44\x4d\x4c\x4b\x7a\x78\x69','\x69\x68\x62\x35\x44\x67\x48\x56\x42\x47','\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x30\x7a\x78\x6e\x30\x69\x67\x6e\x56\x42\x77\x31\x48\x42\x4d\x71\x47\x43\x67\x66\x5a\x43\x32\x76\x4b','\x79\x4e\x76\x50\x42\x67\x72\x74\x79\x77\x35\x4b\x79\x4d\x39\x34\x74\x77\x6e\x57\x71\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x76\x78\x6a\x53\x69\x67\x4c\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b','\x79\x32\x48\x48\x43\x4b\x6e\x56\x7a\x67\x76\x62\x44\x61','\x43\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x44\x68\x6a\x48\x42\x4e\x6e\x57\x42\x33\x6a\x30','\x42\x33\x62\x4c\x42\x4d\x6e\x56\x7a\x67\x75','\x43\x4d\x76\x5a\x43\x67\x39\x55\x43\x32\x75','\x74\x4d\x39\x62\x77\x75\x4b','\x79\x77\x72\x4b\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6e\x67\x43\x4d\x39\x54\x72\x4d\x4c\x53\x7a\x71','\x7a\x31\x6e\x63\x76\x68\x61','\x43\x32\x39\x59\x44\x61','\x79\x4e\x76\x50\x42\x67\x71','\x75\x4c\x76\x6f\x69\x68\x62\x50\x43\x63\x62\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x30\x54\x42\x4d\x38\x54\x79\x32\x66\x4a\x41\x67\x75\x54\x7a\x67\x4c\x59\x69\x61','\x43\x32\x54\x30\x75\x30\x71','\x6c\x33\x6a\x4c\x43\x33\x62\x56\x42\x4e\x6e\x4c\x43\x57','\x42\x4d\x39\x64\x79\x77\x6e\x4f\x7a\x71','\x77\x4b\x58\x53\x73\x30\x75','\x71\x4e\x76\x50\x42\x67\x71\x47\x79\x32\x39\x54\x43\x67\x58\x4c\x44\x67\x76\x4b\x69\x67\x6a\x31\x44\x63\x62\x55\x42\x59\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x43\x4d\x76\x4a\x7a\x77\x4c\x32\x7a\x77\x71','\x7a\x77\x35\x30\x43\x4d\x4c\x4c\x43\x57','\x44\x68\x6a\x50\x42\x71','\x41\x78\x72\x4c\x43\x4d\x66\x30\x41\x77\x39\x55','\x44\x32\x4c\x30\x41\x65\x76\x55\x44\x47','\x42\x32\x35\x71\x43\x4d\x39\x4e\x43\x4d\x76\x5a\x43\x57','\x6d\x4a\x61\x58\x6d\x5a\x43\x5a\x6d\x4e\x44\x79\x43\x75\x50\x70\x72\x61','\x79\x78\x62\x50\x78\x32\x54\x4c\x45\x76\x39\x4c\x42\x4e\x79','\x7a\x77\x35\x4a\x42\x32\x72\x4c','\x43\x4d\x76\x57\x42\x67\x66\x4a\x7a\x71','\x72\x78\x4c\x73\x73\x4e\x61','\x44\x78\x62\x4b\x79\x78\x72\x4c','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x75\x4d\x76\x58\x44\x77\x76\x5a\x44\x68\x6d','\x43\x68\x6a\x56\x7a\x33\x6a\x4c\x43\x33\x6d','\x75\x4c\x76\x6f\x69\x67\x6e\x31\x43\x4d\x57\x47\x6c\x75\x58\x5a\x69\x67\x48\x30\x44\x68\x62\x5a\x6f\x49\x38\x56\x42\x77\x4c\x4a\x43\x4d\x38\x55\x42\x77\x66\x54\x79\x4d\x65\x55\x43\x67\x30\x56\x79\x78\x62\x50\x6c\x32\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x56\x42\x67\x4c\x55\x44\x78\x47\x54\x6e\x4a\x71\x56\x42\x67\x66\x30\x7a\x78\x6e\x30\x69\x68\x57\x47\x44\x67\x66\x59\x69\x63\x31\x34\x44\x4d\x4f\x47\x79\x4d\x4c\x55\x6c\x32\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x6a\x49\x79\x47\x78\x61','\x79\x77\x6a\x56\x43\x4e\x71','\x79\x78\x6a\x30\x41\x77\x7a\x48\x79\x33\x72\x5a','\x72\x4d\x66\x50\x42\x67\x76\x4b\x69\x68\x72\x56\x69\x67\x6a\x31\x41\x77\x58\x4b\x69\x67\x4c\x54\x79\x77\x44\x4c\x6f\x49\x61','\x42\x77\x66\x34','\x43\x4d\x76\x5a\x44\x77\x58\x30','\x42\x33\x62\x30\x41\x77\x39\x55\x43\x57','\x79\x30\x72\x34\x43\x68\x69','\x43\x67\x66\x59\x43\x32\x75','\x42\x32\x7a\x4d','\x76\x65\x76\x66\x69\x67\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55\x69\x68\x44\x48\x43\x59\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x7a\x63\x62\x49\x44\x78\x71\x47\x42\x4d\x38\x47\x7a\x78\x7a\x50\x7a\x67\x76\x55\x79\x32\x75\x47\x44\x32\x66\x5a\x69\x68\x6a\x4c\x44\x68\x76\x59\x42\x4d\x76\x4b','\x42\x67\x66\x49\x7a\x77\x58\x5a','\x43\x32\x76\x48\x43\x4d\x6e\x4f','\x79\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x6f\x42\x32\x35\x4a\x7a\x71','\x71\x30\x66\x50\x73\x4d\x34','\x69\x67\x7a\x48\x41\x77\x58\x4c\x7a\x63\x61\x4f','\x75\x4c\x76\x6f\x69\x67\x6e\x31\x43\x4d\x57\x47\x6c\x78\x6e\x74\x69\x67\x48\x30\x44\x68\x62\x5a\x6f\x49\x38\x56\x79\x4d\x39\x56\x44\x68\x6e\x30\x43\x4d\x66\x57\x6c\x4e\x62\x35\x43\x67\x65\x55\x41\x77\x38\x56\x7a\x32\x76\x30\x6c\x78\x62\x50\x43\x63\x35\x57\x45\x73\x62\x38\x69\x68\x62\x35\x44\x67\x48\x56\x42\x47','\x6e\x74\x65\x33\x6e\x64\x69\x33\x6e\x66\x72\x76\x72\x4c\x48\x50\x74\x61','\x44\x67\x4c\x54\x7a\x77\x39\x31\x44\x61','\x7a\x32\x4c\x30\x71\x4e\x6a\x48\x42\x4d\x6e\x4f','\x79\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x73\x7a\x77\x7a\x59\x7a\x78\x6e\x4f','\x76\x75\x6e\x72\x45\x66\x61','\x44\x32\x4c\x30\x41\x66\x6e\x4c\x79\x33\x6a\x4c\x44\x68\x6d','\x43\x4d\x48\x34\x43\x33\x4f','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x62\x57\x45\x78\x72\x4f\x42\x32\x34','\x75\x75\x44\x73\x73\x30\x6d','\x42\x33\x76\x30\x43\x68\x76\x30\x76\x67\x39\x52\x7a\x77\x35\x5a','\x74\x78\x76\x30\x44\x33\x69','\x43\x67\x4c\x57\x69\x67\x4c\x55\x43\x33\x72\x48\x42\x67\x57\x47\x6c\x78\x69\x47','\x43\x68\x4c\x30\x41\x67\x39\x55','\x44\x67\x39\x56\x42\x65\x6e\x48\x42\x67\x58\x5a','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x62\x5a\x42\x32\x7a\x30\x44\x32\x66\x59\x7a\x73\x31\x57\x43\x4d\x39\x57\x7a\x78\x6a\x30\x41\x77\x76\x5a\x6c\x77\x6e\x56\x42\x77\x31\x56\x42\x49\x61\x4d\x6a\x49\x62\x43','\x75\x30\x48\x62\x6c\x74\x69\x31\x6e\x47','\x72\x75\x35\x77\x69\x61','\x71\x4d\x76\x48\x43\x4d\x76\x59\x69\x61','\x76\x66\x44\x78\x75\x33\x43','\x7a\x4d\x4c\x53\x44\x67\x76\x59','\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x75\x4c\x4b','\x75\x4c\x76\x6f\x69\x68\x76\x57\x7a\x67\x66\x30\x7a\x73\x31\x48\x42\x68\x72\x4c\x43\x4d\x35\x48\x44\x67\x4c\x32\x7a\x78\x6d\x47\x6c\x73\x31\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x39\x31\x43\x33\x69\x56\x79\x4d\x4c\x55\x6c\x33\x62\x35\x44\x67\x48\x56\x42\x49\x62\x57\x45\x78\x72\x4f\x42\x32\x34\x47\x6c\x33\x76\x5a\x43\x49\x39\x49\x41\x77\x34\x56\x43\x68\x4c\x30\x41\x67\x39\x55','\x43\x33\x72\x59\x7a\x77\x66\x54\x79\x77\x6a\x53\x7a\x76\x39\x4f\x44\x68\x72\x57\x78\x33\x76\x59\x42\x61','\x7a\x78\x48\x4c\x79\x57','\x70\x68\x6a\x4c\x7a\x67\x66\x4a\x44\x67\x76\x4b\x70\x47','\x43\x67\x58\x48\x44\x67\x7a\x56\x43\x4d\x31\x76\x43\x4d\x57','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x77\x6e\x56\x42\x4e\x72\x59\x42\x32\x57\x54\x43\x67\x58\x48\x42\x4d\x75','\x7a\x68\x76\x59\x79\x78\x72\x50\x42\x32\x35\x6e\x43\x57','\x79\x32\x58\x50\x7a\x77\x35\x30\x71\x32\x39\x55\x7a\x4d\x4c\x4e','\x45\x67\x44\x74\x74\x66\x69','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x76\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c\x75\x32\x35\x48\x43\x68\x6e\x4f\x42\x33\x71','\x73\x76\x62\x63\x43\x78\x79','\x71\x32\x58\x50\x7a\x77\x35\x30\x69\x67\x6e\x56\x42\x4d\x7a\x50\x7a\x33\x76\x59\x79\x78\x72\x50\x42\x32\x34\x47\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x77\x71\x55\x69\x66\x62\x48\x43\x33\x6d\x47\x45\x59\x62\x4a\x42\x67\x4c\x4c\x42\x4e\x71\x36\x69\x68\x53\x47\x79\x4d\x66\x5a\x7a\x76\x76\x59\x42\x63\x57\x47\x79\x78\x62\x50\x73\x32\x76\x35\x69\x68\x30\x47\x46\x73\x62\x30\x42\x59\x62\x49\x44\x77\x4c\x53\x7a\x63\x47\x50\x69\x67\x39\x59\x69\x68\x76\x5a\x7a\x73\x62\x6a\x42\x77\x66\x4e\x7a\x75\x6a\x31\x41\x77\x58\x4b\x7a\x78\x69\x47\x44\x67\x48\x59\x42\x33\x76\x4e\x41\x63\x62\x30\x41\x67\x75\x47\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x4a\x42\x67\x4c\x4c\x42\x4e\x71\x55','\x71\x33\x4c\x36\x73\x65\x30','\x43\x68\x7a\x34\x75\x67\x79','\x6e\x64\x69\x30\x6d\x64\x4b\x32\x43\x30\x54\x62\x72\x4c\x6a\x4d','\x7a\x32\x76\x30\x75\x4d\x66\x55\x7a\x67\x39\x54\x76\x4d\x66\x53\x44\x77\x76\x5a','\x43\x68\x4c\x30\x41\x67\x39\x55\x76\x4d\x76\x59\x43\x32\x4c\x56\x42\x47','\x43\x76\x4c\x4e\x75\x77\x75','\x41\x77\x35\x57\x44\x78\x72\x75\x42\x32\x54\x4c\x42\x4e\x6d'];a0_0x1d60=function(){return _0x39563c;};return a0_0x1d60();}function redactEnvValue(_0x2bf859,_0x3227e3){const _0x51b770=a0_0x58aa51,_0x351f58={'\x4b\x7a\x67\x42\x4b':_0x51b770(0x130),'\x73\x63\x76\x70\x44':function(_0x39e719,_0x10d45c){return _0x39e719>_0x10d45c;}};if(/token|secret|key|authorization/i[_0x51b770(0x1e5)](_0x2bf859))return _0x351f58[_0x51b770(0x15c)];if(/^Bearer\s+/i[_0x51b770(0x1e5)](_0x3227e3))return _0x51b770(0x15a);return _0x351f58[_0x51b770(0x1a9)](_0x3227e3[_0x51b770(0xad)],0x1f4)?_0x3227e3['\x73\x6c\x69\x63\x65'](0x0,0x1f4)+'\x2e\x2e\x2e':_0x3227e3;}function stableHash(_0x317533){const _0x105bec=a0_0x58aa51,_0xd1988e={'\x44\x72\x73\x62\x7a':function(_0x1275b0,_0x9c70b1){return _0x1275b0<_0x9c70b1;}};let _0x4b5bae=0x811c9dc5;for(let _0x2ea418=0x0;_0xd1988e['\x44\x72\x73\x62\x7a'](_0x2ea418,_0x317533[_0x105bec(0xad)]);_0x2ea418+=0x1){_0x4b5bae^=_0x317533[_0x105bec(0xea)](_0x2ea418),_0x4b5bae=Math[_0x105bec(0x21a)](_0x4b5bae,0x1000193);}return(_0x4b5bae>>>0x0)[_0x105bec(0xb0)](0x10)[_0x105bec(0x16f)](0x8,'\x30');}function escapeRegExp(_0x4d238d){const _0xd54a99=a0_0x58aa51;return _0x4d238d[_0xd54a99(0x102)](/[.*+?^${}()|[\]\\]/g,_0xd54a99(0x189));}function inferSearchProvider(_0x3b8d9e){const _0x39e4e0=a0_0x58aa51,_0x33dd1d={'\x62\x42\x57\x6e\x47':_0x39e4e0(0x110),'\x6d\x5a\x43\x4c\x67':function(_0x5eb27b,_0x337a9d){return _0x5eb27b===_0x337a9d;}},_0x409b31=_0x3b8d9e?.[_0x39e4e0(0x18e)]?.[_0x39e4e0(0x1e8)]?.['\x77\x65\x62\x53\x65\x61\x72\x63\x68'];if(_0x409b31===![])return _0x33dd1d[_0x39e4e0(0x1e4)];if(_0x409b31&&typeof _0x409b31===_0x39e4e0(0xde)&&_0x33dd1d['\x6d\x5a\x43\x4c\x67'](typeof _0x409b31['\x70\x72\x6f\x76\x69\x64\x65\x72'],_0x39e4e0(0xd3)))return _0x409b31[_0x39e4e0(0x20d)];return _0x39e4e0(0xc9);}function promptCost(_0x32067e){const _0x48c423=a0_0x58aa51,_0x10859f={'\x66\x41\x61\x6f\x42':_0x48c423(0x15f),'\x46\x68\x5a\x73\x46':function(_0x7e926,_0x1596b0){return _0x7e926===_0x1596b0;}},_0x56ff93=_0x32067e,_0x9a5a8e=typeof _0x56ff93[_0x48c423(0x208)]===_0x10859f[_0x48c423(0x20e)]?_0x56ff93[_0x48c423(0x208)]:_0x56ff93['\x63\x6f\x73\x74'];return _0x10859f[_0x48c423(0x170)](typeof _0x9a5a8e,_0x48c423(0x15f))&&Number[_0x48c423(0x151)](_0x9a5a8e)&&_0x9a5a8e>0x0?_0x9a5a8e:0x0;}function promptToolCalls(_0x2e8ce4){const _0x407a11=a0_0x58aa51,_0x550827=_0x2e8ce4;if(Array[_0x407a11(0x19c)](_0x550827[_0x407a11(0x125)]))return _0x550827[_0x407a11(0x125)];if(Array[_0x407a11(0x19c)](_0x550827[_0x407a11(0xda)]))return _0x550827[_0x407a11(0xda)];return[];}function benchmarkSearchRequests(_0x1931f5,_0x4d449e){const _0xd84931=a0_0x58aa51,_0x24ae06={'\x4b\x62\x4b\x4c\x61':function(_0x50ca68,_0x2aeaed){return _0x50ca68(_0x2aeaed);},'\x6a\x77\x59\x67\x6f':function(_0x263ddc,_0x39b68e){return _0x263ddc===_0x39b68e;},'\x78\x67\x53\x4c\x52':_0xd84931(0x15f)},_0x2952a2=_0x1931f5,_0x143c10=_0x24ae06[_0xd84931(0x183)](typeof _0x2952a2[_0xd84931(0x105)],'\x6e\x75\x6d\x62\x65\x72')?_0x2952a2[_0xd84931(0x105)]:typeof _0x2952a2['\x6d\x65\x74\x61\x64\x61\x74\x61']?.[_0xd84931(0x105)]===_0x24ae06[_0xd84931(0x135)]?_0x2952a2[_0xd84931(0xd4)][_0xd84931(0x105)]:void 0x0;if(_0x143c10!==void 0x0)return Math[_0xd84931(0x10b)](0x0,_0x143c10);return _0x4d449e[_0xd84931(0x12b)](_0x5840cb=>{const _0x4be5e7=_0xd84931,_0x5c8447=_0x5840cb;return _0x24ae06[_0x4be5e7(0x194)](String,_0x5c8447['\x6e\x61\x6d\x65']??_0x5c8447[_0x4be5e7(0x1cf)]??_0x5c8447[_0x4be5e7(0x1e1)]??'')[_0x4be5e7(0x165)]()['\x69\x6e\x63\x6c\x75\x64\x65\x73'](_0x4be5e7(0x113));})['\x6c\x65\x6e\x67\x74\x68'];}function benchmarkCitationCount(_0x172f75){const _0x5b62f1=a0_0x58aa51,_0x3d6067={'\x5a\x54\x6c\x73\x4b':_0x5b62f1(0x195),'\x77\x61\x78\x4f\x74':function(_0x287894,_0x36d9a3){return _0x287894(_0x36d9a3);},'\x43\x41\x69\x4a\x6e':function(_0x43bd84,_0x178eb3){return _0x43bd84===_0x178eb3;}},_0x32ab6d=_0x172f75;if(typeof _0x32ab6d['\x63\x69\x74\x61\x74\x69\x6f\x6e\x43\x6f\x75\x6e\x74']==='\x6e\x75\x6d\x62\x65\x72')return Math[_0x5b62f1(0x10b)](0x0,_0x32ab6d[_0x5b62f1(0x14e)]);if(_0x3d6067[_0x5b62f1(0x115)](typeof _0x32ab6d[_0x5b62f1(0xd4)]?.[_0x5b62f1(0x14e)],_0x5b62f1(0x15f)))return Math[_0x5b62f1(0x10b)](0x0,_0x32ab6d['\x6d\x65\x74\x61\x64\x61\x74\x61']['\x63\x69\x74\x61\x74\x69\x6f\x6e\x43\x6f\x75\x6e\x74']);if(Array[_0x5b62f1(0x19c)](_0x32ab6d[_0x5b62f1(0x1a0)]))return _0x32ab6d[_0x5b62f1(0x1a0)][_0x5b62f1(0xad)];if(Array[_0x5b62f1(0x19c)](_0x32ab6d[_0x5b62f1(0x210)]))return _0x32ab6d[_0x5b62f1(0x210)][_0x5b62f1(0x12b)](_0x1e8e2f=>{const _0x3c4b83=_0x5b62f1,_0x2cbd56=_0x1e8e2f;return _0x2cbd56[_0x3c4b83(0x1e1)]===_0x3d6067['\x5a\x54\x6c\x73\x4b']||_0x3d6067[_0x3c4b83(0xdc)](Boolean,_0x2cbd56[_0x3c4b83(0x195)]);})[_0x5b62f1(0xad)];return 0x0;}function backendType(_0x12d644){const _0x564893=a0_0x58aa51,_0x54bc8c={'\x70\x76\x78\x50\x66':_0x564893(0x206),'\x55\x52\x4c\x71\x77':function(_0x50f501,_0x2704cd){return _0x50f501===_0x2704cd;}};if(_0x12d644===_0x564893(0x206))return _0x54bc8c[_0x564893(0x13a)];if(_0x12d644===_0x564893(0x21f))return'\x63\x6f\x64\x65\x78';if(_0x54bc8c[_0x564893(0xcf)](_0x12d644,_0x564893(0xed)))return _0x564893(0xed);return'\x6f\x70\x65\x6e\x63\x6f\x64\x65';}function safeId(_0xdd9a70){const _0x582233=a0_0x58aa51,_0x2eab3c={'\x6f\x6e\x4a\x67\x70':'\x63\x65\x6c\x6c'};return _0xdd9a70[_0x582233(0x165)]()[_0x582233(0x102)](/[^a-z0-9_-]+/g,'\x5f')[_0x582233(0x102)](/^_+|_+$/g,'')[_0x582233(0x20a)](0x0,0x78)||_0x2eab3c[_0x582233(0x1dc)];}async function cleanupBox(_0x3e1c48){if(_0x3e1c48['\x64\x65\x6c\x65\x74\x65'])await _0x3e1c48['\x64\x65\x6c\x65\x74\x65']();else{if(_0x3e1c48['\x64\x65\x73\x74\x72\x6f\x79'])await _0x3e1c48['\x64\x65\x73\x74\x72\x6f\x79']();}}function stripUndefined(_0x575cdf){const _0x2af3fc=a0_0x58aa51;if(Array['\x69\x73\x41\x72\x72\x61\x79'](_0x575cdf))return _0x575cdf[_0x2af3fc(0x215)](stripUndefined);if(!_0x575cdf||typeof _0x575cdf!=='\x6f\x62\x6a\x65\x63\x74')return _0x575cdf;return Object['\x66\x72\x6f\x6d\x45\x6e\x74\x72\x69\x65\x73'](Object[_0x2af3fc(0xfa)](_0x575cdf)['\x66\x69\x6c\x74\x65\x72'](([,_0x405659])=>_0x405659!==void 0x0)[_0x2af3fc(0x215)](([_0x311a01,_0xe77ef5])=>[_0x311a01,stripUndefined(_0xe77ef5)]));}export{a0_0x201f02 as AuthError,CONTROL_PLANE_MCP_SERVER_NAME,a0_0x55474e as CapabilityError,a0_0xadf879 as CollaborationClient,a0_0x290064 as CollaborationFileBridge,a0_0x30fe18 as DEFAULT_SANDBOX_SIZE,Image,ImageBuilder,a0_0x23509f as IntelligenceClient,a0_0x463cc5 as InteractiveSessionHandle,MANAGE_SANDBOXES_PARAMETERS,MANAGE_SANDBOXES_TOOL_NAME,a0_0x10debf as NetworkError,a0_0x513ab4 as NotFoundError,a0_0x511992 as PartialFailureError,a0_0x44ead1 as QuotaError,SANDBOX_MCP_SERVER_NAME,a0_0xc5989d as SANDBOX_SIZE_PRESETS,a0_0x18c01e as SANDBOX_SIZE_PRESET_NAMES,a0_0xc7c26 as Sandbox,a0_0xc7c26 as SandboxClient,a0_0x33a7a5 as SandboxError,a0_0x370d64 as SandboxFleet,a0_0x49b40a as SandboxFleetClient,a0_0x142ee6 as SandboxInstance,a0_0x3535bc as SandboxSession,a0_0x150bd8 as ServerError,a0_0x4e8ecb as StateError,a0_0xdb590b as TangleSandboxClient,a0_0x2a755a as TimeoutError,a0_0x423028 as ValidationError,a0_0x3b3faf as applySandboxEventText,a0_0x91cd09 as buildCollaborationDocumentId,buildControlPlaneMcpConfig,buildSandboxMcpConfig,buildTangleRouterEvalMatrixRequest,buildTangleRouterResponsesWebSearchRequest,buildTangleRouterSearchBackend,buildTangleRouterSearchProfile,a0_0x47786e as buildTraceExportPayload,a0_0x430f17 as collectAgentResponseText,createConfidentialSandbox,createManageSandboxesTool,defineAgentProfile,defineGitHubResource,defineInlineResource,a0_0x10a40e as exportTraceBundle,fetchTangleRouterSearchConfig,generateAttestationNonce,generateDockerfile,a0_0x41982e as getSandboxEventText,mergeAgentProfiles,a0_0x73b65d as normalizeCollaborationPath,a0_0xb68920 as normalizeRuntimeBackendConfig,a0_0xef8f38 as otelTraceIdForTangleTrace,a0_0x15079e as parseCollaborationDocumentId,a0_0x58a498 as parseSSEStream,a0_0x4fa2dc as resolveSandboxResources,runTangleRouterEvalMatrixInSandbox,a0_0x37a08a as sandboxResourcesForSize,a0_0x1e349c as serializeForSidecar,startTeeAttestationHeartbeat,a0_0x2e0597 as toOtelJson};
1
+ import { a as collectAgentResponseText, c as buildTraceExportPayload, d as toOtelJson, h as serializeForSidecar, i as applySandboxEventText, l as exportTraceBundle, m as normalizeRuntimeBackendConfig, n as SandboxSession, o as getSandboxEventText, p as parseSSEStream, r as InteractiveSessionHandle, t as SandboxInstance, u as otelTraceIdForTangleTrace } from "./sandbox-joKtQ5y3.js";
2
+ import { a as PartialFailureError, c as ServerError, d as ValidationError, i as NotFoundError, l as StateError, n as CapabilityError, o as QuotaError, r as NetworkError, s as SandboxError, t as AuthError, u as TimeoutError } from "./errors-DZsfJUuc.js";
3
+ import { a as DEFAULT_SANDBOX_SIZE, c as resolveSandboxResources, i as SandboxFleetClient, l as sandboxResourcesForSize, n as SandboxClient, o as SANDBOX_SIZE_PRESETS, r as SandboxFleet, s as SANDBOX_SIZE_PRESET_NAMES, t as IntelligenceClient } from "./client-BBZ7YLmq.js";
4
+ import { a as CollaborationClient, i as parseCollaborationDocumentId, n as buildCollaborationDocumentId, r as normalizeCollaborationPath, t as CollaborationFileBridge } from "./collaboration-BxlfZ2Uh.js";
5
+ import { t as TangleSandboxClient } from "./tangle-DM0o66lW.js";
6
+ import { defineAgentProfile, defineGitHubResource, defineInlineResource, mergeAgentProfiles } from "@tangle-network/agent-interface";
7
+ //#region src/confidential.ts
8
+ function generateAttestationNonce(bytes = 32) {
9
+ const buffer = new Uint8Array(bytes);
10
+ if (typeof globalThis.crypto !== "undefined" && typeof globalThis.crypto.getRandomValues === "function") globalThis.crypto.getRandomValues(buffer);
11
+ else throw new Error("Secure random nonce generation is not available");
12
+ return Array.from(buffer).map((byte) => byte.toString(16).padStart(2, "0")).join("");
13
+ }
14
+ async function createConfidentialSandbox(client, options) {
15
+ const attestationNonce = options.attestationNonce === "auto" || options.requireAttestation && !options.attestationNonce && !options.confidential.attestationNonce ? generateAttestationNonce() : options.attestationNonce ?? options.confidential.attestationNonce;
16
+ const sandbox = await client.create({
17
+ ...options,
18
+ confidential: {
19
+ ...options.confidential,
20
+ ...attestationNonce ? { attestationNonce } : {},
21
+ attestationRefresh: options.confidential.attestationRefresh || Boolean(attestationNonce)
22
+ }
23
+ });
24
+ let attestation = attestationFromMetadata(sandbox.metadata);
25
+ if (!attestation) try {
26
+ attestation = (await sandbox.getTeeAttestation(attestationNonce ? { attestationNonce } : void 0)).attestation;
27
+ } catch (error) {
28
+ if (options.requireAttestation) throw error;
29
+ }
30
+ if (options.requireAttestation && !attestation) throw new Error("TEE attestation was required but no evidence was returned");
31
+ return {
32
+ sandbox,
33
+ attestation,
34
+ attestationNonce
35
+ };
36
+ }
37
+ function attestationFromMetadata(metadata) {
38
+ const raw = metadata?.teeAttestationJson;
39
+ if (typeof raw !== "string" || raw.trim() === "") return void 0;
40
+ try {
41
+ return JSON.parse(raw);
42
+ } catch {
43
+ return;
44
+ }
45
+ }
46
+ //#endregion
47
+ //#region src/attestation-heartbeat.ts
48
+ /**
49
+ * Periodically requests nonce-bound TEE attestations for a running sandbox.
50
+ *
51
+ * This proves freshness/liveness of the attested sandbox endpoint. It does not
52
+ * by itself sign every computation result; callers that need result binding
53
+ * should include a result/session digest in the nonce preimage before asking
54
+ * the runtime for a quote.
55
+ */
56
+ function startTeeAttestationHeartbeat(sandbox, options = {}) {
57
+ const intervalMs = options.intervalMs ?? 6e4;
58
+ let stopped = false;
59
+ let failures = 0;
60
+ let sequence = 0;
61
+ let latest;
62
+ let timer;
63
+ let resolveDone;
64
+ const done = new Promise((resolve) => {
65
+ resolveDone = resolve;
66
+ });
67
+ const stop = () => {
68
+ if (stopped) return;
69
+ stopped = true;
70
+ if (timer) clearTimeout(timer);
71
+ resolveDone?.();
72
+ };
73
+ const ping = async () => {
74
+ if (stopped || options.signal?.aborted) throw new Error("TEE attestation heartbeat is stopped");
75
+ const nonce = generateAttestationNonce();
76
+ const response = await sandbox.getTeeAttestation({ attestationNonce: nonce });
77
+ if (response.attestationNonce && response.attestationNonce !== nonce) throw new Error("TEE attestation response nonce did not match challenge");
78
+ const sample = {
79
+ sequence: ++sequence,
80
+ nonce,
81
+ response: {
82
+ ...response,
83
+ attestationNonce: response.attestationNonce ?? nonce
84
+ },
85
+ checkedAt: /* @__PURE__ */ new Date()
86
+ };
87
+ await options.verify?.(sample);
88
+ latest = sample;
89
+ options.onSuccess?.(sample);
90
+ return sample;
91
+ };
92
+ const schedule = () => {
93
+ if (stopped || options.signal?.aborted) {
94
+ stop();
95
+ return;
96
+ }
97
+ timer = setTimeout(() => {
98
+ loop();
99
+ }, intervalMs);
100
+ };
101
+ const loop = async () => {
102
+ try {
103
+ await ping();
104
+ schedule();
105
+ } catch (error) {
106
+ failures += 1;
107
+ options.onFailure?.(error);
108
+ if (options.continueOnFailure) schedule();
109
+ else stop();
110
+ }
111
+ };
112
+ options.signal?.addEventListener("abort", stop, { once: true });
113
+ if (options.immediate === false) schedule();
114
+ else loop();
115
+ return {
116
+ stop,
117
+ ping,
118
+ get stopped() {
119
+ return stopped;
120
+ },
121
+ get failures() {
122
+ return failures;
123
+ },
124
+ get latest() {
125
+ return latest;
126
+ },
127
+ done
128
+ };
129
+ }
130
+ //#endregion
131
+ //#region src/image.ts
132
+ function isFetchClient(client) {
133
+ return typeof client.fetch === "function";
134
+ }
135
+ function requestImageBuild(client, init) {
136
+ if (isFetchClient(client)) return client.fetch("/v1/images", init);
137
+ const headers = new Headers(init.headers);
138
+ headers.set("Authorization", `Bearer ${client.apiKey}`);
139
+ return fetch(`${client.baseUrl.replace(/\/+$/, "")}/v1/images`, {
140
+ ...init,
141
+ headers
142
+ });
143
+ }
144
+ /**
145
+ * Represents a built or existing container image.
146
+ */
147
+ var Image = class Image {
148
+ constructor(id, tag, digest, spec) {
149
+ this.id = id;
150
+ this.tag = tag;
151
+ this.digest = digest;
152
+ this.spec = spec;
153
+ }
154
+ /**
155
+ * Start building a new image.
156
+ *
157
+ * @param baseImage Base Docker image (default: "ubuntu:22.04")
158
+ * @returns A new ImageBuilder instance
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * const builder = Image.create("python:3.11-slim");
163
+ * ```
164
+ */
165
+ static create(baseImage = "ubuntu:22.04") {
166
+ return new ImageBuilder({ baseImage });
167
+ }
168
+ /**
169
+ * Reference an existing image by ID.
170
+ *
171
+ * @param imageId The image ID
172
+ * @returns An Image instance
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const image = Image.fromId("sha256:abc123...");
177
+ * const box = await client.create({ image: image.id });
178
+ * ```
179
+ */
180
+ static fromId(imageId) {
181
+ return new Image(imageId, imageId.startsWith("sha256:") ? `tangle-image:${imageId.slice(7, 19)}` : imageId, imageId);
182
+ }
183
+ /**
184
+ * Create an image builder from a Dockerfile.
185
+ *
186
+ * @param dockerfile Dockerfile path or content
187
+ * @param context Build context directory
188
+ * @returns A new ImageBuilder instance
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * const builder = Image.fromDockerfile("./Dockerfile", "./");
193
+ * ```
194
+ */
195
+ static fromDockerfile(dockerfile, context) {
196
+ return new ImageBuilder({
197
+ baseImage: "scratch",
198
+ dockerfile,
199
+ dockerContext: context || "."
200
+ });
201
+ }
202
+ /**
203
+ * Create an Image from a build result.
204
+ * @internal
205
+ */
206
+ static fromBuildResult(result) {
207
+ return new Image(result.id, result.tag, result.digest, result.spec);
208
+ }
209
+ /**
210
+ * Convert to JSON.
211
+ */
212
+ toJSON() {
213
+ return {
214
+ id: this.id,
215
+ tag: this.tag,
216
+ digest: this.digest,
217
+ spec: this.spec
218
+ };
219
+ }
220
+ };
221
+ /**
222
+ * Chainable builder for constructing custom container images.
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * const image = await Image.create()
227
+ * .python("3.11")
228
+ * .addPackages(["torch", "transformers"])
229
+ * .addCommands(["apt-get install -y ffmpeg"])
230
+ * .withEnv({ HF_HOME: "/models" })
231
+ * .withSecrets(["HF_TOKEN"])
232
+ * .build({ client });
233
+ * ```
234
+ */
235
+ var ImageBuilder = class {
236
+ spec;
237
+ clientConfig;
238
+ /** @internal */
239
+ constructor(initialSpec) {
240
+ this.spec = {
241
+ baseImage: initialSpec.baseImage || "ubuntu:22.04",
242
+ ...initialSpec
243
+ };
244
+ }
245
+ /**
246
+ * Configure Python version.
247
+ *
248
+ * @param version Python version (e.g., "3.11", "3.10")
249
+ */
250
+ python(version) {
251
+ this.spec.pythonVersion = version;
252
+ return this;
253
+ }
254
+ /**
255
+ * Add Python packages via pip.
256
+ *
257
+ * @param packages Package names with optional versions
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * .addPackages(["numpy>=1.21", "pandas", "scikit-learn"])
262
+ * ```
263
+ */
264
+ addPackages(packages) {
265
+ this.spec.packages = [...this.spec.packages || [], ...packages];
266
+ return this;
267
+ }
268
+ /**
269
+ * Add packages from requirements file.
270
+ *
271
+ * @param requirementsPath Path to requirements.txt
272
+ */
273
+ addPackagesFromFile(requirementsPath) {
274
+ this.spec.commands = [...this.spec.commands || [], `pip install -r ${requirementsPath}`];
275
+ return this;
276
+ }
277
+ /**
278
+ * Add shell commands to run during build.
279
+ *
280
+ * @param commands Commands to execute
281
+ *
282
+ * @example
283
+ * ```typescript
284
+ * .addCommands([
285
+ * "apt-get update",
286
+ * "apt-get install -y ffmpeg libsm6"
287
+ * ])
288
+ * ```
289
+ */
290
+ addCommands(commands) {
291
+ this.spec.commands = [...this.spec.commands || [], ...commands];
292
+ return this;
293
+ }
294
+ /**
295
+ * Add system packages via apt-get.
296
+ *
297
+ * @param packages Package names
298
+ */
299
+ addAptPackages(packages) {
300
+ this.spec.aptPackages = [...this.spec.aptPackages || [], ...packages];
301
+ return this;
302
+ }
303
+ /**
304
+ * Set environment variables.
305
+ *
306
+ * @param env Key-value pairs
307
+ *
308
+ * @example
309
+ * ```typescript
310
+ * .withEnv({ HF_HOME: "/models", PYTHONUNBUFFERED: "1" })
311
+ * ```
312
+ */
313
+ withEnv(env) {
314
+ this.spec.env = {
315
+ ...this.spec.env,
316
+ ...env
317
+ };
318
+ return this;
319
+ }
320
+ /**
321
+ * Inject secrets during build.
322
+ * Secrets are retrieved from the secret store.
323
+ *
324
+ * @param secretNames Names of secrets to inject
325
+ *
326
+ * @example
327
+ * ```typescript
328
+ * .withSecrets(["HF_TOKEN", "AWS_ACCESS_KEY"])
329
+ * ```
330
+ */
331
+ withSecrets(secretNames) {
332
+ this.spec.secrets = [...this.spec.secrets || [], ...secretNames];
333
+ return this;
334
+ }
335
+ /**
336
+ * Configure conda environment.
337
+ *
338
+ * @param packages Conda packages
339
+ * @param channels Conda channels (default: ["conda-forge"])
340
+ *
341
+ * @example
342
+ * ```typescript
343
+ * .conda(["pytorch", "torchvision"], ["pytorch", "conda-forge"])
344
+ * ```
345
+ */
346
+ conda(packages, channels) {
347
+ this.spec.conda = {
348
+ packages: [...this.spec.conda?.packages || [], ...packages],
349
+ channels: channels || this.spec.conda?.channels || ["conda-forge"]
350
+ };
351
+ return this;
352
+ }
353
+ /**
354
+ * Set working directory.
355
+ *
356
+ * @param dir Working directory path
357
+ */
358
+ workdir(dir) {
359
+ this.spec.workdir = dir;
360
+ return this;
361
+ }
362
+ /**
363
+ * Set user to run as.
364
+ *
365
+ * @param user Username or UID
366
+ */
367
+ user(user) {
368
+ this.spec.user = user;
369
+ return this;
370
+ }
371
+ /**
372
+ * Add build arguments.
373
+ *
374
+ * @param args Build arguments
375
+ */
376
+ buildArgs(args) {
377
+ this.spec.buildArgs = {
378
+ ...this.spec.buildArgs,
379
+ ...args
380
+ };
381
+ return this;
382
+ }
383
+ /**
384
+ * Add image labels.
385
+ *
386
+ * @param labels Image labels
387
+ */
388
+ labels(labels) {
389
+ this.spec.labels = {
390
+ ...this.spec.labels,
391
+ ...labels
392
+ };
393
+ return this;
394
+ }
395
+ /**
396
+ * Get the image specification without building.
397
+ *
398
+ * @returns The current ImageSpec
399
+ */
400
+ toSpec() {
401
+ return { ...this.spec };
402
+ }
403
+ /**
404
+ * Compute the content-addressed ID for this spec.
405
+ *
406
+ * Uses Web Crypto when available (browsers and Node 22+), falling
407
+ * back to a lazy `import("node:crypto")` on older server runtimes.
408
+ * Works in every JavaScript environment the SDK supports.
409
+ *
410
+ * @returns SHA-256 hash of the normalized spec as a hex string.
411
+ *
412
+ * **Breaking change (v0.0.3):** `computeId()` was previously
413
+ * synchronous. Callers must now `await` the result. A Node-only sync
414
+ * variant was considered and dropped: it would have either required
415
+ * Node 22.3+ (breaking Node 18/20 consumers) or re-introduced the
416
+ * top-level `node:crypto` import that blanks every browser page
417
+ * transitively importing the SDK root. If you genuinely need the
418
+ * hash synchronously in a Node-only context, compute it yourself
419
+ * from `builder.toSpec()` with `JSON.stringify(spec, Object.keys(spec).sort())`.
420
+ */
421
+ async computeId() {
422
+ const normalized = JSON.stringify(this.spec, Object.keys(this.spec).sort());
423
+ const webSubtle = globalThis.crypto?.subtle;
424
+ if (webSubtle) {
425
+ const digest = await webSubtle.digest("SHA-256", new TextEncoder().encode(normalized));
426
+ return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, "0")).join("");
427
+ }
428
+ const { createHash } = await import("node:crypto");
429
+ return createHash("sha256").update(normalized).digest("hex");
430
+ }
431
+ /**
432
+ * Configure client for API access.
433
+ * @internal
434
+ */
435
+ withClient(config) {
436
+ this.clientConfig = config;
437
+ return this;
438
+ }
439
+ /**
440
+ * Build the image.
441
+ *
442
+ * @param options Build options including client config
443
+ * @returns The built Image instance
444
+ *
445
+ * @example
446
+ * ```typescript
447
+ * const image = await Image.create()
448
+ * .python("3.11")
449
+ * .addPackages(["numpy"])
450
+ * .build({
451
+ * client: { baseUrl, apiKey },
452
+ * onProgress: (e) => console.log(e.message),
453
+ * });
454
+ *
455
+ * const box = await client.create({ image: image.id });
456
+ * ```
457
+ */
458
+ async build(options) {
459
+ const client = options?.client || this.clientConfig;
460
+ if (!client) throw new Error("Client configuration required. Pass { client: { baseUrl, apiKey } } to build() or use ImageBuilder through the Sandbox client.");
461
+ const timeoutMs = options?.timeout ?? 6e5;
462
+ const timeoutController = timeoutMs > 0 ? new AbortController() : void 0;
463
+ const timeoutId = timeoutController ? setTimeout(() => timeoutController.abort(), timeoutMs) : void 0;
464
+ let response;
465
+ try {
466
+ response = await requestImageBuild(client, {
467
+ method: "POST",
468
+ headers: { "Content-Type": "application/json" },
469
+ signal: timeoutController?.signal,
470
+ body: JSON.stringify({
471
+ spec: this.spec,
472
+ options: {
473
+ noCache: options?.noCache,
474
+ platform: options?.platform,
475
+ tag: options?.tag,
476
+ stream: !!options?.onProgress
477
+ }
478
+ })
479
+ });
480
+ if (!response.ok) {
481
+ const error = await response.text();
482
+ throw new Error(`Failed to build image: ${error}`);
483
+ }
484
+ if (options?.onProgress && response.headers.get("content-type")?.includes("text/event-stream")) {
485
+ let result;
486
+ for await (const event of parseSSEStream(response.body, { signal: timeoutController?.signal })) {
487
+ const data = event.data;
488
+ if (data.type === "progress") options.onProgress(data.event);
489
+ else if (data.type === "complete") {
490
+ const rawResult = data.result;
491
+ result = {
492
+ ...rawResult,
493
+ createdAt: new Date(rawResult.createdAt)
494
+ };
495
+ } else if (data.type === "error") throw new Error(String(data.message ?? "Image build failed"));
496
+ }
497
+ if (!result) throw new Error("Build completed but no result received");
498
+ return Image.fromBuildResult(result);
499
+ }
500
+ const data = await response.json();
501
+ const result = {
502
+ ...data,
503
+ createdAt: new Date(data.createdAt)
504
+ };
505
+ return Image.fromBuildResult(result);
506
+ } catch (error) {
507
+ if (timeoutController?.signal.aborted) throw new Error(`Image build timed out after ${timeoutMs}ms`);
508
+ throw error;
509
+ } finally {
510
+ if (timeoutId) clearTimeout(timeoutId);
511
+ }
512
+ }
513
+ /**
514
+ * Generate Dockerfile from the current spec.
515
+ * Useful for debugging or manual builds.
516
+ *
517
+ * @returns Dockerfile content
518
+ */
519
+ generateDockerfile() {
520
+ return generateDockerfile(this.spec);
521
+ }
522
+ };
523
+ /**
524
+ * Generate a Dockerfile from an ImageSpec.
525
+ *
526
+ * @param spec The image specification
527
+ * @returns Dockerfile content
528
+ */
529
+ function generateDockerfile(spec) {
530
+ const lines = [];
531
+ lines.push(`FROM ${spec.baseImage}`);
532
+ lines.push("");
533
+ if (spec.labels && Object.keys(spec.labels).length > 0) {
534
+ for (const [key, value] of Object.entries(spec.labels)) lines.push(`LABEL ${key}="${value}"`);
535
+ lines.push("");
536
+ }
537
+ if (spec.buildArgs && Object.keys(spec.buildArgs).length > 0) {
538
+ for (const [key, value] of Object.entries(spec.buildArgs)) lines.push(`ARG ${key}=${value}`);
539
+ lines.push("");
540
+ }
541
+ if (spec.env && Object.keys(spec.env).length > 0) {
542
+ for (const [key, value] of Object.entries(spec.env)) lines.push(`ENV ${key}="${value}"`);
543
+ lines.push("");
544
+ }
545
+ if (spec.workdir) {
546
+ lines.push(`WORKDIR ${spec.workdir}`);
547
+ lines.push("");
548
+ }
549
+ if (spec.aptPackages && spec.aptPackages.length > 0) {
550
+ lines.push("# Install system packages");
551
+ lines.push("RUN apt-get update && \\");
552
+ lines.push(` apt-get install -y --no-install-recommends ${spec.aptPackages.join(" ")} && \\`);
553
+ lines.push(" apt-get clean && rm -rf /var/lib/apt/lists/*");
554
+ lines.push("");
555
+ }
556
+ if (spec.pythonVersion) {
557
+ lines.push(`# Install Python ${spec.pythonVersion}`);
558
+ if (!(spec.baseImage.includes("python") || spec.baseImage.includes("anaconda") || spec.baseImage.includes("miniconda")) && spec.baseImage.includes("ubuntu")) {
559
+ lines.push("RUN apt-get update && \\");
560
+ lines.push(" apt-get install -y software-properties-common && \\");
561
+ lines.push(" add-apt-repository -y ppa:deadsnakes/ppa && \\");
562
+ lines.push(` apt-get install -y python${spec.pythonVersion} python${spec.pythonVersion}-venv python${spec.pythonVersion}-distutils && \\`);
563
+ lines.push(" apt-get clean && rm -rf /var/lib/apt/lists/*");
564
+ lines.push("");
565
+ lines.push(`RUN update-alternatives --install /usr/bin/python python /usr/bin/python${spec.pythonVersion} 1 && \\`);
566
+ lines.push(` update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${spec.pythonVersion} 1`);
567
+ lines.push("");
568
+ lines.push("RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python");
569
+ }
570
+ lines.push("");
571
+ }
572
+ if (spec.conda && spec.conda.packages.length > 0) {
573
+ lines.push("# Install micromamba and conda packages");
574
+ lines.push("RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba && \\");
575
+ lines.push(" mv bin/micromamba /usr/local/bin/ && \\");
576
+ lines.push(" micromamba shell init -s bash -p /opt/conda");
577
+ lines.push("");
578
+ const channelArgs = (spec.conda.channels || ["conda-forge"]).map((c) => `-c ${c}`).join(" ");
579
+ lines.push(`RUN micromamba install -y -n base ${channelArgs} ${spec.conda.packages.join(" ")} && \\`);
580
+ lines.push(" micromamba clean --all --yes");
581
+ lines.push("ENV PATH=\"/opt/conda/bin:$PATH\"");
582
+ lines.push("");
583
+ }
584
+ if (spec.packages && spec.packages.length > 0) {
585
+ lines.push("# Install Python packages");
586
+ lines.push(`RUN pip install --no-cache-dir ${spec.packages.join(" ")}`);
587
+ lines.push("");
588
+ }
589
+ if (spec.commands && spec.commands.length > 0) {
590
+ lines.push("# Custom commands");
591
+ for (const cmd of spec.commands) lines.push(`RUN ${cmd}`);
592
+ lines.push("");
593
+ }
594
+ if (spec.user) lines.push(`USER ${spec.user}`);
595
+ return lines.join("\n");
596
+ }
597
+ //#endregion
598
+ //#region src/manage-sandboxes.ts
599
+ const MANAGE_SANDBOXES_TOOL_NAME = "manageSandboxes";
600
+ function createManageSandboxesTool(client, options = {}) {
601
+ return {
602
+ name: MANAGE_SANDBOXES_TOOL_NAME,
603
+ description: "Create, inspect, and manage sandbox fleets for parallel agent workloads.",
604
+ parameters: MANAGE_SANDBOXES_PARAMETERS,
605
+ async execute(input) {
606
+ switch (input.action) {
607
+ case "capabilities": return client.fleets.capabilities();
608
+ case "create": return client.fleets.create(applyToolPolicy(requireCreateOptions(input), options.policy));
609
+ case "createWithCoordinator": return client.fleets.createWithCoordinator(applyToolPolicy(requireCreateWithCoordinatorOptions(input), options.policy));
610
+ case "list": return client.fleets.list({ fleetId: requireString(input, "fleetId") });
611
+ case "delete": return client.fleets.delete(requireString(input, "fleetId"));
612
+ case "attachMachine": return client.fleets.attachMachine(requireString(input, "fleetId"), requireMachine(input));
613
+ case "detachMachine": return client.fleets.detachMachine(requireString(input, "fleetId"), requireString(input, "machineId"));
614
+ case "manifest": return client.fleets.manifest(requireString(input, "fleetId"));
615
+ case "usage": return client.fleets.usage(requireString(input, "fleetId"));
616
+ case "trace": return client.fleets.trace(requireString(input, "fleetId"));
617
+ case "intelligence": return client.fleets.intelligence(requireString(input, "fleetId"));
618
+ case "cost": return client.fleets.cost(requireString(input, "fleetId"));
619
+ case "createWorkspaceSnapshot": return client.fleets.createWorkspaceSnapshot(requireString(input, "fleetId"));
620
+ case "restoreWorkspaceSnapshot": return client.fleets.restoreWorkspaceSnapshot(requireString(input, "fleetId"), requireString(input, "snapshotId"));
621
+ case "reconcileWorkspace": return client.fleets.reconcileWorkspace(requireString(input, "fleetId"));
622
+ default: throw new Error(`Unsupported manageSandboxes action: ${String(input.action)}`);
623
+ }
624
+ }
625
+ };
626
+ }
627
+ function requireString(input, key) {
628
+ const value = input[key];
629
+ if (typeof value !== "string" || value.length === 0) throw new Error(`manageSandboxes requires ${key}`);
630
+ return value;
631
+ }
632
+ function requireCreateOptions(input) {
633
+ const value = input.options;
634
+ if (!value || typeof value !== "object") throw new Error("manageSandboxes requires options");
635
+ return rejectUserPolicy(value);
636
+ }
637
+ function requireCreateWithCoordinatorOptions(input) {
638
+ const value = input.options;
639
+ if (!value || typeof value !== "object") throw new Error("manageSandboxes requires options");
640
+ return rejectUserPolicy(value);
641
+ }
642
+ function rejectUserPolicy(options) {
643
+ if ("policy" in options && options.policy !== void 0) throw new Error("manageSandboxes policy must be supplied by the tool host");
644
+ return options;
645
+ }
646
+ function applyToolPolicy(options, policy) {
647
+ if (!policy) throw new Error("manageSandboxes create requires a host-owned policy");
648
+ return {
649
+ ...options,
650
+ policy
651
+ };
652
+ }
653
+ function requireMachine(input) {
654
+ const value = input.machine;
655
+ if (!value || typeof value !== "object") throw new Error("manageSandboxes requires machine");
656
+ const machine = value;
657
+ requireString(machine, "machineId");
658
+ requireString(machine, "sandboxId");
659
+ return value;
660
+ }
661
+ const fleetId = {
662
+ type: "string",
663
+ pattern: "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
664
+ };
665
+ const MANAGE_SANDBOXES_PARAMETERS = {
666
+ type: "object",
667
+ additionalProperties: false,
668
+ required: ["action"],
669
+ properties: {
670
+ action: {
671
+ type: "string",
672
+ enum: [
673
+ "capabilities",
674
+ "create",
675
+ "createWithCoordinator",
676
+ "list",
677
+ "delete",
678
+ "attachMachine",
679
+ "detachMachine",
680
+ "manifest",
681
+ "usage",
682
+ "trace",
683
+ "intelligence",
684
+ "cost",
685
+ "createWorkspaceSnapshot",
686
+ "restoreWorkspaceSnapshot",
687
+ "reconcileWorkspace"
688
+ ]
689
+ },
690
+ fleetId,
691
+ machineId: fleetId,
692
+ snapshotId: {
693
+ type: "string",
694
+ minLength: 1
695
+ },
696
+ options: { type: "object" },
697
+ machine: {
698
+ type: "object",
699
+ required: ["machineId", "sandboxId"],
700
+ additionalProperties: true,
701
+ properties: {
702
+ machineId: fleetId,
703
+ sandboxId: {
704
+ type: "string",
705
+ minLength: 1,
706
+ maxLength: 128
707
+ }
708
+ }
709
+ }
710
+ }
711
+ };
712
+ //#endregion
713
+ //#region src/mcp.ts
714
+ /**
715
+ * MCP (Model Context Protocol) helpers for sandbox capabilities.
716
+ *
717
+ * The sandbox exposes capabilities (currently `computer_use`, more
718
+ * later) as MCP tools over Streamable HTTP. Any MCP-capable client —
719
+ * Claude Desktop, Cursor, claude-code, codex, opencode, raw
720
+ * `@modelcontextprotocol/sdk` apps — can consume this surface by
721
+ * pasting the JSON returned from `Sandbox#getMcpEndpoint()` (or
722
+ * `buildSandboxMcpConfig` if you already have the URL + token) into
723
+ * the client's MCP config.
724
+ *
725
+ * Security model:
726
+ * - Tokens are capability-scoped JWTs (claim `cap: ["computer_use"]`).
727
+ * - Full sandbox runtime tokens are rejected on `/mcp`; only
728
+ * capability-scoped tokens work there.
729
+ * - A scoped token cannot pivot to admin endpoints (`/exec`, `/files`,
730
+ * etc.) — those routes reject scoped tokens.
731
+ * - Tokens are short-lived. Rotate via `Sandbox#getMcpEndpoint()`,
732
+ * which mints a fresh token each call.
733
+ */
734
+ /** Default name of the MCP server entry — surfaces in the host UI. */
735
+ const SANDBOX_MCP_SERVER_NAME = "tangle-sandbox";
736
+ /**
737
+ * Build the canonical `mcpServers` config for a sandbox MCP endpoint.
738
+ * Pure function — no I/O, no crypto. Use this when you already have a
739
+ * `{ url, authToken }` pair from the API and just want the JSON shape
740
+ * to paste into a host. Most callers should use
741
+ * `Sandbox#getMcpEndpoint()` instead, which fetches a freshly-minted
742
+ * token from the API.
743
+ */
744
+ function buildSandboxMcpConfig(options) {
745
+ if (!options.sandboxUrl) throw new Error("buildSandboxMcpConfig: sandboxUrl is required");
746
+ if (!options.authToken) throw new Error("buildSandboxMcpConfig: authToken is required");
747
+ const serverName = options.serverName ?? "tangle-sandbox";
748
+ const baseUrl = options.sandboxUrl.replace(/\/+$/, "");
749
+ return {
750
+ serverName,
751
+ config: { mcpServers: { [serverName]: {
752
+ type: "http",
753
+ url: `${baseUrl}/mcp`,
754
+ headers: { Authorization: `Bearer ${options.authToken}` }
755
+ } } }
756
+ };
757
+ }
758
+ /**
759
+ * Default name of the control-plane MCP server entry. Distinct from the per-
760
+ * sandbox runtime server (`SANDBOX_MCP_SERVER_NAME`): the sandbox surface
761
+ * operates INSIDE one sandbox (`run_code`/`exec`/`read`/`write`), while this one
762
+ * operates ACROSS the account (sandboxes, workflows, integrations, usage).
763
+ */
764
+ const CONTROL_PLANE_MCP_SERVER_NAME = "tangle-control-plane";
765
+ /**
766
+ * Build the canonical `mcpServers` config for the public control-plane MCP
767
+ * endpoint — the JSON a user pastes into Claude Desktop / Cursor / claude-code
768
+ * to drive their Tangle account from their own agent. Pure function; mirrors
769
+ * `buildSandboxMcpConfig` but carries an account API key instead of a per-
770
+ * sandbox capability token.
771
+ */
772
+ function buildControlPlaneMcpConfig(options) {
773
+ if (!options.platformUrl) throw new Error("buildControlPlaneMcpConfig: platformUrl is required");
774
+ if (!options.apiKey) throw new Error("buildControlPlaneMcpConfig: apiKey is required");
775
+ const serverName = options.serverName ?? "tangle-control-plane";
776
+ const baseUrl = options.platformUrl.replace(/\/+$/, "");
777
+ return {
778
+ serverName,
779
+ config: { mcpServers: { [serverName]: {
780
+ type: "http",
781
+ url: `${baseUrl}/mcp`,
782
+ headers: { Authorization: `Bearer ${options.apiKey}` }
783
+ } } }
784
+ };
785
+ }
786
+ //#endregion
787
+ //#region src/router-search.ts
788
+ const DEFAULT_ROUTER_URL = "https://router.tangle.tools";
789
+ async function fetchTangleRouterSearchConfig(options = {}) {
790
+ const routerUrl = (options.routerUrl ?? DEFAULT_ROUTER_URL).replace(/\/+$/, "");
791
+ const url = new URL(`${routerUrl}/v1/search/config`);
792
+ if (options.provider) url.searchParams.set("provider", options.provider);
793
+ if (options.apiKeyEnv) url.searchParams.set("api_key_env", options.apiKeyEnv);
794
+ if (options.model) url.searchParams.set("model", options.model);
795
+ const res = await (options.fetchImpl ?? fetch)(url);
796
+ if (!res.ok) throw new Error(`Failed to load Tangle Router search config: ${res.status}`);
797
+ const config = await res.json();
798
+ if (config.object !== "search.config") throw new Error("Invalid Tangle Router search config response");
799
+ return config;
800
+ }
801
+ function buildTangleRouterSearchProfile(config, options = {}) {
802
+ return {
803
+ name: options.name ?? "tangle-router-web-search",
804
+ model: { default: options.model ?? config.tcloud.sandboxBackend.model.model },
805
+ permissions: {
806
+ network: "allow",
807
+ mcp: "allow"
808
+ },
809
+ mcp: { tangle_web_search: {
810
+ transport: "http",
811
+ url: config.mcp.streamable_http_url,
812
+ headers: config.mcp.headers,
813
+ enabled: true
814
+ } },
815
+ metadata: {
816
+ tangleRouterSearchProvider: config.default_provider,
817
+ tangleRouterSearchEndpoint: config.endpoint.url
818
+ }
819
+ };
820
+ }
821
+ function buildTangleRouterSearchBackend(config, options = {}) {
822
+ const model = config.tcloud.sandboxBackend.model;
823
+ return {
824
+ type: options.type ?? "opencode",
825
+ profile: options.profile ?? buildTangleRouterSearchProfile(config),
826
+ model: {
827
+ provider: model.provider,
828
+ model: model.model,
829
+ baseUrl: model.baseUrl,
830
+ ...options.apiKey ? { apiKey: options.apiKey } : {}
831
+ }
832
+ };
833
+ }
834
+ function buildTangleRouterEvalMatrixRequest(config, overrides = {}) {
835
+ return {
836
+ url: config.eval_matrix.url,
837
+ body: {
838
+ ...config.eval_matrix.body_template,
839
+ ...overrides
840
+ }
841
+ };
842
+ }
843
+ function buildTangleRouterResponsesWebSearchRequest(config, overrides = {}) {
844
+ const compat = config.openrouter_compat?.responses;
845
+ if (compat) return {
846
+ url: compat.url,
847
+ body: {
848
+ ...compat.body,
849
+ ...overrides
850
+ }
851
+ };
852
+ const model = config.tcloud.sandboxBackend.model;
853
+ return {
854
+ url: `${model.baseUrl.replace(/\/+$/, "")}/responses`,
855
+ body: {
856
+ model: model.model,
857
+ input: "Search for the latest documentation and answer with citations.",
858
+ tools: [{
859
+ type: "openrouter:web_search",
860
+ parameters: {
861
+ provider: config.default_provider,
862
+ max_results: 5
863
+ }
864
+ }],
865
+ ...overrides
866
+ }
867
+ };
868
+ }
869
+ //#endregion
870
+ //#region src/router-eval-matrix-runner.ts
871
+ async function runTangleRouterEvalMatrixInSandbox(options) {
872
+ const fetchFn = options.fetchImpl ?? fetch;
873
+ const request = buildTangleRouterEvalMatrixRequest(options.config, {
874
+ transport: "sandbox-sdk",
875
+ ...options.inputOverrides
876
+ });
877
+ const created = await postJson(fetchFn, request.url, options.apiKey, request.body);
878
+ const matrix = created.matrix;
879
+ const cases = await runMatrixCases({
880
+ matrix,
881
+ config: options.config,
882
+ apiKey: options.apiKey,
883
+ sandboxClient: options.sandboxClient,
884
+ concurrency: options.concurrency ?? 3,
885
+ sessionIdPrefix: options.sessionIdPrefix ?? `eval_${created.suite.id}`
886
+ });
887
+ const importResult = await postJson(fetchFn, `${request.url.replace(/\/api\/eval\/matrix$/, "")}/api/eval/suites/${encodeURIComponent(String(created.suite.id))}/runs/import`, options.apiKey, {
888
+ baseline: options.baseline === true,
889
+ cases
890
+ });
891
+ return {
892
+ suite: created.suite,
893
+ matrix,
894
+ cases,
895
+ benchmark: importResult.benchmark ?? [],
896
+ importResult
897
+ };
898
+ }
899
+ async function runMatrixCases(options) {
900
+ const profiles = new Map(options.matrix.agentProfiles.map((p) => [p.id, p]));
901
+ const harnesses = new Map(options.matrix.harnesses.map((h) => [h.id, h]));
902
+ const iterations = Math.max(1, Math.min(10, options.matrix.iterations ?? 1));
903
+ const tasks = [];
904
+ for (let iteration = 0; iteration < iterations; iteration++) for (const scenario of options.matrix.scenarios) tasks.push(() => runOneCase({
905
+ scenario,
906
+ iteration,
907
+ profile: scenario.profile ? profiles.get(scenario.profile) : void 0,
908
+ harness: scenario.harness ? harnesses.get(scenario.harness) : void 0,
909
+ config: options.config,
910
+ apiKey: options.apiKey,
911
+ sandboxClient: options.sandboxClient,
912
+ sessionIdPrefix: options.sessionIdPrefix
913
+ }));
914
+ return parallelLimit(tasks, options.concurrency);
915
+ }
916
+ async function runOneCase(options) {
917
+ const start = Date.now();
918
+ const backend = buildSandboxBackend(options);
919
+ const box = await options.sandboxClient.create({
920
+ name: `eval-${safeId(options.scenario.id).slice(0, 40)}`,
921
+ environment: options.harness?.image,
922
+ image: options.harness?.image,
923
+ backend,
924
+ env: materializeHarnessEnv(options.config, options.harness?.envVars, options.apiKey),
925
+ ...options.harness?.gitRepo ? { git: {
926
+ url: options.harness.gitRepo,
927
+ ref: options.harness.gitBranch
928
+ } } : {}
929
+ });
930
+ const sessionId = `${safeId(options.sessionIdPrefix)}_${safeId(options.scenario.id)}_${options.iteration}`;
931
+ try {
932
+ const dispatched = await box.dispatchPrompt(options.scenario.prompt, { sessionId });
933
+ const result = await box.session(dispatched.sessionId).result();
934
+ const testCommand = options.scenario.sandbox?.testCommand ?? options.harness?.testCommand;
935
+ const sandboxResult = testCommand && box.exec ? await runTestCommand(box, dispatched.sessionId, testCommand, options.harness?.timeout) : void 0;
936
+ return buildCaseResult({
937
+ scenario: options.scenario,
938
+ iteration: options.iteration,
939
+ profile: options.profile,
940
+ harness: options.harness,
941
+ sessionId: dispatched.sessionId,
942
+ sandboxId: box.id,
943
+ result,
944
+ sandboxResult,
945
+ durationMs: Date.now() - start,
946
+ env: materializeHarnessEnv(options.config, options.harness?.envVars, options.apiKey)
947
+ });
948
+ } finally {
949
+ await cleanupBox(box);
950
+ }
951
+ }
952
+ function buildSandboxBackend(options) {
953
+ const model = options.config.tcloud.sandboxBackend.model;
954
+ const searchProvider = inferSearchProvider(options.profile);
955
+ const profile = {
956
+ name: options.profile?.name ?? options.profile?.id ?? "tangle-router-benchmark",
957
+ model: { default: options.profile?.model ?? model.model },
958
+ permissions: {
959
+ network: "allow",
960
+ mcp: "allow"
961
+ },
962
+ mcp: { tangle_web_search: {
963
+ transport: "http",
964
+ url: options.config.mcp.streamable_http_url,
965
+ headers: options.config.mcp.headers,
966
+ enabled: searchProvider !== "off"
967
+ } },
968
+ metadata: {
969
+ tangleRouterSearchProvider: searchProvider,
970
+ tangleRouterSearchEndpoint: options.config.endpoint.url,
971
+ tangleRouterEvalHarness: options.harness?.id
972
+ },
973
+ extensions: { tangleRouter: { providerOptions: options.profile?.providerOptions } }
974
+ };
975
+ return {
976
+ type: backendType(options.harness?.id),
977
+ profile,
978
+ model: {
979
+ provider: model.provider,
980
+ model: options.profile?.model ?? model.model,
981
+ baseUrl: model.baseUrl,
982
+ apiKey: options.apiKey
983
+ }
984
+ };
985
+ }
986
+ function buildCaseResult(input) {
987
+ const usage = input.result.usage;
988
+ const failureReason = input.result.error ?? "Sandbox session failed";
989
+ const error = input.result.success ? void 0 : failureReason;
990
+ const passed = input.result.success && (input.sandboxResult ? input.sandboxResult.testsPassed : true);
991
+ const benchmark = input.scenario.benchmark;
992
+ const toolCalls = promptToolCalls(input.result);
993
+ return {
994
+ scenarioId: input.scenario.id,
995
+ prompt: input.scenario.prompt,
996
+ model: input.profile?.model ?? "unknown",
997
+ response: input.result.response ?? "",
998
+ timing: { totalMs: input.durationMs },
999
+ tokens: {
1000
+ input: usage?.inputTokens ?? 0,
1001
+ output: usage?.outputTokens ?? 0,
1002
+ cached: 0,
1003
+ reasoning: 0
1004
+ },
1005
+ cost: promptCost(input.result),
1006
+ judgeCost: 0,
1007
+ score: passed ? 8 : 1,
1008
+ judgeReasoning: passed ? "Terminal sandbox result and required tests passed." : input.sandboxResult && !input.sandboxResult.testsPassed ? "Sandbox test command failed." : failureReason,
1009
+ passed,
1010
+ toolCalls,
1011
+ assertions: [{
1012
+ check: "Terminal sandbox result observed",
1013
+ passed: input.result.success
1014
+ }, ...input.sandboxResult ? [{
1015
+ check: "Sandbox test command passed",
1016
+ passed: input.sandboxResult.testsPassed
1017
+ }] : []],
1018
+ benchmark: {
1019
+ profileId: benchmark?.profileId ?? input.profile?.id,
1020
+ harnessId: benchmark?.harnessId ?? input.harness?.id,
1021
+ transport: benchmark?.transport ?? input.harness?.transport ?? "sandbox-sdk",
1022
+ searchProvider: benchmark?.searchProvider ?? inferSearchProvider(input.profile),
1023
+ searchRequests: benchmarkSearchRequests(input.result, toolCalls),
1024
+ citationCount: benchmarkCitationCount(input.result),
1025
+ artifacts: {
1026
+ ...benchmark?.artifacts ?? {},
1027
+ sessionId: input.sessionId,
1028
+ sandboxId: input.sandboxId,
1029
+ ...benchmarkEnvArtifacts(input.env),
1030
+ ...input.result.traceId ? { traceId: input.result.traceId } : {}
1031
+ }
1032
+ },
1033
+ iteration: input.iteration,
1034
+ error: input.sandboxResult && !input.sandboxResult.testsPassed ? "Sandbox test command failed" : error,
1035
+ sandboxResult: input.sandboxResult
1036
+ };
1037
+ }
1038
+ async function runTestCommand(box, sessionId, command, timeoutSeconds) {
1039
+ if (!box.exec) throw new Error("Router eval sandbox does not support exec");
1040
+ const result = await box.exec(command, {
1041
+ sessionId,
1042
+ timeoutMs: Math.max(1, timeoutSeconds ?? 120) * 1e3
1043
+ });
1044
+ return {
1045
+ exitCode: result.exitCode,
1046
+ stdout: result.stdout.slice(0, 2e3),
1047
+ stderr: result.stderr.slice(0, 1e3),
1048
+ testsPassed: result.exitCode === 0
1049
+ };
1050
+ }
1051
+ async function postJson(fetchFn, url, apiKey, body) {
1052
+ const res = await fetchFn(url, {
1053
+ method: "POST",
1054
+ headers: {
1055
+ authorization: `Bearer ${apiKey}`,
1056
+ "content-type": "application/json",
1057
+ accept: "application/json"
1058
+ },
1059
+ body: JSON.stringify(stripUndefined(body))
1060
+ });
1061
+ const raw = await res.text();
1062
+ const data = raw ? JSON.parse(raw) : null;
1063
+ if (!res.ok) {
1064
+ const message = typeof data?.error === "string" ? data.error : raw.slice(0, 200);
1065
+ throw new Error(`${url} failed (${res.status}): ${message}`);
1066
+ }
1067
+ return data;
1068
+ }
1069
+ async function parallelLimit(tasks, limit) {
1070
+ const out = [];
1071
+ let idx = 0;
1072
+ const workers = Array.from({ length: Math.min(Math.max(1, limit), tasks.length) }, async () => {
1073
+ while (idx < tasks.length) {
1074
+ const current = idx++;
1075
+ const task = tasks[current];
1076
+ if (task === void 0) throw new Error(`Missing router eval task at index ${current}`);
1077
+ out[current] = await task();
1078
+ }
1079
+ });
1080
+ await Promise.all(workers);
1081
+ return out;
1082
+ }
1083
+ function materializeHarnessEnv(config, envVars, apiKey) {
1084
+ return materializeEnv({
1085
+ ...config.harness_env ?? {},
1086
+ ...envVars ?? {}
1087
+ }, config, apiKey);
1088
+ }
1089
+ function materializeEnv(env, config, apiKey) {
1090
+ const routerUrl = config.tcloud.sandboxBackend.model.baseUrl.replace(/\/v1\/?$/, "");
1091
+ const resolved = /* @__PURE__ */ new Map();
1092
+ for (const [key, raw] of Object.entries(env)) resolved.set(key, replaceEnvTokens(raw, apiKey, routerUrl, resolved));
1093
+ return Object.fromEntries(resolved);
1094
+ }
1095
+ function replaceEnvTokens(value, apiKey, routerUrl, resolved) {
1096
+ let out = value.replace(/<tangle-api-key>/g, apiKey).replace(/\$\{TANGLE_API_KEY\}/g, apiKey).replace(/\$\{TANGLE_ROUTER_URL\}/g, routerUrl);
1097
+ for (const [key, resolvedValue] of resolved) out = out.replace(new RegExp(`\\$\\{${escapeRegExp(key)}\\}`, "g"), resolvedValue);
1098
+ return out;
1099
+ }
1100
+ function benchmarkEnvArtifacts(env) {
1101
+ const entries = Object.entries(env).sort(([a], [b]) => a.localeCompare(b));
1102
+ return {
1103
+ harnessEnvKeys: entries.map(([key]) => key).join(","),
1104
+ harnessEnvHash: stableHash(entries.map(([key, value]) => `${key}=${redactEnvValue(key, value)}`).join("\n")),
1105
+ harnessEnv: JSON.stringify(Object.fromEntries(entries.map(([key, value]) => [key, redactEnvValue(key, value)])))
1106
+ };
1107
+ }
1108
+ function redactEnvValue(key, value) {
1109
+ if (/token|secret|key|authorization/i.test(key)) return "<redacted>";
1110
+ if (/^Bearer\s+/i.test(value)) return "Bearer <redacted>";
1111
+ return value.length > 500 ? `${value.slice(0, 500)}...` : value;
1112
+ }
1113
+ function stableHash(value) {
1114
+ let hash = 2166136261;
1115
+ for (let i = 0; i < value.length; i += 1) {
1116
+ hash ^= value.charCodeAt(i);
1117
+ hash = Math.imul(hash, 16777619);
1118
+ }
1119
+ return (hash >>> 0).toString(16).padStart(8, "0");
1120
+ }
1121
+ function escapeRegExp(value) {
1122
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1123
+ }
1124
+ function inferSearchProvider(profile) {
1125
+ const search = profile?.providerOptions?.gateway?.webSearch;
1126
+ if (search === false) return "off";
1127
+ if (search && typeof search === "object" && typeof search.provider === "string") return search.provider;
1128
+ return "default";
1129
+ }
1130
+ function promptCost(result) {
1131
+ const raw = result;
1132
+ const cost = typeof raw.costUsd === "number" ? raw.costUsd : raw.cost;
1133
+ return typeof cost === "number" && Number.isFinite(cost) && cost > 0 ? cost : 0;
1134
+ }
1135
+ function promptToolCalls(result) {
1136
+ const raw = result;
1137
+ if (Array.isArray(raw.toolCalls)) return raw.toolCalls;
1138
+ if (Array.isArray(raw.toolInvocations)) return raw.toolInvocations;
1139
+ return [];
1140
+ }
1141
+ function benchmarkSearchRequests(result, toolCalls) {
1142
+ const raw = result;
1143
+ const explicit = typeof raw.searchRequests === "number" ? raw.searchRequests : typeof raw.metadata?.searchRequests === "number" ? raw.metadata.searchRequests : void 0;
1144
+ if (explicit !== void 0) return Math.max(0, explicit);
1145
+ return toolCalls.filter((call) => {
1146
+ const c = call;
1147
+ return String(c.name ?? c.toolName ?? c.type ?? "").toLowerCase().includes("search");
1148
+ }).length;
1149
+ }
1150
+ function benchmarkCitationCount(result) {
1151
+ const raw = result;
1152
+ if (typeof raw.citationCount === "number") return Math.max(0, raw.citationCount);
1153
+ if (typeof raw.metadata?.citationCount === "number") return Math.max(0, raw.metadata.citationCount);
1154
+ if (Array.isArray(raw.citations)) return raw.citations.length;
1155
+ if (Array.isArray(raw.annotations)) return raw.annotations.filter((a) => {
1156
+ const annotation = a;
1157
+ return annotation.type === "url_citation" || Boolean(annotation.url_citation);
1158
+ }).length;
1159
+ return 0;
1160
+ }
1161
+ function backendType(harnessId) {
1162
+ if (harnessId === "claude-code") return "claude-code";
1163
+ if (harnessId === "codex") return "codex";
1164
+ if (harnessId === "opencode") return "opencode";
1165
+ return "opencode";
1166
+ }
1167
+ function safeId(value) {
1168
+ return value.toLowerCase().replace(/[^a-z0-9_-]+/g, "_").replace(/^_+|_+$/g, "").slice(0, 120) || "cell";
1169
+ }
1170
+ async function cleanupBox(box) {
1171
+ if (box.delete) await box.delete();
1172
+ else if (box.destroy) await box.destroy();
1173
+ }
1174
+ function stripUndefined(value) {
1175
+ if (Array.isArray(value)) return value.map(stripUndefined);
1176
+ if (!value || typeof value !== "object") return value;
1177
+ return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== void 0).map(([k, v]) => [k, stripUndefined(v)]));
1178
+ }
1179
+ //#endregion
1180
+ export { AuthError, CONTROL_PLANE_MCP_SERVER_NAME, CapabilityError, CollaborationClient, CollaborationFileBridge, DEFAULT_SANDBOX_SIZE, Image, ImageBuilder, IntelligenceClient, InteractiveSessionHandle, MANAGE_SANDBOXES_PARAMETERS, MANAGE_SANDBOXES_TOOL_NAME, NetworkError, NotFoundError, PartialFailureError, QuotaError, SANDBOX_MCP_SERVER_NAME, SANDBOX_SIZE_PRESETS, SANDBOX_SIZE_PRESET_NAMES, SandboxClient as Sandbox, SandboxClient, SandboxError, SandboxFleet, SandboxFleetClient, SandboxInstance, SandboxSession, ServerError, StateError, TangleSandboxClient, TimeoutError, ValidationError, applySandboxEventText, buildCollaborationDocumentId, buildControlPlaneMcpConfig, buildSandboxMcpConfig, buildTangleRouterEvalMatrixRequest, buildTangleRouterResponsesWebSearchRequest, buildTangleRouterSearchBackend, buildTangleRouterSearchProfile, buildTraceExportPayload, collectAgentResponseText, createConfidentialSandbox, createManageSandboxesTool, defineAgentProfile, defineGitHubResource, defineInlineResource, exportTraceBundle, fetchTangleRouterSearchConfig, generateAttestationNonce, generateDockerfile, getSandboxEventText, mergeAgentProfiles, normalizeCollaborationPath, normalizeRuntimeBackendConfig, otelTraceIdForTangleTrace, parseCollaborationDocumentId, parseSSEStream, resolveSandboxResources, runTangleRouterEvalMatrixInSandbox, sandboxResourcesForSize, serializeForSidecar, startTeeAttestationHeartbeat, toOtelJson };