@aimarket/warden 0.8.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/README-es.md +45 -10
  3. package/README-fr.md +45 -10
  4. package/README-ru.md +47 -10
  5. package/README-zh.md +45 -10
  6. package/README.md +47 -10
  7. package/dist/classifier.d.ts +79 -0
  8. package/dist/classifier.d.ts.map +1 -0
  9. package/dist/classifier.js +360 -0
  10. package/dist/classifier.js.map +1 -0
  11. package/dist/claude-hook.d.ts +53 -0
  12. package/dist/claude-hook.d.ts.map +1 -0
  13. package/dist/claude-hook.js +192 -0
  14. package/dist/claude-hook.js.map +1 -0
  15. package/dist/encoded-text.d.ts +7 -0
  16. package/dist/encoded-text.d.ts.map +1 -0
  17. package/dist/encoded-text.js +63 -0
  18. package/dist/encoded-text.js.map +1 -0
  19. package/dist/fold.d.ts +1 -2
  20. package/dist/fold.d.ts.map +1 -1
  21. package/dist/fold.js +3 -2
  22. package/dist/fold.js.map +1 -1
  23. package/dist/histor.d.ts +104 -0
  24. package/dist/histor.d.ts.map +1 -0
  25. package/dist/histor.js +86 -0
  26. package/dist/histor.js.map +1 -0
  27. package/dist/index.d.ts +6 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +8 -4
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp-client.d.ts +58 -0
  32. package/dist/mcp-client.d.ts.map +1 -0
  33. package/dist/mcp-client.js +451 -0
  34. package/dist/mcp-client.js.map +1 -0
  35. package/dist/mcp-rpc.js +1 -1
  36. package/dist/mcp-server.js +8 -0
  37. package/dist/mcp-server.js.map +1 -1
  38. package/dist/mcp-tools.d.ts.map +1 -1
  39. package/dist/mcp-tools.js +29 -4
  40. package/dist/mcp-tools.js.map +1 -1
  41. package/dist/mtl.d.ts +28 -0
  42. package/dist/mtl.d.ts.map +1 -0
  43. package/dist/mtl.js +77 -0
  44. package/dist/mtl.js.map +1 -0
  45. package/dist/pin-store.d.ts.map +1 -1
  46. package/dist/pin-store.js +1 -0
  47. package/dist/pin-store.js.map +1 -1
  48. package/dist/pinning.d.ts +1 -1
  49. package/dist/pinning.d.ts.map +1 -1
  50. package/dist/pinning.js +12 -4
  51. package/dist/pinning.js.map +1 -1
  52. package/dist/result-screen.d.ts +19 -0
  53. package/dist/result-screen.d.ts.map +1 -0
  54. package/dist/result-screen.js +86 -0
  55. package/dist/result-screen.js.map +1 -0
  56. package/dist/scan-cli.d.ts +3 -0
  57. package/dist/scan-cli.d.ts.map +1 -0
  58. package/dist/scan-cli.js +36 -0
  59. package/dist/scan-cli.js.map +1 -0
  60. package/dist/scan-config.d.ts +72 -0
  61. package/dist/scan-config.d.ts.map +1 -0
  62. package/dist/scan-config.js +239 -0
  63. package/dist/scan-config.js.map +1 -0
  64. package/dist/scan-lock.d.ts +46 -0
  65. package/dist/scan-lock.d.ts.map +1 -0
  66. package/dist/scan-lock.js +113 -0
  67. package/dist/scan-lock.js.map +1 -0
  68. package/dist/scan-report.d.ts +21 -0
  69. package/dist/scan-report.d.ts.map +1 -0
  70. package/dist/scan-report.js +288 -0
  71. package/dist/scan-report.js.map +1 -0
  72. package/dist/scan.d.ts +177 -0
  73. package/dist/scan.d.ts.map +1 -0
  74. package/dist/scan.js +754 -0
  75. package/dist/scan.js.map +1 -0
  76. package/dist/static-scan.d.ts +4 -3
  77. package/dist/static-scan.d.ts.map +1 -1
  78. package/dist/static-scan.js +227 -11
  79. package/dist/static-scan.js.map +1 -1
  80. package/dist/tool-list.d.ts +34 -0
  81. package/dist/tool-list.d.ts.map +1 -0
  82. package/dist/tool-list.js +57 -0
  83. package/dist/tool-list.js.map +1 -0
  84. package/dist/toxic-flow.d.ts +33 -0
  85. package/dist/toxic-flow.d.ts.map +1 -0
  86. package/dist/toxic-flow.js +117 -0
  87. package/dist/toxic-flow.js.map +1 -0
  88. package/dist/types.d.ts +12 -0
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/wrap-cli.d.ts +3 -0
  91. package/dist/wrap-cli.d.ts.map +1 -1
  92. package/dist/wrap-cli.js +17 -6
  93. package/dist/wrap-cli.js.map +1 -1
  94. package/dist/wrap-state.js +2 -2
  95. package/dist/wrap-state.js.map +1 -1
  96. package/dist/wrap.d.ts.map +1 -1
  97. package/dist/wrap.js +22 -35
  98. package/dist/wrap.js.map +1 -1
  99. package/docs/gates.es.md +40 -7
  100. package/docs/gates.fr.md +39 -6
  101. package/docs/gates.md +38 -7
  102. package/docs/gates.ru.md +40 -7
  103. package/docs/gates.zh.md +10 -5
  104. package/docs/scan.es.md +199 -0
  105. package/docs/scan.fr.md +199 -0
  106. package/docs/scan.md +199 -0
  107. package/docs/scan.ru.md +199 -0
  108. package/docs/scan.zh.md +199 -0
  109. package/docs/scanner-comparison.es.md +209 -0
  110. package/docs/scanner-comparison.fr.md +213 -0
  111. package/docs/scanner-comparison.md +200 -0
  112. package/docs/scanner-comparison.ru.md +205 -0
  113. package/docs/scanner-comparison.zh.md +131 -0
  114. package/docs/security-hardening-language-boundary.md +306 -0
  115. package/package.json +10 -5
  116. package/scripts/check-quality-gate.mjs +64 -0
  117. package/scripts/quality-public-key.pem +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAgF,MAAM,kBAAkB,CAAC;AAC/I,OAAO,EAAE,WAAW,EAAE,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAA2C,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAqD,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAkD,MAAM,gBAAgB,CAAC;AAGvJ,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAiGpF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;6CAUmB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;mCAoBjC,kBAAkB;;;;;;;;;;;;;;;aAexC,CAAC;AAEd,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,MAAyB,OAAO,CAAC,GAAG;IACtF,MAAM,IAAI,GAAgB;QACxB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnH,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB;QACzH,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ;KACpF,CAAC;IACF,IAAI,MAA4B,EAAE,UAA8B,CAAC;IACjE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,aAAiC,EAAE,eAAmC,EAAE,gBAAgB,GAAG,KAAK,CAAC;IACrG,IAAI,mBAAuC,CAAC;IAC5C,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC1G,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,WAAW;gBAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC7C,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAe,CAAC;gBACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YACzB,CAAC;YACD,KAAK,OAAO;gBAAE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAC,MAAM;YACpD,KAAK,aAAa;gBAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBAAC,MAAM;YAC/C,KAAK,eAAe;gBAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAAC,MAAM;YACpD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACvG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC5B,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC3F,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC9B,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAa,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClG,MAAM,GAAG,CAAC,CAAC;gBAAC,MAAM;YACpB,CAAC;YACD,KAAK,UAAU;gBAAE,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAChD,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAC,MAAM;YACtD,KAAK,eAAe;gBAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAAC,MAAM;YACpD,KAAK,aAAa;gBAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YACtD,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC7C,KAAK,YAAY;gBAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YACpD,KAAK,UAAU;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC3C,KAAK,cAAc;gBAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC5E,KAAK,kBAAkB;gBAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC3D,KAAK,oBAAoB;gBAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC/D,KAAK,+BAA+B;gBAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC9E,KAAK,oBAAoB;gBAAE,eAAe,GAAG,IAAI,CAAC;gBAAC,MAAM;YACzD,KAAK,qBAAqB;gBAAE,gBAAgB,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC3D,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBAAC,MAAM;YAC3C,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAC,MAAM;YACxD,KAAK,YAAY;gBAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,aAAa;gBAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAC,MAAM;YAC/D,KAAK,iBAAiB;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAAC,MAAM;YACvD,KAAK,YAAY;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBAAC,MAAM;YAC7C,KAAK,QAAQ,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YACrD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;IAC5I,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACjH,IAAI,UAAU,EAAE,CAAC;QACf,2FAA2F;QAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACvG,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,CAAC,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QACnO,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,eAAe;QAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;IACxD,IAAI,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACtE,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAClH,IAAI,gBAAgB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAC7H,IAAI,mBAAmB,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC7G,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC5G,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC7G,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC9H,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,yBAAyB,IAAI,SAAS,EAAE,MAAM,EAAE,gBAAgB;YAC1I,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,mBAA2D,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvH,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACvG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAAG,gBAAgB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAAE;AAElF,gFAAgF;AAEhF,MAAM,WAAW,GAAG,gEAAgE,CAAC;AACrF,MAAM,YAAY,GAAG,kHAAkH,CAAC;AAExI,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxG,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACzH,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC3G,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,CAAC;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5G,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,mBAAmB,CAAC;IAAC,CAAC;AACzC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAM,CAAC;IACX,IAAI,CAAC;QAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAAC,CAAC;IACzE,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpG,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,iEAAiE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/J,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,mFAAmF;QACnF,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC3N,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC;IACrJ,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,WAAW,GAAG,gEAAgE,CAAC;AACrF,MAAM,YAAY,GAAG,kDAAkD,CAAC;AACxE,sFAAsF;AACtF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5J;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAuB;IACpE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAChG,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACrB,IAAI,IAAoB,CAAC;IACzB,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,IAAI,GAAG,KAAK,CAAC;SAC/C,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAAC,IAAI,GAAG,KAAK,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;SACzL,IAAI,IAAI,KAAK,KAAK;QAAE,IAAI,GAAG,MAAM,CAAC;SAClC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAAC,IAAI,GAAG,MAAM,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;SACtG,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAAC,IAAI,GAAG,MAAM,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;;QAClF,OAAO,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;IAC1E,IAAI,IAAwB,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,yEAAyE,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAC/H,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;QACzG,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;QACzG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACjE,IAAI,GAAG,CAAC,CAAC;QAAC,MAAM;IAClB,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,+DAA+D,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACpJ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACpG,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,CAAC;IAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;AAC5I,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrC,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE,QAAQ,EAAE,IAAI;YAC7F,OAAO,EAAE,8BAA8B,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,CAAC,iDAAiD,EAAE,CAAC,CAAC;IACvT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5G,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAClH,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,QAAQ,EAAE,IAAI;YAC1I,OAAO,EAAE,WAAW,CAAC,kCAAkC,EAAE,gGAAgG,EAAE,CAAC,CAAC;IAC/J,IAAI,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,QAAQ,EAAE,IAAI;YAChJ,OAAO,EAAE,WAAW,CAAC,0BAA0B,CAAC,GAAG,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kDAAkD,EAAE,CAAC,CAAC;IAC9L,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI;YAC3I,OAAO,EAAE,WAAW,CAAC,qBAAqB,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACrK,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI;YACzI,OAAO,EAAE,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,GAAG,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjK,GAAG,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpL,MAAM,GAAG,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE7G;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAA8C,EAAE,OAAe;IAC/F,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC3D,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxH,MAAM,KAAK,GAA2B,EAAE,cAAc,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC5I,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI;gBACnH,OAAO,EAAE,gCAAgC,OAAO,6BAA6B,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClH,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI;gBACvH,OAAO,EAAE,gCAAgC,OAAO,UAAU,KAAK,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,QAAQ,EAAE,IAAI;YAC/J,OAAO,EAAE,gCAAgC,OAAO,wDAAwD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChL,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,gCAAgC,EAAE,QAAQ,EAAE,IAAI;YACpH,OAAO,EAAE,gCAAgC,OAAO,sBAAsB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI;YACjM,OAAO,EAAE,sBAAsB,OAAO,kBAAkB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACxT,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB,EAAE,OAA2B;IACpE,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpH,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpH,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,IAAI,CAAO,KAAU,EAAE,CAAS,EAAE,EAA2B;IAC1E,MAAM,GAAG,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;QAC7E,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAAC,CAAC;IACjF,CAAC,CAAC,CAAC,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAe,EAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC;AAC9G,MAAM,OAAO,GAAa,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAC;AAEpF,SAAS,QAAQ,CAAC,CAAgB,EAAE,MAAoB;IACtD,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACrG,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAiB,EAAE,OAAiB,EAAE;IAClE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,CAAC,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5H,IAAI,OAAuB,CAAC;IAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAClH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,uEAAuE;QACvE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;YAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;QAAC,CAAC;QACxG,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,GAAG,EAAE,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAyB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;IACnE,MAAM,GAAG,GAAuB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChE,+FAA+F;IAC/F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAA6B,EAAE;QAC5F,MAAM,IAAI,GAAqB;YAC7B,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK;YACjG,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;YACtF,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE;SACjF,CAAC;QACF,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,MAAM,WAAW,GAA8B,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACvE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;YACpD,OAAO,EAAE,WAAW,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,8HAA8H;SACzK,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS;gBACzH,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7J,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B;oBACtH,OAAO,EAAE,mHAAmH,EAAE,CAAC,CAAC;YAClI,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ;gBAChI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACvL,CAAC;QAED,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBACnD,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAChK,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3G,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAClM,CAAC;QAED,IAAI,UAA4C,EAAE,eAAwB,CAAC;QAC3E,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChH,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;oBAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC7E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBAAC,eAAe,GAAG,GAAG,CAAC;YAAC,CAAC;QAC1C,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK;YACjF,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,GAAkB,MAAM,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAChF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,oFAAoF;YACpF,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,CAAC;iBAClF,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9H,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,IAAI,KAAK;oBAAE,SAAS,GAAG,aAAa,CAAC;gBAAC,KAAK,GAAG,KAAK,CAAC;YAAC,CAAC;YACzE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAAC,IAAI,KAAK;gBAAE,SAAS,GAAG,MAAM,CAAC;YAAC,KAAK,GAAG,KAAK,CAAC;QAAC,CAAC;QAE9F,IAAI,SAA6B,EAAE,QAA4B,CAAC;QAChE,IAAI,CAAC;YAAC,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACpD,OAAO,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAE5E,IAAI,MAAiC,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,MAAM,GAA6D,MAAM,CAAC,GAAG,CAAC,GAAG;gBACrF,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBAChC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;iBACxE,CAAC;gBACJ,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC5F,MAAM,MAAM,GAAgB,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC5H,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,OAAO,EAAE,EAAE,CAAC,CAAC;oBACxE,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAClI,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACjI,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3J,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;wBAC9G,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClH,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;wBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI;4BACjI,OAAO,EAAE,MAAM,CAAC,OAAO;gCACrB,CAAC,CAAC,iEAAiE,SAAS,0BAA0B,WAAW,CAAC,CAAC,CAAC,oBAAoB,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,iHAAiH;gCAC5Q,CAAC,CAAC,kEAAkE,SAAS,6GAA6G,EAAE,CAAC,CAAC;oBAClM,IAAI,MAAM,CAAC,OAAO;wBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC9D,IAAI,MAAM,CAAC,KAAK,KAAK,qBAAqB;wBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI;4BACvI,OAAO,EAAE,MAAM,CAAC,OAAO;gCACrB,CAAC,CAAC,iFAAiF,WAAW,CAAC,CAAC,CAAC,iBAAiB,WAAW,yBAAyB,CAAC,CAAC,CAAC,EAAE,GAAG;gCAC9J,CAAC,CAAC,8FAA8F,EAAE,CAAC,CAAC;oBACxG,2GAA2G;oBAC3G,MAAM,GAAG,GAAG,MAAM,CAAC,UAAmF,CAAC;oBACvG,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACjG,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAmC,EAAE,CAAC;4BAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC3H,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;gCAAE,SAAS;4BACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;gCACzG,OAAO,EAAE,wBAAwB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,wBAAwB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;wBACzM,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBAAC,MAAM,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAAC,CAAC;YAC3G,CAAC;QACH,CAAC;QAED,IAAI,UAA0C,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU;oBAAE,MAAM,eAAe,IAAI,IAAI,eAAe,CAAC,wBAAwB,CAAC,CAAC;gBACxF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;gBACrC,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxI,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBACjC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpF,UAAU,CAAC,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACpE,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU;wBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;4BACtI,OAAO,EAAE,mCAAmC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACrK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBAAC,IAAI,KAAK;4BAAE,SAAS,GAAG,YAAY,CAAC;wBAAC,KAAK,GAAG,KAAK,CAAC;wBAAC,KAAK,GAAG,CAAC,CAAC;oBAAC,CAAC;gBAChG,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAM,CAAC,GAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;wBAC5G,OAAO,EAAE,SAAS,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBACpS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC/C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACvD,IAAI,KAAK;4BAAE,SAAS,GAAG,YAAY,CAAC;wBACpC,KAAK,GAAG,KAAK,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,YAAY,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC/I,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM;oBACjF,OAAO,EAAE,mCAAmC,UAAU,CAAC,KAAK,kCAAkC;oBAC9F,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC5D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAAC,IAAI,KAAK;wBAAE,SAAS,GAAG,YAAY,CAAC;oBAAC,KAAK,GAAG,KAAK,CAAC;oBAAC,KAAK,GAAG,CAAC,CAAC;gBAAC,CAAC;YAChG,CAAC;QACH,CAAC;QAED,IAAI,IAA8B,CAAC;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,uBAAuB,IAAI,CAAC,CAAC,IAAI,KAAK,6BAA6B,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACtM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvJ,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM;YACvD,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC;YAC5H,CAAC,CAAC,EAAE,CAAC,CAAC;QACR,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ;YACnG,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YACvL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1G,CAAC,CAAC,CAAC;IAEH,IAAI,WAA+B,CAAC;IACpC,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9E,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,GAA8B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAS;gBACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBAAC,IAAI,QAAQ;wBAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;oBAAC,IAAI,CAAC,CAAC,IAAI;wBAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAChI,0EAA0E;gBAC1E,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1M,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,IAAI,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnH,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAC,IAAI,QAAQ;wBAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;oBAAC,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAClS,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;gBACnB,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;gBACpH,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC3F,mGAAmG;gBACnG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,4BAA4B,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;oBAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;oBAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAAC,CAAC;YACrH,CAAC;YACD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,OAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1J,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,WAAW,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QAC3D,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QAC/E,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM;QACtD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM;QACxD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QAC3D,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;KACnE,CAAC;IACF,OAAO;QACL,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;QACvH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzL,OAAO,EAAE,IAAI,EAAE,WAAW;QAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAChT,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;QAChC,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAAmB,EAAE,GAAuB;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACvF,OAAO,KAAM,CAAC,GAAG,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAkB,EAAE,IAAsC;IACjF,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACnG,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RulesetRef, Severity, WardenGate, WardenGateInput, WardenGateResult, WardenLogger } from "./types.js";
1
+ import type { RulesetRef, Severity, ToolDef, WardenGate, WardenGateInput, WardenGateResult, WardenLogger } from "./types.js";
2
2
  /**
3
3
  * Static tool-definition scanner.
4
4
  *
@@ -69,7 +69,7 @@ type Surface = "name" | "description" | "inputSchema" | "title" | "outputSchema"
69
69
  * autonomy phrasing (`autonomy`), and the zero-width joiner inside an emoji sequence. The
70
70
  * hidden-character rule now also catches the Unicode-tag block and the bidi isolates.
71
71
  */
72
- export declare const STATIC_SCAN_RULESET_VERSION = "8";
72
+ export declare const STATIC_SCAN_RULESET_VERSION = "12";
73
73
  export interface StaticScanRule {
74
74
  code: string;
75
75
  severity: Severity;
@@ -109,6 +109,7 @@ export declare function staticScanRuleset(): StaticScanRuleset;
109
109
  /** Just the identity of the rule table, for embedding in a verdict. */
110
110
  export declare function staticScanRulesetRef(): RulesetRef;
111
111
  export declare class StaticScanGate implements WardenGate {
112
+ private readonly semanticallyClean?;
112
113
  readonly name = "static-scan";
113
114
  private readonly log;
114
115
  /**
@@ -116,7 +117,7 @@ export declare class StaticScanGate implements WardenGate {
116
117
  * finding is the one behaviour in this gate that cannot be seen in the
117
118
  * verdict, so it is the one that most needs a debug line.
118
119
  */
119
- constructor(log?: WardenLogger);
120
+ constructor(log?: WardenLogger, semanticallyClean?: ((tool: ToolDef) => boolean) | undefined);
120
121
  evaluate(input: WardenGateInput): Promise<WardenGateResult>;
121
122
  }
122
123
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"static-scan.d.ts","sourceRoot":"","sources":["../src/static-scan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EAER,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,KAAK,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/B;;;;;;;;;;;;;;GAcG;AACH,KAAK,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AA6vB9G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAQH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAmB/C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,iFAAiF;IACjF,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAgBrD;AAOD,uEAAuE;AACvE,wBAAgB,oBAAoB,IAAI,UAAU,CAGjD;AAED,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC;;;;OAIG;gBACS,GAAG,GAAE,YAA6B;IAIxC,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkFlE"}
1
+ {"version":3,"file":"static-scan.d.ts","sourceRoot":"","sources":["../src/static-scan.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EAER,OAAO,EACP,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,KAAK,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/B;;;;;;;;;;;;;;GAcG;AACH,KAAK,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AAk7B9G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAQH,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAmBhD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,iFAAiF;IACjF,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAgBrD;AAOD,uEAAuE;AACvE,wBAAgB,oBAAoB,IAAI,UAAU,CAGjD;AAED,qBAAa,cAAe,YAAW,UAAU;IAUC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IATnF,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC;;;;OAIG;gBACS,GAAG,GAAE,YAA6B,EAAmB,iBAAiB,CAAC,GAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,aAAA;IAIzG,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA2FlE"}
@@ -2,6 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { canonicalize } from "./jcs.js";
3
3
  import { displaySafe } from "./sanitize.js";
4
4
  import { foldForScan, FOLD_ID } from "./fold.js";
5
+ import { decodeForScan } from "./encoded-text.js";
5
6
  import { silentLogger } from "./logger.js";
6
7
  /** Prose surfaces: the default, and everything a noun-keyed rule may look at. */
7
8
  const PROSE = ["description", "inputSchema", "title", "outputSchema", "annotations", "metadata"];
@@ -9,6 +10,9 @@ const PROSE = ["description", "inputSchema", "title", "outputSchema", "annotatio
9
10
  const ALL_SURFACES = ["name", ...PROSE];
10
11
  // Imperative instructions aimed at the model — the classic injection tells.
11
12
  const INJECTION_PATTERNS = [
13
+ // v10. A definition claiming to outrank the user ("this description's priority is higher than the
14
+ // user's query").
15
+ { re: /\b(?:priority|precedence)\s+(?:is\s+)?(?:higher\s+than|over|above)\s+(?:that\s+of\s+)?(?:the\s+|any\s+|all\s+)?(?:user'?s?\b|user\s+(?:query|request|instructions?)|(?:previous\s+|other\s+)?instructions?\b|system\s+prompt)/i, code: "TOOL_DEF_INJECTION", severity: "high", tier: "block", surfaces: ALL_SURFACES, guards: ["polarity", "detection"] },
12
16
  { re: /\bignore\s+(?:all\s+|the\s+)?(?:previous|prior|above|preceding)\b/i, code: "TOOL_DEF_INJECTION", severity: "critical", tier: "block", surfaces: ALL_SURFACES, guards: ["mention"] },
13
17
  { re: /\bdisregard\s+(?:all\s+|the\s+|any\s+)?(?:previous|prior|above|instructions?|rules?)\b/i, code: "TOOL_DEF_INJECTION", severity: "critical", tier: "block", surfaces: ALL_SURFACES, guards: ["mention"] },
14
18
  // Demoted in v4. The survey found four real uses and all four were the
@@ -19,6 +23,13 @@ const INJECTION_PATTERNS = [
19
23
  // that refers to the tool's own action; the bare phrase does not carry one.
20
24
  { re: /\bdo\s+not\s+(?:tell|inform|mention|reveal\s+to|notify)\s+(?:the\s+)?user\b/i, code: "TOOL_DEF_INJECTION", severity: "medium", tier: "advise", surfaces: ALL_SURFACES, guards: ["mention"] },
21
25
  { re: /\bwithout\s+(?:telling|informing|asking)\s+(?:the\s+)?user\b/i, code: "TOOL_DEF_INJECTION", severity: "high", tier: "block", surfaces: ALL_SURFACES, guards: ["autonomy"] },
26
+ // v9. What the v4 demotion asked for: a concealment whose target is the tool's OWN
27
+ // behaviour. "do not tell the user ABOUT THIS / THAT THIS TOOL …" and "do not mention
28
+ // that you (first read …)" hide an action; the honest uses the survey found ("do not
29
+ // tell the user a refund is coming", "… the check digits are wrong", "… results were
30
+ // filtered") stop the model inventing a claim and never take these objects.
31
+ { re: /\b(?:do\s+not|don'?t|never)\s+(?:tell|inform|notify|alert)\s+(?:the\s+)?user\s+(?:about\s+(?:this|these|it|that)\b|that\s+(?:this|the)\s+tool\b|of\s+(?:this|these)\b)/i, code: "TOOL_DEF_INJECTION", severity: "high", tier: "block", surfaces: ALL_SURFACES, guards: ["mention"] },
32
+ { re: /\b(?:do\s+not|don'?t|never)\s+mention\s+that\s+you\b/i, code: "TOOL_DEF_INJECTION", severity: "high", tier: "block", surfaces: ALL_SURFACES, guards: ["mention"] },
22
33
  { re: /<\s*\/?\s*(?:system|instructions?|important)\s*>/i, code: "TOOL_DEF_INJECTION", severity: "high", tier: "block", surfaces: ALL_SURFACES },
23
34
  // Demoted in v4. The comment here used to say this was "the blocking rule most
24
35
  // likely to need a policy override"; the survey settled it — 15 findings across
@@ -52,6 +63,34 @@ const EXFIL_PATTERNS = [
52
63
  },
53
64
  { re: /\b(?:post|send|put)\s+to\s+https?:\/\//i, code: "TOOL_DEF_EXFIL", severity: "critical", tier: "block", surfaces: ALL_SURFACES },
54
65
  { re: /\bupload\b[\s\S]{0,40}\bto\s+(?:https?:\/\/|[\w.-]+\.[a-z]{2,})/i, code: "TOOL_DEF_EXFIL", severity: "high", tier: "block", surfaces: ALL_SURFACES },
66
+ // v9. "POST the original text and the conversation history to https://…", "send a copy
67
+ // of all messages to someone@host": the object is a phrase, not one word, and the
68
+ // destination may be a mailbox. Imperative base forms only ("Posts the page to
69
+ // https://api.notion.com" describes the tool's own call and does not match), a
70
+ // literal URL or address only, and the object must name data the user owns.
71
+ {
72
+ re: /\b(?:send|post|forward|relay|copy|transmit|e-?mail)\s[^.;!?\n]{0,80}?\bto\s+(?:https?:\/\/[^\s"'<>)]+|[\w.+-]{1,64}@[\w-]{1,63}(?:\.[\w-]{1,63})+)/i,
73
+ code: "TOOL_DEF_EXFIL",
74
+ severity: "high",
75
+ tier: "block",
76
+ surfaces: ALL_SURFACES,
77
+ guards: ["navigation", "mention", "dataObject", "placeholderAddress", "polarity"],
78
+ },
79
+ // v9. A blind copy to a fixed mailbox is the shadowing shape: "add bcc x@host".
80
+ { re: /\b(?:bcc|cc)\b\s*:?\s*[\w.+-]{1,64}@[\w-]{1,63}(?:\.[\w-]{1,63})+/i, code: "TOOL_DEF_EXFIL", severity: "high", tier: "block", surfaces: ALL_SURFACES, guards: ["mention", "placeholderAddress", "polarity"] },
81
+ // v9. The conversation itself as the payload. Blocking only together with a reason to
82
+ // believe it leaves: an external address in the same definition, a credential in the
83
+ // same clause, or a concealment cue. "Saves the entire conversation to your notes" has
84
+ // none of them.
85
+ {
86
+ re: /\b(?:entire|whole|full|complete)\s+(?:conversation|chat)(?:\s+(?:history|log|so\s+far))?|\bconversation\s+history\b|\b(?:list\s+of\s+)?(?:last|previous|all)\s+(?:the\s+)?(?:messages|chats)\b/i,
87
+ code: "TOOL_DEF_EXFIL",
88
+ severity: "high",
89
+ tier: "block",
90
+ surfaces: ALL_SURFACES,
91
+ note: "asks for the conversation itself, alongside an outside address, a credential or a concealment cue",
92
+ guards: ["mention", "polarity", "contextExfil"],
93
+ },
55
94
  ];
56
95
  // Secrets. Naming a credential PARAMETER is what normal tools do; demanding the
57
96
  // material that is never a parameter is not.
@@ -66,7 +105,10 @@ const SECRET_PATTERNS = [
66
105
  // The gap may no longer cross a sentence or a JSON string boundary. It used
67
106
  // to be `[\s\S]{0,30}`, which matched "read an open or sealed run (pass
68
107
  // api_key" — a verb in prose reaching into the next field's parameter name.
69
- re: /\b(?:read|extract|retrieve|fetch|obtain|dump|reveal|collect|harvest|grab|copy|print)\s[^.;"\n]{0,30}?\b(?:api[_\s-]?key|access[_\s-]?token|bearer\s+token|credential|password|passwd|secret|\.env\b|environment\s+variable)/i,
108
+ // v9: a dot followed by a word character or a slash is part of a path, not the end of
109
+ // a sentence, so "read ~/.aws/credentials" is one clause again; and the stores that
110
+ // hold cloud and registry credentials are named.
111
+ re: /\b(?:read|extract|retrieve|fetch|obtain|dump|reveal|collect|harvest|grab|copy|print)\s(?:[^.;"\n]|\.(?=[\w/])){0,40}?(?:\b(?:api[_\s-]?key|access[_\s-]?token|bearer\s+token|credential|password|passwd|secret|environment\s+variable)|\.env\b|\.kube\/config\b|application_default_credentials|\.docker\/config\.json|\.git-credentials|\.netrc\b|\.pgpass\b|\.npmrc\b|\.pypirc\b)/i,
70
112
  code: "TOOL_DEF_SECRET_HARVEST",
71
113
  severity: "critical",
72
114
  tier: "block",
@@ -125,6 +167,40 @@ const SECRET_EXFIL_PATTERNS = [
125
167
  guards: ["publicKeyPath", "polarity", "detection", "secretExfilPair"],
126
168
  },
127
169
  ];
170
+ // v10. One tool's description directing how ANOTHER tool is called (no `mention` guard: naming a
171
+ // tool in quotes or backticks is how these definitions are written, not a citation) — the shape of every attack
172
+ // template in MCPTox (Wang et al., AAAI 2026): "when using `X`, modify its argument …", "before
173
+ // running `X`, you must first call `Y` …", "you must call `Y` with the query '…'". The anchor is the
174
+ // other tool's identifier, which reads the same in every language; honest chaining ("use `X` to
175
+ // change an address", "call `X` first, then this tool", "use `X` to check status before calling
176
+ // this tool") names a tool as the MEANS, never binds to its call to rewrite or pre-empt it. Written
177
+ // from half of MCPTox's servers only; the other half is the reported measurement.
178
+ const ID = String.raw `(?:[\`'"]?([A-Za-z][A-Za-z0-9]*(?:[_-][A-Za-z0-9]+)+|[a-z]+[A-Z][A-Za-z0-9]+)[\`'"]?|[\`'"]([a-z][A-Za-z0-9]{1,40})[\`'"])(?:\s+tool)?`;
179
+ /** A word in any letter case, without /i: identifiers (camelCase) must stay case-sensitive. */
180
+ const ci = (w) => w.replace(/[a-z]/g, (c) => `[${c}${c.toUpperCase()}]`);
181
+ const CALL_VERB = `(?:${["call", "calling", "use", "using", "run", "running", "invoke", "invoking", "execute", "executing", "fetch", "fetching", "query", "querying", "trigger", "triggering"].map(ci).join("|")})`;
182
+ const S = String.raw `\s+`;
183
+ const CROSS_TOOL_FRAME = new RegExp(String.raw `\b(?:${["when", "whenever", "before", "after", "while", "if"].map(ci).join("|")}|${ci("each")}${S}${ci("time")}|${ci("every")}${S}${ci("time")})${S}(?:${ci("you")}${S})?(?:${ci("are")}${S})?(?:${ci("first")}${S})?${CALL_VERB}${S}(?:${ci("the")}${S})?${ID}` +
184
+ String.raw `|\b(?:${["submitted", "passed", "sent", "given"].map(ci).join("|")})${S}${ci("to")}${S}(?:${ci("the")}${S})?${ID}` +
185
+ String.raw `|\b(?:${["queries", "query", "requests", "request", "calls", "call", "inputs", "input"].map(ci).join("|")})${S}${ci("to")}${S}(?:${ci("the")}${S})?${ID}` +
186
+ String.raw `|\b${ci("before")}${S}\w+ing\b[^.;
187
+ ]{0,60}?\b(?:${["using", "with", "via", "through"].map(ci).join("|")})${S}(?:${ci("the")}${S})?${ID}` +
188
+ String.raw `|\b${ci("before")}${S}(?:${["any", "every", "each"].map(ci).join("|")})\b`);
189
+ const ALTER_VERB = /\b(?:modify|modified|change|changed|replace|replaced|append|appended|prepend|prepended|remove|removed|strip|override|overwrite|alter|rewrite|substitute|inject|insert)\b/i;
190
+ const MANDATE_WORDS = `(?:${["must", "should", "mandatory"].map(ci).join("|")}|${ci("need")}${S}${ci("to")}|${ci("have")}${S}${ci("to")}|${ci("required")}${S}${ci("to")}|${ci("is")}${S}${ci("required")})`;
191
+ const MANDATED_CALL = new RegExp(String.raw `\b${MANDATE_WORDS}\b[^.;
192
+ ]{0,40}?\b${CALL_VERB}${S}(?:${ci("the")}${S})?${ID}` +
193
+ String.raw `|(?:^\s*|,\s*(?:${ci("then")}${S})?)(?:${["call", "run", "use", "invoke", "fetch", "query", "execute"].map(ci).join("|")})${S}(?:${ci("the")}${S})?${ID}`, "g");
194
+ const CROSS_TOOL_PATTERNS = [
195
+ { re: CROSS_TOOL_FRAME, code: "TOOL_DEF_CROSS_TOOL", severity: "high", tier: "block", surfaces: PROSE, note: "binds to another tool's call to rewrite its input or pre-empt it with a different call", guards: ["crossTool"] },
196
+ { re: new RegExp(String.raw `\b(?:${["must"].map(ci).join("|")}|${ci("need")}${S}${ci("to")}|${ci("have")}${S}${ci("to")})\b[^.;
197
+ ]{0,40}?\b${CALL_VERB}${S}(?:${ci("the")}${S})?${ID}`), code: "TOOL_DEF_CROSS_TOOL", severity: "high", tier: "block", surfaces: PROSE, note: "takes no input and only orders another tool to be called", guards: ["zeroArgCall"] },
198
+ ];
199
+ // v9. A recursive delete of a home or root directory written into a definition. The threat
200
+ // feed's command record only ever saw the launch line.
201
+ const DESTRUCTIVE_PATTERNS = [
202
+ { re: /\brm\s+-(?:rf|fr|r\s+-f|f\s+-r)\s+(?:~\/?|\/|\$HOME\/?|\*)(?=[\s"'`;)]|$)/, code: "TOOL_DEF_INJECTION", severity: "high", tier: "block", surfaces: ALL_SURFACES, note: "instructs a recursive delete of a home or root directory", guards: ["mention", "polarity", "detection"] },
203
+ ];
128
204
  // Dangerous URL schemes embedded in text.
129
205
  const URL_SCHEME_PATTERNS = [
130
206
  // A `data:` URI with no payload behind it is the format being documented —
@@ -251,6 +327,18 @@ function isQuoted(text, start, end) {
251
327
  }
252
328
  return false;
253
329
  }
330
+ /** JSON delimiters are not evidence of quotation; visit keys and values independently. */
331
+ function jsonStrings(text) {
332
+ try {
333
+ const visit = (v) => typeof v === 'string' ? [v]
334
+ : Array.isArray(v) ? v.flatMap(visit)
335
+ : v && typeof v === 'object' ? Object.entries(v).flatMap(([k, val]) => [k, ...visit(val)]) : [];
336
+ return visit(JSON.parse(text));
337
+ }
338
+ catch {
339
+ return undefined;
340
+ } // Never skip an unparseable surface.
341
+ }
254
342
  /** Shannon entropy in bits per character. */
255
343
  function entropy(sample) {
256
344
  const counts = new Map();
@@ -332,14 +420,19 @@ const GUARDS = {
332
420
  * Four of the survey's blocked servers were security tools listing the attacks
333
421
  * they detect — one of them in an `enum` of `["exfiltration", …]`.
334
422
  */
335
- mention(m, text, surface) {
423
+ mention(m, text, surface, ctx) {
336
424
  const start = m.index;
337
425
  const end = start + m[0].length;
338
- const structured = ["inputSchema", "outputSchema", "annotations", "metadata"].includes(surface);
426
+ const structured = !ctx.structuredLeaf && ["inputSchema", "outputSchema", "annotations", "metadata"].includes(surface);
339
427
  // JSON serialization quotes every string. Those delimiters do not make a
340
428
  // description an innocent citation; preserve the narrow whole-token exemption below.
341
- if (!structured && isQuoted(text, start, end))
342
- return "match is quoted or in backticks — a citation, not an instruction";
429
+ if (!structured && isQuoted(text, start, end)) {
430
+ // A request to carry out a quotation is still an instruction. Do not let an
431
+ // attacker turn quoted examples into a field-wide exemption.
432
+ const { before } = clauseAround(text, start, end);
433
+ if (!/\b(?:follow|obey|execute|perform|apply|comply|do|say|answer)\b/i.test(before))
434
+ return "match is quoted or in backticks — a citation, not an instruction";
435
+ }
343
436
  if (["inputSchema", "outputSchema", "annotations", "metadata"].includes(surface) && text[start - 1] === '"' && text[end] === '"') {
344
437
  return "match is a complete JSON string token — an enum value or field name";
345
438
  }
@@ -381,8 +474,12 @@ const GUARDS = {
381
474
  * blob. Real encoded data is near-uniform over the alphabet; identifiers and
382
475
  * paths are not, and they repeat words a reviewer can read.
383
476
  */
384
- blob(m) {
477
+ blob(m, _text, _surface, ctx) {
385
478
  const hit = m[0];
479
+ // Only a complete semantic review of these exact bytes can clear this ambiguous
480
+ // encoding heuristic. All content rules and every other gate still run normally.
481
+ if (ctx.semanticallyClean && decodeForScan(hit) !== hit)
482
+ return "readable encoding cleared by complete semantic review";
386
483
  if (/properties|items|definitions|anyOf|allOf|oneOf|\$defs/i.test(hit)) {
387
484
  return "match is a JSON Schema pointer, not an encoded payload";
388
485
  }
@@ -634,6 +731,81 @@ const GUARDS = {
634
731
  return null;
635
732
  return "no owner or location for the secret — reads as a credential being issued, not taken";
636
733
  },
734
+ /**
735
+ * v9. The object of "send … to <address>" names the user's data, not the tool's own
736
+ * request. "Send requests to https://api.example.org" documents an endpoint; "send the
737
+ * conversation history to https://…" moves data out.
738
+ */
739
+ dataObject(m) {
740
+ const toAt = m[0].toLowerCase().lastIndexOf(" to ");
741
+ const object = toAt >= 0 ? m[0].slice(0, toAt) : m[0];
742
+ if (/\b(?:conversation|history|chats?|messages?|transcripts?|contents?|data|files?|credentials?|keys?|tokens?|secrets?|passwords?|results?|outputs?|everything|all|cop(?:y|ies)|original|documents?|emails?|logs?|notes?|answers?|repl(?:y|ies)|context|prompts?)\b/i.test(object))
743
+ return null;
744
+ return "object of 'send … to' is not the user's data — documents an endpoint";
745
+ },
746
+ /** v9. RFC 2606 documentation hosts are placeholders in examples, not destinations. */
747
+ placeholderAddress(m) {
748
+ if (/@(?:[\w-]+\.)*example\.(?:com|org|net)\b|:\/\/(?:[\w-]+\.)*example\.(?:com|org|net)\b/i.test(m[0]))
749
+ return "documentation placeholder address (RFC 2606)";
750
+ return null;
751
+ },
752
+ /**
753
+ * v9. The conversation is a payload only when the same clause MOVES it (send, include,
754
+ * pass, append, encode …) and something says it leaves: an outside address anywhere in
755
+ * the definition, or a credential or a concealment cue in that clause. "Read the human's
756
+ * answer and the whole conversation so far" reads; it does not move anything.
757
+ */
758
+ contextExfil(m, text) {
759
+ const { before, after } = clauseAround(text, m.index, m.index + m[0].length);
760
+ const clause = before + m[0] + after;
761
+ if (!/\b(?:send|sends|include|includes|pass|passes|append|appends|attach|attaches|encode|encodes|post|posts|forward|forwards|upload|uploads|put|puts|add|adds|share|shares|copy|copies|relay|relays|transmit\w*)\b/i.test(clause)) {
762
+ return "the clause does not move the conversation anywhere";
763
+ }
764
+ if (hasExternalAddress(text.slice(0, ADDR_SCAN_CAP)))
765
+ return null;
766
+ if (/\b(?:api[_\s-]?keys?|access[_\s-]?tokens?|passwords?|secrets?|credentials?|private[_\s-]?keys?)\b/i.test(clause))
767
+ return null;
768
+ if (CONCEALMENT_CUE.test(clause))
769
+ return null;
770
+ return "conversation named without an outside address, a credential or concealment — ordinary context use";
771
+ },
772
+ /**
773
+ * v10. The match names another tool's call ("when using `X`", "before running `X`", "before any …").
774
+ * Kept only when that sentence rewrites the call's input (modify, replace, append …), or that
775
+ * sentence or the next orders a call to a THIRD tool. Identifiers that are this tool's own name or
776
+ * one of its own parameters are not "another tool" ("if using video_id, … use get_video before
777
+ * calling this tool").
778
+ */
779
+ crossTool(m, text, _surface, ctx) {
780
+ const own = ownIdentifiers(ctx.tool);
781
+ const framed = [m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8]].filter((g) => !!g).map(normId);
782
+ const isBeforeAny = framed.length === 0;
783
+ if (!isBeforeAny && framed.every((id) => own.has(id)))
784
+ return "the named identifier is this tool or one of its own parameters";
785
+ const sentence = sentenceAround(text, m.index);
786
+ if (!isBeforeAny && ALTER_VERB.test(sentence.text))
787
+ return null;
788
+ const next = sentenceAround(text, sentence.end + 1);
789
+ for (const piece of [sentence.text, sentence.end < text.length ? next.text : ""]) {
790
+ for (const c of allMatches(MANDATED_CALL, piece)) {
791
+ const ids = [c[1], c[2], c[3], c[4]].filter((g) => !!g).map(normId);
792
+ if (ids.some((id) => !own.has(id) && !framed.includes(id)))
793
+ return null;
794
+ }
795
+ }
796
+ return "names another tool's call but neither rewrites its input nor orders a different call first — ordinary chaining";
797
+ },
798
+ /** v10. Only a tool that takes no input can be nothing but an order to call another tool. */
799
+ zeroArgCall(m, _text, _surface, ctx) {
800
+ const props = ctx.tool.inputSchema?.properties ?? {};
801
+ if (Object.keys(props).length > 0)
802
+ return "the tool takes input of its own — a call order here is chaining";
803
+ const own = ownIdentifiers(ctx.tool);
804
+ const ids = [m[1], m[2]].filter((g) => !!g).map(normId);
805
+ if (ids.length === 0 || ids.every((id) => own.has(id)))
806
+ return "the ordered call is to this tool itself";
807
+ return null;
808
+ },
637
809
  /** `.ssh/authorized_keys` and `id_ed25519.pub` are public by definition. */
638
810
  publicKeyPath(m, text) {
639
811
  // A RAW forward window, not a clause: the giveaway is the extension, and
@@ -654,6 +826,8 @@ const RULES = [
654
826
  ...SECRET_EXFIL_PATTERNS,
655
827
  ...URL_SCHEME_PATTERNS,
656
828
  ...PAYLOAD_PATTERNS,
829
+ ...DESTRUCTIVE_PATTERNS,
830
+ ...CROSS_TOOL_PATTERNS,
657
831
  ];
658
832
  /**
659
833
  * URL, e-mail address or bare external host in a piece of text. Used by
@@ -735,7 +909,7 @@ function hasExternalAddress(text) {
735
909
  // asking the user for ids" (`autonomy`, which also stops exempting any "without asking
736
910
  // the user" whose object is consent), and "the key is read from the MCP connection's
737
911
  // X-API-Key header" (`ownAuthHeader`).
738
- export const STATIC_SCAN_RULESET_VERSION = "8";
912
+ export const STATIC_SCAN_RULESET_VERSION = "12";
739
913
  const SEVERITY_RANK = {
740
914
  info: 0,
741
915
  low: 1,
@@ -788,6 +962,7 @@ export function staticScanRulesetRef() {
788
962
  return { version, digest };
789
963
  }
790
964
  export class StaticScanGate {
965
+ semanticallyClean;
791
966
  name = "static-scan";
792
967
  log;
793
968
  /**
@@ -795,12 +970,14 @@ export class StaticScanGate {
795
970
  * finding is the one behaviour in this gate that cannot be seen in the
796
971
  * verdict, so it is the one that most needs a debug line.
797
972
  */
798
- constructor(log = silentLogger()) {
973
+ constructor(log = silentLogger(), semanticallyClean) {
974
+ this.semanticallyClean = semanticallyClean;
799
975
  this.log = log.child("static-scan");
800
976
  }
801
977
  async evaluate(input) {
802
978
  const findings = [];
803
979
  for (const tool of input.tools) {
980
+ const semanticallyClean = this.semanticallyClean?.(tool) === true;
804
981
  const schemaText = safeStringifySchema(tool.inputSchema);
805
982
  // The name is an identifier, the description is prose, the schema text is
806
983
  // field names + descriptions + enums. All three reach the model; each rule
@@ -830,7 +1007,10 @@ export class StaticScanGate {
830
1007
  // honours). The two hidden-payload rules set `raw` and skip the folded
831
1008
  // pass, because they look for exactly what the fold removes.
832
1009
  const folded = foldForScan(text);
833
- const passes = rule_texts(text, folded);
1010
+ // v9: a name is an identifier, so its words are joined — `ignore_previous_
1011
+ // instructions` and `ignorePreviousInstructions` are read as the phrase they spell.
1012
+ const passes = surface === "name" ? [...new Set([...rule_texts(text, folded), splitIdentifier(folded)])] : rule_texts(text, folded);
1013
+ const leaves = ["inputSchema", "outputSchema", "annotations", "metadata"].includes(surface) ? jsonStrings(text) : undefined;
834
1014
  for (const rule of RULES) {
835
1015
  if (!rule.surfaces.includes(surface))
836
1016
  continue;
@@ -841,9 +1021,14 @@ export class StaticScanGate {
841
1021
  let m = null;
842
1022
  let hay = text;
843
1023
  let dropped = null;
844
- for (const candidate of rule.raw ? [text] : passes) {
1024
+ // Complete semantic review can resolve quotation ambiguity in JSON string contents.
1025
+ // Without it keep conservative v11 parsing; quotation is not language-neutral proof.
1026
+ // Keep strings separate so a quoted example cannot excuse another field.
1027
+ const leafPasses = semanticallyClean && leaves && rule.guards?.includes("mention")
1028
+ ? leaves.flatMap(s => rule_texts(s, foldForScan(s))) : undefined;
1029
+ for (const candidate of rule.raw ? [text] : leafPasses ?? passes) {
845
1030
  for (const cm of allMatches(rule.re, candidate)) {
846
- const d = rule.guards?.map((g) => GUARDS[g](cm, candidate, surface)).find((r) => r !== null) ?? null;
1031
+ const d = rule.guards?.map((g) => GUARDS[g](cm, candidate, surface, { tool, structuredLeaf: !!leafPasses, semanticallyClean })).find((r) => r !== null) ?? null;
847
1032
  if (!d) {
848
1033
  m = cm;
849
1034
  hay = candidate;
@@ -940,6 +1125,37 @@ const SPAN_MAX = 80;
940
1125
  * form, the raw one dropped when the fold changed nothing so the common case
941
1126
  * scans once.
942
1127
  */
1128
+ /** An identifier compared without case or separators: `get_user`, `getUser`, `get-user` are one. */
1129
+ function normId(id) {
1130
+ return id.toLowerCase().replace(/[^a-z0-9]/g, "");
1131
+ }
1132
+ /** The tool's own name and parameter names — never "another tool". */
1133
+ function ownIdentifiers(tool) {
1134
+ const props = tool.inputSchema?.properties ?? {};
1135
+ return new Set([normId(tool.name ?? ""), ...Object.keys(props).map(normId)]);
1136
+ }
1137
+ /**
1138
+ * The sentence holding `index`: bounded by `.`/`!`/`?` followed by space, a newline, or a literal
1139
+ * "\n" escape (descriptions copied from code often carry it as text).
1140
+ */
1141
+ function sentenceAround(text, index) {
1142
+ const stop = /[.!?](?=\s)|\n|\\n/g;
1143
+ let start = 0, end = text.length, mm;
1144
+ while ((mm = stop.exec(text)) !== null) {
1145
+ const at = mm.index + mm[0].length;
1146
+ if (at <= index)
1147
+ start = at;
1148
+ else {
1149
+ end = mm.index + (mm[0] === "\n" || mm[0] === "\\n" ? 0 : 1);
1150
+ break;
1151
+ }
1152
+ }
1153
+ return { text: text.slice(start, end), start, end };
1154
+ }
1155
+ /** `get_userData-v2` → `get user Data v2`: separators and lower→upper case changes become spaces. */
1156
+ function splitIdentifier(name) {
1157
+ return name.replace(/[_\-.]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").trim();
1158
+ }
943
1159
  function rule_texts(raw, folded) {
944
1160
  return raw === folded ? [raw] : [folded, raw];
945
1161
  }